Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
ingo Voss
OpenLDAP
Commits
726146da
Commit
726146da
authored
Mar 30, 2007
by
Ralf Haferkamp
Browse files
use slap_add_opattrs as discussed on -devel.
parent
c6743b5a
Changes
1
Hide whitespace changes
Inline
Side-by-side
servers/slapd/bconfig.c
View file @
726146da
...
...
@@ -6077,7 +6077,17 @@ config_tool_entry_put( BackendDB *be, Entry *e, struct berval *text )
{
CfBackInfo
*
cfb
=
be
->
be_private
;
BackendInfo
*
bi
=
cfb
->
cb_db
.
bd_info
;
int
rc
;
struct
berval
rdn
,
vals
[
2
];
ConfigArgs
ca
;
OperationBuffer
opbuf
;
Entry
*
ce
;
Attribute
*
attr
;
Connection
conn
=
{
0
};
Operation
*
op
=
NULL
;
SlapReply
rs
=
{
REP_RESULT
};
void
*
thrctx
;
/* Create entry for frontend database if it does not exist already */
if
(
!
entry_put_got_frontend
)
{
if
(
!
strncmp
(
e
->
e_nname
.
bv_val
,
"olcDatabase"
,
...
...
@@ -6088,9 +6098,6 @@ config_tool_entry_put( BackendDB *be, Entry *e, struct berval *text )
strncmp
(
e
->
e_nname
.
bv_val
+
STRLENOF
(
"olcDatabase"
),
"=frontend"
,
STRLENOF
(
"=frontend"
)))
{
Entry
*
fe
;
struct
berval
rdn
,
vals
[
2
];
Attribute
*
attr
;
vals
[
1
].
bv_len
=
0
;
vals
[
1
].
bv_val
=
NULL
;
memset
(
&
ca
,
0
,
sizeof
(
ConfigArgs
));
...
...
@@ -6102,56 +6109,29 @@ config_tool_entry_put( BackendDB *be, Entry *e, struct berval *text )
"%s="
SLAP_X_ORDERED_FMT
"%s"
,
cfAd_database
->
ad_cname
.
bv_val
,
-
1
,
ca
.
bi
->
bi_type
);
f
e
=
config_build_entry
(
NULL
,
NULL
,
cfb
->
cb_root
,
&
ca
,
&
rdn
,
c
e
=
config_build_entry
(
NULL
,
NULL
,
cfb
->
cb_root
,
&
ca
,
&
rdn
,
&
CFOC_DATABASE
,
ca
.
be
->
be_cf_ocs
);
if
(
attr_find
(
fe
->
e_attrs
,
slap_schema
.
si_ad_entryUUID
)
==
NULL
)
{
char
uuidbuf
[
LDAP_LUTIL_UUIDSTR_BUFSIZE
];
vals
[
0
].
bv_len
=
lutil_uuidstr
(
uuidbuf
,
sizeof
(
uuidbuf
)
);
vals
[
0
].
bv_val
=
uuidbuf
;
attr_merge_normalize_one
(
fe
,
slap_schema
.
si_ad_entryUUID
,
vals
,
NULL
);
}
if
(
attr_find
(
fe
->
e_attrs
,
slap_schema
.
si_ad_entryCSN
)
==
NULL
)
{
char
csnbuf
[
LDAP_LUTIL_CSNSTR_BUFSIZE
];
vals
[
0
].
bv_len
=
lutil_csnstr
(
csnbuf
,
sizeof
(
csnbuf
),
0
,
0
);
vals
[
0
].
bv_val
=
csnbuf
;
attr_merge
(
fe
,
slap_schema
.
si_ad_entryCSN
,
vals
,
NULL
);
}
attr
=
attr_find
(
e
->
e_attrs
,
slap_schema
.
si_ad_creatorsName
);
if
(
attr
)
{
attr_merge
(
fe
,
slap_schema
.
si_ad_creatorsName
,
attr
->
a_vals
,
attr
->
a_nvals
);
}
attr
=
attr_find
(
e
->
e_attrs
,
slap_schema
.
si_ad_modifiersName
);
if
(
attr
)
{
attr_merge
(
fe
,
slap_schema
.
si_ad_modifiersName
,
attr
->
a_vals
,
attr
->
a_nvals
);
}
attr
=
attr_find
(
e
->
e_attrs
,
slap_schema
.
si_ad_createTimestamp
);
if
(
attr
)
{
attr_merge
(
fe
,
slap_schema
.
si_ad_createTimestamp
,
attr
->
a_vals
,
attr
->
a_nvals
);
}
attr
=
attr_find
(
e
->
e_attrs
,
slap_schema
.
si_ad_modifyTimestamp
);
if
(
attr
)
{
attr_merge
(
fe
,
slap_schema
.
si_ad_modifyTimestamp
,
attr
->
a_vals
,
attr
->
a_nvals
);
op
=
(
Operation
*
)
&
opbuf
;
thrctx
=
ldap_pvt_thread_pool_context
();
connection_fake_init2
(
&
conn
,
op
,
thrctx
,
0
);
op
->
o_bd
=
&
cfb
->
cb_db
;
op
->
o_tag
=
LDAP_REQ_ADD
;
op
->
ora_e
=
ce
;
op
->
o_dn
=
be
->
be_rootdn
;
op
->
o_ndn
=
be
->
be_rootndn
;
rc
=
slap_add_opattrs
(
op
,
NULL
,
NULL
,
0
,
0
);
if
(
rc
!=
LDAP_SUCCESS
)
{
text
->
bv_val
=
"autocreation of
\"
olcDatabase={-1}frontend
\"
failed"
;
text
->
bv_len
=
STRLENOF
(
"autocreation of
\"
olcDatabase={-1}frontend
\"
failed"
);
return
NOID
;
}
if
(
fe
&&
bi
&&
bi
->
bi_tool_entry_put
&&
bi
->
bi_tool_entry_put
(
&
cfb
->
cb_db
,
fe
,
text
)
!=
NOID
)
{
if
(
ce
&&
bi
&&
bi
->
bi_tool_entry_put
&&
bi
->
bi_tool_entry_put
(
&
cfb
->
cb_db
,
ce
,
text
)
!=
NOID
)
{
entry_put_got_frontend
++
;
}
else
{
text
->
bv_val
=
"autocreation of
\"
cn
={-1}frontend
\"
failed"
;
text
->
bv_len
=
STRLENOF
(
"autocreation of
\"
cn
={-1}frontend
\"
failed"
);
text
->
bv_val
=
"autocreation of
\"
olcDatabase
={-1}frontend
\"
failed"
;
text
->
bv_len
=
STRLENOF
(
"autocreation of
\"
olcDatabase
={-1}frontend
\"
failed"
);
return
NOID
;
}
}
else
{
...
...
@@ -6169,9 +6149,6 @@ config_tool_entry_put( BackendDB *be, Entry *e, struct berval *text )
strncmp
(
e
->
e_nname
.
bv_val
+
STRLENOF
(
"olcDatabase"
),
"=config"
,
STRLENOF
(
"=config"
))
)
{
Entry
*
cfe
;
struct
berval
rdn
,
vals
[
2
];
Attribute
*
attr
;
vals
[
1
].
bv_len
=
0
;
vals
[
1
].
bv_val
=
NULL
;
memset
(
&
ca
,
0
,
sizeof
(
ConfigArgs
));
...
...
@@ -6182,56 +6159,30 @@ config_tool_entry_put( BackendDB *be, Entry *e, struct berval *text )
"%s="
SLAP_X_ORDERED_FMT
"%s"
,
cfAd_database
->
ad_cname
.
bv_val
,
0
,
ca
.
bi
->
bi_type
);
c
f
e
=
config_build_entry
(
NULL
,
NULL
,
cfb
->
cb_root
,
&
ca
,
&
rdn
,
&
CFOC_DATABASE
,
ce
=
config_build_entry
(
NULL
,
NULL
,
cfb
->
cb_root
,
&
ca
,
&
rdn
,
&
CFOC_DATABASE
,
ca
.
be
->
be_cf_ocs
);
if
(
attr_find
(
cfe
->
e_attrs
,
slap_schema
.
si_ad_entryUUID
)
==
NULL
)
{
char
uuidbuf
[
LDAP_LUTIL_UUIDSTR_BUFSIZE
];
vals
[
0
].
bv_len
=
lutil_uuidstr
(
uuidbuf
,
sizeof
(
uuidbuf
)
);
vals
[
0
].
bv_val
=
uuidbuf
;
attr_merge_normalize_one
(
cfe
,
slap_schema
.
si_ad_entryUUID
,
vals
,
NULL
);
}
if
(
attr_find
(
cfe
->
e_attrs
,
slap_schema
.
si_ad_entryCSN
)
==
NULL
)
{
char
csnbuf
[
LDAP_LUTIL_CSNSTR_BUFSIZE
];
vals
[
0
].
bv_len
=
lutil_csnstr
(
csnbuf
,
sizeof
(
csnbuf
),
0
,
0
);
vals
[
0
].
bv_val
=
csnbuf
;
attr_merge
(
cfe
,
slap_schema
.
si_ad_entryCSN
,
vals
,
NULL
);
}
attr
=
attr_find
(
e
->
e_attrs
,
slap_schema
.
si_ad_creatorsName
);
if
(
attr
)
{
attr_merge
(
cfe
,
slap_schema
.
si_ad_creatorsName
,
attr
->
a_vals
,
attr
->
a_nvals
);
if
(
!
op
)
{
thrctx
=
ldap_pvt_thread_pool_context
();
op
=
(
Operation
*
)
&
opbuf
;
connection_fake_init2
(
&
conn
,
op
,
thrctx
,
0
);
op
->
o_bd
=
&
cfb
->
cb_db
;
op
->
o_tag
=
LDAP_REQ_ADD
;
op
->
o_dn
=
be
->
be_rootdn
;
op
->
o_ndn
=
be
->
be_rootndn
;
}
attr
=
attr_find
(
e
->
e_attrs
,
slap_schema
.
si_ad_modifiersName
);
if
(
attr
)
{
attr_merge
(
cfe
,
slap_schema
.
si_ad_modifiersName
,
attr
->
a_vals
,
attr
->
a_nvals
);
}
attr
=
attr_find
(
e
->
e_attrs
,
slap_schema
.
si_ad_createTimestamp
);
if
(
attr
)
{
attr_merge
(
cfe
,
slap_schema
.
si_ad_createTimestamp
,
attr
->
a_vals
,
attr
->
a_nvals
);
}
attr
=
attr_find
(
e
->
e_attrs
,
slap_schema
.
si_ad_modifyTimestamp
);
if
(
attr
)
{
attr_merge
(
cfe
,
slap_schema
.
si_ad_modifyTimestamp
,
attr
->
a_vals
,
attr
->
a_nvals
);
op
->
ora_e
=
ce
;
rc
=
slap_add_opattrs
(
op
,
NULL
,
NULL
,
0
,
0
);
if
(
rc
!=
LDAP_SUCCESS
)
{
text
->
bv_val
=
"autocreation of
\"
olcDatabase={0}config
\"
failed"
;
text
->
bv_len
=
STRLENOF
(
"autocreation of
\"
olcDatabase={0}config
\"
failed"
);
return
NOID
;
}
if
(
c
f
e
&&
bi
&&
bi
->
bi_tool_entry_put
&&
bi
->
bi_tool_entry_put
(
&
cfb
->
cb_db
,
c
f
e
,
text
)
!=
NOID
)
{
entry_put_got_
frontend
++
;
if
(
ce
&&
bi
&&
bi
->
bi_tool_entry_put
&&
bi
->
bi_tool_entry_put
(
&
cfb
->
cb_db
,
ce
,
text
)
!=
NOID
)
{
entry_put_got_
config
++
;
}
else
{
text
->
bv_val
=
"autocreation of
\"
cn
={0}config
\"
failed"
;
text
->
bv_len
=
STRLENOF
(
"autocreation of
\"
cn
={0}config
\"
failed"
);
text
->
bv_val
=
"autocreation of
\"
olcDatabase
={0}config
\"
failed"
;
text
->
bv_len
=
STRLENOF
(
"autocreation of
\"
olcDatabase
={0}config
\"
failed"
);
return
NOID
;
}
}
else
{
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a 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