]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd/zebra: fix setting of IP_MULTICAST_LOOP on OpenBSD
authorRenato Westphal <renato@opensourcerouting.org>
Sat, 12 Nov 2016 20:39:51 +0000 (18:39 -0200)
committerRenato Westphal <renato@opensourcerouting.org>
Fri, 25 Nov 2016 13:46:06 +0000 (11:46 -0200)
Linux, FreeBSD and NetBSD (and possibly others too) accept both uint8_t
and int for the IP_MULTICAST_LOOP sockoption. OpenBSD, in the other hand,
accepts only uint8_t. To make setting IP_MULTICAST_LOOP work on every
supported platform, always pass a uint8_t variable as a parameter.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
pimd/pim_sock.c
pimd/pim_sock.h
pimd/pim_ssmpingd.c
zebra/irdp_packet.c

index a024e3ae015bcc6a3fdfe876fbc5597e87696572..90b11dcfd668aec9a153bd1ff9f152c26a5cb3c5 100644 (file)
@@ -68,7 +68,7 @@ int pim_socket_raw(int protocol)
   return fd;
 }
 
-int pim_socket_mcast(int protocol, struct in_addr ifaddr, int ifindex, int loop)
+int pim_socket_mcast(int protocol, struct in_addr ifaddr, int ifindex, u_char loop)
 {
   int fd;
 
index f0a16008187a3dd1d4ec9877edcbbd658d8611ea..cd29543fa0293dd3e65240ca1b3ab96a0ebfc433 100644 (file)
@@ -39,7 +39,7 @@
 #define PIM_SOCK_ERR_BIND    (-11) /* Can't bind to interface */
 
 int pim_socket_raw(int protocol);
-int pim_socket_mcast(int protocol, struct in_addr ifaddr, int ifindex, int loop);
+int pim_socket_mcast(int protocol, struct in_addr ifaddr, int ifindex, u_char loop);
 int pim_socket_join(int fd, struct in_addr group,
                    struct in_addr ifaddr, ifindex_t ifindex);
 int pim_socket_join_source(int fd, ifindex_t ifindex,
index fe88eba2710f6d369487e2c7f87de7d07c1fff21..daa3c65e36fb17a26aa5e927777f9414740e9953 100644 (file)
@@ -151,7 +151,7 @@ static int ssmpingd_socket(struct in_addr addr, int port, int mttl)
   }
 
   {
-    int loop = 0;
+    u_char loop = 0;
     if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP,
                   (void *) &loop, sizeof(loop))) {
       zlog_warn("%s: could not %s Multicast Loopback Option on socket fd=%d: errno=%d: %s",
index 25c7aff26b9c1f712ff24edd41af1052285f132e..290a6180e7283013ab7911505b9eb742e18a76cc 100644 (file)
@@ -282,7 +282,7 @@ send_packet(struct interface *ifp,
   char buf[256];
   struct in_pktinfo *pktinfo;
   u_long src;
-  int on;
+  u_char on;
  
   if (!(ifp->flags & IFF_UP))
     return;