/* restrictops, allows, disallows, requires, loglevel */
int
-verb_to_mask(ConfigArgs *c, struct verb_mask_list *v, int word) {
- int j;
- for(j = 0; v[j].word; j++)
- if(!strcasecmp(c->argv[word], v[j].word))
+verb_to_mask(const char *word, slap_verbmasks *v) {
+ int i;
+ for(i = 0; !BER_BVISNULL(&v[i].word); i++)
+ if(!strcasecmp(word, v[i].word.bv_val))
break;
- return(j);
+ return(i);
}
int
-verbs_to_mask(ConfigArgs *c, struct verb_mask_list *v, slap_mask_t *m) {
+verbs_to_mask(int argc, char *argv[], slap_verbmasks *v, slap_mask_t *m) {
int i, j;
- for(i = 1; i < c->argc; i++) {
- j = verb_to_mask(c, v, i);
- if(!v[j].word) return(1);
+ for(i = 1; i < argc; i++) {
+ j = verb_to_mask(argv[i], v);
+ if(BER_BVISNULL(&v[j].word)) return(1);
while (!v[j].mask) j--;
*m |= v[j].mask;
}
}
int
-mask_to_verbs(ConfigArgs *c, struct verb_mask_list *v, slap_mask_t m) {
+mask_to_verbs(slap_verbmasks *v, slap_mask_t m, BerVarray *bva) {
int i, j;
struct berval bv;
if (!m) return 1;
- for (i=0; v[i].word; i++) {
+ for (i=0; !BER_BVISNULL(&v[i].word); i++) {
if (!v[i].mask) continue;
if (( m & v[i].mask ) == v[i].mask ) {
- ber_str2bv( v[i].word, 0, 0, &bv );
- value_add_one( &c->rvalue_vals, &bv );
+ value_add_one( bva, &v[i].word );
}
}
return 0;
}
-static struct verb_mask_list tlskey[] = {
- { "no", SB_TLS_OFF },
- { "yes", SB_TLS_ON },
- { "critical", SB_TLS_CRITICAL }
+static slap_verbmasks tlskey[] = {
+ { BER_BVC("no"), SB_TLS_OFF },
+ { BER_BVC("yes"), SB_TLS_ON },
+ { BER_BVC("critical"), SB_TLS_CRITICAL },
+ { BER_BVNULL, 0 }
};
-static struct verb_mask_list methkey[] = {
- { "simple", LDAP_AUTH_SIMPLE },
+static slap_verbmasks methkey[] = {
+ { BER_BVC("simple"), LDAP_AUTH_SIMPLE },
#ifdef HAVE_CYRUS_SASL
- { "sasl", LDAP_AUTH_SASL },
+ { BER_BVC("sasl"), LDAP_AUTH_SASL },
#endif
- { NULL, 0 }
+ { BER_BVNULL, 0 }
};
typedef struct cf_aux_table {
struct berval key;
int off;
int quote;
- struct verb_mask_list *aux;
+ slap_verbmasks *aux;
} cf_aux_table;
static cf_aux_table bindkey[] = {
{ BER_BVNULL, 0, 0, NULL }
};
-int bindconf_parse( char *word, slap_bindconf *bc ) {
+int bindconf_parse( const char *word, slap_bindconf *bc ) {
int i, rc = 0;
char **cptr;
cf_aux_table *tab;
if ( tab->aux ) {
int j;
rc = 1;
- for (j=0; tab->aux[j].word; j++) {
- if (!strcasecmp(word+tab->key.bv_len, tab->aux[j].word)) {
+ for (j=0; !BER_BVISNULL(&tab->aux[j].word); j++) {
+ if (!strcasecmp(word+tab->key.bv_len, tab->aux[j].word.bv_val)) {
int *ptr = (int *)cptr;
*ptr = tab->aux[j].mask;
rc = 0;
cptr = (char **)((char *)bc + tab->off);
if ( tab->aux ) {
int *ip = (int *)cptr, i;
- for ( i=0; tab->aux[i].word; i++ ) {
+ for ( i=0; !BER_BVISNULL(&tab->aux[i].word); i++ ) {
if ( *ip == tab->aux[i].mask ) {
*ptr++ = ' ';
ptr = lutil_strcopy( ptr, tab->key.bv_val );
- ptr = lutil_strcopy( ptr, tab->aux[i].word );
+ ptr = lutil_strcopy( ptr, tab->aux[i].word.bv_val );
break;
}
}