refactor headers, especially alltypes.h, and improve C++ ABI compat
[musl] / include / netinet / in.h
index cae16c7..d886fc2 100644 (file)
@@ -5,15 +5,13 @@
 extern "C" {
 #endif
 
-#define __NEED_in_addr_t
-#define __NEED_in_port_t
-#define __NEED_sa_family_t
-#define __NEED_struct_in_addr
-#define __NEED_uint8_t
-#define __NEED_uint16_t
-#define __NEED_uint32_t
+#include <features.h>
+#include <inttypes.h>
+#include <sys/socket.h>
 
-#include <bits/alltypes.h>
+typedef uint16_t in_port_t;
+typedef uint32_t in_addr_t;
+struct in_addr { in_addr_t s_addr; };
 
 struct sockaddr_in
 {
@@ -27,10 +25,12 @@ struct in6_addr
 {
        union {
                uint8_t __s6_addr[16];
+               uint16_t __s6_addr16[8];
                uint32_t __s6_addr32[4];
        } __in6_union;
 };
 #define s6_addr __in6_union.__s6_addr
+#define s6_addr16 __in6_union.__s6_addr16
 #define s6_addr32 __in6_union.__s6_addr32
 
 struct sockaddr_in6
@@ -69,6 +69,7 @@ uint32_t ntohl(uint32_t);
 uint16_t ntohs(uint16_t);
 
 #define IPPROTO_IP       0
+#define IPPROTO_HOPOPTS  0
 #define IPPROTO_ICMP     1
 #define IPPROTO_IGMP     2
 #define IPPROTO_IPIP     4
@@ -78,6 +79,7 @@ uint16_t ntohs(uint16_t);
 #define IPPROTO_UDP      17
 #define IPPROTO_IDP      22
 #define IPPROTO_TP       29
+#define IPPROTO_DCCP     33
 #define IPPROTO_IPV6     41
 #define IPPROTO_ROUTING  43
 #define IPPROTO_FRAGMENT 44
@@ -92,7 +94,10 @@ uint16_t ntohs(uint16_t);
 #define IPPROTO_ENCAP    98
 #define IPPROTO_PIM      103
 #define IPPROTO_COMP     108
+#define IPPROTO_SCTP     132
+#define IPPROTO_UDPLITE  136
 #define IPPROTO_RAW      255
+#define IPPROTO_MAX      256
 
 #define IN6_IS_ADDR_UNSPECIFIED(a) \
         (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \
@@ -136,6 +141,11 @@ uint16_t ntohs(uint16_t);
 #define IN6_IS_ADDR_MC_GLOBAL(a) \
         (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0xe))
 
+#define __ARE_4_EQUAL(a,b) \
+       (!( 0[a]-0[b] | 1[a]-1[b] | 2[a]-2[b] | 3[a]-3[b] ))
+#define IN6_ARE_ADDR_EQUAL(a,b) \
+       __ARE_4_EQUAL((const uint32_t *)(a), (const uint32_t *)(b))
+
 #define        IN_CLASSA(a)            ((((in_addr_t)(a)) & 0x80000000) == 0)
 #define        IN_CLASSA_NET           0xff000000
 #define        IN_CLASSA_NSHIFT        24
@@ -191,6 +201,21 @@ uint16_t ntohs(uint16_t);
 #define IP_ADD_SOURCE_MEMBERSHIP  39
 #define IP_DROP_SOURCE_MEMBERSHIP 40
 #define IP_MSFILTER        41
+#define IP_MULTICAST_ALL   49
+#define IP_UNICAST_IF      50
+
+#ifdef _GNU_SOURCE
+#define MCAST_JOIN_GROUP   42
+#define MCAST_BLOCK_SOURCE 43
+#define MCAST_UNBLOCK_SOURCE      44
+#define MCAST_LEAVE_GROUP  45
+#define MCAST_JOIN_SOURCE_GROUP   46
+#define MCAST_LEAVE_SOURCE_GROUP  47
+#define MCAST_MSFILTER     48
+
+#define MCAST_EXCLUDE 0
+#define MCAST_INCLUDE 1
+#endif
 
 #define IP_RECVRETOPTS IP_RETOPTS