s4/drs: prefixMap lookup by full_OID implementation
authorKamen Mazdrashki <kamen.mazdrashki@postpath.com>
Thu, 29 Oct 2009 01:16:30 +0000 (03:16 +0200)
committerStefan Metzmacher <metze@samba.org>
Fri, 6 Nov 2009 13:05:48 +0000 (14:05 +0100)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
source4/dsdb/schema/schema_prefixmap.c

index cda6f75e5a6e84b51a06a618efa89ae5b0096b2c..acdb034a9bec3e5732cb6b73df91c4eb7e6f60c2 100644 (file)
@@ -214,6 +214,31 @@ WERROR dsdb_schema_pfm_find_binary_oid(const struct dsdb_schema_prefixmap *pfm,
        return WERR_DS_NO_MSDS_INTID;
 }
 
+/**
+ * Lookup full-oid in prefixMap
+ * Note: this may be slow.
+ */
+WERROR dsdb_schema_pfm_find_oid(const struct dsdb_schema_prefixmap *pfm,
+                               const char *full_oid,
+                               uint32_t *_idx)
+{
+       WERROR werr;
+       DATA_BLOB bin_oid;
+
+       ZERO_STRUCT(bin_oid);
+
+       /* make partial-binary-oid to look for */
+       werr = _dsdb_pfm_make_binary_oid(full_oid, NULL, &bin_oid, NULL);
+       W_ERROR_NOT_OK_RETURN(werr);
+
+       /* lookup the partial-oid */
+       werr = dsdb_schema_pfm_find_binary_oid(pfm, bin_oid, _idx);
+
+       data_blob_free(&bin_oid);
+
+       return werr;
+}
+
 /**
  * Make ATTID for given OID
  * Reference: [MS-DRSR] section 5.12.2