• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (C) 2017 The Android Open Source Project
2 // SPDX-License-Identifier: BSD-2-Clause
3 
4 #include <netinet/in.h>
5 
6 #include "header_checks.h"
7 
netinet_in_h()8 static void netinet_in_h() {
9   TYPE(in_port_t);
10   TYPE(in_addr_t);
11   TYPE(sa_family_t);
12   TYPE(uint8_t);
13   TYPE(uint32_t);
14 
15   TYPE(struct in_addr);
16   STRUCT_MEMBER(struct in_addr, in_addr_t, s_addr);
17 
18   TYPE(struct sockaddr_in);
19   STRUCT_MEMBER(struct sockaddr_in, sa_family_t, sin_family);
20   STRUCT_MEMBER(struct sockaddr_in, in_port_t, sin_port);
21   STRUCT_MEMBER(struct sockaddr_in, struct in_addr, sin_addr);
22 
23   TYPE(struct in6_addr);
24   STRUCT_MEMBER_ARRAY(struct in6_addr, uint8_t/*[]*/, s6_addr);
25 
26   TYPE(struct sockaddr_in6);
27   STRUCT_MEMBER(struct sockaddr_in6, sa_family_t, sin6_family);
28   STRUCT_MEMBER(struct sockaddr_in6, in_port_t, sin6_port);
29   STRUCT_MEMBER(struct sockaddr_in6, uint32_t, sin6_flowinfo);
30   STRUCT_MEMBER(struct sockaddr_in6, struct in6_addr, sin6_addr);
31   STRUCT_MEMBER(struct sockaddr_in6, uint32_t, sin6_scope_id);
32 
33   struct in6_addr any_global = in6addr_any;
34   struct in6_addr any_macro = IN6ADDR_ANY_INIT;
35   struct in6_addr loop_global = in6addr_loopback;
36   struct in6_addr loop_macro = IN6ADDR_LOOPBACK_INIT;
37 
38   TYPE(struct ipv6_mreq);
39   STRUCT_MEMBER(struct ipv6_mreq, struct in6_addr, ipv6mr_multiaddr);
40 #if defined(__BIONIC__) // Currently comes from uapi header.
41   STRUCT_MEMBER(struct ipv6_mreq, int, ipv6mr_interface);
42 #else
43   STRUCT_MEMBER(struct ipv6_mreq, unsigned, ipv6mr_interface);
44 #endif
45 
46   MACRO(IPPROTO_IP);
47   MACRO(IPPROTO_IPV6);
48   MACRO(IPPROTO_ICMP);
49   MACRO(IPPROTO_RAW);
50   MACRO(IPPROTO_TCP);
51   MACRO(IPPROTO_UDP);
52 
53   MACRO(INADDR_ANY);
54   MACRO(INADDR_BROADCAST);
55 
56   MACRO_VALUE(INET_ADDRSTRLEN, 16);
57 
58   FUNCTION(htonl, uint32_t (*f)(uint32_t));
59   FUNCTION(htons, uint16_t (*f)(uint16_t));
60   FUNCTION(ntohl, uint32_t (*f)(uint32_t));
61   FUNCTION(ntohs, uint16_t (*f)(uint16_t));
62 
63   MACRO_VALUE(INET6_ADDRSTRLEN, 46);
64 
65   MACRO(IPV6_JOIN_GROUP);
66   MACRO(IPV6_LEAVE_GROUP);
67   MACRO(IPV6_MULTICAST_HOPS);
68   MACRO(IPV6_MULTICAST_IF);
69   MACRO(IPV6_MULTICAST_LOOP);
70   MACRO(IPV6_UNICAST_HOPS);
71   MACRO(IPV6_V6ONLY);
72 
73 #if !defined(IN6_IS_ADDR_UNSPECIFIED)
74 #error IN6_IS_ADDR_UNSPECIFIED
75 #endif
76 #if !defined(IN6_IS_ADDR_LOOPBACK)
77 #error IN6_IS_ADDR_LOOPBACK
78 #endif
79 #if !defined(IN6_IS_ADDR_MULTICAST)
80 #error IN6_IS_ADDR_MULTICAST
81 #endif
82 #if !defined(IN6_IS_ADDR_LINKLOCAL)
83 #error IN6_IS_ADDR_LINKLOCAL
84 #endif
85 #if !defined(IN6_IS_ADDR_SITELOCAL)
86 #error IN6_IS_ADDR_SITELOCAL
87 #endif
88 #if !defined(IN6_IS_ADDR_V4MAPPED)
89 #error IN6_IS_ADDR_V4MAPPED
90 #endif
91 #if !defined(IN6_IS_ADDR_V4COMPAT)
92 #error IN6_IS_ADDR_V4COMPAT
93 #endif
94 #if !defined(IN6_IS_ADDR_MC_NODELOCAL)
95 #error IN6_IS_ADDR_MC_NODELOCAL
96 #endif
97 #if !defined(IN6_IS_ADDR_MC_LINKLOCAL)
98 #error IN6_IS_ADDR_MC_LINKLOCAL
99 #endif
100 #if !defined(IN6_IS_ADDR_MC_SITELOCAL)
101 #error IN6_IS_ADDR_MC_SITELOCAL
102 #endif
103 #if !defined(IN6_IS_ADDR_MC_ORGLOCAL)
104 #error IN6_IS_ADDR_MC_ORGLOCAL
105 #endif
106 #if !defined(IN6_IS_ADDR_MC_GLOBAL)
107 #error IN6_IS_ADDR_MC_GLOBAL
108 #endif
109 }
110