diff options
Diffstat (limited to 'lib/sockopt.h')
-rw-r--r-- | lib/sockopt.h | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/lib/sockopt.h b/lib/sockopt.h index c5d171c2..b7aa1b3a 100644 --- a/lib/sockopt.h +++ b/lib/sockopt.h @@ -32,26 +32,37 @@ int setsockopt_ipv6_multicast_loop (int, int); #endif /* HAVE_IPV6 */ #if defined (IP_PKTINFO) + #define SOPT_SIZE_CMSG_PKTINFO_IPV4() (sizeof (struct in_pktinfo)) +#define SOPT_SIZE_CMSG_IFINDEX_IPV4 SOPT_SIZE_CMSG_PKTINFO_IPV4 +#define SOPT_SIZE_CMSG_PKTINFO(af) \ + ((af == AF_INET) ? SOPT_SIZE_CMSG_PKTINFO_IPV4() \ + : SOPT_SIZE_CMSG_PKTINFO_IPV6() + #elif defined (IP_RECVIF) #if defined (SUNOS_5) -#define SOPT_SIZE_CMSG_PKTINFO_IPV4() (sizeof (uint_t)) +#define SOPT_SIZE_CMSG_IFINDEX_IPV4() (sizeof (uint_t)) #else -#define SOPT_SIZE_CMSG_PKTINFO_IPV4() (sizeof (struct sockaddr_dl)) +#define SOPT_SIZE_CMSG_IFINDEX_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() +#define SOPT_SIZE_CMSG_IFINDEX(af) \ + ((af == AF_INET) ? SOPT_SIZE_CMSG_IFINDEX_IPV4() \ + : SOPT_SIZE_CMSG_IFINDEX_IPV6() int setsockopt_multicast_ipv4(int sock, int optname, struct in_addr if_addr, unsigned int mcast_addr, unsigned int ifindex); + +#if defined (IP_PKTINFO) int setsockopt_pktinfo (int, int, int); -int getsockopt_pktinfo_ifindex (int, struct msghdr *); +#endif +int setsockopt_ifindex (int, int, int); +int getsockopt_ifindex (int, struct msghdr *); #endif /*_ZEBRA_SOCKOPT_H */ |