[SCM] Samba Shared Repository - branch master updated

Andrew Bartlett abartlet at samba.org
Mon Nov 30 23:28:05 MST 2009


The branch, master has been updated
       via  2d1bd87... s4:torture/raw/lock - Fix "discard const" warnings by introducing "discard_const_p"s
       via  262d26d... s4:torture/nbt/wins - Add more casts
       via  58a5e76... s4:torture/nbench/nbench - Add a cast before "str_list_make_shell"
       via  8b44999... s4:torture/ldap/ldap_sort - Add some casts to suppress warnings
       via  7be99d3... s4:schema - Make some more (result) variables const and fix up warnings with "discard_const_p"
       via  012494b... util/util_strlist - add a call "const_str_list" for making "unconst" lists "const"
       via  9ce7e9a... s4:kdc - Merged kdc_tcp_accept() and kpasswdd_tcp_accept().
       via  0c89a6f... s4:kdc - Merged kdc_add_kdc_socket() and kdc_add_kpasswd_socket().
       via  bd17df7... s4 - Create default modules directory.
       via  c93fc3a... s4:kdc - Disable KDC port when it's set to 0.
      from  183ea82... Merge commit 'origin/master' into abartlet-devel

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 2d1bd87f732e37323bd382ac66f41bfc52a23dac
Author: Matthias Dieter Wallnöfer <mwallnoefer at yahoo.de>
Date:   Fri Nov 20 11:35:13 2009 +0100

    s4:torture/raw/lock - Fix "discard const" warnings by introducing "discard_const_p"s

commit 262d26d05a6b1f6b074408ba8be352324d1b0d47
Author: Matthias Dieter Wallnöfer <mwallnoefer at yahoo.de>
Date:   Sat Oct 17 22:36:00 2009 +0200

    s4:torture/nbt/wins - Add more casts

commit 58a5e764a9c96229cb4daa99d3d8ef18c188b4fe
Author: Matthias Dieter Wallnöfer <mwallnoefer at yahoo.de>
Date:   Sat Oct 17 22:35:21 2009 +0200

    s4:torture/nbench/nbench - Add a cast before "str_list_make_shell"

commit 8b4499942eff7bc6ea1b64cdc6ab6958b8f5d1a8
Author: Matthias Dieter Wallnöfer <mwallnoefer at yahoo.de>
Date:   Sat Oct 17 22:34:00 2009 +0200

    s4:torture/ldap/ldap_sort - Add some casts to suppress warnings

commit 7be99d373578f42ac47e67ef1b95a2409cecc184
Author: Matthias Dieter Wallnöfer <mwallnoefer at yahoo.de>
Date:   Sat Oct 17 22:25:12 2009 +0200

    s4:schema - Make some more (result) variables const and fix up warnings with "discard_const_p"

commit 012494b8005b621642ec98d51d067378f8e10421
Author: Matthias Dieter Wallnöfer <mwallnoefer at yahoo.de>
Date:   Wed Nov 25 09:15:39 2009 +0100

    util/util_strlist - add a call "const_str_list" for making "unconst" lists "const"

commit 9ce7e9ab8401e038b36d53e477fcb658d1c54f80
Author: Endi S. Dewata <edewata at redhat.com>
Date:   Tue Nov 24 01:00:45 2009 -0600

    s4:kdc - Merged kdc_tcp_accept() and kpasswdd_tcp_accept().
    
    Signed-off-by: Andrew Bartlett <abartlet at samba.org>

commit 0c89a6f2aa433e54d7af99d9214ddc186784af97
Author: Endi S. Dewata <edewata at redhat.com>
Date:   Mon Nov 23 22:28:11 2009 -0600

    s4:kdc - Merged kdc_add_kdc_socket() and kdc_add_kpasswd_socket().
    
    Signed-off-by: Andrew Bartlett <abartlet at samba.org>

commit bd17df71b59ba54c7845ddc000e8cb17b6a23928
Author: Endi S. Dewata <edewata at redhat.com>
Date:   Fri Nov 20 14:57:11 2009 -0600

    s4 - Create default modules directory.
    
    Signed-off-by: Andrew Bartlett <abartlet at samba.org>

