]> git.sur5r.net Git - openldap/commitdiff
Namespace changes
authorKurt Zeilenga <kurt@openldap.org>
Mon, 19 Jul 1999 19:40:33 +0000 (19:40 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Mon, 19 Jul 1999 19:40:33 +0000 (19:40 +0000)
  added slap_ and ldbm_ to many structures
  added typedefs to many structures
  used typedefs
New main.c argument parsing with ldap url support (replacing -a address).
New sockaddr_in handling and support for multiple listeners.

23 files changed:
servers/slapd/acl.c
servers/slapd/aclparse.c
servers/slapd/back-ldbm/attr.c
servers/slapd/back-ldbm/back-ldbm.h
servers/slapd/back-ldbm/cache.c
servers/slapd/back-ldbm/dbcache.c
servers/slapd/back-ldbm/dn2id.c
servers/slapd/back-ldbm/id2children.c
servers/slapd/back-ldbm/id2entry.c
servers/slapd/back-ldbm/idl.c
servers/slapd/back-ldbm/index.c
servers/slapd/back-ldbm/proto-back-ldbm.h
servers/slapd/config.c
servers/slapd/connection.c
servers/slapd/daemon.c
servers/slapd/main.c
servers/slapd/proto-slap.h
servers/slapd/result.c
servers/slapd/slap.h
servers/slapd/slapd.dsp
servers/slapd/tools/ldbmtest.c
servers/slapd/tools/ldif2id2children.c
servers/slapd/tools/ldif2id2entry.c

index 6dcdcd50870b045a946c60aa459b3cee572dbfd4..5d1eedb4401e8e8b06d8edf397190b25fd6dbc8d 100644 (file)
@@ -38,7 +38,7 @@ access_allowed(
 )
 {
        int                             rc;
-       struct acl              *a;
+       AccessControl   *a;
        char            *edn;
 
        regmatch_t       matches[MAXREMATCHES];
@@ -93,7 +93,7 @@ access_allowed(
  * acl_access_allowed().
  */
 
-struct acl *
+AccessControl *
 acl_get_applicable(
     Backend            *be,
     Operation          *op,
@@ -104,7 +104,7 @@ acl_get_applicable(
 )
 {
        int             i;
-       struct acl      *a;
+       AccessControl   *a;
     char               *edn;
 
        Debug( LDAP_DEBUG_ACL, "\n=> acl_get: entry (%s) attr (%s)\n",
@@ -200,7 +200,7 @@ acl_get_applicable(
 
 int
 acl_access_allowed(
-    struct acl         *a,
+    AccessControl      *a,
     Backend            *be,
     Connection         *conn,
     Entry              *e,
@@ -212,7 +212,7 @@ acl_access_allowed(
 )
 {
        int             i;
-       struct access   *b;
+       Access  *b;
        Attribute       *at;
        struct berval   bv;
        int             default_access;
@@ -398,7 +398,7 @@ acl_check_modlist(
 )
 {
        int             i;
-       struct acl      *a;
+       AccessControl   *a;
        char    *edn = e->e_ndn;
 
        for ( ; mlist != NULL; mlist = mlist->ml_next ) {
index 3c69482fce31c16db8b448f813eea942b9d04d2f..f527199b083f003ed5f703eda67a83728e6a9b0d 100644 (file)
 #include "slap.h"
 
 static void            split(char *line, int splitchar, char **left, char **right);
-static void            acl_append(struct acl **l, struct acl *a);
-static void            access_append(struct access **l, struct access *a);
+static void            acl_append(AccessControl **l, AccessControl *a);
+static void            access_append(Access **l, Access *a);
 static void            acl_usage(void);
 #ifdef LDAP_DEBUG
-static void            print_acl(struct acl *a);
-static void            print_access(struct access *b);
+static void            print_acl(AccessControl *a);
+static void            print_access(Access *b);
 #endif
 
 static int
@@ -88,8 +88,8 @@ parse_acl(
 {
        int             i;
        char            *left, *right;
-       struct acl      *a;
-       struct access   *b;
+       AccessControl   *a;
+       Access  *b;
 
        a = NULL;
        for ( i = 1; i < argc; i++ ) {
@@ -101,7 +101,7 @@ parse_acl(
                                    fname, lineno );
                                acl_usage();
                        }
-                       a = (struct acl *) ch_calloc( 1, sizeof(struct acl) );
+                       a = (AccessControl *) ch_calloc( 1, sizeof(AccessControl) );
                        for ( ++i; i < argc; i++ ) {
                                if ( strcasecmp( argv[i], "by" ) == 0 ) {
                                        i--;
@@ -181,7 +181,7 @@ parse_acl(
                         * by clause consists of <who> and <access>
                         */
 
-                       b = (struct access *) ch_calloc( 1, sizeof(struct access) );
+                       b = (Access *) ch_calloc( 1, sizeof(Access) );
 
                        if ( ++i == argc ) {
                                fprintf( stderr,
@@ -400,7 +400,7 @@ split(
 }
 
 static void
-access_append( struct access **l, struct access *a )
+access_append( Access **l, Access *a )
 {
        for ( ; *l != NULL; l = &(*l)->a_next )
                ;       /* NULL */
@@ -409,7 +409,7 @@ access_append( struct access **l, struct access *a )
 }
 
 static void
-acl_append( struct acl **l, struct acl *a )
+acl_append( AccessControl **l, AccessControl *a )
 {
        for ( ; *l != NULL; l = &(*l)->acl_next )
                ;       /* NULL */
@@ -420,7 +420,7 @@ acl_append( struct acl **l, struct acl *a )
 #ifdef LDAP_DEBUG
 
 static void
-print_access( struct access *b )
+print_access( Access *b )
 {
        fprintf( stderr, "\tby" );
 
@@ -451,10 +451,10 @@ print_access( struct access *b )
 }
 
 static void
-print_acl( struct acl *a )
+print_acl( AccessControl *a )
 {
        int             i;
-       struct access   *b;
+       Access  *b;
 
        if ( a == NULL ) {
                fprintf( stderr, "NULL\n" );
index a5ece146fbea8640925cc54426965fdd66a82415..72e934448bed4e65d2dcdd972e218c06acbfd891 100644 (file)
@@ -13,7 +13,7 @@
 static int
 ainfo_type_cmp(
     char               *type,
-    struct attrinfo    *a
+    AttrInfo   *a
 )
 {
        return( strcasecmp( type, a->ai_type ) );
@@ -21,8 +21,8 @@ ainfo_type_cmp(
 
 static int
 ainfo_cmp(
-    struct attrinfo    *a,
-    struct attrinfo    *b
+    AttrInfo   *a,
+    AttrInfo   *b
 )
 {
        return( strcasecmp( a->ai_type, b->ai_type ) );
@@ -37,8 +37,8 @@ ainfo_cmp(
 
 static int
 ainfo_dup(
-    struct attrinfo    *a,
-    struct attrinfo    *b
+    AttrInfo   *a,
+    AttrInfo   *b
 )
 {
        /*
@@ -62,13 +62,13 @@ attr_masks(
     int                        *syntaxmask
 )
 {
-       struct attrinfo *a;
+       AttrInfo        *a;
 
        *indexmask = 0;
        *syntaxmask = 0;
-       if ( (a = (struct attrinfo *) avl_find( li->li_attrs, type,
+       if ( (a = (AttrInfo *) avl_find( li->li_attrs, type,
            (AVL_CMP) ainfo_type_cmp )) == NULL ) {
-               if ( (a = (struct attrinfo *) avl_find( li->li_attrs, "default",
+               if ( (a = (AttrInfo *) avl_find( li->li_attrs, "default",
                    (AVL_CMP) ainfo_type_cmp )) == NULL ) {
                        return;
                }
@@ -93,14 +93,14 @@ attr_index_config(
 {
        int             i, j;
        char            **attrs, **indexes;
-       struct attrinfo *a;
+       AttrInfo        *a;
 
        attrs = str2charray( argv[0], "," );
        if ( argc > 1 ) {
                indexes = str2charray( argv[1], "," );
        }
        for ( i = 0; attrs[i] != NULL; i++ ) {
-               a = (struct attrinfo *) ch_malloc( sizeof(struct attrinfo) );
+               a = (AttrInfo *) ch_malloc( sizeof(AttrInfo) );
                a->ai_type = ch_strdup( attrs[i] );
                a->ai_syntaxmask = attr_syntax( a->ai_type );
                if ( argc == 1 ) {
index 267bbcffa6361001ecdce5d54eb595dd935bc6c1..d34161ad10944bcd9ad65fb00451e70e84c5cd62 100644 (file)
@@ -69,7 +69,7 @@ typedef ID ID_BLOCK;
 #define ID_BLOCK_INDIRECT(b)   (ID_BLOCK_NIDS(b) == ID_BLOCK_INDIRECT_VALUE)
 
 /* for the in-core cache of entries */
-struct cache {
+typedef struct ldbm_cache {
        int             c_maxsize;
        int             c_cursize;
        Avlnode         *c_dntree;
@@ -77,13 +77,13 @@ struct cache {
        Entry           *c_lruhead;     /* lru - add accessed entries here */
        Entry           *c_lrutail;     /* lru - rem lru entries from here */
        ldap_pvt_thread_mutex_t c_mutex;
-};
+} Cache;
 
 #define CACHE_READ_LOCK                0
 #define CACHE_WRITE_LOCK       1
 
 /* for the cache of open index files */
-struct dbcache {
+typedef struct ldbm_dbcache {
        int             dbc_refcnt;
        int             dbc_maxids;
        int             dbc_maxindirect;
@@ -91,10 +91,10 @@ struct dbcache {
        long    dbc_blksize;
        char    *dbc_name;
        LDBM    dbc_db;
-};
+} DBCache;
 
 /* for the cache of attribute information (which are indexed, etc.) */
-struct attrinfo {
+typedef struct ldbm_attrinfo {
        char    *ai_type;       /* type name (cn, sn, ...)      */
        int     ai_indexmask;   /* how the attr is indexed      */
 #define INDEX_PRESENCE 0x01
@@ -110,7 +110,7 @@ struct attrinfo {
 #define SYNTAX_BIN      0x04
    ... etc. ...
 */
-};
+} AttrInfo;
 
 #define MAXDBCACHE     10
 
@@ -130,11 +130,11 @@ struct ldbminfo {
        ldap_pvt_thread_mutex_t         li_nextid_mutex;
        int                     li_mode;
        char                    *li_directory;
-       struct cache            li_cache;
+       Cache           li_cache;
        Avlnode                 *li_attrs;
        int                     li_dbcachesize;
        int                     li_dbcachewsync;
-       struct dbcache          li_dbcache[MAXDBCACHE];
+       DBCache         li_dbcache[MAXDBCACHE];
        ldap_pvt_thread_mutex_t         li_dbcache_mutex;
        ldap_pvt_thread_cond_t          li_dbcache_cv;
 #ifdef HAVE_BERKELEY_DB2
index 1e6d1bbd3ef66bccf17efbf03697c8acda051a8a..85d3b07ef6d1c73a7d1a129525b6b6e994501882 100644 (file)
@@ -13,7 +13,7 @@
 #include "back-ldbm.h"
 
 /* LDBM backend specific entry info -- visible only to the cache */
-struct ldbm_entry_info {
+typedef struct ldbm_entry_info {
        ldap_pvt_thread_rdwr_t  lei_rdwr;       /* reader/writer lock */
 
        /*
@@ -28,14 +28,14 @@ struct ldbm_entry_info {
 #define CACHE_ENTRY_DELETED            3
 
        int             lei_refcnt;     /* # threads ref'ing this entry */
-       struct entry    *lei_lrunext;   /* for cache lru list */
-       struct entry    *lei_lruprev;
-};
-#define LEI(e) ((struct ldbm_entry_info *) ((e)->e_private))
+       Entry   *lei_lrunext;   /* for cache lru list */
+       Entry   *lei_lruprev;
+} EntryInfo;
+#define LEI(e) ((EntryInfo *) ((e)->e_private))
 
-static int     cache_delete_entry_internal(struct cache *cache, Entry *e);
+static int     cache_delete_entry_internal(Cache *cache, Entry *e);
 #ifdef LDAP_DEBUG
-static void    lru_print(struct cache *cache);
+static void    lru_print(Cache *cache);
 #endif
 
 static int
@@ -120,7 +120,7 @@ cache_entry_private_destroy( Entry*e )
 }
 
 void
-cache_return_entry_rw( struct cache *cache, Entry *e, int rw )
+cache_return_entry_rw( Cache *cache, Entry *e, int rw )
 {
        ID id;
        int refcnt;
@@ -209,7 +209,7 @@ cache_return_entry_rw( struct cache *cache, Entry *e, int rw )
  */
 int
 cache_add_entry_rw(
-    struct cache       *cache,
+    Cache      *cache,
     Entry              *e,
        int             rw
 )
@@ -330,7 +330,7 @@ cache_add_entry_rw(
  */
 int
 cache_update_entry(
-    struct cache       *cache,
+    Cache      *cache,
     Entry              *e
 )
 {
@@ -430,7 +430,7 @@ cache_update_entry(
 ID
 cache_find_entry_dn2id(
        Backend         *be,
-    struct cache       *cache,
+    Cache      *cache,
     char               *dn
 )
 {
@@ -509,7 +509,7 @@ try_again:
 
 Entry *
 cache_find_entry_id(
-       struct cache    *cache,
+       Cache   *cache,
        ID                              id,
        int                             rw
 )
@@ -608,7 +608,7 @@ try_again:
  */
 int
 cache_delete_entry(
-    struct cache       *cache,
+    Cache      *cache,
     Entry              *e
 )
 {
@@ -631,7 +631,7 @@ cache_delete_entry(
 
 static int
 cache_delete_entry_internal(
-    struct cache       *cache,
+    Cache      *cache,
     Entry              *e
 )
 {
@@ -670,7 +670,7 @@ cache_delete_entry_internal(
 #ifdef SLAP_CLEANUP
 
 void
-cache_release_all( struct cache *cache )
+cache_release_all( Cache *cache )
 {
        Entry *e;
        int rc;
@@ -703,7 +703,7 @@ cache_release_all( struct cache *cache )
 #ifdef LDAP_DEBUG
 
 static void
-lru_print( struct cache *cache )
+lru_print( Cache *cache )
 {
        Entry   *e;
 
index c7b8047a52f77b0ee1406287b899f65f3e7eeb39..28004ac225b75c09e938fd60cf2c8cce8c7e8c6e 100644 (file)
@@ -19,7 +19,7 @@
 #include "slap.h"
 #include "back-ldbm.h"
 
-struct dbcache *
+DBCache *
 ldbm_cache_open(
     Backend    *be,
     char       *name,
@@ -127,7 +127,7 @@ ldbm_cache_open(
 }
 
 void
-ldbm_cache_close( Backend *be, struct dbcache *db )
+ldbm_cache_close( Backend *be, DBCache *db )
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
 
@@ -139,7 +139,7 @@ ldbm_cache_close( Backend *be, struct dbcache *db )
 }
 
 void
-ldbm_cache_really_close( Backend *be, struct dbcache *db )
+ldbm_cache_really_close( Backend *be, DBCache *db )
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
 
@@ -188,7 +188,7 @@ ldbm_cache_flush_all( Backend *be )
 
 Datum
 ldbm_cache_fetch(
-    struct dbcache     *db,
+    DBCache    *db,
     Datum              key
 )
 {
@@ -203,7 +203,7 @@ ldbm_cache_fetch(
 
 int
 ldbm_cache_store(
-    struct dbcache     *db,
+    DBCache    *db,
     Datum              key,
     Datum              data,
     int                        flags
@@ -236,7 +236,7 @@ ldbm_cache_store(
 
 int
 ldbm_cache_delete(
-    struct dbcache     *db,
+    DBCache    *db,
     Datum              key
 )
 {
index c361418e3c7f12cd6ae55a444e1cbb6d5578fcef..377952acba81923823c803099d138f2b1d2f7cc1 100644 (file)
@@ -19,7 +19,7 @@ dn2id_add(
 )
 {
        int             rc, flags;
-       struct dbcache  *db;
+       DBCache *db;
        Datum           key, data;
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
 
@@ -62,7 +62,7 @@ dn2id(
 )
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
-       struct dbcache  *db;
+       DBCache *db;
        ID              id;
        Datum           key, data;
 
@@ -116,7 +116,7 @@ dn2id_delete(
     char       *dn
 )
 {
-       struct dbcache  *db;
+       DBCache *db;
        Datum           key;
        int             rc;
 
index 636832f1fd061c587bbacf6ad3bd60a7e5a98178..55b9d8d5189d3e3c5688f8bfdb08b7505494f7fc 100644 (file)
@@ -17,7 +17,7 @@ id2children_add(
     Entry      *e
 )
 {
-       struct dbcache  *db;
+       DBCache *db;
        Datum           key;
        char            buf[20];
 
@@ -59,7 +59,7 @@ id2children_remove(
     Entry      *e
 )
 {
-       struct dbcache  *db;
+       DBCache *db;
        Datum           key;
        char            buf[20];
 
@@ -105,7 +105,7 @@ has_children(
     Entry      *p
 )
 {
-       struct dbcache  *db;
+       DBCache *db;
        Datum           key;
        int             rc = 0;
        ID_BLOCK                *idl;
index 8c4d8b14095f1bcad2f5ce6989dfa0edc594b56a..d9de7d200b19b8515c924f98f5b3eb70390dc56d 100644 (file)
@@ -18,7 +18,7 @@ int
 id2entry_add( Backend *be, Entry *e )
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
-       struct dbcache  *db;
+       DBCache *db;
        Datum           key, data;
        int             len, rc, flags;
 
@@ -60,7 +60,7 @@ int
 id2entry_delete( Backend *be, Entry *e )
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
-       struct dbcache  *db;
+       DBCache *db;
        Datum           key;
        int             rc;
 
@@ -104,7 +104,7 @@ Entry *
 id2entry_rw( Backend *be, ID id, int rw )
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
-       struct dbcache  *db;
+       DBCache *db;
        Datum           key, data;
        Entry           *e;
 
index e1df58e980b7689cd87a3771ff01a4f994e7f41a..e89e7dbf84ed6a1d3400e222f5deace50ec410e3 100644 (file)
@@ -61,7 +61,7 @@ idl_free( ID_BLOCK *idl )
 static ID_BLOCK *
 idl_fetch_one(
     Backend            *be,
-    struct dbcache     *db,
+    DBCache    *db,
     Datum              key
 )
 {
@@ -97,7 +97,7 @@ idl_fetch_one(
 ID_BLOCK *
 idl_fetch(
     Backend            *be,
-    struct dbcache     *db,
+    DBCache    *db,
     Datum              key
 )
 {
@@ -191,7 +191,7 @@ idl_fetch(
 static int
 idl_store(
     Backend            *be,
-    struct dbcache     *db,
+    DBCache    *db,
     Datum              key, 
     ID_BLOCK           *idl
 )
@@ -277,7 +277,7 @@ idl_split_block(
 static int
 idl_change_first(
     Backend            *be,
-    struct dbcache     *db,
+    DBCache    *db,
     Datum              hkey,           /* header block key     */
     ID_BLOCK           *h,             /* header block         */
     int                        pos,            /* pos in h to update   */
@@ -321,7 +321,7 @@ idl_change_first(
 int
 idl_insert_key(
     Backend            *be,
-    struct dbcache     *db,
+    DBCache    *db,
     Datum              key,
     ID                 id
 )
@@ -662,7 +662,7 @@ idl_insert( ID_BLOCK **idl, ID id, unsigned int maxids )
 int
 idl_delete_key (
        Backend         *be,
-       struct dbcache  *db,
+       DBCache  *db,
        Datum           key,
        ID              id
 )
index 5f8b7cec646450c7ff35bb7a1cea0a03d651ee14..444d079179a792777dd97c3ffb689de15a2bce59 100644 (file)
 #include "back-ldbm.h"
 
 static int     change_value(Backend *be,
-                         struct dbcache *db,
+                         DBCache *db,
                          char *type,
                          int indextype,
                          char *val,
                          ID id,
                          int
-                         (*idl_func)(Backend *, struct dbcache *, Datum, ID));
+                         (*idl_func)(Backend *, DBCache *, Datum, ID));
 static int     index2prefix(int indextype);
 
 int
@@ -116,7 +116,7 @@ index_read(
     char       *val
 )
 {
-       struct dbcache  *db;
+       DBCache *db;
        Datum           key;
        ID_BLOCK                *idl;
        int             indexmask, syntax;
@@ -188,12 +188,12 @@ index_read(
 static int
 change_value(
     Backend            *be,
-    struct dbcache     *db,
+    DBCache    *db,
     char               *type,
     int                        indextype,
     char               *val,
     ID                 id,
-    int                        (*idl_func)(Backend *, struct dbcache *, Datum, ID)
+    int                        (*idl_func)(Backend *, DBCache *, Datum, ID)
 )
 {
        int     rc;
@@ -257,10 +257,10 @@ index_change_values(
        char            buf[SUBLEN + 1];
        char            vbuf[BUFSIZ];
        char            *bigbuf;
-       struct dbcache  *db;
+       DBCache *db;
 
        int             (*idl_funct)(Backend *,
-                                   struct dbcache *,
+                                   DBCache *,
                                    Datum, ID);
        char            *at_cn; /* Attribute canonical name */
        int             mode;
index 6c2f90da0aab5adc20052e4c8e1fb39f664339a1..ad550ee17dcf76e4ef0e98022cf0c3c06b63489a 100644 (file)
@@ -39,31 +39,31 @@ void attr_index_destroy LDAP_P(( Avlnode *tree ));
  * cache.c
  */
 
-int cache_add_entry_rw LDAP_P(( struct cache *cache, Entry *e, int rw ));
-int cache_update_entry LDAP_P(( struct cache *cache, Entry *e ));
-void cache_return_entry_rw LDAP_P(( struct cache *cache, Entry *e, int rw ));
+int cache_add_entry_rw LDAP_P(( Cache *cache, Entry *e, int rw ));
+int cache_update_entry LDAP_P(( Cache *cache, Entry *e ));
+void cache_return_entry_rw LDAP_P(( Cache *cache, Entry *e, int rw ));
 #define cache_return_entry_r(c, e) cache_return_entry_rw((c), (e), 0)
 #define cache_return_entry_w(c, e) cache_return_entry_rw((c), (e), 1)
 
-ID cache_find_entry_dn2id LDAP_P(( Backend *be, struct cache *cache, char *dn ));
-Entry * cache_find_entry_id LDAP_P(( struct cache *cache, ID id, int rw ));
-int cache_delete_entry LDAP_P(( struct cache *cache, Entry *e ));
+ID cache_find_entry_dn2id LDAP_P(( Backend *be, Cache *cache, char *dn ));
+Entry * cache_find_entry_id LDAP_P(( Cache *cache, ID id, int rw ));
+int cache_delete_entry LDAP_P(( Cache *cache, Entry *e ));
 #ifdef SLAP_CLEANUP
-void cache_release_all LDAP_P(( struct cache *cache ));
+void cache_release_all LDAP_P(( Cache *cache ));
 #endif
 
 /*
  * dbcache.c
  */
 
-struct dbcache * ldbm_cache_open LDAP_P(( Backend *be, char *name, char *suffix,
- int flags ));
-void ldbm_cache_close LDAP_P(( Backend *be, struct dbcache *db ));
-void ldbm_cache_really_close LDAP_P(( Backend *be, struct dbcache *db ));
+DBCache * ldbm_cache_open LDAP_P(( Backend *be,
      char *name, char *suffix, int flags ));
+void ldbm_cache_close LDAP_P(( Backend *be, DBCache *db ));
+void ldbm_cache_really_close LDAP_P(( Backend *be, DBCache *db ));
 void ldbm_cache_flush_all LDAP_P(( Backend *be ));
-Datum ldbm_cache_fetch LDAP_P(( struct dbcache *db, Datum key ));
-int ldbm_cache_store LDAP_P(( struct dbcache *db, Datum key, Datum data, int flags ));
-int ldbm_cache_delete LDAP_P(( struct dbcache *db, Datum key ));
+Datum ldbm_cache_fetch LDAP_P(( DBCache *db, Datum key ));
+int ldbm_cache_store LDAP_P(( DBCache *db, Datum key, Datum data, int flags ));
+int ldbm_cache_delete LDAP_P(( DBCache *db, Datum key ));
 
 /*
  * dn2id.c
@@ -114,10 +114,10 @@ Entry * id2entry_rw LDAP_P(( Backend *be, ID id, int rw ));
 ID_BLOCK * idl_alloc LDAP_P(( unsigned int nids ));
 ID_BLOCK * idl_allids LDAP_P(( Backend *be ));
 void idl_free LDAP_P(( ID_BLOCK *idl ));
-ID_BLOCK * idl_fetch LDAP_P(( Backend *be, struct dbcache *db, Datum key ));
-int idl_insert_key LDAP_P(( Backend *be, struct dbcache *db, Datum key, ID id ));
+ID_BLOCK * idl_fetch LDAP_P(( Backend *be, DBCache *db, Datum key ));
+int idl_insert_key LDAP_P(( Backend *be, DBCache *db, Datum key, ID id ));
 int idl_insert LDAP_P(( ID_BLOCK **idl, ID id, unsigned int maxids ));
-int idl_delete_key LDAP_P(( Backend *be, struct dbcache *db, Datum key, ID id ));
+int idl_delete_key LDAP_P(( Backend *be, DBCache *db, Datum key, ID id ));
 ID_BLOCK * idl_intersection LDAP_P(( Backend *be, ID_BLOCK *a, ID_BLOCK *b ));
 ID_BLOCK * idl_union LDAP_P(( Backend *be, ID_BLOCK *a, ID_BLOCK *b ));
 ID_BLOCK * idl_notin LDAP_P(( Backend *be, ID_BLOCK *a, ID_BLOCK *b ));
@@ -130,7 +130,8 @@ ID idl_nextid LDAP_P(( ID_BLOCK *idl, ID id ));
 
 int index_add_entry LDAP_P(( Backend *be, Entry *e ));
 int index_add_mods LDAP_P(( Backend *be, LDAPModList *ml, ID id ));
-ID_BLOCK * index_read LDAP_P(( Backend *be, char *type, int indextype, char *val ));
+ID_BLOCK * index_read LDAP_P(( Backend *be,
+       char *type, int indextype, char *val ));
 /* Possible operations supported (op) by index_change_values() */
 #define __INDEX_ADD_OP         0x0001
 #define __INDEX_DELETE_OP      0x0002
@@ -164,8 +165,9 @@ int index_change_values LDAP_P(( Backend *be,
 int add_values LDAP_P(( Entry *e, LDAPMod *mod, char *dn ));
 int delete_values LDAP_P(( Entry *e, LDAPMod *mod, char *dn ));
 int replace_values LDAP_P(( Entry *e, LDAPMod *mod, char *dn ));
-int ldbm_modify_internal LDAP_P((Backend *be, Connection *conn, Operation *op,
-                                char *dn, LDAPModList *mods, Entry *e));
+int ldbm_modify_internal LDAP_P((Backend *be,
+       Connection *conn, Operation *op,
+       char *dn, LDAPModList *mods, Entry *e));
 
 /*
  * nextid.c
index 017100b532dd955ce083f0dd2c805e0ca421aabd..873f2d16c23a411e3c7dad2304142cf976bc5c2c 100644 (file)
@@ -21,7 +21,7 @@
  */
 int            defsize = SLAPD_DEFAULT_SIZELIMIT;
 int            deftime = SLAPD_DEFAULT_TIMELIMIT;
-struct acl     *global_acl = NULL;
+AccessControl  *global_acl = NULL;
 int            global_default_access = ACL_READ;
 char           *replogfile;
 int            global_lastmod;
@@ -45,8 +45,10 @@ read_config( char *fname )
        char    *line, *savefname, *saveline;
        int     cargc, savelineno;
        char    *cargv[MAXARGS];
-       int     lineno, i, rc;
-
+       int     lineno, i;
+#ifdef HAVE_TLS
+       int rc;
+#endif
        struct berval *vals[2];
        struct berval val;
 
index b05c8fbf0a8b2c7077d50e2275c24f11d6a7e8f9..27c7fda824b247eae73b97b5655009c3ac533042 100644 (file)
@@ -273,12 +273,16 @@ long connection_init(
        ber_socket_t s,
        const char* name,
        const char* addr,
-       int use_tls)
+       int use_tls )
 {
        unsigned long id;
        Connection *c;
        assert( connections != NULL );
 
+#ifndef HAVE_TLS
+       assert( !use_tls );
+#endif
+
        if( s == AC_SOCKET_INVALID ) {
         Debug( LDAP_DEBUG_ANY,
                        "connection_init(%ld): invalid.\n",
@@ -394,10 +398,12 @@ long connection_init(
     c->c_conn_state = SLAP_C_INACTIVE;
     c->c_struct_state = SLAP_C_USED;
 
+#ifdef HAVE_TLS
     if ( use_tls ) {
            c->c_is_tls = 1;
            c->c_needs_tls_accept = 1;
     }
+#endif
 
     ldap_pvt_thread_mutex_unlock( &c->c_mutex );
     ldap_pvt_thread_mutex_unlock( &connections_mutex );
index 4cf0d97293445bb45275d06916f8ef4dc259acaa..be475f30f1da5238ad391e2888f44800086449e3 100644 (file)
@@ -21,24 +21,26 @@ int deny_severity = LOG_NOTICE;
 #endif /* TCP Wrappers */
 
 /* globals */
+time_t starttime;
 ber_socket_t dtblsize;
+
+typedef struct slap_listener {
+       char* sl_url;
 #ifdef HAVE_TLS
-#define N_LISTENERS 2
-#else
-#define N_LISTENERS 1
+       int             sl_is_tls;
 #endif
-struct listener_rec {
-       ber_socket_t            tcps;
-       struct sockaddr_in      *addr;
-       int                     use_tls;
-} listeners[N_LISTENERS];
+       ber_socket_t            sl_sd;
+       struct sockaddr_in      sl_addr;
+} Listener;
+
+Listener **slap_listeners;
 
 #ifdef HAVE_WINSOCK2
 /* in nt_main.c */
 extern ldap_pvt_thread_cond_t                  started_event;
 
 /* forward reference */
-void hit_socket();
+static void hit_socket(void);
 /* In wsa_err.c */
 char *WSAGetLastErrorString();
 static ldap_pvt_thread_t hit_tid;
@@ -64,12 +66,10 @@ static
 #endif
 volatile sig_atomic_t slapd_shutdown = 0;
 
-static int daemon_initialized = 0;
 static ldap_pvt_thread_t       listener_tid;
 static volatile sig_atomic_t slapd_listener = 0;
-void sockinit();
 
-struct slap_daemon {
+static struct slap_daemon {
        ldap_pvt_thread_mutex_t sd_mutex;
 
        int sd_nactives;
@@ -194,13 +194,183 @@ static void slapd_close(ber_socket_t s) {
 }
 
 
+Listener *
+open_listener(
+       char* url,
+       int port,
+       int tls_port )
+{
+       int     tmp, rc;
+       Listener l;
+       Listener *li;
+       LDAPURLDesc *lud;
+
+       rc = ldap_url_parse( url, &lud );
+
+       if( rc != LDAP_URL_SUCCESS ) {
+               Debug( LDAP_DEBUG_ANY,
+                       "daemon: listen URL \"%s\" parse error=%d\n",
+                       url, rc, 0 );
+               return NULL;
+       }
+
+#ifndef HAVE_TLS
+       if( lud->lud_ldaps ) {
+               Debug( LDAP_DEBUG_ANY,
+                       "daemon: TLS not supported (%s)\n",
+                       url, 0, 0 );
+               ldap_free_urldesc( lud );
+               return NULL;
+       }
+
+       if(! lud->lud_port ) {
+               lud->lud_port = port;
+       }
+
+#else
+       if(! lud->lud_port ) {
+               lud->lud_port = lud->lud_ldaps ? tls_port : port;
+       }
+#endif
+
+       (void) memset( (void*) &l.sl_addr, '\0', sizeof(l.sl_addr) );
+
+       l.sl_addr.sin_family = AF_INET;
+       l.sl_addr.sin_port = htons( (unsigned short) lud->lud_port );
+
+       if( lud->lud_host == NULL || lud->lud_host[0] == '\0'
+               || strcmp(lud->lud_host, "*") == 0 )
+       {
+               l.sl_addr.sin_addr.s_addr = htonl(INADDR_ANY);
+
+       } else {
+               /* host or address was specified */
+
+               if( isdigit( lud->lud_host[0] ) ) {
+#ifdef HAVE_WINSOCK
+                       if(!(l.sl_addr.sin_addr.S_un.S_addr = inet_addr(lud->lud_host)))
+#else
+                       if(!inet_aton(lud->lud_host, &l.sl_addr.sin_addr))
+#endif  
+                       {
+                               Debug( LDAP_DEBUG_ANY, "invalid address (%s) in URL: %s",
+                                       lud->lud_host, url, 0);
+                               ldap_free_urldesc( lud );
+                               return NULL;
+                       }
+
+               } else {
+                       struct hostent *he = gethostbyname( lud->lud_host );
+                       if( he == NULL ) {
+                               Debug( LDAP_DEBUG_ANY, "invalid host (%s) in URL: %s",
+                                       lud->lud_host, url, 0);
+                               ldap_free_urldesc( lud );
+                               return NULL;
+                       }
+
+#ifdef HAVE_WINSOCK
+                       if(!(l.sl_addr.sin_addr.S_un.S_addr = inet_addr(he->h_addr)))
+#else
+                       if(!inet_aton(he->h_addr, &l.sl_addr.sin_addr))
+#endif  
+                       {
+                               Debug( LDAP_DEBUG_ANY, "%s has invalid address (%s) in URL: %s",
+                                       lud->lud_host, he->h_addr, url );
+                               ldap_free_urldesc( lud );
+                               return NULL;
+                       }
+               }
+       }
+
+       ldap_free_urldesc( lud );
+
 
-int
-set_socket( struct sockaddr_in *addr )
+       if ( (l.sl_sd = socket( AF_INET, SOCK_STREAM, 0 )) == AC_SOCKET_INVALID ) {
+#ifndef HAVE_WINSOCK
+               int err = errno;
+               Debug( LDAP_DEBUG_ANY,
+                       "daemon: socket() failed errno %d (%s)\n", err,
+               err > -1 && err < sys_nerr ? sys_errlist[err] :
+               "unknown", 0 );
+#else
+               Debug( LDAP_DEBUG_ANY, 
+                       "daemon: socket() failed errno %d (%s)\n",
+                       WSAGetLastError(),
+               WSAGetLastErrorString(), 0 );
+#endif
+               return( AC_SOCKET_INVALID );
+       }
+
+#ifndef HAVE_WINSOCK
+       if ( l.sl_sd >= dtblsize ) {
+               Debug( LDAP_DEBUG_ANY,
+                       "daemon: listener descriptor %ld is too great %ld\n",
+                       (long) l.sl_sd, (long) dtblsize, 0 );
+               tcp_close( l.sl_sd );
+               return( AC_SOCKET_INVALID );
+       }
+#endif
+
+#ifdef SO_REUSEADDR
+       tmp = 1;
+       if ( setsockopt( l.sl_sd, SOL_SOCKET, SO_REUSEADDR,
+               (char *) &tmp, sizeof(tmp) ) == -1 )
+       {
+               int err = errno;
+               Debug( LDAP_DEBUG_ANY,
+              "slapd(%ld): setsockopt() failed errno %d (%s)\n",
+               (long) l.sl_sd, err,
+                       err > -1 && err < sys_nerr
+                               ? sys_errlist[err] : "unknown" );
+       }
+#endif
+#ifdef SO_KEEPALIVE
+       tmp = 1;
+       if ( setsockopt( l.sl_sd, SOL_SOCKET, SO_KEEPALIVE,
+               (char *) &tmp, sizeof(tmp) ) == -1 )
+       {
+               int err = errno;
+               Debug( LDAP_DEBUG_ANY,
+                       "slapd(%ld): setsockopt(KEEPALIVE) failed errno %d (%s)\n",
+               (long) l.sl_sd, err,
+                       err > -1 && err < sys_nerr
+                               ? sys_errlist[err] : "unknown" );
+       }
+#endif
+
+       if ( bind( l.sl_sd, (struct sockaddr *) &l.sl_addr, sizeof(l.sl_addr) ) == -1 ) {
+               int err = errno;
+               Debug( LDAP_DEBUG_ANY, "daemon: bind(%ld) failed errno %d (%s)\n",
+               (long) l.sl_sd, err,
+                       err > -1 && err < sys_nerr
+                               ? sys_errlist[err] : "unknown" );
+               tcp_close( l.sl_sd );
+               return AC_SOCKET_INVALID;
+       }
+
+       l.sl_url = ch_strdup( url );
+
+       li = ch_malloc( sizeof( Listener ) );
+       *li = l;
+
+       return li;
+}
+
+static int sockinit(void);
+static int sockdestroy(void);
+
+slapd_daemon_init(char *urls, int port, int tls_port )
 {
-       ber_socket_t    tcps = AC_SOCKET_INVALID;
+       int i, rc;
+       char **u;
 
-    if ( !daemon_initialized ) sockinit();
+#ifndef HAVE_TLS
+       assert( tls_port == 0 );
+#endif
+
+       if( rc = sockinit() ) {
+               return rc;
+       }
 
 #ifdef HAVE_SYSCONF
        dtblsize = sysconf( _SC_OPEN_MAX );
@@ -216,133 +386,82 @@ set_socket( struct sockaddr_in *addr )
        }
 #endif /* !FD_SETSIZE */
 
-       if( addr != NULL ) {
-               int     tmp;
+       FD_ZERO( &slap_daemon.sd_readers );
+       FD_ZERO( &slap_daemon.sd_writers );
 
-               if ( (tcps = socket( AF_INET, SOCK_STREAM, 0 )) == AC_SOCKET_INVALID ) {
-#ifndef HAVE_WINSOCK
-                       int err = errno;
-                       Debug( LDAP_DEBUG_ANY,
-                               "daemon: socket() failed errno %d (%s)\n", err,
-                       err > -1 && err < sys_nerr ? sys_errlist[err] :
-                       "unknown", 0 );
-#else
-                       Debug( LDAP_DEBUG_ANY, 
-                               "daemon: socket() failed errno %d (%s)\n",
-                               WSAGetLastError(),
-                       WSAGetLastErrorString(), 0 );
-#endif
-                       return( -1 );
-               }
+       if( urls == NULL ) {
+               urls = ch_strdup("ldap://");
+       }
 
-#ifndef HAVE_WINSOCK
-               if ( tcps >= dtblsize ) {
-                       Debug( LDAP_DEBUG_ANY,
-                               "daemon: listener descriptor %ld is too great %ld\n",
-                               (long) tcps, (long) dtblsize, 0 );
-                       return( -1);
-               }
-#endif
+       u = str2charray( urls, " " );
 
-#ifdef SO_REUSEADDR
-               tmp = 1;
-               if ( setsockopt( tcps, SOL_SOCKET, SO_REUSEADDR,
-                       (char *) &tmp, sizeof(tmp) ) == -1 )
-               {
-                       int err = errno;
-                       Debug( LDAP_DEBUG_ANY,
-                              "slapd(%ld): setsockopt() failed errno %d (%s)\n",
-                       (long) tcps, err,
-                               err > -1 && err < sys_nerr
-                                       ? sys_errlist[err] : "unknown" );
-               }
-#endif
-#ifdef SO_KEEPALIVE
-               tmp = 1;
-               if ( setsockopt( tcps, SOL_SOCKET, SO_KEEPALIVE,
-                       (char *) &tmp, sizeof(tmp) ) == -1 )
-               {
-                       int err = errno;
-                       Debug( LDAP_DEBUG_ANY,
-                               "slapd(%ld): setsockopt(KEEPALIVE) failed errno %d (%s)\n",
-                       (long) tcps, err,
-                               err > -1 && err < sys_nerr
-                                       ? sys_errlist[err] : "unknown" );
-               }
-#endif
+       if( u == NULL ) {
+               return -1;
+       }
 
+       for(i = 0; u[i] == NULL; i++ ) {
+               /* EMPTY */ ;
+       }
 
-               if ( bind( tcps, (struct sockaddr *) addr, sizeof(*addr) ) == -1 ) {
-                       int err = errno;
-                       Debug( LDAP_DEBUG_ANY, "daemon: bind(%ld) failed errno %d (%s)\n",
-                       (long) tcps, err,
-                               err > -1 && err < sys_nerr
-                                       ? sys_errlist[err] : "unknown" );
+       slap_listeners = ch_malloc( (i+1)*sizeof(Listener *) );
+
+       for(i = 0; u[i] == NULL; i++ ) {
+               slap_listeners[i] = open_listener( u[i], port, tls_port );
+
+               if( slap_listeners[i] == NULL ) {
                        return -1;
                }
        }
+       slap_listeners[i] = NULL;
+
+
+       charray_free( u );
+
+       ldap_pvt_thread_mutex_init( &slap_daemon.sd_mutex );
 
-       return tcps;
+       return 0;
 }
 
+
+slapd_daemon_destroy(void)
+{
+       connections_destroy();
+       sockdestroy();
+       return 0;
+}
+
+
 static void *
 slapd_daemon_task(
        void *ptr
 )
 {
-       int inetd;
-       struct slapd_args *args = (struct slapd_args *) ptr;
        int l;
 
-       listeners[0].tcps = args->tcps;
-       listeners[0].addr = args->addr;
-       listeners[0].use_tls = 0;
-#ifdef HAVE_TLS
-       listeners[1].tcps = args->tls_tcps;
-       listeners[1].addr = args->tls_addr;
-       listeners[1].use_tls = 1;
-#endif
-
-       inetd = ( listeners[0].addr == NULL);
-    if ( !daemon_initialized ) sockinit();
+       time( &starttime );
 
-       slapd_listener=1;
-
-       ldap_pvt_thread_mutex_init( &slap_daemon.sd_mutex );
-       FD_ZERO( &slap_daemon.sd_readers );
-       FD_ZERO( &slap_daemon.sd_writers );
-
-       if( !inetd ) {
-               for ( l = 0; l < N_LISTENERS; l++ ) {
-                       if ( listeners[l].tcps < 0 )
-                               continue;
-                       if ( listen( listeners[l].tcps, 5 ) == -1 ) {
-                               int err = errno;
-                               Debug( LDAP_DEBUG_ANY,
-                               "daemon: listen(%ld, 5) failed errno %d (%s)\n",
-                                      (long) listeners[l].tcps, err,
-                                      err > -1 && err < sys_nerr
-                                      ? sys_errlist[err] : "unknown" );
-                               return( (void*)-1 );
-                       }
-
-                       slapd_add( listeners[l].tcps );
-               }
+       for ( l = 0; slap_listeners[l] != NULL; l++ ) {
+               if ( slap_listeners[l]->sl_sd == AC_SOCKET_INVALID )
+                       continue;
 
-       } else {
-               if( connection_init( (ber_socket_t) 0, NULL, NULL, 0 ) ) {
+               if ( listen( slap_listeners[l]->sl_sd, 5 ) == -1 ) {
+                       int err = errno;
                        Debug( LDAP_DEBUG_ANY,
-                               "connection_init(%d) failed.\n",
-                               0, 0, 0 );
+                               "daemon: listen(%s, 5) failed errno %d (%s)\n",
+                                       (long) slap_listeners[l]->sl_url, err,
+                                       err > -1 && err < sys_nerr
+                                       ? sys_errlist[err] : "unknown" );
+
                        return( (void*)-1 );
                }
 
-               slapd_add( 0 );
+               slapd_add( slap_listeners[l]->sl_sd );
        }
 
 #ifdef HAVE_WINSOCK
-       if ( started_event != NULL )
+       if ( started_event != NULL ) {
                ldap_pvt_thread_cond_signal( &started_event );
+       }
 #endif
        /* initialization complete. Here comes the loop. */
 
@@ -401,10 +520,10 @@ slapd_daemon_task(
                memcpy( &writefds, &slap_daemon.sd_writers, sizeof(fd_set) );
 #endif
 
-               for ( l = 0; l < N_LISTENERS; l++ ) {
-                       if ( listeners[l].tcps < 0 )
+               for ( l = 0; slap_listeners[l] != NULL; l++ ) {
+                       if ( slap_listeners[l]->sl_sd == AC_SOCKET_INVALID )
                                continue;
-                       FD_SET( (unsigned) listeners[l].tcps, &readfds );
+                       FD_SET( slap_listeners[l]->sl_sd, &readfds );
                }
 
 #ifndef HAVE_WINSOCK
@@ -425,13 +544,14 @@ slapd_daemon_task(
                tvp = at ? &zero : NULL;
 #endif
 
-               for ( i = 0; i < N_LISTENERS; i++ ) {
-                       if ( listeners[l].tcps < 0 )
+               for ( l = 0; slap_listeners[l] != NULL; l++ ) {
+                       if ( slap_listeners[l]->sl_sd == AC_SOCKET_INVALID )
                                continue;
+
                        Debug( LDAP_DEBUG_CONNS,
-                       "daemon: select: tcps=%d active_threads=%d tvp=%s\n",
-                              listeners[i].tcps, at,
-                              tvp == NULL ? "NULL" : "zero" );
+                               "daemon: select: listen=%d active_threads=%d tvp=%s\n",
+                                       slap_listeners[l]->sl_sd, at,
+                                       tvp == NULL ? "NULL" : "zero" );
                }
 
                switch(ns = select( nfds, &readfds,
@@ -482,23 +602,24 @@ slapd_daemon_task(
                        /* FALL THRU */
                }
 
-               for ( l = 0; l < N_LISTENERS; l++ ) {
+               for ( l = 0; slap_listeners[l] != NULL; l++ ) {
                        ber_int_t s;
                        socklen_t len = sizeof(from);
                        long id;
 
-                       if ( listeners[l].tcps < 0 )
+                       if ( slap_listeners[l]->sl_sd == AC_SOCKET_INVALID )
                                continue;
-                       if ( !FD_ISSET( listeners[l].tcps, &readfds ) )
+
+                       if ( !FD_ISSET( slap_listeners[l]->sl_sd, &readfds ) )
                                continue;
 
-                       if ( (s = accept( listeners[l].tcps,
+                       if ( (s = accept( slap_listeners[l]->sl_sd,
                                (struct sockaddr *) &from, &len )) == AC_SOCKET_INVALID )
                        {
                                int err = errno;
                                Debug( LDAP_DEBUG_ANY,
                                    "daemon: accept(%ld) failed errno %d (%s)\n", err,
-                                   (long) listeners[l].tcps,
+                                   (long) slap_listeners[l]->sl_sd,
                                    err >= 0 && err < sys_nerr ?
                                    sys_errlist[err] : "unknown");
                                continue;
@@ -580,7 +701,13 @@ slapd_daemon_task(
 #endif /* HAVE_TCPD */
 
                        if( (id = connection_init(s, client_name, client_addr,
-                                                 listeners[l].use_tls)) < 0 ) {
+#ifdef HAVE_TLS
+                               slap_listeners[l]->sl_is_tls
+#else
+                               0
+#endif
+                               )) < 0 )
+                       {
                                Debug( LDAP_DEBUG_ANY,
                                        "daemon: connection_init(%ld, %s, %s) failed.\n",
                                        (long) s,
@@ -617,8 +744,8 @@ slapd_daemon_task(
                        int     a, r, w;
                        int     is_listener = 0;
 
-                       for ( l = 0; l < N_LISTENERS; l++ ) {
-                               if ( i == listeners[l].tcps ) {
+                       for ( l = 0; slap_listeners[l] != NULL; l++ ) {
+                               if ( i == slap_listeners[l]->sl_sd ) {
                                        is_listener = 1;
                                        break;
                                }
@@ -655,8 +782,8 @@ slapd_daemon_task(
                        wd = i;
 #endif
 
-                       for ( l = 0; l < N_LISTENERS; l++ ) {
-                               if ( wd == listeners[l].tcps ) {
+                       for ( l = 0; slap_listeners[l] != NULL; l++ ) {
+                               if ( i == slap_listeners[l]->sl_sd ) {
                                        is_listener = 1;
                                        break;
                                }
@@ -700,8 +827,8 @@ slapd_daemon_task(
                        rd = i;
 #endif
 
-                       for ( l = 0; l < N_LISTENERS; l++ ) {
-                               if ( rd == listeners[l].tcps ) {
+                       for ( l = 0; slap_listeners[l] != NULL; l++ ) {
+                               if ( i == slap_listeners[l]->sl_sd ) {
                                        is_listener = 1;
                                        break;
                                }
@@ -744,9 +871,10 @@ slapd_daemon_task(
                        0, 0, 0 );
        }
 
-       for ( l = 0; l < N_LISTENERS; l++ ) {
-               if ( listeners[l].tcps >= 0 ) {
-                       slapd_close( listeners[l].tcps );
+       for ( l = 0; slap_listeners[l] != NULL; l++ ) {
+               if ( slap_listeners[l]->sl_sd != AC_SOCKET_INVALID ) {
+                       slapd_close( slap_listeners[l]->sl_sd );
+                       break;
                }
        }
 
@@ -763,12 +891,10 @@ slapd_daemon_task(
 }
 
 
-int slapd_daemon( struct slapd_args *args )
+int slapd_daemon( void )
 {
        int rc;
 
-    if ( !daemon_initialized ) sockinit();
-
        connections_init();
 
 #define SLAPD_LISTENER_THREAD 1
@@ -776,12 +902,12 @@ int slapd_daemon( struct slapd_args *args )
 
        /* listener as a separate THREAD */
        rc = ldap_pvt_thread_create( &listener_tid,
-               0, slapd_daemon_task, args );
+               0, slapd_daemon_task, NULL );
 
        if ( rc != 0 ) {
                Debug( LDAP_DEBUG_ANY,
                    "listener ldap_pvt_thread_create failed (%d)\n", rc, 0, 0 );
-               goto destory;
+               return rc;
        }
 
        /* wait for the listener thread to complete */
@@ -789,23 +915,15 @@ int slapd_daemon( struct slapd_args *args )
 #else
        /* expermimental code */
        listener_tid = pthread_self();
-       slapd_daemon_task( args );
+       slapd_daemon_task( NULL );
 #endif
 
-       rc = 0;
-
-destory:
-       connections_destroy();
+       return 0;
 
-#ifdef HAVE_WINSOCK
-    WSACleanup( );
-#endif
-
-       return rc;
 }
 
 #ifdef HAVE_WINSOCK2
-void sockinit()
+int sockinit(void)
 {
     WORD wVersionRequested;
        WSADATA wsaData;
@@ -817,7 +935,7 @@ void sockinit()
        if ( err != 0 ) {
                /* Tell the user that we couldn't find a usable */
                /* WinSock DLL.                                  */
-               return;
+               return -1;
        }
  
        /* Confirm that the WinSock DLL supports 2.0.*/
@@ -831,13 +949,21 @@ void sockinit()
        {
            /* Tell the user that we couldn't find a usable */
            /* WinSock DLL.                                  */
-           WSACleanup( );
-           return; 
+           WSACleanup();
+           return -1
        }
-    daemon_initialized = 1;
-}      /* The WinSock DLL is acceptable. Proceed. */
 
-void hit_socket()
+       /* The WinSock DLL is acceptable. Proceed. */
+       return 0;
+}
+
+int sockdestroy(void)
+{
+       WSACleanup();
+       return 0;
+}
+
+void hit_socket(void)
 {
        ber_socket_t s;
        int on = 1;
@@ -867,17 +993,27 @@ void hit_socket()
 }
 
 #elif HAVE_WINSOCK
-void sockinit()
+static int sockinit(void)
 {      WSADATA wsaData;
        if ( WSAStartup( 0x0101, &wsaData ) != 0 ) {
-           return( NULL );
+           return -1;
        }
-    daemon_initialized = 1;
+       return 0;
 }
+static int sockdestroy(void)
+{
+       WSACleanup();
+       return 0;
+}
+
 #else
-void sockinit()
+static int sockinit(void)
+{
+       return 0;
+}
+static int sockdestroy(void)
 {
-    daemon_initialized = 1;
+       return 0;
 }
 #endif
 
@@ -895,9 +1031,9 @@ slap_set_shutdown( int sig )
        /* trying to "hit" the socket seems to always get a */
        /* EWOULDBLOCK error, so just close the listen socket to */
        /* break out of the select since we're shutting down anyway */
-       for ( l = 0; l < N_LISTENERS; l++ ) {
-               if ( listeners[l].tcps >= 0 ) {
-                       tcp_close( listeners[l].tcps );
+       for ( l = 0; slap_listeners[l] != NULL; l++ ) {
+               if ( slap_listeners[l]->sl_sd >= 0 ) {
+                       tcp_close( slap_listeners[l]->sl_sd );
                }
        }
 #endif
index d3972ca0f1a0c0088d111bb97262a9d5c05c60c4..a7cae58e9563725bfcf8b655045ce0f4f0b7b293 100644 (file)
@@ -29,7 +29,7 @@ extern SERVICE_STATUS_HANDLE  hSLAPDServiceStatus;
 extern ldap_pvt_thread_cond_t  started_event,          stopped_event;
 extern int       is_NT_Service;
 
-void LogSlapdStartedEvent( char *svc, int slap_debug, char *configfile, short port, int udp );
+void LogSlapdStartedEvent( char *svc, int slap_debug, char *configfile, char *urls );
 void LogSlapdStoppedEvent( char *svc );
 
 void CommenceStartupProcessing( LPCTSTR serviceName,
@@ -48,10 +48,6 @@ void *getRegParam( char *svc, char *value );
 #define MAIN_RETURN(x) return(x)
 #endif
 
-short port = LDAP_PORT;
-#ifdef HAVE_TLS
-short tls_port = LDAP_TLS_PORT;
-#endif
 /*
  * when more than one slapd is running on one machine, each one might have
  * it's own LOCAL for syslogging and must have its own pid/args files
@@ -94,33 +90,38 @@ static int   cnvt_str2int( char *, STRDISP_P, int );
 static void
 usage( char *name )
 {
-       fprintf( stderr, "usage: %s [-d ?|debuglevel] [-f configfile] [-p portnumber] [-s sysloglevel]", name );
-    fprintf( stderr, "\n        [-a bind-address] [-i] [-u]" );
-#ifdef HAVE_WINSOCK
-       fprintf( stderr, " [-n NTserviceName]" );
-#endif
+       fprintf( stderr,
+               "usage: %s options\n", name );
+       fprintf( stderr,
 #if LDAP_CONNECTIONLESS
-       fprintf( stderr, " [-c]" );
+               "\t-c\t\tEnable (experimental) Connectionless LDAP\n"
 #endif
-#ifdef SLAPD_BDB2
-    fprintf( stderr, " [-t]" );
+               "\t-d level\tDebug Level" "\n"
+               "\t-f filename\tConfiguration File\n"
+#if defined(HAVE_SETUID) && defined(HAVE_SETGID)
+               "\t-g group\tGroup (id or name) to ran as\n"
 #endif
+               "\t-h URLs\tList of URLs to serve"
 #ifdef LOG_LOCAL4
-    fprintf( stderr, " [-l sysloguser]" );
+               "\t-l sysloguser\tSyslog User (default: LOCAL4)\n"
 #endif
-#if defined(HAVE_SETUID) && defined(HAVE_SETGID)
-    fprintf( stderr, " [-u user] [-g group]" );
+#ifdef HAVE_WINSOCK
+               "\t-n NTserviceName\tNT service name\n"
 #endif
-    fprintf( stderr, "\n" );
-}
 
-time_t starttime;
-struct sockaddr_in     bind_addr;
-ber_int_t tcps;
+               "\t-p port\tLDAP Port\n"
 #ifdef HAVE_TLS
-struct sockaddr_in     tls_bind_addr;
-ber_int_t tls_tcps;
+               "\t-P port\tLDAP over TLS Port\n"
+#endif
+               "\t-s level\tSyslog Level\n"
+#ifdef SLAPD_BDB2
+               "\t-t\t\tEnable BDB2 timing\n"
 #endif
+#if defined(HAVE_SETUID) && defined(HAVE_SETGID)
+               "\t-u user\tUser (id or name) to ran as\n"
+#endif
+    );
+}
 
 #ifdef HAVE_WINSOCK
 void WINAPI ServiceMain( DWORD argc, LPTSTR *argv )
@@ -129,10 +130,8 @@ int main( int argc, char **argv )
 #endif
 {
        int             i;
-       int             inetd = 0;
        int             rc;
-       struct slapd_args args;
-       int             udp;
+       char *urls = NULL;
 #if defined(HAVE_SETUID) && defined(HAVE_SETGID)
        char *username = NULL;
        char *groupname = NULL;
@@ -148,39 +147,37 @@ int main( int argc, char **argv )
 #endif
        char        *serverName;
        int         serverMode = SLAP_SERVER_MODE;
-       int             use_tls_port = 0;
 
-       (void) memset( (void*) &bind_addr, '\0', sizeof(bind_addr));
-       bind_addr.sin_family = AF_INET;
-       bind_addr.sin_addr.s_addr = htonl(INADDR_ANY);
-       bind_addr.sin_port = htons(port);
-#ifdef HAVE_TLS
-       tls_bind_addr.sin_family = AF_INET;
-       tls_bind_addr.sin_addr.s_addr = htonl(INADDR_ANY);
-       tls_bind_addr.sin_port = htons(tls_port);
-#endif
+       int port = LDAP_PORT;
+       int tls_port = LDAPS_PORT;
 
        g_argc = argc;
        g_argv = argv;
 
 #ifdef HAVE_WINSOCK
        {
-               int *newPort;
-               int *newDebugLevel;
+               int *i;
                char *newConfigFile;
                ldap_debug = 0xffff;
                if ( is_NT_Service ) CommenceStartupProcessing( NTservice, slap_set_shutdown );
-               newPort = (int*)getRegParam( NULL, "Port" );
-               if ( newPort != NULL )
+               i = (int*)getRegParam( NULL, "Port" );
+               if ( i != NULL )
                {
-                       port = *newPort;
-                       bind_addr.sin_port = htons(port);
+                       port = *i;
                        Debug ( LDAP_DEBUG_ANY, "new port from registry is: %d\n", port, 0, 0 );
                }
-               newDebugLevel = (int*)getRegParam( NULL, "DebugLevel" );
-               if ( newDebugLevel != NULL ) 
+#ifdef HAVE_TLS
+               i = (int*)getRegParam( NULL, "TLSPort" );
+               if ( i != NULL )
+               {
+                       tls_port = *i;
+                       Debug ( LDAP_DEBUG_ANY, "new TLS port from registry is: %d\n", tls_port, 0, 0 );
+               }
+#endif
+               i = (int*)getRegParam( NULL, "DebugLevel" );
+               if ( i != NULL ) 
                {
-                       slap_debug = *newDebugLevel;
+                       slap_debug = *i;
                        Debug( LDAP_DEBUG_ANY, "new debug level from registry is: %d\n", slap_debug, 0, 0 );
                }
                newConfigFile = (char*)getRegParam( NULL, "ConfigFile" );
@@ -193,7 +190,7 @@ int main( int argc, char **argv )
 #endif
 
        while ( (i = getopt( argc, argv,
-                            "d:f:ia:p:s:u"
+                            "d:f:h:p:s:u"
 #ifdef LOG_LOCAL4
                             "l:"
 #endif
@@ -210,62 +207,17 @@ int main( int argc, char **argv )
                                 "n:"
 #endif
 #ifdef HAVE_TLS
-                            "P:T"
+                            "P:"
 #endif
                             )) != EOF ) {
                switch ( i ) {
-               case 'a':       /* bind address */
-#ifdef HAVE_WINSOCK
-                       if(!(bind_addr.sin_addr.S_un.S_addr = inet_addr(optarg)))
-#else
-                       if(!inet_aton(optarg, &bind_addr.sin_addr))
-#endif
-                       {
-                               fprintf(stderr, "invalid address (%s) for -a option", optarg);
-                       }
-#ifdef HAVE_TLS
-#ifdef HAVE_WINSOCK
-                       tls_bind_addr.sin_addr.S_un.S_addr = inet_addr(optarg);
-#else
-                       inet_aton(optarg, &tls_bind_addr.sin_addr);
-#endif
-#endif
+               case 'h':       /* listen URLs */
+                       urls = ch_strdup( optarg );
             break;
 
 #ifdef LDAP_DEBUG
                case 'd':       /* turn on debugging */
-                       if ( optarg[0] == '?' ) {
-                               printf( "Debug levels:\n" );
-                               printf( "\tLDAP_DEBUG_TRACE\t%d\n",
-                                   LDAP_DEBUG_TRACE );
-                               printf( "\tLDAP_DEBUG_PACKETS\t%d\n",
-                                   LDAP_DEBUG_PACKETS );
-                               printf( "\tLDAP_DEBUG_ARGS\t\t%d\n",
-                                   LDAP_DEBUG_ARGS );
-                               printf( "\tLDAP_DEBUG_CONNS\t%d\n",
-                                   LDAP_DEBUG_CONNS );
-                               printf( "\tLDAP_DEBUG_BER\t\t%d\n",
-                                   LDAP_DEBUG_BER );
-                               printf( "\tLDAP_DEBUG_FILTER\t%d\n",
-                                   LDAP_DEBUG_FILTER );
-                               printf( "\tLDAP_DEBUG_CONFIG\t%d\n",
-                                   LDAP_DEBUG_CONFIG );
-                               printf( "\tLDAP_DEBUG_ACL\t\t%d\n",
-                                   LDAP_DEBUG_ACL );
-                               printf( "\tLDAP_DEBUG_STATS\t%d\n",
-                                   LDAP_DEBUG_STATS );
-                               printf( "\tLDAP_DEBUG_STATS2\t%d\n",
-                                   LDAP_DEBUG_STATS2 );
-                               printf( "\tLDAP_DEBUG_SHELL\t%d\n",
-                                   LDAP_DEBUG_SHELL );
-                               printf( "\tLDAP_DEBUG_PARSE\t%d\n",
-                                   LDAP_DEBUG_PARSE );
-                               printf( "\tLDAP_DEBUG_ANY\t\t%d\n",
-                                   LDAP_DEBUG_ANY );
-                               exit( 0 );
-                       } else {
-                               slap_debug |= atoi( optarg );
-                       }
+                       slap_debug |= atoi( optarg );
                        break;
 #else
                case 'd':       /* turn on debugging */
@@ -278,26 +230,26 @@ int main( int argc, char **argv )
                        configfile = ch_strdup( optarg );
                        break;
 
-               case 'i':       /* run from inetd */
-                       inetd = 1;
-                       break;
-
                case 'p': {     /* port on which to listen */
-                               port = (short)atoi( optarg );
-                               if(! port ) {
+                               int p = atoi( optarg );
+                               if(! p ) {
                                        fprintf(stderr, "-p %s must be numeric\n", optarg);
+                               } else if( p < 0 || p >= 1<<16) {
+                                       fprintf(stderr, "-p %s invalid\n", optarg);
                                } else {
-                                       bind_addr.sin_port = htons(port);
+                                       port = p;
                                }
                        } break;
 
 #ifdef HAVE_TLS
                case 'P': {     /* port on which to listen for TLS */
-                               tls_port = (short)atoi( optarg );
-                               if(! tls_port ) {
+                               int p = atoi( optarg );
+                               if(! p ) {
                                        fprintf(stderr, "-P %s must be numeric\n", optarg);
+                               } else if( p < 0 || p >= 1<<16) {
+                                       fprintf(stderr, "-P %s invalid\n", optarg);
                                } else {
-                                       tls_bind_addr.sin_port = htons(tls_port);
+                                       tls_port = p;
                                }
                        } break;
 #endif
@@ -308,8 +260,8 @@ int main( int argc, char **argv )
 
 #ifdef LOG_LOCAL4
                case 'l':       /* set syslog local user */
-                       syslogUser = cnvt_str2int( optarg, syslog_types,
-                                           DEFAULT_SYSLOG_USER );
+                       syslogUser = cnvt_str2int( optarg,
+                               syslog_types, DEFAULT_SYSLOG_USER );
                        break;
 #endif
 
@@ -336,15 +288,11 @@ int main( int argc, char **argv )
                        groupname = ch_strdup( optarg );
                        break;
 #endif /* SETUID && GETUID */
+
 #ifdef HAVE_WINSOCK
                case 'n':  /* NT service name */
                        NTservice = ch_strdup( optarg );
                        break;
-#endif
-#ifdef HAVE_TLS
-               case 'T':  /* Bind on TLS port */
-                       use_tls_port = 1;
-                       break;
 #endif
                default:
                        usage( argv[0] );
@@ -372,9 +320,12 @@ int main( int argc, char **argv )
        openlog( serverName, OPENLOG_OPTIONS );
 #endif
 
+       slapd_daemon_init( urls, port, tls_port );
+
 #if defined(HAVE_SETUID) && defined(HAVE_SETGID)
-       if ( username != NULL || groupname != NULL )
+       if ( username != NULL || groupname != NULL ) {
                slap_init_user( username, groupname );
+       }
 #endif
 
        if ( slap_init( serverMode, serverName ) != 0 ) {
@@ -394,19 +345,6 @@ int main( int argc, char **argv )
        ldap_pvt_tls_init_def_ctx();
 #endif
 
-       tcps = set_socket( inetd ? NULL : &bind_addr );
-       if ( tcps == -1 )
-               goto destroy;
-#ifdef HAVE_TLS
-       if ( use_tls_port ) {
-               tls_tcps = set_socket( inetd ? NULL : &tls_bind_addr );
-               if ( tls_tcps == -1 )
-                       goto destroy;
-       } else {
-               tls_tcps = -1;
-       }
-#endif
-
        (void) SIGNAL( LDAP_SIGUSR1, slap_do_nothing );
        (void) SIGNAL( LDAP_SIGUSR2, slap_set_shutdown );
 #ifdef SIGPIPE
@@ -426,14 +364,12 @@ int main( int argc, char **argv )
 #endif
 
 #ifndef HAVE_WINSOCK
-       if(!inetd) {
 #ifdef LDAP_DEBUG
                lutil_detach( ldap_debug, 0 );
 #else
                lutil_detach( 0, 0 );
 #endif
-       }
-#endif /* HAVE_WINSOC */
+#endif /* HAVE_WINSOCK */
 
        if ( slap_startup(-1)  != 0 ) {
                rc = 1;
@@ -441,14 +377,9 @@ int main( int argc, char **argv )
                goto shutdown;
        }
 
-       if(!inetd) {
+       {
                FILE *fp;
 
-               args.addr = &bind_addr;
-#ifdef HAVE_TLS
-               args.tls_addr = &tls_bind_addr;
-#endif
-
                Debug( LDAP_DEBUG_ANY, "slapd starting\n", 0, 0, 0 );
 
                if (( slapd_pid_file != NULL ) &&
@@ -467,24 +398,13 @@ int main( int argc, char **argv )
                        fprintf( fp, "\n" );
                        fclose( fp );
                }
-
-       } else {
-               args.addr = NULL;
-#ifdef HAVE_TLS
-               args.tls_addr = NULL;
-#endif
        }
-       args.tcps = tcps;
-#ifdef HAVE_TLS
-       args.tls_tcps = tls_tcps;
-#endif
 
-       time( &starttime );
 #ifdef HAVE_WINSOCK
-       LogSlapdStartedEvent( NTservice, slap_debug, configfile, port, udp );
+       LogSlapdStartedEvent( NTservice, slap_debug, configfile, urls );
 #endif
 
-       rc = slapd_daemon( &args );
+       rc = slapd_daemon();
 
 #ifdef HAVE_WINSOCK
        /* Throw away the event that we used during the startup process. */
@@ -503,12 +423,15 @@ stop:
 #ifdef HAVE_WINSOCK
        LogSlapdStoppedEvent( NTservice );
 #endif
+
        Debug( LDAP_DEBUG_ANY, "slapd stopped.\n", 0, 0, 0 );
+
 #ifdef HAVE_WINSOCK
        ReportSlapdShutdownComplete();
 #endif
 
     closelog();
+       slapd_daemon_destroy();
 
        MAIN_RETURN(rc);
 }
@@ -568,7 +491,6 @@ cnvt_str2int( char *stringVal, STRDISP_P dispatcher, int defaultVal )
     }
 
     return (retVal);
-
-} /* cnvt_str2int */
+}
 
 #endif  /* LOG_LOCAL4 */
index 4931978ea528974fde750ef35b4cc1ba9f0330b0..44d5d8fba5f88c4085b490d580959b6b1d9e704d 100644 (file)
@@ -13,11 +13,12 @@ int access_allowed LDAP_P(( Backend *be, Connection *conn,
        Operation *op, Entry *e,
        char *attr, struct berval *val, int access ));
 
-struct acl * acl_get_applicable LDAP_P(( Backend *be,
+AccessControl * acl_get_applicable LDAP_P(( Backend *be,
        Operation *op, Entry *e,
        char *attr, int nmatches, regmatch_t *matches ));
 
-int acl_access_allowed LDAP_P(( struct acl *a, Backend *be, Connection *conn, Entry *e,
+int acl_access_allowed LDAP_P((
+       AccessControl *a, Backend *be, Connection *conn, Entry *e,
        struct berval *val, Operation *op, int  access, char *edn,
        regmatch_t *matches ));
 
@@ -147,7 +148,8 @@ int connections_timeout_idle LDAP_P((time_t));
 
 long connection_init LDAP_P((
        ber_socket_t s,
-       const char* name, const char* addr, int use_tls));
+       const char* name, const char* addr,
+       int use_tls ));
 
 void connection_closing LDAP_P(( Connection *c ));
 int connection_state_closing LDAP_P(( Connection *c ));
@@ -398,7 +400,7 @@ extern ldap_pvt_thread_mutex_t      crypt_mutex;
 #endif
 extern ldap_pvt_thread_mutex_t gmtime_mutex;
 
-extern struct acl              *global_acl;
+extern AccessControl *global_acl;
 
 int    slap_init LDAP_P((int mode, char* name));
 int    slap_startup LDAP_P((int dbnum));
@@ -407,17 +409,9 @@ int        slap_destroy LDAP_P((void));
 
 struct sockaddr_in;
 
-struct slapd_args {
-       struct sockaddr_in *addr;
-       int tcps;
-#ifdef HAVE_TLS
-       struct sockaddr_in *tls_addr;
-       int tls_tcps;
-#endif
-};
-
-extern int     slapd_daemon LDAP_P((struct slapd_args *args));
-extern int     set_socket LDAP_P((struct sockaddr_in *addr));
+extern int     slapd_daemon_init( char *urls, int port, int tls_port );
+extern int     slapd_daemon_destroy(void);
+extern int     slapd_daemon(void);
 
 extern void slapd_set_write LDAP_P((ber_socket_t s, int wake));
 extern void slapd_clr_write LDAP_P((ber_socket_t s, int wake));
index 0fcad46726d89d55dafebd8985d71cc1cf40ab36..514a0724e8fa14a2c08242ab2b31a1d5130e932b 100644 (file)
@@ -441,15 +441,18 @@ send_search_result(
                /* send references in search results */
                if( err == LDAP_REFERRAL ) {
                        err = LDAP_PARTIAL_RESULTS;
-                       tmp = text = v2ref( refs );
-                       refs = NULL;
                }
 
+               tmp = text = v2ref( refs );
+               refs = NULL;
+
        } else {
                /* don't send references in search results */
+               assert( refs == NULL );
+               refs = NULL;
+
                if( err == LDAP_REFERRAL ) {
                        err = LDAP_SUCCESS;
-                       refs = NULL;
                }
        }
 
@@ -494,7 +497,7 @@ send_search_entry(
        BerElement      *ber;
        Attribute       *a;
        int             i, rc=-1, bytes;
-       struct acl      *acl;
+       AccessControl   *acl;
        char            *edn;
        int             allattrs;
 
index 75a61b0ae283ea43f5cce52683b493ead1fcb4b3..ee971e115c9ac252da201bd1ff8706865ae028e5 100644 (file)
@@ -80,12 +80,12 @@ struct slap_conn;
 /*
  * represents an attribute value assertion (i.e., attr=value)
  */
-typedef struct ava {
+typedef struct slap_ava {
        char            *ava_type;
        struct berval   ava_value;
 } Ava;
 
-typedef struct mra {
+typedef struct slap_mra {
        char    *mra_rule;
        char    *mra_type;
        char    *mra_value;
@@ -95,7 +95,7 @@ typedef struct mra {
 /*
  * represents a search filter
  */
-typedef struct filter {
+typedef struct slap_filter {
        ber_tag_t       f_choice;       /* values taken from ldap.h */
 
        union f_un_u {
@@ -109,7 +109,7 @@ typedef struct filter {
                Mra             f_un_fra;       
 
                /* and, or, not */
-               struct filter   *f_un_complex;
+               struct slap_filter      *f_un_complex;
 
                /* substrings */
                struct sub {
@@ -137,17 +137,17 @@ typedef struct filter {
 #define f_sub_any      f_un.f_un_sub.f_un_sub_any
 #define f_sub_final    f_un.f_un_sub.f_un_sub_final
 
-       struct filter   *f_next;
+       struct slap_filter      *f_next;
 } Filter;
 
 /*
  * represents an attribute (type + values + syntax)
  */
-typedef struct attr {
+typedef struct slap_attr {
        char            *a_type;
        struct berval   **a_vals;
        int             a_syntax;
-       struct attr     *a_next;
+       struct slap_attr        *a_next;
 } Attribute;
 
 /*
@@ -164,12 +164,12 @@ typedef struct attr {
  * the id used in the indexes to refer to an entry
  */
 typedef unsigned long  ID;
-#define NOID   ((unsigned long)~0)
+#define NOID   ((ID)~0)
 
 /*
  * represents an entry in core
  */
-typedef struct entry {
+typedef struct slap_entry {
        /*
         * The ID field should only be changed before entry is
         * inserted into a cache.  The ID value is backend
@@ -190,7 +190,7 @@ typedef struct entry {
  */
 
 /* the "by" part */
-struct access {
+typedef struct slap_access {
 
 #define ACL_NONE               0x0001
 #define ACL_AUTH               0x0004
@@ -240,11 +240,11 @@ struct access {
        char            *a_group_oc;
        char            *a_group_at;
 
-       struct access   *a_next;
-};
+       struct slap_access      *a_next;
+} Access;
 
 /* the "to" part */
-struct acl {
+typedef struct slap_acl {
        /* "to" part: the entries this acl applies to */
        Filter          *acl_filter;
        regex_t         acl_dnre;
@@ -252,10 +252,10 @@ struct acl {
        char            **acl_attrs;
 
        /* "by" part: list of who has what access to the entries */
-       struct access   *acl_access;
+       Access  *acl_access;
 
-       struct acl      *acl_next;
-};
+       struct slap_acl *acl_next;
+} AccessControl;
 
 /*
  * A list of LDAPMods
@@ -346,8 +346,8 @@ typedef struct slap_object_class {
  * represents a backend 
  */
 
-typedef struct backend_info BackendInfo;       /* per backend type */
-typedef struct backend_db BackendDB;           /* per backend database */
+typedef struct slap_backend_info BackendInfo;  /* per backend type */
+typedef struct slap_backend_db BackendDB;              /* per backend database */
 
 extern int nBackendInfo;
 extern int nBackendDB;
@@ -368,7 +368,7 @@ typedef BackendDB Backend;
 #define nbackends nBackendDB
 #define backends backendDB
 
-struct backend_db {
+struct slap_backend_db {
        BackendInfo     *bd_info;       /* pointer to shared backend info */
 
        /* BackendInfo accessors */
@@ -401,7 +401,7 @@ struct backend_db {
        unsigned int be_max_deref_depth;       /* limit for depth of an alias deref  */
        int     be_sizelimit;   /* size limit for this backend             */
        int     be_timelimit;   /* time limit for this backend             */
-       struct acl *be_acl;     /* access control list for this backend    */
+       AccessControl *be_acl;  /* access control list for this backend    */
        int     be_dfltaccess;  /* access given if no acl matches          */
        char    **be_replica;   /* replicas of this backend (in master)    */
        char    *be_replogfile; /* replication log file (in master)        */
@@ -414,7 +414,7 @@ struct backend_db {
        void    *be_private;    /* anything the backend database needs     */
 };
 
-struct backend_info {
+struct slap_backend_info {
        char    *bi_type;       /* type of backend */
 
        /*
@@ -537,7 +537,7 @@ typedef struct slap_op {
        ber_tag_t       o_tag;          /* tag of the request             */
        time_t          o_time;         /* time op was initiated          */
 
-       int             o_bind_in_progress;     /* multi-op bind in progress */
+       int             o_bind_in_progress;     /* multi-step bind in progress */
 
        char            *o_dn;          /* dn bound when op was initiated */
        char            *o_ndn;         /* normalized dn bound when op was initiated */
@@ -601,8 +601,10 @@ typedef struct slap_conn {
        BerElement      *c_currentber;  /* ber we're attempting to read */
        int             c_writewaiter;  /* true if writer is waiting */
 
+#ifdef HAVE_TLS
        int     c_is_tls;               /* true if this LDAP over raw TLS */
        int     c_needs_tls_accept;     /* true if SSL_accept should be called */
+#endif
 
        long    c_n_ops_received;               /* num of ops received (next op_id) */
        long    c_n_ops_executing;      /* num of ops currently executing */
index ebe7203c0f9c69a8b614a9ae0857aeb981e755a7..7b2ff297eccfb76bac5be2aa1c90adbc219ca2fd 100644 (file)
@@ -139,10 +139,6 @@ LINK32=link.exe
 # Name "slapd - Win32 Single Release"
 # Begin Source File
 
-SOURCE=.\daemon.c
-# End Source File
-# Begin Source File
-
 SOURCE=.\main.c
 # End Source File
 # Begin Source File
index afe0588fca31997e07ac074b5d35b5cf1d6c74d6..b41d8ba8d19d41a46bda18a774ac108d6a8ee534 100644 (file)
 #include "../slap.h"
 #include "../back-ldbm/back-ldbm.h"
 
-static struct dbcache  *openchoice(char c, int mode, int verbose, char **fname);
+static DBCache *openchoice(char c, int mode, int verbose, char **fname);
 static void            print_entry(FILE *fp, char c, Datum *key, char *klabel, Datum *data, char *dlabel);
-static void            free_and_close(struct dbcache *dbc, Datum key, Datum data);
+static void            free_and_close(DBCache *dbc, Datum key, Datum data);
 static void            edit_entry(char c, Datum *data);
 static void            get_keydata(FILE *fp, char c, Datum *key, Datum *data);
 
-static struct dbcache *dbc;
+static DBCache *dbc;
 static LDBM           dbp;
 static Backend         *be = NULL;
 
@@ -373,7 +373,7 @@ main( int argc, char **argv )
 }
 
 static void
-free_and_close( struct dbcache *dbc, Datum key, Datum data )
+free_and_close( DBCache *dbc, Datum key, Datum data )
 {
        ldbm_cache_really_close( be, dbc );
        if ( key.dptr != NULL )
@@ -570,10 +570,10 @@ edit_entry( char c, Datum *data )
 }
 #endif
 
-static struct dbcache *
+static DBCache *
 openfile( char *name, int namesiz, int mode, int verbose, char c )
 {
-       struct dbcache  *dbc;
+       DBCache *dbc;
 
        if ( name == NULL || *name == '\0' ) {
                if ( c == 'f' ) {
@@ -599,7 +599,7 @@ openfile( char *name, int namesiz, int mode, int verbose, char c )
        return( dbc );
 }
 
-static struct dbcache *
+static DBCache *
 openchoice( char c, int mode, int verbose, char **fname )
 {
        static char     name[MAXPATHLEN];
index 1f87b40119afd00b5a4063f43f5657c7b7e6bea9..3f43bf66f9a774f2f3e16867e133054c55077b78 100644 (file)
@@ -37,7 +37,7 @@ main( int argc, char **argv )
        int             lmax, lcur;
        int             dbnum;
        ID              id;
-       struct dbcache  *db, *db2;
+       DBCache *db, *db2;
        Backend         *be = NULL;
        struct ldbminfo *li;
        struct berval   bv;
index ad63dc04182f9360131cdd60ec13d55fcd6c33da..b828734e50d0ea6e5e2eb91553b21afb94d044fa 100644 (file)
@@ -34,7 +34,7 @@ main( int argc, char **argv )
        int             lmax, lcur;
        int             dbnum;
        ID              id;
-       struct dbcache  *db;
+       DBCache *db;
        Backend         *be = NULL;
        struct ldbminfo *li;
        struct berval   bv;