summaryrefslogtreecommitdiff
path: root/source4/dsdb/samdb/ldb_modules/util.c
diff options
context:
space:
mode:
authorBrendan Powers <brendan0powers@gmail.com>2009-12-14 20:36:44 -0500
committerAndrew Bartlett <abartlet@samba.org>2009-12-18 14:27:43 +1100
commitd99084ffdb2c898c18bd4b264d8dd297dd0f1f25 (patch)
tree0b8a35e1543928234595a5052907e856074bbfab /source4/dsdb/samdb/ldb_modules/util.c
parent2ad086e7f6ab39767cd691b059ab5d78b03d55c0 (diff)
downloadsamba-d99084ffdb2c898c18bd4b264d8dd297dd0f1f25.tar.gz
samba-d99084ffdb2c898c18bd4b264d8dd297dd0f1f25.tar.bz2
samba-d99084ffdb2c898c18bd4b264d8dd297dd0f1f25.zip
s4-dsdb: Move get_last_structural class from descriptor.c to util.c
It can now also be used by objectclass.c get_last_structural_class now ignores AUX classes, because they are not structural Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'source4/dsdb/samdb/ldb_modules/util.c')
-rw-r--r--source4/dsdb/samdb/ldb_modules/util.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/source4/dsdb/samdb/ldb_modules/util.c b/source4/dsdb/samdb/ldb_modules/util.c
index d8d55ae42a..8d9930a81f 100644
--- a/source4/dsdb/samdb/ldb_modules/util.c
+++ b/source4/dsdb/samdb/ldb_modules/util.c
@@ -25,6 +25,7 @@
#include "librpc/ndr/libndr.h"
#include "dsdb/samdb/ldb_modules/util.h"
#include "dsdb/samdb/samdb.h"
+#include "util.h"
/*
add a set of controls to a ldb_request structure based on a set of
@@ -337,3 +338,30 @@ int dsdb_module_rename(struct ldb_module *module,
talloc_free(tmp_ctx);
return ret;
}
+
+const struct dsdb_class * get_last_structural_class(const struct dsdb_schema *schema,const struct ldb_message_element *element)
+{
+ const struct dsdb_class *last_class = NULL;
+ int i;
+
+ for (i = 0; i < element->num_values; i++){
+ const struct dsdb_class *tmp_class = dsdb_class_by_lDAPDisplayName_ldb_val(schema, &element->values[i]);
+
+ if(tmp_class == NULL) {
+ continue;
+ }
+
+ if(tmp_class->objectClassCategory == 3) {
+ continue;
+ }
+
+ if (!last_class) {
+ last_class = tmp_class;
+ } else {
+ if (tmp_class->subClass_order > last_class->subClass_order)
+ last_class = tmp_class;
+ }
+ }
+
+ return last_class;
+}