commit c93fc3a10a8839752eb4c1d1e91c1b455c974eef
Author: Endi S. Dewata <edewata at redhat.com>
Date:   Fri Nov 20 08:47:40 2009 -0600

    s4:kdc - Disable KDC port when it's set to 0.
    
    Signed-off-by: Andrew Bartlett <abartlet at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 lib/util/util.h                        |    5 +
 lib/util/util_strlist.c                |    9 ++
 source4/Makefile                       |    1 +
 source4/dsdb/schema/schema.h           |    8 +-
 source4/dsdb/schema/schema_inferiors.c |  117 +++++++++++++++-----------
 source4/kdc/kdc.c                      |  147 +++++++++++---------------------
 source4/torture/ldap/ldap_sort.c       |   14 ++--
 source4/torture/nbench/nbench.c        |    5 +-
 source4/torture/nbt/wins.c             |   18 +++--
 source4/torture/raw/lock.c             |    9 ++-
 10 files changed, 165 insertions(+), 168 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/util/util.h b/lib/util/util.h
index e7ea0ba..729190a 100644
--- a/lib/util/util.h
+++ b/lib/util/util.h
@@ -535,6 +535,11 @@ _PUBLIC_ const char **str_list_add_const(const char **list, const char *s);
 _PUBLIC_ const char **str_list_copy_const(TALLOC_CTX *mem_ctx,
 					  const char **list);
 
+/**
+ * Needed for making an "unconst" list "const"
+ */
+_PUBLIC_ const char **const_str_list(char **list);
+
 
 /* The following definitions come from lib/util/util_file.c  */
 
diff --git a/lib/util/util_strlist.c b/lib/util/util_strlist.c
index 71998b9..6d1a695 100644
--- a/lib/util/util_strlist.c
+++ b/lib/util/util_strlist.c
@@ -486,3 +486,12 @@ _PUBLIC_ const char **str_list_copy_const(TALLOC_CTX *mem_ctx,
 	ret[i] = NULL;
 	return ret;
 }
+
+/**
+ * Needed for making an "unconst" list "const"
+ */
+_PUBLIC_ const char **const_str_list(char **list)
+{
+	return (const char **)list;
+}
+
diff --git a/source4/Makefile b/source4/Makefile
index 8f23da5..8e4895b 100644
--- a/source4/Makefile
+++ b/source4/Makefile
@@ -213,6 +213,7 @@ installdirs::
 		$(DESTDIR)$(torturedir) \
 		$(DESTDIR)$(libdir) \
 		$(DESTDIR)$(modulesdir) \
+		$(DESTDIR)$(modulesdir)/ldb \
 		$(DESTDIR)$(mandir) \
 		$(DESTDIR)$(localstatedir) \
 		$(DESTDIR)$(localstatedir)/lib \
