diff --git a/servers/slapd/main.c b/servers/slapd/main.c index 4cd12fde9c..c66fce701e 100644 --- a/servers/slapd/main.c +++ b/servers/slapd/main.c @@ -134,6 +134,41 @@ 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 +} + +struct option_helper { + struct berval oh_name; + int (*oh_fnc)(const char *val, void *arg); + void *oh_arg; +} option_helpers[] = { + { BER_BVC("slp"), slapd_opt_slp, NULL }, + { BER_BVNULL } +}; + static void usage( char *name ) { @@ -155,6 +190,8 @@ usage( char *name ) "\t-l facility\tSyslog facility (default: LOCAL4)\n" #endif "\t-n serverName\tService name\n" + "\t-o