Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
openldap
OpenLDAP
Commits
e5091f59
Commit
e5091f59
authored
Aug 17, 2002
by
Howard Chu
Browse files
Updated register_syntax, register_matching_rule for more convenient
calling from other modules
parent
6e02fe2e
Changes
5
Hide whitespace changes
Inline
Side-by-side
servers/slapd/mr.c
View file @
e5091f59
...
...
@@ -137,12 +137,7 @@ mr_insert(
int
mr_add
(
LDAPMatchingRule
*
mr
,
unsigned
usage
,
slap_mr_convert_func
*
convert
,
slap_mr_normalize_func
*
normalize
,
slap_mr_match_func
*
match
,
slap_mr_indexer_func
*
indexer
,
slap_mr_filter_func
*
filter
,
slap_mrule_defs_rec
*
def
,
MatchingRule
*
amr
,
const
char
**
err
)
...
...
@@ -155,12 +150,12 @@ mr_add(
AC_MEMCPY
(
&
smr
->
smr_mrule
,
mr
,
sizeof
(
LDAPMatchingRule
));
smr
->
smr_oidlen
=
strlen
(
mr
->
mr_oid
);
smr
->
smr_usage
=
usage
;
smr
->
smr_convert
=
convert
;
smr
->
smr_normalize
=
normalize
;
smr
->
smr_match
=
match
;
smr
->
smr_indexer
=
indexer
;
smr
->
smr_filter
=
filter
;
smr
->
smr_usage
=
def
->
mrd_
usage
;
smr
->
smr_convert
=
def
->
mrd_
convert
;
smr
->
smr_normalize
=
def
->
mrd_
normalize
;
smr
->
smr_match
=
def
->
mrd_
match
;
smr
->
smr_indexer
=
def
->
mrd_
indexer
;
smr
->
smr_filter
=
def
->
mrd_
filter
;
smr
->
smr_associated
=
amr
;
if
(
smr
->
smr_syntax_oid
)
{
...
...
@@ -181,34 +176,27 @@ mr_add(
int
register_matching_rule
(
const
char
*
desc
,
unsigned
usage
,
slap_mr_convert_func
*
convert
,
slap_mr_normalize_func
*
normalize
,
slap_mr_match_func
*
match
,
slap_mr_indexer_func
*
indexer
,
slap_mr_filter_func
*
filter
,
const
char
*
associated
)
slap_mrule_defs_rec
*
def
)
{
LDAPMatchingRule
*
mr
;
MatchingRule
*
amr
=
NULL
;
int
code
;
const
char
*
err
;
if
(
usage
==
SLAP_MR_NONE
)
{
if
(
def
->
mrd_
usage
==
SLAP_MR_NONE
)
{
#ifdef NEW_LOGGING
LDAP_LOG
(
OPERATION
,
ERR
,
"register_matching_rule: %s not usable
\n
"
,
desc
,
0
,
0
);
"register_matching_rule: %s not usable
\n
"
,
def
->
mrd_
desc
,
0
,
0
);
#else
Debug
(
LDAP_DEBUG_ANY
,
"register_matching_rule: not usable %s
\n
"
,
desc
,
0
,
0
);
def
->
mrd_
desc
,
0
,
0
);
#endif
return
-
1
;
}
if
(
associated
!=
NULL
)
{
amr
=
mr_find
(
associated
);
if
(
def
->
mrd_
associated
!=
NULL
)
{
amr
=
mr_find
(
def
->
mrd_
associated
);
#if 0
/* ignore for now */
...
...
@@ -217,11 +205,11 @@ register_matching_rule(
#ifdef NEW_LOGGING
LDAP_LOG( OPERATION, ERR,
"register_matching_rule: could not locate associated "
"matching rule %s for %s\n", associated, desc, 0 );
"matching rule %s for %s\n",
def->mrd_
associated,
def->mrd_
desc, 0 );
#else
Debug( LDAP_DEBUG_ANY, "register_matching_rule: could not locate "
"associated matching rule %s for %s\n",
associated, desc, 0 );
def->mrd_
associated,
def->mrd_
desc, 0 );
#endif
return
-
1
;
...
...
@@ -230,23 +218,21 @@ register_matching_rule(
}
mr
=
ldap_str2matchingrule
(
desc
,
&
code
,
&
err
,
LDAP_SCHEMA_ALLOW_ALL
);
mr
=
ldap_str2matchingrule
(
def
->
mrd_
desc
,
&
code
,
&
err
,
LDAP_SCHEMA_ALLOW_ALL
);
if
(
!
mr
)
{
#ifdef NEW_LOGGING
LDAP_LOG
(
OPERATION
,
ERR
,
"register_matching_rule: %s before %s in %s.
\n
"
,
ldap_scherr2str
(
code
),
err
,
desc
);
ldap_scherr2str
(
code
),
err
,
def
->
mrd_
desc
);
#else
Debug
(
LDAP_DEBUG_ANY
,
"Error in register_matching_rule: %s before %s in %s
\n
"
,
ldap_scherr2str
(
code
),
err
,
desc
);
ldap_scherr2str
(
code
),
err
,
def
->
mrd_
desc
);
#endif
return
(
-
1
);
}
code
=
mr_add
(
mr
,
usage
,
convert
,
normalize
,
match
,
indexer
,
filter
,
amr
,
&
err
);
code
=
mr_add
(
mr
,
def
,
amr
,
&
err
);
ldap_memfree
(
mr
);
...
...
@@ -254,10 +240,10 @@ register_matching_rule(
#ifdef NEW_LOGGING
LDAP_LOG
(
OPERATION
,
ERR
,
"register_matching_rule: %s for %s in %s.
\n
"
,
scherr2str
(
code
),
err
,
desc
);
scherr2str
(
code
),
err
,
def
->
mrd_
desc
);
#else
Debug
(
LDAP_DEBUG_ANY
,
"Error in register_matching_rule: %s for %s in %s
\n
"
,
scherr2str
(
code
),
err
,
desc
);
scherr2str
(
code
),
err
,
def
->
mrd_
desc
);
#endif
return
(
-
1
);
...
...
servers/slapd/proto-slap.h
View file @
e5091f59
...
...
@@ -599,25 +599,13 @@ LDAP_SLAPD_F (void) *module_resolve LDAP_P((
LDAP_SLAPD_F
(
MatchingRule
*
)
mr_bvfind
LDAP_P
((
struct
berval
*
mrname
));
LDAP_SLAPD_F
(
MatchingRule
*
)
mr_find
LDAP_P
((
const
char
*
mrname
));
LDAP_SLAPD_F
(
int
)
mr_add
LDAP_P
((
LDAPMatchingRule
*
mr
,
unsigned
usage
,
slap_mr_convert_func
*
convert
,
slap_mr_normalize_func
*
normalize
,
slap_mr_match_func
*
match
,
slap_mr_indexer_func
*
indexer
,
slap_mr_filter_func
*
filter
,
slap_mrule_defs_rec
*
def
,
MatchingRule
*
associated
,
const
char
**
err
));
LDAP_SLAPD_F
(
void
)
mr_destroy
LDAP_P
((
void
));
LDAP_SLAPD_F
(
int
)
register_matching_rule
LDAP_P
((
const
char
*
desc
,
unsigned
usage
,
slap_mr_convert_func
*
convert
,
slap_mr_normalize_func
*
normalize
,
slap_mr_match_func
*
match
,
slap_mr_indexer_func
*
indexer
,
slap_mr_filter_func
*
filter
,
const
char
*
associated
));
slap_mrule_defs_rec
*
def
));
LDAP_SLAPD_F
(
int
)
mr_schema_info
(
Entry
*
e
);
LDAP_SLAPD_F
(
int
)
mru_schema_info
(
Entry
*
e
);
...
...
@@ -954,33 +942,14 @@ LDAP_SLAPD_F (Syntax *) syn_find LDAP_P((
const
char
*
synname
));
LDAP_SLAPD_F
(
Syntax
*
)
syn_find_desc
LDAP_P
((
const
char
*
syndesc
,
int
*
slen
));
#ifdef SLAPD_BINARY_CONVERSION
LDAP_SLAPD_F
(
int
)
syn_add
LDAP_P
((
LDAPSyntax
*
syn
,
unsigned
flags
,
slap_syntax_validate_func
*
validate
,
slap_syntax_transform_func
*
normalize
,
slap_syntax_transform_func
*
pretty
,
slap_syntax_transform_func
*
ber2str
,
slap_syntax_transform_func
*
str2ber
,
const
char
**
err
));
#else
LDAP_SLAPD_F
(
int
)
syn_add
LDAP_P
((
LDAPSyntax
*
syn
,
unsigned
flags
,
slap_syntax_validate_func
*
validate
,
slap_syntax_transform_func
*
normalize
,
slap_syntax_transform_func
*
pretty
,
slap_syntax_defs_rec
*
def
,
const
char
**
err
));
#endif
LDAP_SLAPD_F
(
void
)
syn_destroy
LDAP_P
((
void
));
LDAP_SLAPD_F
(
int
)
register_syntax
LDAP_P
((
const
char
*
desc
,
unsigned
flags
,
slap_syntax_validate_func
*
validate
,
slap_syntax_transform_func
*
normalize
,
slap_syntax_transform_func
*
pretty
));
slap_syntax_defs_rec
*
def
));
LDAP_SLAPD_F
(
int
)
syn_schema_info
(
Entry
*
e
);
...
...
servers/slapd/schema_init.c
View file @
e5091f59
...
...
@@ -4266,19 +4266,10 @@ bootParameterValidate(
return
LDAP_SUCCESS
;
}
static
struct
syntax_defs_rec
{
char
*
sd_desc
;
#define X_BINARY "X-BINARY-TRANSFER-REQUIRED 'TRUE' "
#define X_NOT_H_R "X-NOT-HUMAN-READABLE 'TRUE' "
int
sd_flags
;
slap_syntax_validate_func
*
sd_validate
;
slap_syntax_transform_func
*
sd_normalize
;
slap_syntax_transform_func
*
sd_pretty
;
#ifdef SLAPD_BINARY_CONVERSION
slap_syntax_transform_func
*
sd_ber2str
;
slap_syntax_transform_func
*
sd_str2ber
;
#endif
}
syntax_defs
[]
=
{
static
slap_syntax_defs_rec
syntax_defs
[]
=
{
{
"( 1.3.6.1.4.1.1466.115.121.1.1 DESC 'ACI Item' "
X_BINARY
X_NOT_H_R
")"
,
SLAP_SYNTAX_BINARY
|
SLAP_SYNTAX_BER
,
NULL
,
NULL
,
NULL
},
...
...
@@ -4456,17 +4447,7 @@ static struct syntax_defs_rec {
* 2.5.13.43 readerAndKeyIDMatch
* 2.5.13.44 attributeIntegrityMatch
*/
static
struct
mrule_defs_rec
{
char
*
mrd_desc
;
slap_mask_t
mrd_usage
;
slap_mr_convert_func
*
mrd_convert
;
slap_mr_normalize_func
*
mrd_normalize
;
slap_mr_match_func
*
mrd_match
;
slap_mr_indexer_func
*
mrd_indexer
;
slap_mr_filter_func
*
mrd_filter
;
char
*
mrd_associated
;
}
mrule_defs
[]
=
{
static
slap_mrule_defs_rec
mrule_defs
[]
=
{
/*
* EQUALITY matching rules must be listed after associated APPROX
* matching rules. So, we list all APPROX matching rules first.
...
...
@@ -4775,17 +4756,7 @@ slap_schema_init( void )
assert
(
schema_init_done
==
0
);
for
(
i
=
0
;
syntax_defs
[
i
].
sd_desc
!=
NULL
;
i
++
)
{
res
=
register_syntax
(
syntax_defs
[
i
].
sd_desc
,
syntax_defs
[
i
].
sd_flags
,
syntax_defs
[
i
].
sd_validate
,
syntax_defs
[
i
].
sd_normalize
,
syntax_defs
[
i
].
sd_pretty
#ifdef SLAPD_BINARY_CONVERSION
,
syntax_defs
[
i
].
sd_ber2str
,
syntax_defs
[
i
].
sd_str2ber
#endif
);
res
=
register_syntax
(
&
syntax_defs
[
i
]
);
if
(
res
)
{
fprintf
(
stderr
,
"slap_schema_init: Error registering syntax %s
\n
"
,
...
...
@@ -4802,15 +4773,7 @@ slap_schema_init( void )
continue
;
}
res
=
register_matching_rule
(
mrule_defs
[
i
].
mrd_desc
,
mrule_defs
[
i
].
mrd_usage
,
mrule_defs
[
i
].
mrd_convert
,
mrule_defs
[
i
].
mrd_normalize
,
mrule_defs
[
i
].
mrd_match
,
mrule_defs
[
i
].
mrd_indexer
,
mrule_defs
[
i
].
mrd_filter
,
mrule_defs
[
i
].
mrd_associated
);
res
=
register_matching_rule
(
&
mrule_defs
[
i
]
);
if
(
res
)
{
fprintf
(
stderr
,
...
...
servers/slapd/slap.h
View file @
e5091f59
...
...
@@ -307,6 +307,18 @@ typedef struct slap_syntax {
#define slap_syntax_is_ber(s) slap_syntax_is_flag((s),SLAP_SYNTAX_BER)
#define slap_syntax_is_hidden(s) slap_syntax_is_flag((s),SLAP_SYNTAX_HIDE)
typedef
struct
slap_syntax_defs_rec
{
char
*
sd_desc
;
int
sd_flags
;
slap_syntax_validate_func
*
sd_validate
;
slap_syntax_transform_func
*
sd_normalize
;
slap_syntax_transform_func
*
sd_pretty
;
#ifdef SLAPD_BINARY_CONVERSION
slap_syntax_transform_func
*
sd_ber2str
;
slap_syntax_transform_func
*
sd_str2ber
;
#endif
}
slap_syntax_defs_rec
;
/* X -> Y Converter */
typedef
int
slap_mr_convert_func
LDAP_P
((
struct
berval
*
in
,
...
...
@@ -414,6 +426,18 @@ typedef struct slap_matching_rule {
#define smr_extensions smr_mrule.mr_extensions
}
MatchingRule
;
typedef
struct
slap_mrule_defs_rec
{
char
*
mrd_desc
;
slap_mask_t
mrd_usage
;
slap_mr_convert_func
*
mrd_convert
;
slap_mr_normalize_func
*
mrd_normalize
;
slap_mr_match_func
*
mrd_match
;
slap_mr_indexer_func
*
mrd_indexer
;
slap_mr_filter_func
*
mrd_filter
;
char
*
mrd_associated
;
}
slap_mrule_defs_rec
;
struct
slap_backend_db
;
struct
slap_entry
;
struct
slap_attr
;
...
...
servers/slapd/syntax.c
View file @
e5091f59
...
...
@@ -113,14 +113,7 @@ syn_insert(
int
syn_add
(
LDAPSyntax
*
syn
,
unsigned
flags
,
slap_syntax_validate_func
*
validate
,
slap_syntax_transform_func
*
normalize
,
slap_syntax_transform_func
*
pretty
,
#ifdef SLAPD_BINARY_CONVERSION
slap_syntax_transform_func
*
ber2str
,
slap_syntax_transform_func
*
str2ber
,
#endif
slap_syntax_defs_rec
*
def
,
const
char
**
err
)
{
...
...
@@ -134,14 +127,14 @@ syn_add(
ssyn
->
ssyn_next
=
NULL
;
ssyn
->
ssyn_oidlen
=
strlen
(
syn
->
syn_oid
);
ssyn
->
ssyn_flags
=
flags
;
ssyn
->
ssyn_validate
=
validate
;
ssyn
->
ssyn_normalize
=
normalize
;
ssyn
->
ssyn_pretty
=
pretty
;
ssyn
->
ssyn_flags
=
def
->
sd_
flags
;
ssyn
->
ssyn_validate
=
def
->
sd_
validate
;
ssyn
->
ssyn_normalize
=
def
->
sd_
normalize
;
ssyn
->
ssyn_pretty
=
def
->
sd_
pretty
;
#ifdef SLAPD_BINARY_CONVERSION
ssyn
->
ssyn_ber2str
=
ber2str
;
ssyn
->
ssyn_str2ber
=
str2ber
;
ssyn
->
ssyn_ber2str
=
def
->
sd_
ber2str
;
ssyn
->
ssyn_str2ber
=
def
->
sd_
str2ber
;
#endif
code
=
syn_insert
(
ssyn
,
err
);
...
...
@@ -150,31 +143,27 @@ syn_add(
int
register_syntax
(
const
char
*
desc
,
unsigned
flags
,
slap_syntax_validate_func
*
validate
,
slap_syntax_transform_func
*
normalize
,
slap_syntax_transform_func
*
pretty
)
slap_syntax_defs_rec
*
def
)
{
LDAPSyntax
*
syn
;
int
code
;
const
char
*
err
;
syn
=
ldap_str2syntax
(
desc
,
&
code
,
&
err
,
LDAP_SCHEMA_ALLOW_ALL
);
syn
=
ldap_str2syntax
(
def
->
sd_
desc
,
&
code
,
&
err
,
LDAP_SCHEMA_ALLOW_ALL
);
if
(
!
syn
)
{
#ifdef NEW_LOGGING
LDAP_LOG
(
CONFIG
,
ERR
,
"register_syntax: Error - %s before %s in %s.
\n
"
,
ldap_scherr2str
(
code
),
err
,
desc
);
ldap_scherr2str
(
code
),
err
,
def
->
sd_
desc
);
#else
Debug
(
LDAP_DEBUG_ANY
,
"Error in register_syntax: %s before %s in %s
\n
"
,
ldap_scherr2str
(
code
),
err
,
desc
);
ldap_scherr2str
(
code
),
err
,
def
->
sd_
desc
);
#endif
return
(
-
1
);
}
code
=
syn_add
(
syn
,
flags
,
validate
,
normalize
,
pretty
,
&
err
);
code
=
syn_add
(
syn
,
def
,
&
err
);
ldap_memfree
(
syn
);
...
...
@@ -182,10 +171,10 @@ register_syntax(
#ifdef NEW_LOGGING
LDAP_LOG
(
CONFIG
,
ERR
,
"register_syntax: Error - %s %s in %s
\n
"
,
scherr2str
(
code
),
err
,
desc
);
scherr2str
(
code
),
err
,
def
->
sd_
desc
);
#else
Debug
(
LDAP_DEBUG_ANY
,
"Error in register_syntax: %s %s in %s
\n
"
,
scherr2str
(
code
),
err
,
desc
);
scherr2str
(
code
),
err
,
def
->
sd_
desc
);
#endif
return
(
-
1
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment