diff options
author | Andrew Tridgell <tridge@samba.org> | 2005-06-13 09:10:17 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:18:06 -0500 |
commit | 4b0e5bd75373ffa2d847706a71fd0349dfa15e71 (patch) | |
tree | 5911c1b644daa5778fb437c43fbccd2ab416504a /source4/cldap_server | |
parent | d71e1a7a7fe363d27a0e8256ccfb4cec425c13b5 (diff) | |
download | samba-4b0e5bd75373ffa2d847706a71fd0349dfa15e71.tar.gz samba-4b0e5bd75373ffa2d847706a71fd0349dfa15e71.tar.bz2 samba-4b0e5bd75373ffa2d847706a71fd0349dfa15e71.zip |
r7527: - added a ldb_search_bytree() interface, which takes a ldb_parse_tree
instead of a search expression. This allows our ldap server to pass
its ASN.1 parsed search expressions straight to ldb, instead of going
via strings.
- updated all the ldb modules code to handle the new interface
- got rid of the separate ldb_parse.h now that the ldb_parse
structures are exposed externally
- moved to C99 structure initialisation in ldb
- switched ldap server to using ldb_search_bytree()
(This used to be commit 96620ab2ee5d440bbbc51c1bc0cad9977770f897)
Diffstat (limited to 'source4/cldap_server')
-rw-r--r-- | source4/cldap_server/cldap_server.c | 5 | ||||
-rw-r--r-- | source4/cldap_server/netlogon.c | 8 |
2 files changed, 4 insertions, 9 deletions
diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index a15b93f91c..c6eaf6395a 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -46,10 +46,11 @@ static void cldapd_request_handler(struct cldap_socket *cldap, if (search->num_attributes == 1 && strcasecmp(search->attributes[0], "netlogon") == 0) { cldapd_netlogon_request(cldap, ldap_msg->messageid, - search->filter, src_address, src_port); + search->tree, src_address, src_port); } else { DEBUG(0,("Unknown CLDAP search for '%s'\n", - ldap_msg->r.SearchRequest.filter)); + ldb_filter_from_tree(ldap_msg, + ldap_msg->r.SearchRequest.tree))); cldap_empty_reply(cldap, ldap_msg->messageid, src_address, src_port); } } diff --git a/source4/cldap_server/netlogon.c b/source4/cldap_server/netlogon.c index f4f1c226af..4ccec27d01 100644 --- a/source4/cldap_server/netlogon.c +++ b/source4/cldap_server/netlogon.c @@ -177,11 +177,10 @@ static NTSTATUS cldapd_netlogon_fill(struct cldapd_server *cldapd, */ void cldapd_netlogon_request(struct cldap_socket *cldap, uint32_t message_id, - const char *filter, + struct ldb_parse_tree *tree, const char *src_address, int src_port) { struct cldapd_server *cldapd = talloc_get_type(cldap->incoming.private, struct cldapd_server); - struct ldb_parse_tree *tree; int i; const char *domain = NULL; const char *host = NULL; @@ -195,11 +194,6 @@ void cldapd_netlogon_request(struct cldap_socket *cldap, TALLOC_CTX *tmp_ctx = talloc_new(cldap); - DEBUG(5,("cldap filter='%s'\n", filter)); - - tree = ldb_parse_tree(tmp_ctx, filter); - if (tree == NULL) goto failed; - if (tree->operation != LDB_OP_AND) goto failed; /* extract the query elements */ |