From 6f47d853d3bab864020a4e2444aaaa3391ee308e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= Date: Wed, 31 Jul 2013 12:05:14 +0300 Subject: [PATCH] add multicast structures from RFC 3678 to netinet/in.h and use _GNU_SOURCE || _BSD_SOURCE guards for all of the RFC 3678 namespace polluting things like glibc/uclibc does. --- include/netinet/in.h | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/include/netinet/in.h b/include/netinet/in.h index d886fc2..b7a8a7a 100644 --- a/include/netinet/in.h +++ b/include/netinet/in.h @@ -204,7 +204,7 @@ uint16_t ntohs(uint16_t); #define IP_MULTICAST_ALL 49 #define IP_UNICAST_IF 50 -#ifdef _GNU_SOURCE +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) #define MCAST_JOIN_GROUP 42 #define MCAST_BLOCK_SOURCE 43 #define MCAST_UNBLOCK_SOURCE 44 @@ -249,6 +249,47 @@ struct ip_mreqn int imr_ifindex; }; +struct ip_mreq_source { + uint32_t imr_multiaddr; + uint32_t imr_interface; + uint32_t imr_sourceaddr; +}; + +struct ip_msfilter { + uint32_t imsf_multiaddr; + uint32_t imsf_interface; + uint32_t imsf_fmode; + uint32_t imsf_numsrc; + uint32_t imsf_slist[1]; +}; +#define IP_MSFILTER_SIZE(numsrc) \ + (sizeof(struct ip_msfilter) - sizeof(uint32_t) \ + + (numsrc) * sizeof(uint32_t)) + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +struct group_req { + uint32_t gr_interface; + struct sockaddr_storage gr_group; +}; + +struct group_source_req { + uint32_t gsr_interface; + struct sockaddr_storage gsr_group; + struct sockaddr_storage gsr_source; +}; + +struct group_filter { + uint32_t gf_interface; + struct sockaddr_storage gf_group; + uint32_t gf_fmode; + uint32_t gf_numsrc; + struct sockaddr_storage gf_slist[1]; +}; +#define GROUP_FILTER_SIZE(numsrc) \ + (sizeof(struct group_filter) - sizeof(struct sockaddr_storage) \ + + (numsrc) * sizeof(struct sockaddr_storage)) +#endif + struct in_pktinfo { int ipi_ifindex; -- 1.8.3.3