diff --git a/source4/dsdb/schema/schema.h b/source4/dsdb/schema/schema.h
index fa687d0..186f5d5 100644
--- a/source4/dsdb/schema/schema.h
+++ b/source4/dsdb/schema/schema.h
@@ -138,10 +138,10 @@ struct dsdb_class {
 	bool isDefunct;
 	bool systemOnly;
 
-	char **supclasses;
-	char **subclasses;
-	char **subclasses_direct;
-	char **posssuperiors;
+	const char **supclasses;
+	const char **subclasses;
+	const char **subclasses_direct;
+	const char **posssuperiors;
 	uint32_t subClassOf_id;
 	uint32_t *systemAuxiliaryClass_ids;
 	uint32_t *auxiliaryClass_ids;
diff --git a/source4/dsdb/schema/schema_inferiors.c b/source4/dsdb/schema/schema_inferiors.c
index 23cd43d..d6fc1cf 100644
--- a/source4/dsdb/schema/schema_inferiors.c
+++ b/source4/dsdb/schema/schema_inferiors.c
@@ -34,15 +34,16 @@
 /*
   create the SUPCLASSES() list
  */
-static char **schema_supclasses(struct dsdb_schema *schema, struct dsdb_class *schema_class)
+static const char **schema_supclasses(const struct dsdb_schema *schema,
+				      struct dsdb_class *schema_class)
 {
-	char **list;
+	const char **list;
 
 	if (schema_class->supclasses) {
 		return schema_class->supclasses;
 	}
 
-	list = str_list_make_empty(schema_class);
+	list = const_str_list(str_list_make_empty(schema_class));
 	if (list == NULL) {
 		DEBUG(0,(__location__ " out of memory\n"));
 		return NULL;
@@ -56,13 +57,11 @@ static char **schema_supclasses(struct dsdb_schema *schema, struct dsdb_class *s
 	}
 
 	if (schema_class->subClassOf) {
+		const struct dsdb_class *schema_class2 = dsdb_class_by_lDAPDisplayName(schema, schema_class->subClassOf);
 		const char **list2;
-		list = str_list_add_const(list, schema_class->subClassOf);
+		list = str_list_add_const(list,	schema_class->subClassOf);
 
-		list2 = schema_supclasses(schema,  
-					  discard_const_p(struct dsdb_class, 
-							  dsdb_class_by_lDAPDisplayName(schema, 
-											schema_class->subClassOf)));
+		list2 = schema_supclasses(schema, discard_const_p(struct dsdb_class, schema_class2));
 		list = str_list_append_const(list, list2);
 	}
 
@@ -75,13 +74,15 @@ static char **schema_supclasses(struct dsdb_schema *schema, struct dsdb_class *s
   this one is used internally
   matches SUBCLASSES() python function
  */
-static char **schema_subclasses(struct dsdb_schema *schema, TALLOC_CTX *mem_ctx, char **oclist)
+static const char **schema_subclasses(const struct dsdb_schema *schema,
+				      TALLOC_CTX *mem_ctx,
+				      const char **oclist)
 {
-	char **list = str_list_make_empty(mem_ctx);
+	const char **list = const_str_list(str_list_make_empty(mem_ctx));
 	int i;
 
 	for (i=0; oclist && oclist[i]; i++) {
-		struct dsdb_class *schema_class = dsdb_class_by_lDAPDisplayName(schema, oclist[i]);
+		const struct dsdb_class *schema_class =	dsdb_class_by_lDAPDisplayName(schema, oclist[i]);
 		if (!schema_class) {
 			DEBUG(0, ("ERROR: Unable to locate subClass: '%s'\n", oclist[i]));
 			continue;
@@ -95,24 +96,25 @@ static char **schema_subclasses(struct dsdb_schema *schema, TALLOC_CTX *mem_ctx,
 /* 
    equivalent of the POSSSUPERIORS() python function
  */
-static char **schema_posssuperiors(struct dsdb_schema *schema, 
-				   struct dsdb_class *schema_class)
+static const char **schema_posssuperiors(const struct dsdb_schema *schema,
+					 struct dsdb_class *schema_class)
 {
 	if (schema_class->posssuperiors == NULL) {
-		char **list2 = str_list_make_empty(schema_class);
-		char **list3;
+		const char **list2 = const_str_list(str_list_make_empty(schema_class));
+		const char **list3;
 		int i;
 
 		list2 = str_list_append_const(list2, schema_class->systemPossSuperiors);
 		list2 = str_list_append_const(list2, schema_class->possSuperiors);
 		list3 = schema_supclasses(schema, schema_class);
 		for (i=0; list3 && list3[i]; i++) {
-			struct dsdb_class *class2 = dsdb_class_by_lDAPDisplayName(schema, list3[i]);
+			const struct dsdb_class *class2 = dsdb_class_by_lDAPDisplayName(schema, list3[i]);
 			if (!class2) {
 				DEBUG(0, ("ERROR: Unable to locate supClass: '%s'\n", list3[i]));
 				continue;
 			}
-			list2 = str_list_append_const(list2, schema_posssuperiors(schema, class2));
+			list2 = str_list_append_const(list2, schema_posssuperiors(schema,
+				discard_const_p(struct dsdb_class, class2)));
 		}
 		list2 = str_list_append_const(list2, schema_subclasses(schema, list2, list2));
 
@@ -122,14 +124,16 @@ static char **schema_posssuperiors(struct dsdb_schema *schema,
 	return schema_class->posssuperiors;
 }
 
-static char **schema_subclasses_recurse(struct dsdb_schema *schema, struct dsdb_class *schema_class)
+static const char **schema_subclasses_recurse(const struct dsdb_schema *schema,
+					      struct dsdb_class *schema_class)
 {
-	char **list = str_list_copy_const(schema_class, schema_class->subclasses_direct);
+	const char **list = str_list_copy_const(schema_class, schema_class->subclasses_direct);
 	int i;
 	for (i=0;list && list[i]; i++) {
-		struct dsdb_class *schema_class2 = dsdb_class_by_lDAPDisplayName(schema, list[i]);
+		const struct dsdb_class *schema_class2 = dsdb_class_by_lDAPDisplayName(schema, list[i]);
 		if (schema_class != schema_class2) {
-			list = str_list_append_const(list, schema_subclasses_recurse(schema, schema_class2));
+			list = str_list_append_const(list, schema_subclasses_recurse(schema,
+				discard_const_p(struct dsdb_class, schema_class2)));
 		}
 	}
 	return list;
@@ -137,37 +141,40 @@ static char **schema_subclasses_recurse(struct dsdb_schema *schema, struct dsdb_
 
 /* 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)
+void schema_subclasses_order_recurse(const struct dsdb_schema *schema,
+				     struct dsdb_class *schema_class,
+				     const 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);
+		const struct dsdb_class *schema_class2 = dsdb_class_by_lDAPDisplayName(schema, list[i]);
+		schema_subclasses_order_recurse(schema, discard_const_p(struct dsdb_class, schema_class2), order+1);
 	}
 	return;
 }
 
-static int schema_create_subclasses(struct dsdb_schema *schema)
+static int schema_create_subclasses(const struct dsdb_schema *schema)
 {
 	struct dsdb_class *schema_class, *top;
 
 	for (schema_class=schema->classes; schema_class; schema_class=schema_class->next) {
-		struct dsdb_class *schema_class2 = dsdb_class_by_lDAPDisplayName(schema, schema_class->subClassOf);
+		struct dsdb_class *schema_class2 = discard_const_p(struct dsdb_class,
+			dsdb_class_by_lDAPDisplayName(schema, schema_class->subClassOf));
 		if (schema_class2 == NULL) {
 			DEBUG(0,("ERROR: no subClassOf for '%s'\n", schema_class->lDAPDisplayName));
 			return LDB_ERR_OPERATIONS_ERROR;
 		}
 		if (schema_class2 && schema_class != schema_class2) {
 			if (schema_class2->subclasses_direct == NULL) {
-				schema_class2->subclasses_direct = str_list_make_empty(schema_class2);
+				schema_class2->subclasses_direct = const_str_list(str_list_make_empty(schema_class2));
 				if (!schema_class2->subclasses_direct) {
 					return LDB_ERR_OPERATIONS_ERROR;
 				}
 			}
-			schema_class2->subclasses_direct = str_list_add_const(schema_class2->subclasses_direct, 
-									schema_class->lDAPDisplayName);
+			schema_class2->subclasses_direct = str_list_add_const(schema_class2->subclasses_direct,
+						schema_class->lDAPDisplayName);
 		}
 	}
 
@@ -178,7 +185,7 @@ static int schema_create_subclasses(struct dsdb_schema *schema)
 		schema_class->subClass_order = 0;
 	}
 
-	top = dsdb_class_by_lDAPDisplayName(schema, "top");
+	top = discard_const_p(struct dsdb_class, dsdb_class_by_lDAPDisplayName(schema, "top"));
 	if (!top) {
 		DEBUG(0,("ERROR: no 'top' class in loaded schema\n"));
 		return LDB_ERR_OPERATIONS_ERROR;
@@ -188,40 +195,42 @@ static int schema_create_subclasses(struct dsdb_schema *schema)
 	return LDB_SUCCESS;
 }
 
-static void schema_fill_possible_inferiors(struct dsdb_schema *schema, struct dsdb_class *schema_class)
+static void schema_fill_possible_inferiors(const struct dsdb_schema *schema,
+					   struct dsdb_class *schema_class)
 {
 	struct dsdb_class *c2;
 
 	for (c2=schema->classes; c2; c2=c2->next) {
-		char **superiors = schema_posssuperiors(schema, c2);
+		const char **superiors = schema_posssuperiors(schema, c2);
 		if (c2->systemOnly == false 
 		    && c2->objectClassCategory != 2 
 		    && c2->objectClassCategory != 3
 		    && str_list_check(superiors, schema_class->lDAPDisplayName)) {
 			if (schema_class->possibleInferiors == NULL) {
-				schema_class->possibleInferiors = str_list_make_empty(schema_class);
+				schema_class->possibleInferiors = const_str_list(str_list_make_empty(schema_class));
 			}
 			schema_class->possibleInferiors = str_list_add_const(schema_class->possibleInferiors,
-								       c2->lDAPDisplayName);
+							c2->lDAPDisplayName);
 		}
 	}
 	schema_class->possibleInferiors = str_list_unique(schema_class->possibleInferiors);
 }
 
-static void schema_fill_system_possible_inferiors(struct dsdb_schema *schema, struct dsdb_class *schema_class)
+static void schema_fill_system_possible_inferiors(const struct dsdb_schema *schema,
+						  struct dsdb_class *schema_class)
 {
 	struct dsdb_class *c2;
 
 	for (c2=schema->classes; c2; c2=c2->next) {
-		char **superiors = schema_posssuperiors(schema, c2);
+		const char **superiors = schema_posssuperiors(schema, c2);
 		if (c2->objectClassCategory != 2
 		    && c2->objectClassCategory != 3
 		    && str_list_check(superiors, schema_class->lDAPDisplayName)) {
 			if (schema_class->systemPossibleInferiors == NULL) {
-				schema_class->systemPossibleInferiors = str_list_make_empty(schema_class);
+				schema_class->systemPossibleInferiors = const_str_list(str_list_make_empty(schema_class));
 			}
 			schema_class->systemPossibleInferiors = str_list_add_const(schema_class->systemPossibleInferiors,
-										   c2->lDAPDisplayName);
+							c2->lDAPDisplayName);
 		}
 	}
 	schema_class->systemPossibleInferiors = str_list_unique(schema_class->systemPossibleInferiors);
@@ -230,11 +239,14 @@ static void schema_fill_system_possible_inferiors(struct dsdb_schema *schema, st
 /*
   fill in a string class name from a governs_ID
  */
-static void schema_fill_from_class_one(struct dsdb_schema *schema, struct dsdb_class *c, 
-				    const char **s, uint32_t id)
+static void schema_fill_from_class_one(const struct dsdb_schema *schema,
+				       const struct dsdb_class *c,
+				       const char **s,
+				       const uint32_t id)
 {
 	if (*s == NULL && id != 0) {
-		struct dsdb_class *c2 = dsdb_class_by_governsID_id(schema, id);
+		const struct dsdb_class *c2 =
+					dsdb_class_by_governsID_id(schema, id);
 		if (c2) {
 			*s = c2->lDAPDisplayName;
 		}
@@ -244,15 +256,18 @@ static void schema_fill_from_class_one(struct dsdb_schema *schema, struct dsdb_c
 /*
   fill in a list of string class names from a governs_ID list
  */
-static void schema_fill_from_class_list(struct dsdb_schema *schema, struct dsdb_class *c, 
-				     const char ***s, uint32_t *ids)
+static void schema_fill_from_class_list(const struct dsdb_schema *schema,
+					const struct dsdb_class *c,
+					const char ***s,
+					const uint32_t *ids)
 {
 	if (*s == NULL && ids != NULL) {
 		int i;
 		for (i=0;ids[i];i++) ;
 		*s = talloc_array(c, const char *, i+1);
 		for (i=0;ids[i];i++) {
-			struct dsdb_class *c2 = dsdb_class_by_governsID_id(schema, ids[i]);
+			const struct dsdb_class *c2 =
+				dsdb_class_by_governsID_id(schema, ids[i]);
 			if (c2) {
 				(*s)[i] = c2->lDAPDisplayName;
 			} else {
@@ -266,15 +281,18 @@ static void schema_fill_from_class_list(struct dsdb_schema *schema, struct dsdb_
 /*
   fill in a list of string attribute names from a attributeID list
  */
-static void schema_fill_from_attribute_list(struct dsdb_schema *schema, struct dsdb_class *c, 
-					    const char ***s, uint32_t *ids)
+static void schema_fill_from_attribute_list(const struct dsdb_schema *schema,
+					    const struct dsdb_class *c,
+					    const char ***s,
+					    const uint32_t *ids)
 {
 	if (*s == NULL && ids != NULL) {
 		int i;
 		for (i=0;ids[i];i++) ;
 		*s = talloc_array(c, const char *, i+1);
 		for (i=0;ids[i];i++) {
-			struct dsdb_attribute *a = dsdb_attribute_by_attributeID_id(schema, ids[i]);
+			const struct dsdb_attribute *a =
+				dsdb_attribute_by_attributeID_id(schema, ids[i]);
 			if (a) {
 				(*s)[i] = a->lDAPDisplayName;
 			} else {
@@ -288,7 +306,7 @@ static void schema_fill_from_attribute_list(struct dsdb_schema *schema, struct d
 /*
   if the schema came from DRS then some attributes will be setup as IDs
  */
-static void schema_fill_from_ids(struct dsdb_schema *schema)
+static void schema_fill_from_ids(const struct dsdb_schema *schema)
 {
 	struct dsdb_class *c;
 	for (c=schema->classes; c; c=c->next) {
@@ -304,7 +322,7 @@ static void schema_fill_from_ids(struct dsdb_schema *schema)
 	}
 }
 
-int schema_fill_constructed(struct dsdb_schema *schema) 
+int schema_fill_constructed(const struct dsdb_schema *schema)
 {
 	int ret;
 	struct dsdb_class *schema_class;
@@ -332,5 +350,6 @@ int schema_fill_constructed(struct dsdb_schema *schema)
 		schema_class->subclasses = NULL;
 		schema_class->posssuperiors = NULL;
 	}
+
 	return LDB_SUCCESS;
 }
diff --git a/source4/kdc/kdc.c b/source4/kdc/kdc.c
index 1260e90..92dd5b6 100644
--- a/source4/kdc/kdc.c
+++ b/source4/kdc/kdc.c
@@ -355,9 +355,9 @@ static bool kdc_process(struct kdc_server *kdc,
 /*
   called when we get a new connection
 */
-static void kdc_tcp_generic_accept(struct stream_connection *conn, kdc_process_fn_t process_fn)
+static void kdc_tcp_accept(struct stream_connection *conn)
 {
-	struct kdc_server *kdc = talloc_get_type(conn->private_data, struct kdc_server);
+ 	struct kdc_socket *kdc_socket = talloc_get_type(conn->private_data, struct kdc_socket);
 	struct kdc_tcp_connection *kdcconn;
 
 	kdcconn = talloc_zero(conn, struct kdc_tcp_connection);
@@ -366,8 +366,8 @@ static void kdc_tcp_generic_accept(struct stream_connection *conn, kdc_process_f
 		return;
 	}
 	kdcconn->conn	 = conn;
-	kdcconn->kdc	 = kdc;
-	kdcconn->process = process_fn;
+	kdcconn->kdc	 = kdc_socket->kdc;
+	kdcconn->process = kdc_socket->process;
 	conn->private_data    = kdcconn;
 
 	kdcconn->packet = packet_init(kdcconn);
@@ -385,11 +385,6 @@ static void kdc_tcp_generic_accept(struct stream_connection *conn, kdc_process_f
 	packet_set_serialise(kdcconn->packet);
 }
 
-static void kdc_tcp_accept(struct stream_connection *conn)
-{
-	kdc_tcp_generic_accept(conn, kdc_process);
-}
-
 static const struct stream_server_ops kdc_tcp_stream_ops = {
 	.name			= "kdc_tcp",
 	.accept_connection	= kdc_tcp_accept,
@@ -397,112 +392,47 @@ static const struct stream_server_ops kdc_tcp_stream_ops = {
 	.send_handler		= kdc_tcp_send
 };
 
-static void kpasswdd_tcp_accept(struct stream_connection *conn)
-{
-	kdc_tcp_generic_accept(conn, kpasswdd_process);
-}
-
-static const struct stream_server_ops kpasswdd_tcp_stream_ops = {
-	.name			= "kpasswdd_tcp",
-	.accept_connection	= kpasswdd_tcp_accept,
-	.recv_handler		= kdc_tcp_recv_handler,
-	.send_handler		= kdc_tcp_send
-};
-
 /*
   start listening on the given address
 */
-static NTSTATUS kdc_add_socket(struct kdc_server *kdc, const char *address,
-			       uint16_t kdc_port, uint16_t kpasswd_port)
+static NTSTATUS kdc_add_socket(struct kdc_server *kdc,
+			       const struct model_ops *model_ops,
+			       const char *name,
+			       const char *address,
+			       uint16_t port,
+			       kdc_process_fn_t process)
 {
-	const struct model_ops *model_ops;
  	struct kdc_socket *kdc_socket;
- 	struct kdc_socket *kpasswd_socket;
-	struct socket_address *kdc_address, *kpasswd_address;
+	struct socket_address *socket_address;
 	NTSTATUS status;
 
 	kdc_socket = talloc(kdc, struct kdc_socket);
 	NT_STATUS_HAVE_NO_MEMORY(kdc_socket);
 
-	kpasswd_socket = talloc(kdc, struct kdc_socket);
-	NT_STATUS_HAVE_NO_MEMORY(kpasswd_socket);
-
 	status = socket_create("ip", SOCKET_TYPE_DGRAM, &kdc_socket->sock, 0);
 	if (!NT_STATUS_IS_OK(status)) {
 		talloc_free(kdc_socket);
 		return status;
 	}
 
-	status = socket_create("ip", SOCKET_TYPE_DGRAM, &kpasswd_socket->sock, 0);
-	if (!NT_STATUS_IS_OK(status)) {
-		talloc_free(kpasswd_socket);
-		return status;
-	}
-
 	kdc_socket->kdc = kdc;
 	kdc_socket->send_queue = NULL;
-	kdc_socket->process = kdc_process;
+	kdc_socket->process = process;
 
 	talloc_steal(kdc_socket, kdc_socket->sock);
 
 	kdc_socket->fde = event_add_fd(kdc->task->event_ctx, kdc, 
-				       socket_get_fd(kdc_socket->sock), EVENT_FD_READ,
-				       kdc_socket_handler, kdc_socket);
-
-	kdc_address = socket_address_from_strings(kdc_socket, kdc_socket->sock->backend_name, 
-						  address, kdc_port);
-	NT_STATUS_HAVE_NO_MEMORY(kdc_address);
-
-	status = socket_listen(kdc_socket->sock, kdc_address, 0, 0);
-	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(0,("Failed to bind to %s:%d UDP for kdc - %s\n", 
-			 address, kdc_port, nt_errstr(status)));
-		talloc_free(kdc_socket);
-		return status;
-	}
-
-	kpasswd_socket->kdc = kdc;
-	kpasswd_socket->send_queue = NULL;
-	kpasswd_socket->process = kpasswdd_process;
-
-	talloc_steal(kpasswd_socket, kpasswd_socket->sock);
-
-	kpasswd_socket->fde = event_add_fd(kdc->task->event_ctx, kdc, 
-					   socket_get_fd(kpasswd_socket->sock), EVENT_FD_READ,
-					   kdc_socket_handler, kpasswd_socket);
+					   socket_get_fd(kdc_socket->sock), EVENT_FD_READ,
+					   kdc_socket_handler, kdc_socket);
 	


-- 
Samba Shared Repository


More information about the samba-cvs mailing list