}
break;
+ case SLAP_LIMITS_ANY:
+ *limit = &lm[0]->lm_limits;
+ return( 0 );
+
default:
assert( 0 ); /* unreachable */
return( -1 );
case SLAP_LIMITS_ANONYMOUS:
case SLAP_LIMITS_USERS:
+ case SLAP_LIMITS_ANY:
lm->lm_type = type;
lm->lm_dn_pat.bv_val = NULL;
lm->lm_dn_pat.bv_len = 0;
if ( argc < 3 ) {
#ifdef NEW_LOGGING
- LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+ LDAP_LOG( CONFIG, CRIT,
"%s : line %d: missing arg(s) in "
- "\"limits <pattern> <limits>\" line.\n",
- fname, lineno ));
+ "\"limits <pattern> <limits>\" line.\n", fname, lineno, 0 );
#else
Debug( LDAP_DEBUG_ANY,
"%s : line %d: missing arg(s) in "
*/
pattern = argv[1];
- if ( strcasecmp( pattern, "anonymous" ) == 0 ) {
+ if ( strcmp( pattern, "*" ) == 0) {
+ type = SLAP_LIMITS_ANY;
+
+ } else if ( strcasecmp( pattern, "anonymous" ) == 0 ) {
type = SLAP_LIMITS_ANONYMOUS;
} else if ( strcasecmp( pattern, "users" ) == 0 ) {
default:
if ( pattern[0] != '=' ) {
#ifdef NEW_LOGGING
- LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+ LDAP_LOG( CONFIG, CRIT,
"%s : line %d: missing '=' in "
"\"dn[.{exact|base|one|subtree"
- "|children|regex|anonymous}]"
- "=<pattern>\" in "
- "\"limits <pattern> <limits>\" line.\n",
- fname, lineno ));
+ "|children|regex|anonymous}]" "=<pattern>\" in "
+ "\"limits <pattern> <limits>\" line.\n", fname, lineno, 0 );
#else
Debug( LDAP_DEBUG_ANY,
"%s : line %d: missing '=' in "
/* skip '=' (required) */
pattern++;
+
+ /* trim obvious cases */
+ if ( strcmp( pattern, "*" ) == 0 ) {
+ type = SLAP_LIMITS_ANY;
+ pattern = NULL;
+
+ } else if ( ( type == SLAP_LIMITS_REGEX || type == SLAP_LIMITS_UNDEFINED )
+ && strcmp( pattern, ".*" ) == 0 ) {
+ type = SLAP_LIMITS_ANY;
+ pattern = NULL;
+ }
}
}
if ( parse_limit( argv[i], &limit ) ) {
#ifdef NEW_LOGGING
- LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+ LDAP_LOG( CONFIG, CRIT,
"%s : line %d: unknown limit type \"%s\" in "
"\"limits <pattern> <limits>\" line.\n",
- fname, lineno, argv[i] ));
+ fname, lineno, argv[i] );
#else
Debug( LDAP_DEBUG_ANY,
"%s : line %d: unknown limit type \"%s\" in "
}
} else if ( arg[0] == '=' ) {
+ arg++;
limit->lms_t_soft = atoi( arg );
limit->lms_t_hard = 0;
}
} else if ( arg[0] == '=' ) {
+ arg++;
limit->lms_s_soft = atoi( arg );
limit->lms_s_hard = 0;