X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fconfig.c;h=c9763bf8be0a853e261675708f1cc6cbce97457e;hb=9767c87531d193a4bef19286b77623aff18590fb;hp=16e335e4047fccdc5afc67eb39daff59e438428c;hpb=cf1558659be55a87acdd50bfb01366b4fba0fc2a;p=openldap diff --git a/servers/slapd/config.c b/servers/slapd/config.c index 16e335e404..c9763bf8be 100644 --- a/servers/slapd/config.c +++ b/servers/slapd/config.c @@ -62,7 +62,9 @@ slap_mask_t global_allows = 0; slap_mask_t global_disallows = 0; int global_gentlehup = 0; int global_idletimeout = 0; +int global_writetimeout = 0; char *global_host = NULL; +struct berval global_host_bv = BER_BVNULL; char *global_realm = NULL; char *sasl_host = NULL; char **default_passwd_hash = NULL; @@ -86,7 +88,6 @@ int slapi_plugins_used = 0; static int fp_getline(FILE *fp, ConfigArgs *c); static void fp_getline_init(ConfigArgs *c); -static int fp_parse_line(ConfigArgs *c); static char *strtok_quote(char *line, char *sep, char **quote_ptr); static char *strtok_quote_ldif(char **line); @@ -215,6 +216,16 @@ int config_check_vals(ConfigTable *Conf, ConfigArgs *c, int check_only ) { ch_free( c->value_ndn.bv_val ); ch_free( c->value_dn.bv_val ); } + } else if(arg_type == ARG_ATDESC) { + const char *text = NULL; + c->value_ad = NULL; + rc = slap_str2ad( c->argv[1], &c->value_ad, &text ); + if ( rc != LDAP_SUCCESS ) { + snprintf( c->cr_msg, sizeof( c->cr_msg ), "<%s> invalid AttributeDescription %d (%s)", + c->argv[0], rc, text ); + Debug(LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, "%s: %s\n" , c->log, c->cr_msg, 0); + return(ARG_BAD_CONF); + } } else { /* all numeric */ int j; iarg = 0; larg = 0; barg = 0; @@ -365,6 +376,9 @@ int config_set_vals(ConfigTable *Conf, ConfigArgs *c) { case ARG_BERVAL: *(struct berval *)ptr = c->value_bv; break; + case ARG_ATDESC: + *(AttributeDescription **)ptr = c->value_ad; + break; } return(0); } @@ -442,6 +456,8 @@ config_get_vals(ConfigTable *cf, ConfigArgs *c) break; case ARG_BERVAL: ber_dupbv( &c->value_bv, (struct berval *)ptr ); break; + case ARG_ATDESC: + c->value_ad = *(AttributeDescription **)ptr; break; } } if ( cf->arg_type & ARGS_TYPES) { @@ -468,6 +484,13 @@ config_get_vals(ConfigTable *cf, ConfigArgs *c) return 1; } break; + case ARG_ATDESC: + if ( c->value_ad ) { + bv = c->value_ad->ad_cname; + } else { + return 1; + } + break; default: bv.bv_val = NULL; break; @@ -716,7 +739,7 @@ read_config_file(const char *fname, int depth, ConfigArgs *cf, ConfigTable *cft) c->argc = 0; ch_free( c->tline ); - if ( fp_parse_line( c ) ) { + if ( config_fp_parse_line( c ) ) { rc = 1; goto done; } @@ -1608,7 +1631,7 @@ int bindconf_tls_set( slap_bindconf *bc, LDAP *ld ) } } if ( bc->sb_tls_reqcert ) { - rc = ldap_int_tls_config( ld, LDAP_OPT_X_TLS_REQUIRE_CERT, + rc = ldap_pvt_tls_config( ld, LDAP_OPT_X_TLS_REQUIRE_CERT, bc->sb_tls_reqcert ); if ( rc ) { Debug( LDAP_DEBUG_ANY, @@ -1619,7 +1642,7 @@ int bindconf_tls_set( slap_bindconf *bc, LDAP *ld ) newctx = 1; } if ( bc->sb_tls_protocol_min ) { - rc = ldap_int_tls_config( ld, LDAP_OPT_X_TLS_PROTOCOL_MIN, + rc = ldap_pvt_tls_config( ld, LDAP_OPT_X_TLS_PROTOCOL_MIN, bc->sb_tls_protocol_min ); if ( rc ) { Debug( LDAP_DEBUG_ANY, @@ -1631,7 +1654,7 @@ int bindconf_tls_set( slap_bindconf *bc, LDAP *ld ) } #ifdef HAVE_OPENSSL_CRL if ( bc->sb_tls_crlcheck ) { - rc = ldap_int_tls_config( ld, LDAP_OPT_X_TLS_CRLCHECK, + rc = ldap_pvt_tls_config( ld, LDAP_OPT_X_TLS_CRLCHECK, bc->sb_tls_crlcheck ); if ( rc ) { Debug( LDAP_DEBUG_ANY, @@ -1955,8 +1978,8 @@ fp_getline( FILE *fp, ConfigArgs *c ) return(line[0] ? 1 : 0); } -static int -fp_parse_line(ConfigArgs *c) +int +config_fp_parse_line(ConfigArgs *c) { char *token; static char *const hide[] = {