From: David Lamparter Date: Tue, 15 Sep 2015 09:18:23 +0000 (-0700) Subject: pimd: use IPPROTO_IP (not SOL_IP) for IP_PKTINFO X-Git-Tag: frr-2.0-rc1~847 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=7ec306362453007de1bec322a605600cf5f3c793;p=mirror%2Ffrr.git pimd: use IPPROTO_IP (not SOL_IP) for IP_PKTINFO Solaris uses the same socket API for IP_PKTINFO as Linux, but doesn't have a SOL_IP define. Signed-off-by: David Lamparter --- diff --git a/pimd/pim_sock.c b/pimd/pim_sock.c index 4816c567e2..4e6bf7e0a6 100644 --- a/pimd/pim_sock.c +++ b/pimd/pim_sock.c @@ -80,9 +80,9 @@ int pim_socket_mcast(int protocol, struct in_addr ifaddr, int loop) /* Needed to obtain destination address from recvmsg() */ { #if defined(HAVE_IP_PKTINFO) - /* Linux IP_PKTINFO */ + /* Linux and Solaris IP_PKTINFO */ int opt = 1; - if (setsockopt(fd, SOL_IP, IP_PKTINFO, &opt, sizeof(opt))) { + if (setsockopt(fd, IPPROTO_IP, IP_PKTINFO, &opt, sizeof(opt))) { zlog_warn("Could not set IP_PKTINFO on socket fd=%d: errno=%d: %s", fd, errno, safe_strerror(errno)); } @@ -306,7 +306,7 @@ int pim_socket_recvfromto(int fd, uint8_t *buf, size_t len, cmsg = CMSG_NXTHDR(&msgh,cmsg)) { #ifdef HAVE_IP_PKTINFO - if ((cmsg->cmsg_level == SOL_IP) && (cmsg->cmsg_type == IP_PKTINFO)) { + if ((cmsg->cmsg_level == IPPROTO_IP) && (cmsg->cmsg_type == IP_PKTINFO)) { struct in_pktinfo *i = (struct in_pktinfo *) CMSG_DATA(cmsg); if (to) ((struct sockaddr_in *) to)->sin_addr = i->ipi_addr; diff --git a/pimd/pim_ssmpingd.c b/pimd/pim_ssmpingd.c index 82e0722a74..d564bf57bc 100644 --- a/pimd/pim_ssmpingd.c +++ b/pimd/pim_ssmpingd.c @@ -110,9 +110,9 @@ static int ssmpingd_socket(struct in_addr addr, int port, int mttl) /* Needed to obtain destination address from recvmsg() */ { #if defined(HAVE_IP_PKTINFO) - /* Linux IP_PKTINFO */ + /* Linux and Solaris IP_PKTINFO */ int opt = 1; - if (setsockopt(fd, SOL_IP, IP_PKTINFO, &opt, sizeof(opt))) { + if (setsockopt(fd, IPPROTO_IP, IP_PKTINFO, &opt, sizeof(opt))) { zlog_warn("%s: could not set IP_PKTINFO on socket fd=%d: errno=%d: %s", __PRETTY_FUNCTION__, fd, errno, safe_strerror(errno)); }