From: Donald Sharp Date: Tue, 30 Oct 2018 18:17:02 +0000 (-0400) Subject: pimd: *bsd needs priviledge escalation to init PIM X-Git-Tag: frr-7.1-dev~229^2~1 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=f0b009a4db209102142c7fd65d2ac5b7ac2c1065;p=matthieu%2Ffrr.git pimd: *bsd needs priviledge escalation to init PIM When trying to run PIM on *bsd, the kernel expects to only allow the pim kernel socket to work if we elevate priviledges. So do so. This commit gets us further in the startup of PIM on *bsd but is not sufficient to get it fully started yet. Signed-off-by: Donald Sharp --- diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c index 436e0508f3..8ad9a28aee 100644 --- a/pimd/pim_mroute.c +++ b/pimd/pim_mroute.c @@ -74,15 +74,19 @@ static int pim_mroute_set(struct pim_instance *pim, int enable) } } - opt = enable ? MRT_INIT : MRT_DONE; - err = setsockopt(pim->mroute_socket, IPPROTO_IP, opt, &opt, opt_len); - if (err) { - zlog_warn( - "%s %s: failure: setsockopt(fd=%d,IPPROTO_IP,%s=%d): errno=%d: %s", - __FILE__, __PRETTY_FUNCTION__, pim->mroute_socket, - enable ? "MRT_INIT" : "MRT_DONE", opt, errno, - safe_strerror(errno)); - return -1; + frr_elevate_privs(&pimd_privs) { + opt = enable ? MRT_INIT : MRT_DONE; + err = setsockopt(pim->mroute_socket, IPPROTO_IP, + opt, &opt, opt_len); + if (err) { + zlog_warn( + "%s %s: failure: setsockopt(fd=%d,IPPROTO_IP,%s=%d): errno=%d: %s", + __FILE__, __PRETTY_FUNCTION__, + pim->mroute_socket, + enable ? "MRT_INIT" : "MRT_DONE", opt, errno, + safe_strerror(errno)); + return -1; + } } #if defined(HAVE_IP_PKTINFO)