summaryrefslogtreecommitdiff
path: root/lib/sockopt.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sockopt.h')
-rw-r--r--lib/sockopt.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/lib/sockopt.h b/lib/sockopt.h
index 7fb31c18..c5d171c2 100644
--- a/lib/sockopt.h
+++ b/lib/sockopt.h
@@ -31,11 +31,27 @@ int setsockopt_ipv6_hoplimit (int, int);
int setsockopt_ipv6_multicast_loop (int, int);
#endif /* HAVE_IPV6 */
+#if defined (IP_PKTINFO)
+#define SOPT_SIZE_CMSG_PKTINFO_IPV4() (sizeof (struct in_pktinfo))
+#elif defined (IP_RECVIF)
+#if defined (SUNOS_5)
+#define SOPT_SIZE_CMSG_PKTINFO_IPV4() (sizeof (uint_t))
+#else
+#define SOPT_SIZE_CMSG_PKTINFO_IPV4() (sizeof (struct sockaddr_dl))
+#endif /* SUNOS_5 */
+#endif
+
+#define SOPT_SIZE_CMSG_PKTINFO_IPV6() (sizeof (struct in6_pktinfo));
+
+#define SOPT_SIZE_CMSG_PKTINFO(af) \
+ ((af == AF_INET) ? SOPT_SIZE_CMSG_PKTINFO_IPV4() \
+ : SOPT_SIZE_CMSG_PKTINFO_IPV6()
+
int setsockopt_multicast_ipv4(int sock,
int optname,
struct in_addr if_addr,
unsigned int mcast_addr,
unsigned int ifindex);
-
-
+int setsockopt_pktinfo (int, int, int);
+int getsockopt_pktinfo_ifindex (int, struct msghdr *);
#endif /*_ZEBRA_SOCKOPT_H */