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 <mwallnoe...@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 <mwallnoe...@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 <mwallnoe...@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 <mwallnoe...@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 <mwallnoe...@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 <mwallnoe...@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 <edew...@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 <abart...@samba.org>

commit 0c89a6f2aa433e54d7af99d9214ddc186784af97
Author: Endi S. Dewata <edew...@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 <abart...@samba.org>

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

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

commit c93fc3a10a8839752eb4c1d1e91c1b455c974eef
Author: Endi S. Dewata <edew...@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 <abart...@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

Reply via email to