Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
orbea -
OpenLDAP
Commits
dcca7337
Commit
dcca7337
authored
Feb 22, 2021
by
Paul Henson
Committed by
Quanah Gibson-Mount
Feb 24, 2021
Browse files
Move slap_sockaddrstr into liblutil
parent
5fa0a651
Changes
7
Hide whitespace changes
Inline
Side-by-side
include/lutil.h
View file @
dcca7337
...
...
@@ -18,6 +18,14 @@
#include
<ldap_cdefs.h>
#include
<lber_types.h>
#include
<ac/socket.h>
#ifdef HAVE_TCPD
# include <tcpd.h>
# define LUTIL_STRING_UNKNOWN STRING_UNKNOWN
#else
/* ! TCP Wrappers */
# define LUTIL_STRING_UNKNOWN "unknown"
#endif
/* ! TCP Wrappers */
/*
* Include file for LDAP utility routine
...
...
@@ -336,6 +344,29 @@ lutil_parse_time( const char *in, unsigned long *tp );
LDAP_LUTIL_F
(
int
)
lutil_unparse_time
(
char
*
buf
,
size_t
buflen
,
unsigned
long
t
);
#ifdef LDAP_PF_LOCAL
#define LUTIL_ADDRLEN (MAXPATHLEN + sizeof("PATH="))
#elif defined(LDAP_PF_INET6)
#define LUTIL_ADDRLEN sizeof("IP=[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535")
#else
#define LUTIL_ADDRLEN sizeof("IP=255.255.255.255:65336")
#endif
typedef
union
Sockaddr
{
struct
sockaddr
sa_addr
;
struct
sockaddr_in
sa_in_addr
;
#ifdef LDAP_PF_INET6
struct
sockaddr_storage
sa_storage
;
struct
sockaddr_in6
sa_in6_addr
;
#endif
#ifdef LDAP_PF_LOCAL
struct
sockaddr_un
sa_un_addr
;
#endif
}
Sockaddr
;
LDAP_LUTIL_F
(
void
)
lutil_sockaddrstr
(
Sockaddr
*
sa
,
struct
berval
*
);
#ifdef timerdiv
#define lutil_timerdiv timerdiv
#else
/* ! timerdiv */
...
...
libraries/liblutil/utils.c
View file @
dcca7337
...
...
@@ -1070,3 +1070,74 @@ lutil_snprintf( char *buf, ber_len_t bufsize, char **next, ber_len_t *len, LDAP_
return
0
;
}
void
lutil_sockaddrstr
(
Sockaddr
*
sa
,
struct
berval
*
addrbuf
)
{
char
*
addr
;
switch
(
sa
->
sa_addr
.
sa_family
)
{
#ifdef LDAP_PF_LOCAL
case
AF_LOCAL
:
addrbuf
->
bv_len
=
snprintf
(
addrbuf
->
bv_val
,
addrbuf
->
bv_len
,
"PATH=%s"
,
sa
->
sa_un_addr
.
sun_path
);
break
;
#endif
#ifdef LDAP_PF_INET6
case
AF_INET6
:
strcpy
(
addrbuf
->
bv_val
,
"IP="
);
if
(
IN6_IS_ADDR_V4MAPPED
(
&
sa
->
sa_in6_addr
.
sin6_addr
)
)
{
#if defined( HAVE_GETADDRINFO ) && defined( HAVE_INET_NTOP )
addr
=
(
char
*
)
inet_ntop
(
AF_INET
,
((
struct
in_addr
*
)
&
sa
->
sa_in6_addr
.
sin6_addr
.
s6_addr
[
12
]),
addrbuf
->
bv_val
+
3
,
addrbuf
->
bv_len
-
3
);
#else
/* ! HAVE_GETADDRINFO || ! HAVE_INET_NTOP */
addr
=
inet_ntoa
(
*
((
struct
in_addr
*
)
&
sa
->
sa_in6_addr
.
sin6_addr
.
s6_addr
[
12
])
);
#endif
/* ! HAVE_GETADDRINFO || ! HAVE_INET_NTOP */
if
(
!
addr
)
addr
=
LUTIL_STRING_UNKNOWN
;
if
(
addr
!=
addrbuf
->
bv_val
+
3
)
{
addrbuf
->
bv_len
=
sprintf
(
addrbuf
->
bv_val
+
3
,
"%s:%d"
,
addr
,
(
unsigned
)
ntohs
(
sa
->
sa_in6_addr
.
sin6_port
)
)
+
3
;
}
else
{
int
len
=
strlen
(
addr
);
addrbuf
->
bv_len
=
sprintf
(
addr
+
len
,
":%d"
,
(
unsigned
)
ntohs
(
sa
->
sa_in6_addr
.
sin6_port
)
)
+
len
+
3
;
}
}
else
{
addr
=
(
char
*
)
inet_ntop
(
AF_INET6
,
&
sa
->
sa_in6_addr
.
sin6_addr
,
addrbuf
->
bv_val
+
4
,
addrbuf
->
bv_len
-
4
);
if
(
!
addr
)
addr
=
LUTIL_STRING_UNKNOWN
;
if
(
addr
!=
addrbuf
->
bv_val
+
4
)
{
addrbuf
->
bv_len
=
sprintf
(
addrbuf
->
bv_val
+
3
,
"[%s]:%d"
,
addr
,
(
unsigned
)
ntohs
(
sa
->
sa_in6_addr
.
sin6_port
)
)
+
3
;
}
else
{
int
len
=
strlen
(
addr
);
addrbuf
->
bv_val
[
3
]
=
'['
;
addrbuf
->
bv_len
=
sprintf
(
addr
+
len
,
"]:%d"
,
(
unsigned
)
ntohs
(
sa
->
sa_in6_addr
.
sin6_port
)
)
+
len
+
4
;
}
}
break
;
#endif
/* LDAP_PF_INET6 */
case
AF_INET
:
strcpy
(
addrbuf
->
bv_val
,
"IP="
);
#if defined( HAVE_GETADDRINFO ) && defined( HAVE_INET_NTOP )
addr
=
(
char
*
)
inet_ntop
(
AF_INET
,
&
sa
->
sa_in_addr
.
sin_addr
,
addrbuf
->
bv_val
+
3
,
addrbuf
->
bv_len
-
3
);
#else
/* ! HAVE_GETADDRINFO || ! HAVE_INET_NTOP */
addr
=
inet_ntoa
(
sa
->
sa_in_addr
.
sin_addr
);
#endif
/* ! HAVE_GETADDRINFO || ! HAVE_INET_NTOP */
if
(
!
addr
)
addr
=
LUTIL_STRING_UNKNOWN
;
if
(
addr
!=
addrbuf
->
bv_val
+
3
)
{
addrbuf
->
bv_len
=
sprintf
(
addrbuf
->
bv_val
+
3
,
"%s:%d"
,
addr
,
(
unsigned
)
ntohs
(
sa
->
sa_in_addr
.
sin_port
)
)
+
3
;
}
else
{
int
len
=
strlen
(
addr
);
addrbuf
->
bv_len
=
sprintf
(
addr
+
len
,
":%d"
,
(
unsigned
)
ntohs
(
sa
->
sa_in_addr
.
sin_port
)
)
+
len
+
3
;
}
break
;
default:
addrbuf
->
bv_val
[
0
]
=
'\0'
;
}
}
servers/lloadd/daemon.c
View file @
dcca7337
...
...
@@ -833,24 +833,8 @@ lload_listener(
LloadListener
*
sl
=
arg
;
LloadConnection
*
c
;
Sockaddr
*
from
=
(
Sockaddr
*
)
a
;
#ifdef SLAPD_RLOOKUPS
char
hbuf
[
NI_MAXHOST
];
#endif
/* SLAPD_RLOOKUPS */
const
char
*
peeraddr
=
NULL
;
/* we assume INET6_ADDRSTRLEN > INET_ADDRSTRLEN */
char
addr
[
INET6_ADDRSTRLEN
];
#ifdef LDAP_PF_LOCAL
char
peername
[
MAXPATHLEN
+
sizeof
(
"PATH="
)];
#ifdef LDAP_PF_LOCAL_SENDMSG
char
peerbuf
[
8
];
struct
berval
peerbv
=
BER_BVNULL
;
#endif
#elif defined(LDAP_PF_INET6)
char
peername
[
sizeof
(
"IP=[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535"
)];
#else
/* ! LDAP_PF_LOCAL && ! LDAP_PF_INET6 */
char
peername
[
sizeof
(
"IP=255.255.255.255:65336"
)];
#endif
/* LDAP_PF_LOCAL */
char
peername
[
LUTIL_ADDRLEN
];
struct
berval
peerbv
=
BER_BVC
(
peername
);
int
cflag
;
int
tid
;
char
ebuf
[
128
];
...
...
@@ -918,40 +902,10 @@ lload_listener(
#ifdef LDAP_PF_INET6
case
AF_INET6
:
if
(
IN6_IS_ADDR_V4MAPPED
(
&
from
->
sa_in6_addr
.
sin6_addr
)
)
{
#if defined(HAVE_GETADDRINFO) && defined(HAVE_INET_NTOP)
peeraddr
=
inet_ntop
(
AF_INET
,
(
(
struct
in_addr
*
)
&
from
->
sa_in6_addr
.
sin6_addr
.
s6_addr
[
12
]
),
addr
,
sizeof
(
addr
)
);
#else
/* ! HAVE_GETADDRINFO || ! HAVE_INET_NTOP */
peeraddr
=
inet_ntoa
(
*
(
(
struct
in_addr
*
)
&
from
->
sa_in6_addr
.
sin6_addr
.
s6_addr
[
12
]
)
);
#endif
/* ! HAVE_GETADDRINFO || ! HAVE_INET_NTOP */
if
(
!
peeraddr
)
peeraddr
=
SLAP_STRING_UNKNOWN
;
sprintf
(
peername
,
"IP=%s:%d"
,
peeraddr
,
(
unsigned
)
ntohs
(
from
->
sa_in6_addr
.
sin6_port
)
);
}
else
{
peeraddr
=
inet_ntop
(
AF_INET6
,
&
from
->
sa_in6_addr
.
sin6_addr
,
addr
,
sizeof
(
addr
)
);
if
(
!
peeraddr
)
peeraddr
=
SLAP_STRING_UNKNOWN
;
sprintf
(
peername
,
"IP=[%s]:%d"
,
peeraddr
,
(
unsigned
)
ntohs
(
from
->
sa_in6_addr
.
sin6_port
)
);
}
break
;
#endif
/* LDAP_PF_INET6 */
case
AF_INET
:
{
#if defined(HAVE_GETADDRINFO) && defined(HAVE_INET_NTOP)
peeraddr
=
inet_ntop
(
AF_INET
,
&
from
->
sa_in_addr
.
sin_addr
,
addr
,
sizeof
(
addr
)
);
#else
/* ! HAVE_GETADDRINFO || ! HAVE_INET_NTOP */
peeraddr
=
inet_ntoa
(
from
->
sa_in_addr
.
sin_addr
);
#endif
/* ! HAVE_GETADDRINFO || ! HAVE_INET_NTOP */
if
(
!
peeraddr
)
peeraddr
=
SLAP_STRING_UNKNOWN
;
sprintf
(
peername
,
"IP=%s:%d"
,
peeraddr
,
(
unsigned
)
ntohs
(
from
->
sa_in_addr
.
sin_port
)
);
}
break
;
case
AF_INET
:
lutil_sockaddrstr
(
from
,
&
peerbv
);
break
;
default:
lloadd_close
(
s
);
...
...
servers/slapd/daemon.c
View file @
dcca7337
...
...
@@ -2079,78 +2079,6 @@ destroy_listeners( void )
slap_listeners
=
NULL
;
}
void
slap_sockaddrstr
(
Sockaddr
*
sa
,
struct
berval
*
addrbuf
)
{
char
*
addr
;
switch
(
sa
->
sa_addr
.
sa_family
)
{
#ifdef LDAP_PF_LOCAL
case
AF_LOCAL
:
addrbuf
->
bv_len
=
snprintf
(
addrbuf
->
bv_val
,
addrbuf
->
bv_len
,
"PATH=%s"
,
sa
->
sa_un_addr
.
sun_path
);
break
;
#endif
#ifdef LDAP_PF_INET6
case
AF_INET6
:
strcpy
(
addrbuf
->
bv_val
,
"IP="
);
if
(
IN6_IS_ADDR_V4MAPPED
(
&
sa
->
sa_in6_addr
.
sin6_addr
)
)
{
#if defined( HAVE_GETADDRINFO ) && defined( HAVE_INET_NTOP )
addr
=
(
char
*
)
inet_ntop
(
AF_INET
,
((
struct
in_addr
*
)
&
sa
->
sa_in6_addr
.
sin6_addr
.
s6_addr
[
12
]),
addrbuf
->
bv_val
+
3
,
addrbuf
->
bv_len
-
3
);
#else
/* ! HAVE_GETADDRINFO || ! HAVE_INET_NTOP */
addr
=
inet_ntoa
(
*
((
struct
in_addr
*
)
&
sa
->
sa_in6_addr
.
sin6_addr
.
s6_addr
[
12
])
);
#endif
/* ! HAVE_GETADDRINFO || ! HAVE_INET_NTOP */
if
(
!
addr
)
addr
=
SLAP_STRING_UNKNOWN
;
if
(
addr
!=
addrbuf
->
bv_val
+
3
)
{
addrbuf
->
bv_len
=
sprintf
(
addrbuf
->
bv_val
+
3
,
"%s:%d"
,
addr
,
(
unsigned
)
ntohs
(
sa
->
sa_in6_addr
.
sin6_port
)
)
+
3
;
}
else
{
int
len
=
strlen
(
addr
);
addrbuf
->
bv_len
=
sprintf
(
addr
+
len
,
":%d"
,
(
unsigned
)
ntohs
(
sa
->
sa_in6_addr
.
sin6_port
)
)
+
len
+
3
;
}
}
else
{
addr
=
(
char
*
)
inet_ntop
(
AF_INET6
,
&
sa
->
sa_in6_addr
.
sin6_addr
,
addrbuf
->
bv_val
+
4
,
addrbuf
->
bv_len
-
4
);
if
(
!
addr
)
addr
=
SLAP_STRING_UNKNOWN
;
if
(
addr
!=
addrbuf
->
bv_val
+
4
)
{
addrbuf
->
bv_len
=
sprintf
(
addrbuf
->
bv_val
+
3
,
"[%s]:%d"
,
addr
,
(
unsigned
)
ntohs
(
sa
->
sa_in6_addr
.
sin6_port
)
)
+
3
;
}
else
{
int
len
=
strlen
(
addr
);
addrbuf
->
bv_val
[
3
]
=
'['
;
addrbuf
->
bv_len
=
sprintf
(
addr
+
len
,
"]:%d"
,
(
unsigned
)
ntohs
(
sa
->
sa_in6_addr
.
sin6_port
)
)
+
len
+
4
;
}
}
break
;
#endif
/* LDAP_PF_INET6 */
case
AF_INET
:
strcpy
(
addrbuf
->
bv_val
,
"IP="
);
#if defined( HAVE_GETADDRINFO ) && defined( HAVE_INET_NTOP )
addr
=
(
char
*
)
inet_ntop
(
AF_INET
,
&
sa
->
sa_in_addr
.
sin_addr
,
addrbuf
->
bv_val
+
3
,
addrbuf
->
bv_len
-
3
);
#else
/* ! HAVE_GETADDRINFO || ! HAVE_INET_NTOP */
addr
=
inet_ntoa
(
sa
->
sa_in_addr
.
sin_addr
);
#endif
/* ! HAVE_GETADDRINFO || ! HAVE_INET_NTOP */
if
(
!
addr
)
addr
=
SLAP_STRING_UNKNOWN
;
if
(
addr
!=
addrbuf
->
bv_val
+
3
)
{
addrbuf
->
bv_len
=
sprintf
(
addrbuf
->
bv_val
+
3
,
"%s:%d"
,
addr
,
(
unsigned
)
ntohs
(
sa
->
sa_in_addr
.
sin_port
)
)
+
3
;
}
else
{
int
len
=
strlen
(
addr
);
addrbuf
->
bv_len
=
sprintf
(
addr
+
len
,
":%d"
,
(
unsigned
)
ntohs
(
sa
->
sa_in_addr
.
sin_port
)
)
+
len
+
3
;
}
break
;
default:
addrbuf
->
bv_val
[
0
]
=
'\0'
;
}
}
static
int
slap_listener
(
Listener
*
sl
)
...
...
@@ -2169,7 +2097,7 @@ slap_listener(
char
*
dnsname
=
NULL
;
const
char
*
peeraddr
=
NULL
;
/* we assume INET6_ADDRSTRLEN > INET_ADDRSTRLEN */
char
peername
[
SLAP
_ADDRLEN
];
char
peername
[
LUTIL
_ADDRLEN
];
struct
berval
peerbv
=
BER_BVC
(
peername
);
#ifdef LDAP_PF_LOCAL_SENDMSG
char
peerbuf
[
8
];
...
...
@@ -2342,7 +2270,7 @@ slap_listener(
case
AF_INET6
:
# endif
/* LDAP_PF_INET6 */
case
AF_INET
:
slap
_sockaddrstr
(
&
from
,
&
peerbv
);
lutil
_sockaddrstr
(
&
from
,
&
peerbv
);
break
;
default:
...
...
servers/slapd/proto-slap.h
View file @
dcca7337
...
...
@@ -894,7 +894,6 @@ LDAP_SLAPD_F (void) slap_resume_listeners LDAP_P((void));
LDAP_SLAPD_F
(
int
)
slap_pause_server
LDAP_P
((
void
));
LDAP_SLAPD_F
(
int
)
slap_unpause_server
LDAP_P
((
void
));
LDAP_SLAPD_F
(
void
)
slap_sockaddrstr
LDAP_P
((
Sockaddr
*
sa
,
struct
berval
*
));
LDAP_SLAPD_F
(
void
)
slapd_set_write
LDAP_P
((
ber_socket_t
s
,
int
wake
));
LDAP_SLAPD_F
(
void
)
slapd_clr_write
LDAP_P
((
ber_socket_t
s
,
int
wake
));
...
...
servers/slapd/slap.h
View file @
dcca7337
...
...
@@ -56,6 +56,8 @@
#include
"ldap_pvt_thread.h"
#include
"ldap_queue.h"
#include
"lutil.h"
LDAP_BEGIN_DECL
#ifdef LDAP_DEVEL
...
...
@@ -370,18 +372,6 @@ typedef struct Operation Operation;
typedef
struct
SlapReply
SlapReply
;
/* end of forward declarations */
typedef
union
Sockaddr
{
struct
sockaddr
sa_addr
;
struct
sockaddr_in
sa_in_addr
;
#ifdef LDAP_PF_INET6
struct
sockaddr_storage
sa_storage
;
struct
sockaddr_in6
sa_in6_addr
;
#endif
#ifdef LDAP_PF_LOCAL
struct
sockaddr_un
sa_un_addr
;
#endif
}
Sockaddr
;
#ifdef LDAP_PF_INET6
extern
int
slap_inet4or6
;
#endif
...
...
@@ -2858,14 +2848,6 @@ typedef void (SEND_LDAP_INTERMEDIATE)(
typedef
struct
Listener
Listener
;
#ifdef LDAP_PF_LOCAL
#define SLAP_ADDRLEN (MAXPATHLEN + sizeof("PATH="))
#elif defined(LDAP_PF_INET6)
#define SLAP_ADDRLEN sizeof("IP=[ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:65535")
#else
#define SLAP_ADDRLEN sizeof("IP=255.255.255.255:65336")
#endif
/*
* represents a connection from an ldap client
*/
...
...
servers/slapd/syncrepl.c
View file @
dcca7337
...
...
@@ -167,7 +167,7 @@ typedef struct syncinfo_s {
struct berval si_lastCookieRcvd;
struct berval si_lastCookieSent;
struct berval si_monitor_ndn;
char si_connaddrbuf[
SLAP
_ADDRLEN];
char si_connaddrbuf[
LUTIL
_ADDRLEN];
ldap_pvt_thread_mutex_t si_monitor_mutex;
ldap_pvt_thread_mutex_t si_mutex;
...
...
@@ -2056,7 +2056,7 @@ reload:
if ( !getsockname( s, &addr.sa_addr, &len )) {
si->si_connaddr.bv_val = si->si_connaddrbuf;
si->si_connaddr.bv_len = sizeof( si->si_connaddrbuf );
slap
_sockaddrstr( &addr, &si->si_connaddr );
lutil
_sockaddrstr( &addr, &si->si_connaddr );
}
}
...
...
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