X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fmain.c;h=944faff679c8cefdb3285fe57b004a65dbf3035b;hb=f955f17076dc185a589d90baa2acd33afc4c1448;hp=6d4096b9bc5cbbad3d1817a73e0d8be5add5939d;hpb=a453df62804311be2277cae8e7ec4ff4601a706c;p=openldap
diff --git a/servers/slapd/main.c b/servers/slapd/main.c
index 6d4096b9bc..944faff679 100644
--- a/servers/slapd/main.c
+++ b/servers/slapd/main.c
@@ -1,7 +1,7 @@
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software .
*
- * Copyright 1998-2004 The OpenLDAP Foundation.
+ * Copyright 1998-2005 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -34,8 +34,6 @@
#include
#include
-#include "ldap_pvt.h"
-
#include "slap.h"
#include "lutil.h"
#include "ldif.h"
@@ -65,7 +63,8 @@ static struct sockaddr_in bind_addr;
#endif
typedef int (MainFunc) LDAP_P(( int argc, char *argv[] ));
-extern MainFunc slapadd, slapcat, slapindex, slappasswd;
+extern MainFunc slapadd, slapcat, slapdn, slapindex, slappasswd,
+ slaptest, slapauth, slapacl;
static struct {
char *name;
@@ -73,8 +72,18 @@ static struct {
} tools[] = {
{"slapadd", slapadd},
{"slapcat", slapcat},
+ {"slapdn", slapdn},
{"slapindex", slapindex},
{"slappasswd", slappasswd},
+ {"slaptest", slaptest},
+ {"slapauth", slapauth},
+ {"slapacl", slapacl},
+ /* NOTE: new tools must be added in chronological order,
+ * not in alphabetical order, because for backwards
+ * compatibility name[4] is used to identify the
+ * tools; so name[4]=='a' must refer to "slapadd" and
+ * not to "slapauth". Alphabetical order can be used
+ * for tools whose name[4] is not used yet */
{NULL, NULL}
};
@@ -89,7 +98,6 @@ const char Versionstr[] =
#endif
#ifdef LOG_LOCAL4
-
#define DEFAULT_SYSLOG_USER LOG_LOCAL4
typedef struct _str2intDispatch {
@@ -98,7 +106,6 @@ typedef struct _str2intDispatch {
int intVal;
} STRDISP, *STRDISP_P;
-
/* table to compute syslog-options to integer */
static STRDISP syslog_types[] = {
{ "LOCAL0", sizeof("LOCAL0"), LOG_LOCAL0 },
@@ -109,20 +116,74 @@ static STRDISP syslog_types[] = {
{ "LOCAL5", sizeof("LOCAL5"), LOG_LOCAL5 },
{ "LOCAL6", sizeof("LOCAL6"), LOG_LOCAL6 },
{ "LOCAL7", sizeof("LOCAL7"), LOG_LOCAL7 },
+#ifdef LOG_USER
+ { "USER", sizeof("USER"), LOG_USER },
+#endif
+#ifdef LOG_DAEMON
+ { "DAEMON", sizeof("DAEMON"), LOG_DAEMON },
+#endif
{ NULL, 0, 0 }
};
-static int cnvt_str2int( char *, STRDISP_P, int );
-
+static int cnvt_str2int( char *, STRDISP_P, int );
#endif /* LOG_LOCAL4 */
#define CHECK_NONE 0x00
-#define CHECK_CONFIG 0x01
-#define CHECK_DN 0x02
+#define CHECK_CONFIG 0x01
static int check = CHECK_NONE;
-static struct berval check_dn = BER_BVC("");
static int version = 0;
+void *slap_tls_ctx;
+
+static int
+slapd_opt_slp( const char *val, void *arg )
+{
+#ifdef HAVE_SLP
+ /* NULL is default */
+ if ( val == NULL || strcasecmp( val, "on" ) == 0 ) {
+ slapd_register_slp = 1;
+
+ } else if ( strcasecmp( val, "off" ) == 0 ) {
+ slapd_register_slp = 0;
+
+ /* NOTE: add support for URL specification? */
+
+ } else {
+ fprintf(stderr, "unrecognized value \"%s\" for SLP option\n", val );
+ return -1;
+ }
+
+ return 0;
+
+#else
+ fputs( "slapd: SLP support is not available\n", stderr );
+ return 0;
+#endif
+}
+
+/*
+ * Option helper structure:
+ *
+ * oh_nam is left-hand part of