The branch, master has been updated via 5a01071692db91a4ea7131e31c41b6426d184758 (commit) via 9a209ac252508bc9a5b1eaaaf256610aceb37736 (commit) from 231b2fa26139a38bb67b3777c80b72e2f9d6d904 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 5a01071692db91a4ea7131e31c41b6426d184758 Author: Andrew Bartlett <abart...@samba.org> Date: Tue Sep 15 10:11:45 2009 -0700 libcli:nbt put util_net.c protos in new header file This fixed a very odd build problem due to util.h importing system/network.h being imported before the uid_wapper code. Andrew Bartlett commit 9a209ac252508bc9a5b1eaaaf256610aceb37736 Author: Andrew Bartlett <abart...@samba.org> Date: Tue Sep 15 08:14:54 2009 -0700 s4:schema Add code to provide an index into the subClass tree In time, this should avoid the astounding (order) complexity of the objectclass sorting in objectclass.c eventually. Andrew Bartlett ----------------------------------------------------------------------- Summary of changes: lib/util/util.h | 21 ------- source4/libcli/raw/rawlpq.c => lib/util/util_net.h | 62 ++++++++++---------- libcli/nbt/lmhosts.c | 1 + source3/include/includes.h | 1 + source4/dsdb/schema/schema.h | 7 ++ source4/dsdb/schema/schema_inferiors.c | 21 ++++++- 6 files changed, 59 insertions(+), 54 deletions(-) copy source4/libcli/raw/rawlpq.c => lib/util/util_net.h (50%) Changeset truncated at 500 lines: diff --git a/lib/util/util.h b/lib/util/util.h index 8438602..385a3ae 100644 --- a/lib/util/util.h +++ b/lib/util/util.h @@ -21,8 +21,6 @@ #ifndef _SAMBA_UTIL_H_ #define _SAMBA_UTIL_H_ -#include "system/network.h" - #if _SAMBA_BUILD_ == 4 #include "../lib/util/charset/charset.h" #endif @@ -842,24 +840,5 @@ bool add_uid_to_array_unique(TALLOC_CTX *mem_ctx, uid_t uid, bool add_gid_to_array_unique(TALLOC_CTX *mem_ctx, gid_t gid, gid_t **gids, size_t *num_gids); -/* The following definitions come from lib/util/util_net.c */ - -void zero_sockaddr(struct sockaddr_storage *pss); - -bool interpret_string_addr_internal(struct addrinfo **ppres, - const char *str, int flags); - -bool interpret_string_addr(struct sockaddr_storage *pss, - const char *str, - int flags); - -/******************************************************************* - Map a text hostname or IP address (IPv4 or IPv6) into a - struct sockaddr_storage. Version that prefers IPv4. -******************************************************************/ - -bool interpret_string_addr_prefer_ipv4(struct sockaddr_storage *pss, - const char *str, - int flags); #endif /* _SAMBA_UTIL_H_ */ diff --git a/source4/libcli/raw/rawlpq.c b/lib/util/util_net.h similarity index 50% copy from source4/libcli/raw/rawlpq.c copy to lib/util/util_net.h index 5c44772..6eacfc3 100644 --- a/source4/libcli/raw/rawlpq.c +++ b/lib/util/util_net.h @@ -1,8 +1,9 @@ /* Unix SMB/CIFS implementation. - client lpq operations - Copyright (C) Tim Potter 2005 - + Utility functions for Samba + Copyright (C) Andrew Tridgell 1992-1999 + Copyright (C) Jelmer Vernooij 2005 + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or @@ -17,32 +18,29 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "includes.h" -#include "libcli/raw/libcliraw.h" -#include "libcli/raw/raw_proto.h" - -/**************************************************************************** - lpq - async send -****************************************************************************/ -struct smbcli_request *smb_raw_lpq_send(struct smbcli_tree *tree, - union smb_lpq *parms) -{ - return NULL; -} - -/**************************************************************************** - lpq - async receive -****************************************************************************/ -NTSTATUS smb_raw_lpq_recv(struct smbcli_request *req, union smb_lpq *parms) -{ - return NT_STATUS_NOT_IMPLEMENTED; -} - -/* - lpq - sync interface -*/ -NTSTATUS smb_raw_lpq(struct smbcli_tree *tree, union smb_lpq *parms) -{ - struct smbcli_request *req = smb_raw_lpq_send(tree, parms); - return smb_raw_lpq_recv(req, parms); -} +#ifndef _SAMBA_UTIL_NET_H_ +#define _SAMBA_UTIL_NET_H_ + +#include "system/network.h" + +/* The following definitions come from lib/util/util_net.c */ + +void zero_sockaddr(struct sockaddr_storage *pss); + +bool interpret_string_addr_internal(struct addrinfo **ppres, + const char *str, int flags); + +bool interpret_string_addr(struct sockaddr_storage *pss, + const char *str, + int flags); + +/******************************************************************* + Map a text hostname or IP address (IPv4 or IPv6) into a + struct sockaddr_storage. Version that prefers IPv4. +******************************************************************/ + +bool interpret_string_addr_prefer_ipv4(struct sockaddr_storage *pss, + const char *str, + int flags); + +#endif /* _SAMBA_UTIL_NET_H_ */ diff --git a/libcli/nbt/lmhosts.c b/libcli/nbt/lmhosts.c index db81d31..11703a2 100644 --- a/libcli/nbt/lmhosts.c +++ b/libcli/nbt/lmhosts.c @@ -23,6 +23,7 @@ #include "includes.h" #include "lib/util/xfile.h" +#include "lib/util/util_net.h" #include "system/filesys.h" #include "system/network.h" diff --git a/source3/include/includes.h b/source3/include/includes.h index 31dfc00..d1be3b0 100644 --- a/source3/include/includes.h +++ b/source3/include/includes.h @@ -612,6 +612,7 @@ struct smb_iconv_convenience *lp_iconv_convenience(void *lp_ctx); /* Lists, trees, caching, database... */ #include "../lib/util/util.h" +#include "../lib/util/util_net.h" #include "../lib/util/xfile.h" #include "../lib/util/memory.h" #include "../lib/util/attr.h" diff --git a/source4/dsdb/schema/schema.h b/source4/dsdb/schema/schema.h index a605e2f..4e7e503 100644 --- a/source4/dsdb/schema/schema.h +++ b/source4/dsdb/schema/schema.h @@ -146,6 +146,13 @@ struct dsdb_class { uint32_t *mustContain_ids; uint32_t *mayContain_ids; uint32_t *systemPossSuperiors_ids; + + /* An ordered index showing how this subClass fits into the + * subClass tree. that is, an objectclass that is not + * subClassOf anything is 0 (just in case), and top is 1, and + * subClasses of top are 2, subclasses of those classes are + * 3 */ + uint32_t subClass_order; }; struct dsdb_schema_oid_prefix { diff --git a/source4/dsdb/schema/schema_inferiors.c b/source4/dsdb/schema/schema_inferiors.c index b0ecc08..493b425 100644 --- a/source4/dsdb/schema/schema_inferiors.c +++ b/source4/dsdb/schema/schema_inferiors.c @@ -127,6 +127,20 @@ static char **schema_subclasses_recurse(struct dsdb_schema *schema, struct dsdb_ return list; } +/* Walk down the subClass tree, setting a higher index as we go down + * each level. top is 1, subclasses of top are 2, etc */ +void schema_subclasses_order_recurse(struct dsdb_schema *schema, struct dsdb_class *schema_class, int order) +{ + const char **list = schema_class->subclasses_direct; + int i; + schema_class->subClass_order = order; + for (i=0;list && list[i]; i++) { + struct dsdb_class *schema_class2 = dsdb_class_by_lDAPDisplayName(schema, list[i]); + schema_subclasses_order_recurse(schema, schema_class2, order+1); + } + return; +} + static void schema_create_subclasses(struct dsdb_schema *schema) { struct dsdb_class *schema_class; @@ -148,7 +162,12 @@ static void schema_create_subclasses(struct dsdb_schema *schema) for (schema_class=schema->classes; schema_class; schema_class=schema_class->next) { schema_class->subclasses = str_list_unique(schema_subclasses_recurse(schema, schema_class)); - } + + /* Initilise the subClass order, to ensure we can't have uninitilised sort on the subClass hirarchy */ + schema_class->subClass_order = 0; + } + + schema_subclasses_order_recurse(schema, dsdb_class_by_lDAPDisplayName(schema, "top"), 1); } static void schema_fill_possible_inferiors(struct dsdb_schema *schema, struct dsdb_class *schema_class) -- Samba Shared Repository