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
Joe Martin
OpenLDAP
Commits
c596b797
Commit
c596b797
authored
Mar 14, 2017
by
Ondřej Kuzník
Committed by
Ondřej Kuzník
Nov 17, 2020
Browse files
Backend configuration
parent
46ddb403
Changes
2
Hide whitespace changes
Inline
Side-by-side
servers/lloadd/config.c
View file @
c596b797
...
...
@@ -95,6 +95,7 @@ static ConfigFile *cfn;
static
ConfigDriver
config_fname
;
static
ConfigDriver
config_generic
;
static
ConfigDriver
config_backend
;
#ifdef LDAP_TCP_BUFFER
static
ConfigDriver
config_tcp_buffer
;
#endif
/* LDAP_TCP_BUFFER */
...
...
@@ -106,6 +107,8 @@ static ConfigDriver config_tls_option;
static
ConfigDriver
config_tls_config
;
#endif
slap_b_head
backend
=
LDAP_STAILQ_HEAD_INITIALIZER
(
backend
);
enum
{
CFG_ACL
=
1
,
CFG_BACKEND
,
...
...
@@ -151,9 +154,9 @@ static ConfigTable config_back_cf_table[] = {
ARG_INT
|
ARG_MAGIC
|
CFG_CONCUR
,
&
config_generic
,
},
{
"
database
"
,
"type"
,
2
,
2
,
0
,
{
"
backend
"
,
"type"
,
2
,
2
,
0
,
ARG_MAGIC
|
CFG_DATABASE
,
&
config_
generic
,
&
config_
backend
,
},
{
"gentlehup"
,
"on|off"
,
2
,
2
,
0
,
#ifdef SIGHUP
...
...
@@ -426,6 +429,109 @@ config_generic( ConfigArgs *c )
return
0
;
}
static
int
config_backend
(
ConfigArgs
*
c
)
{
int
i
,
tmp
,
rc
=
-
1
;
LDAPURLDesc
*
lud
=
NULL
;
Backend
*
b
;
b
=
ch_calloc
(
1
,
sizeof
(
Backend
)
);
for
(
i
=
1
;
i
<
c
->
argc
;
i
++
)
{
if
(
bindconf_parse
(
c
->
argv
[
i
],
&
b
->
b_bindconf
)
)
{
Debug
(
LDAP_DEBUG_ANY
,
"config_backend: "
"error parsing backend configuration item '%s'
\n
"
,
c
->
argv
[
i
]
);
rc
=
-
1
;
goto
done
;
}
}
if
(
BER_BVISNULL
(
&
b
->
b_bindconf
.
sb_uri
)
)
{
Debug
(
LDAP_DEBUG_ANY
,
"config_backend: "
"backend address not specified
\n
"
);
rc
=
-
1
;
goto
done
;
}
rc
=
ldap_url_parse
(
b
->
b_bindconf
.
sb_uri
.
bv_val
,
&
lud
);
if
(
rc
!=
LDAP_URL_SUCCESS
)
{
Debug
(
LDAP_DEBUG_ANY
,
"config_backend: "
"listen URL
\"
%s
\"
parse error=%d
\n
"
,
b
->
b_bindconf
.
sb_uri
.
bv_val
,
rc
);
rc
=
-
1
;
goto
done
;
}
#ifndef HAVE_TLS
if
(
ldap_pvt_url_scheme2tls
(
lud
->
lud_scheme
)
)
{
Debug
(
LDAP_DEBUG_ANY
,
"config_backend: "
"TLS not supported (%s)
\n
"
,
b
->
b_bindconf
.
sb_uri
.
bv_val
);
rc
=
-
1
;
goto
done
;
}
if
(
!
lud
->
lud_port
)
{
b
->
b_port
=
LDAP_PORT
;
}
else
{
b
->
b_port
=
lud
->
lud_port
;
}
#else
/* HAVE_TLS */
tmp
=
ldap_pvt_url_scheme2tls
(
lud
->
lud_scheme
);
if
(
tmp
)
{
b
->
b_tls
=
LLOAD_LDAPS
;
}
if
(
!
lud
->
lud_port
)
{
b
->
b_port
=
b
->
b_tls
?
LDAPS_PORT
:
LDAP_PORT
;
}
else
{
b
->
b_port
=
lud
->
lud_port
;
}
#endif
/* HAVE_TLS */
b
->
b_proto
=
tmp
=
ldap_pvt_url_scheme2proto
(
lud
->
lud_scheme
);
if
(
tmp
==
LDAP_PROTO_IPC
)
{
#ifdef LDAP_PF_LOCAL
if
(
lud
->
lud_host
==
NULL
||
lud
->
lud_host
[
0
]
==
'\0'
)
{
b
->
b_host
=
ch_strdup
(
LDAPI_SOCK
);
}
#else
/* ! LDAP_PF_LOCAL */
Debug
(
LDAP_DEBUG_ANY
,
"config_backend: "
"URL scheme not supported: %s"
,
url
);
rc
=
-
1
;
goto
done
;
#endif
/* ! LDAP_PF_LOCAL */
}
else
{
if
(
lud
->
lud_host
==
NULL
||
lud
->
lud_host
[
0
]
==
'\0'
)
{
Debug
(
LDAP_DEBUG_ANY
,
"config_backend: "
"backend url missing hostname: '%s'
\n
"
,
b
->
b_bindconf
.
sb_uri
.
bv_val
);
rc
=
-
1
;
goto
done
;
}
}
if
(
!
b
->
b_host
)
{
b
->
b_host
=
ch_strdup
(
lud
->
lud_host
);
}
ldap_pvt_thread_mutex_init
(
&
b
->
b_lock
);
done:
ldap_free_urldesc
(
lud
);
if
(
rc
)
{
ch_free
(
b
);
}
else
{
LDAP_STAILQ_INSERT_TAIL
(
&
backend
,
b
,
b_next
);
}
return
rc
;
}
static
int
config_fname
(
ConfigArgs
*
c
)
{
...
...
servers/lloadd/slap.h
View file @
c596b797
...
...
@@ -96,6 +96,7 @@ LDAP_SLAPD_V (int) slap_debug;
typedef
unsigned
long
slap_mask_t
;
typedef
struct
Backend
Backend
;
typedef
struct
Connection
Connection
;
/* end of forward declarations */
...
...
@@ -115,6 +116,10 @@ typedef union Sockaddr {
extern
int
slap_inet4or6
;
#endif
typedef
LDAP_STAILQ_HEAD
(
BeSt
,
Backend
)
slap_b_head
;
LDAP_SLAPD_V
(
slap_b_head
)
backend
;
LDAP_SLAPD_V
(
int
)
slapMode
;
#define SLAP_UNDEFINED_MODE 0x0000
#define SLAP_SERVER_MODE 0x0001
...
...
@@ -217,6 +222,26 @@ typedef struct config_reply_s ConfigReply; /* config.h */
typedef
struct
Listener
Listener
;
enum
lload_tls_type
{
LLOAD_CLEARTEXT
=
0
,
LLOAD_LDAPS
,
LLOAD_STARTTLS
,
};
struct
Backend
{
struct
slap_bindconf
b_bindconf
;
ldap_pvt_thread_mutex_t
b_lock
;
int
b_proto
,
b_port
;
enum
lload_tls_type
b_tls
;
char
*
b_host
;
int
b_numconns
,
b_numbindconns
;
Connection
*
b_conns
,
*
b_bindconns
;
LDAP_STAILQ_ENTRY
(
Backend
)
b_next
;
};
/*
* represents a connection from an ldap client
*/
...
...
@@ -267,8 +292,8 @@ struct Connection {
#define CONN_IS_IPC 8
#ifdef HAVE_TLS
char
c_is_tls
;
/* true if this LDAP over raw TLS */
char
c_needs_tls_accept
;
/* true if SSL_accept should be called */
enum
lload_tls_type
c_is_tls
;
/* true if this LDAP over raw TLS */
char
c_needs_tls_accept
;
/* true if SSL_accept should be called */
#endif
long
c_n_ops_executing
;
/* num of ops currently executing */
...
...
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