diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2005-08-20 23:30:10 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:34:14 -0500 |
commit | 3c4cc87bf8b7e24664d8402ab09b0f666f7b270f (patch) | |
tree | 77f6422f9a55e6410a976232a9a94f0da208ef3c | |
parent | 85a12fe9af036577064bee17fee9f4987e6a62ed (diff) | |
download | samba-3c4cc87bf8b7e24664d8402ab09b0f666f7b270f.tar.gz samba-3c4cc87bf8b7e24664d8402ab09b0f666f7b270f.tar.bz2 samba-3c4cc87bf8b7e24664d8402ab09b0f666f7b270f.zip |
r9438: Add initial files for ldb_map
(This used to be commit a66eeadecdcc5f67dd34c4ae82f5ae9191163499)
-rw-r--r-- | source4/lib/ldb/ldb_map/README | 29 | ||||
-rw-r--r-- | source4/lib/ldb/ldb_map/ldb_map.h | 29 |
2 files changed, 58 insertions, 0 deletions
diff --git a/source4/lib/ldb/ldb_map/README b/source4/lib/ldb/ldb_map/README new file mode 100644 index 0000000000..3c7e30a331 --- /dev/null +++ b/source4/lib/ldb/ldb_map/README @@ -0,0 +1,29 @@ +This directory contains a skeleton backend for ldb backends that allow +using an LDAP server while mapping the attributes in that schema to +another schema. This backend will never be used itself but instead have +other backends based on it (e.g. ldb_samba3 for a Samba3-LDAP-to-samdb +backend) + +Each backend that uses this skeleton has to specify an array of +struct objectclass_mapping's (see ldb_map.h). + +If no mappings are defined for an objectclass, it will be kept as is. + +Special mapping routine for dn's (calls rdn mapping routine) +Special mapping routine for rdn's + +Keep cache of mapped dn's so we don't have to traverse the tree each time + +search + Simply uses search_bytree + +search_bytree + Map all attributes in parse_tree + +add +modify + Map ldb_message to LDAPMod + +rename +delete + Simply map dn diff --git a/source4/lib/ldb/ldb_map/ldb_map.h b/source4/lib/ldb/ldb_map/ldb_map.h new file mode 100644 index 0000000000..6d6e47873c --- /dev/null +++ b/source4/lib/ldb/ldb_map/ldb_map.h @@ -0,0 +1,29 @@ +struct objectclass_mapping { + char *local_name; + char *remote_name; + + char *key; /* Name of attribute used in rdn */ + + /* For mapping attributes used in searches */ + struct local_attribute_mapping { + char *local_name; + + /* Attributes to request from the server for this attribute, + * needed by generate */ + char *required_attributes[]; + + /* If not set, the value for the first element of + * required_attributes will simply be used here */ + struct ldb_message_element *(*generate) (LDAPMessage *msg); + } *local_attribute_mappings; + + /* Generate LDAPMod for adds and modifies */ + LDAPMod *(*generate_mod)(struct ldb_message *); +} + +struct ldb_map_backend { + struct objectclass_mapping *objectclass_mappings; +}; + +const char *ldb_map_dn(const char *old); +const char *ldb_map_rdn(const char *old); |