int parse_syn( struct config_args_s *c, Syntax **ssyn, Syntax *prev ) { LDAPSyntax *syn; slap_syntax_defs_rec def = { 0 }; int code; const char *err; char *line = strchr( c->line, '(' ); syn = ldap_str2syntax( line, &code, &err, LDAP_SCHEMA_ALLOW_ALL ); if ( !syn ) { snprintf( c->cr_msg, sizeof( c->cr_msg ), "%s: %s before %s", c->argv[0], ldap_scherr2str(code), err ); Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, "%s %s\n", c->log, c->cr_msg ); syn_usage(); return 1; } if ( syn->syn_oid == NULL ) { snprintf( c->cr_msg, sizeof( c->cr_msg ), "%s: OID is missing", c->argv[0] ); Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, "%s %s\n", c->log, c->cr_msg ); syn_usage(); code = 1; goto done; } code = syn_add( syn, 1, &def, ssyn, prev, &err ); if ( code ) { snprintf( c->cr_msg, sizeof( c->cr_msg ), "%s: %s: \"%s\"", c->argv[0], scherr2str(code), err); Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, "%s %s\n", c->log, c->cr_msg ); code = 1; goto done; } done:; if ( code ) { ldap_syntax_free( syn ); } else { ldap_memfree( syn ); } return code; }
int parse_oc( struct config_args_s *c, ObjectClass **soc, ObjectClass *prev ) { LDAPObjectClass *oc; int code; const char *err; char *line = strchr( c->line, '(' ); oc = ldap_str2objectclass(line, &code, &err, LDAP_SCHEMA_ALLOW_ALL ); if ( !oc ) { snprintf( c->cr_msg, sizeof( c->cr_msg ), "%s: %s before %s", c->argv[0], ldap_scherr2str( code ), err ); Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, "%s %s\n", c->log, c->cr_msg ); oc_usage(); return 1; } if ( oc->oc_oid == NULL ) { snprintf( c->cr_msg, sizeof( c->cr_msg ), "%s: OID is missing", c->argv[0] ); Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, "%s %s\n", c->log, c->cr_msg ); oc_usage(); code = 1; goto done; } code = oc_add( oc, 1, soc, prev, &err ); if ( code ) { snprintf( c->cr_msg, sizeof( c->cr_msg ), "%s: %s: \"%s\"", c->argv[0], scherr2str(code), err); Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, "%s %s\n", c->log, c->cr_msg ); code = 1; goto done; } done:; if ( code ) { ldap_objectclass_free( oc ); } else { ldap_memfree( oc ); } return code; }
int parse_cr( struct config_args_s *c, ContentRule **scr ) { LDAPContentRule *cr; int code; const char *err; char *line = strchr( c->line, '(' ); cr = ldap_str2contentrule( line, &code, &err, LDAP_SCHEMA_ALLOW_ALL ); if ( !cr ) { snprintf( c->cr_msg, sizeof( c->cr_msg ), "%s: %s before %s", c->argv[0], ldap_scherr2str( code ), err ); Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, "%s %s\n", c->log, c->cr_msg ); cr_usage(); return 1; } if ( cr->cr_oid == NULL ) { snprintf( c->cr_msg, sizeof( c->cr_msg ), "%s: OID is missing", c->argv[0] ); Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, "%s %s\n", c->log, c->cr_msg ); cr_usage(); code = 1; goto done; } code = cr_add( cr, 1, scr, &err ); if ( code ) { snprintf( c->cr_msg, sizeof( c->cr_msg ), "%s: %s: \"%s\"", c->argv[0], scherr2str(code), err); Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, "%s %s\n", c->log, c->cr_msg ); code = 1; goto done; } done:; if ( code ) { ldap_contentrule_free( cr ); } else { ldap_memfree( cr ); } return code; }
int parse_at( const char *fname, int lineno, char *line, char **argv ) { LDAPAttributeType *at; int code; const char *err; at = ldap_str2attributetype( line, &code, &err, LDAP_SCHEMA_ALLOW_ALL ); if ( !at ) { fprintf( stderr, "%s: line %d: %s before %s\n", fname, lineno, ldap_scherr2str(code), err ); at_usage(); return 1; } if ( at->at_oid == NULL ) { fprintf( stderr, "%s: line %d: attributeType has no OID\n", fname, lineno ); at_usage(); return 1; } /* operational attributes should be defined internally */ if ( at->at_usage ) { fprintf( stderr, "%s: line %d: attribute type \"%s\" is operational\n", fname, lineno, at->at_oid ); return 1; } code = at_add(at,&err); if ( code ) { fprintf( stderr, "%s: line %d: %s: \"%s\"\n", fname, lineno, scherr2str(code), err); return 1; } ldap_memfree(at); return 0; }
/* backport register_at() from HEAD, to allow building with OL <= 2.3 */ static int register_at( char *def, AttributeDescription **rad, int dupok ) { LDAPAttributeType *at; int code, freeit = 0; const char *err; AttributeDescription *ad = NULL; at = ldap_str2attributetype( def, &code, &err, LDAP_SCHEMA_ALLOW_ALL ); if ( !at ) { Debug( LDAP_DEBUG_ANY, "register_at: AttributeType \"%s\": %s, %s\n", def, ldap_scherr2str(code), err ); return code; } code = at_add( at, 0, NULL, &err ); if ( code ) { if ( code == SLAP_SCHERR_ATTR_DUP && dupok ) { freeit = 1; } else { ldap_attributetype_free( at ); Debug( LDAP_DEBUG_ANY, "register_at: AttributeType \"%s\": %s, %s\n", def, scherr2str(code), err ); return code; } } code = slap_str2ad( at->at_names[0], &ad, &err ); if ( freeit || code ) { ldap_attributetype_free( at ); } else { ldap_memfree( at ); } if ( code ) { Debug( LDAP_DEBUG_ANY, "register_at: AttributeType \"%s\": %s\n", def, err, 0 ); } if ( rad ) *rad = ad; return code; }
int parse_oc( const char *fname, int lineno, char *line, char **argv ) { LDAPObjectClass *oc; int code; const char *err; oc = ldap_str2objectclass(line, &code, &err, LDAP_SCHEMA_ALLOW_ALL ); if ( !oc ) { fprintf( stderr, "%s: line %d: %s before %s\n", fname, lineno, ldap_scherr2str(code), err ); oc_usage(); return 1; } if ( oc->oc_oid == NULL ) { fprintf( stderr, "%s: line %d: objectclass has no OID\n", fname, lineno ); oc_usage(); return 1; } code = oc_add(oc,1,&err); if ( code ) { fprintf( stderr, "%s: line %d: %s: \"%s\"\n", fname, lineno, scherr2str(code), err); return 1; } ldap_memfree(oc); return 0; }
int parse_cr( const char *fname, int lineno, char *line, char **argv ) { LDAPContentRule *cr; int code; const char *err; cr = ldap_str2contentrule(line, &code, &err, LDAP_SCHEMA_ALLOW_ALL ); if ( !cr ) { fprintf( stderr, "%s: line %d: %s before %s\n", fname, lineno, ldap_scherr2str(code), err ); cr_usage(); return 1; } if ( cr->cr_oid == NULL ) { fprintf( stderr, "%s: line %d: Content rule has no OID\n", fname, lineno ); cr_usage(); return 1; } code = cr_add(cr,1,&err); if ( code ) { fprintf( stderr, "%s: line %d: %s: \"%s\"\n", fname, lineno, scherr2str(code), err); return 1; } ldap_memfree(cr); return 0; }
int parse_at( struct config_args_s *c, AttributeType **sat, AttributeType *prev ) { LDAPAttributeType *at; int code; const char *err; char *line = strchr( c->line, '(' ); at = ldap_str2attributetype( line, &code, &err, LDAP_SCHEMA_ALLOW_ALL ); if ( !at ) { snprintf( c->cr_msg, sizeof( c->cr_msg ), "%s: %s before %s", c->argv[0], ldap_scherr2str(code), err ); Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, "%s %s\n", c->log, c->cr_msg ); at_usage(); return 1; } if ( at->at_oid == NULL ) { snprintf( c->cr_msg, sizeof( c->cr_msg ), "%s: OID is missing", c->argv[0] ); Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, "%s %s\n", c->log, c->cr_msg ); at_usage(); code = 1; goto done; } /* operational attributes should be defined internally */ if ( at->at_usage ) { snprintf( c->cr_msg, sizeof( c->cr_msg ), "%s: \"%s\" is operational", c->argv[0], at->at_oid ); Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, "%s %s\n", c->log, c->cr_msg ); code = 1; goto done; } code = at_add( at, 1, sat, prev, &err); if ( code ) { snprintf( c->cr_msg, sizeof( c->cr_msg ), "%s: %s: \"%s\"", c->argv[0], scherr2str(code), err); Debug( LDAP_DEBUG_CONFIG|LDAP_DEBUG_NONE, "%s %s\n", c->log, c->cr_msg ); code = 1; goto done; } done:; if ( code ) { ldap_attributetype_free( at ); } else { ldap_memfree( at ); } return code; }