diff options
Diffstat (limited to 'lib/sockopt.h')
-rw-r--r-- | lib/sockopt.h | 20 |
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 */ |