diff options
| author | Rafael Zalamena <rzalamena@opensourcerouting.org> | 2018-12-21 20:59:18 -0200 | 
|---|---|---|
| committer | Martin Winter <mwinter@opensourcerouting.org> | 2019-05-03 11:02:35 -0700 | 
| commit | c6cc79445d39521eaa9485516d127d5a30e39c66 (patch) | |
| tree | e8e03543985766de9e374bda11386deebb578112 | |
| parent | 4a3608625c52c36acb78469e84d22faf6b58e92e (diff) | |
ldpd: fix startup on OpenBSD
We must open the PF_KEY socket before dropping privileges, otherwise the
socket creation will fail with permission problems.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
| -rw-r--r-- | ldpd/ldpe.c | 18 | 
1 files changed, 10 insertions, 8 deletions
diff --git a/ldpd/ldpe.c b/ldpd/ldpe.c index 56af76d94e..c16d92f28b 100644 --- a/ldpd/ldpe.c +++ b/ldpd/ldpe.c @@ -139,6 +139,16 @@ ldpe(void)  void  ldpe_init(struct ldpd_init *init)  { +#ifdef __OpenBSD__ +	/* This socket must be open before dropping privileges. */ +	global.pfkeysock = pfkey_init(); +	if (sysdep.no_pfkey == 0) { +		pfkey_ev = NULL; +		thread_add_read(master, ldpe_dispatch_pfkey, NULL, global.pfkeysock, +				&pfkey_ev); +	} +#endif +  	/* drop privileges */  	ldpe_privs.user = init->user;  	ldpe_privs.group = init->group; @@ -159,14 +169,6 @@ ldpe_init(struct ldpd_init *init)  		fatal("inet_pton");  	if (inet_pton(AF_INET6, AllRouters_v6, &global.mcast_addr_v6) != 1)  		fatal("inet_pton"); -#ifdef __OpenBSD__ -	global.pfkeysock = pfkey_init(); -	if (sysdep.no_pfkey == 0) { -		pfkey_ev = NULL; -		thread_add_read(master, ldpe_dispatch_pfkey, NULL, global.pfkeysock, -				&pfkey_ev); -	} -#endif  	/* mark sockets as closed */  	global.ipv4.ldp_disc_socket = -1;  | 
