xref: /xnu-8796.101.5/bsd/netinet/in_private.h (revision aca3beaa3dfbd42498b42c5e5ce20a938e6554e5)
1*aca3beaaSApple OSS Distributions /*
2*aca3beaaSApple OSS Distributions  * Copyright (c) 2000-2018 Apple Inc. All rights reserved.
3*aca3beaaSApple OSS Distributions  *
4*aca3beaaSApple OSS Distributions  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5*aca3beaaSApple OSS Distributions  *
6*aca3beaaSApple OSS Distributions  * This file contains Original Code and/or Modifications of Original Code
7*aca3beaaSApple OSS Distributions  * as defined in and that are subject to the Apple Public Source License
8*aca3beaaSApple OSS Distributions  * Version 2.0 (the 'License'). You may not use this file except in
9*aca3beaaSApple OSS Distributions  * compliance with the License. The rights granted to you under the License
10*aca3beaaSApple OSS Distributions  * may not be used to create, or enable the creation or redistribution of,
11*aca3beaaSApple OSS Distributions  * unlawful or unlicensed copies of an Apple operating system, or to
12*aca3beaaSApple OSS Distributions  * circumvent, violate, or enable the circumvention or violation of, any
13*aca3beaaSApple OSS Distributions  * terms of an Apple operating system software license agreement.
14*aca3beaaSApple OSS Distributions  *
15*aca3beaaSApple OSS Distributions  * Please obtain a copy of the License at
16*aca3beaaSApple OSS Distributions  * http://www.opensource.apple.com/apsl/ and read it before using this file.
17*aca3beaaSApple OSS Distributions  *
18*aca3beaaSApple OSS Distributions  * The Original Code and all software distributed under the License are
19*aca3beaaSApple OSS Distributions  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20*aca3beaaSApple OSS Distributions  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21*aca3beaaSApple OSS Distributions  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22*aca3beaaSApple OSS Distributions  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23*aca3beaaSApple OSS Distributions  * Please see the License for the specific language governing rights and
24*aca3beaaSApple OSS Distributions  * limitations under the License.
25*aca3beaaSApple OSS Distributions  *
26*aca3beaaSApple OSS Distributions  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27*aca3beaaSApple OSS Distributions  */
28*aca3beaaSApple OSS Distributions /*
29*aca3beaaSApple OSS Distributions  * Copyright (c) 1982, 1986, 1990, 1993
30*aca3beaaSApple OSS Distributions  *	The Regents of the University of California.  All rights reserved.
31*aca3beaaSApple OSS Distributions  *
32*aca3beaaSApple OSS Distributions  * Redistribution and use in source and binary forms, with or without
33*aca3beaaSApple OSS Distributions  * modification, are permitted provided that the following conditions
34*aca3beaaSApple OSS Distributions  * are met:
35*aca3beaaSApple OSS Distributions  * 1. Redistributions of source code must retain the above copyright
36*aca3beaaSApple OSS Distributions  *    notice, this list of conditions and the following disclaimer.
37*aca3beaaSApple OSS Distributions  * 2. Redistributions in binary form must reproduce the above copyright
38*aca3beaaSApple OSS Distributions  *    notice, this list of conditions and the following disclaimer in the
39*aca3beaaSApple OSS Distributions  *    documentation and/or other materials provided with the distribution.
40*aca3beaaSApple OSS Distributions  * 3. All advertising materials mentioning features or use of this software
41*aca3beaaSApple OSS Distributions  *    must display the following acknowledgement:
42*aca3beaaSApple OSS Distributions  *	This product includes software developed by the University of
43*aca3beaaSApple OSS Distributions  *	California, Berkeley and its contributors.
44*aca3beaaSApple OSS Distributions  * 4. Neither the name of the University nor the names of its contributors
45*aca3beaaSApple OSS Distributions  *    may be used to endorse or promote products derived from this software
46*aca3beaaSApple OSS Distributions  *    without specific prior written permission.
47*aca3beaaSApple OSS Distributions  *
48*aca3beaaSApple OSS Distributions  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
49*aca3beaaSApple OSS Distributions  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
50*aca3beaaSApple OSS Distributions  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
51*aca3beaaSApple OSS Distributions  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
52*aca3beaaSApple OSS Distributions  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
53*aca3beaaSApple OSS Distributions  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
54*aca3beaaSApple OSS Distributions  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
55*aca3beaaSApple OSS Distributions  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
56*aca3beaaSApple OSS Distributions  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
57*aca3beaaSApple OSS Distributions  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
58*aca3beaaSApple OSS Distributions  * SUCH DAMAGE.
59*aca3beaaSApple OSS Distributions  *
60*aca3beaaSApple OSS Distributions  *	@(#)in.h	8.3 (Berkeley) 1/3/94
61*aca3beaaSApple OSS Distributions  * $FreeBSD: src/sys/netinet/in.h,v 1.48.2.2 2001/04/21 14:53:06 ume Exp $
62*aca3beaaSApple OSS Distributions  */
63*aca3beaaSApple OSS Distributions 
64*aca3beaaSApple OSS Distributions #ifndef _NETINET_IN_PRIVATE_H_
65*aca3beaaSApple OSS Distributions #define _NETINET_IN_PRIVATE_H_
66*aca3beaaSApple OSS Distributions 
67*aca3beaaSApple OSS Distributions #include <netinet/in.h>
68*aca3beaaSApple OSS Distributions #include <sys/socket.h>
69*aca3beaaSApple OSS Distributions #include <sys/types.h>
70*aca3beaaSApple OSS Distributions 
71*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
72*aca3beaaSApple OSS Distributions /* 253-254: Experimentation and testing; 255: Reserved (RFC3692) */
73*aca3beaaSApple OSS Distributions /* BSD Private, local use, namespace incursion */
74*aca3beaaSApple OSS Distributions #define IPPROTO_QUIC            253             /* QUIC protocol (Over UDP) */
75*aca3beaaSApple OSS Distributions 
76*aca3beaaSApple OSS Distributions #ifdef __APPLE__
77*aca3beaaSApple OSS Distributions #define IN_SHARED_ADDRESS_SPACE(i) ((((u_int32_t)(i)) & (u_int32_t)0xffc00000) \
78*aca3beaaSApple OSS Distributions 	                        == (u_int32_t)0x64400000)
79*aca3beaaSApple OSS Distributions 
80*aca3beaaSApple OSS Distributions #define IN_DS_LITE(i) ((((u_int32_t)(i)) & (u_int32_t)0xfffffff8) == (u_int32_t)0xc0000000)
81*aca3beaaSApple OSS Distributions 
82*aca3beaaSApple OSS Distributions #define IN_6TO4_RELAY_ANYCAST(i) ((((u_int32_t)(i)) & (u_int32_t)IN_CLASSC_NET) == (u_int32_t)0xc0586300)
83*aca3beaaSApple OSS Distributions #endif /* __APPLE__ */
84*aca3beaaSApple OSS Distributions #endif  /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
85*aca3beaaSApple OSS Distributions 
86*aca3beaaSApple OSS Distributions /*
87*aca3beaaSApple OSS Distributions  * sockaddr_in with scope ID field; this is used internally to keep
88*aca3beaaSApple OSS Distributions  * track of scoped route entries in the routing table.  The fact that
89*aca3beaaSApple OSS Distributions  * such a value is embedded in the structure is an artifact of the
90*aca3beaaSApple OSS Distributions  * current implementation which could change in future.
91*aca3beaaSApple OSS Distributions  */
92*aca3beaaSApple OSS Distributions struct sockaddr_inifscope {
93*aca3beaaSApple OSS Distributions 	__uint8_t       sin_len;
94*aca3beaaSApple OSS Distributions 	sa_family_t     sin_family;
95*aca3beaaSApple OSS Distributions 	in_port_t       sin_port;
96*aca3beaaSApple OSS Distributions 	struct  in_addr sin_addr;
97*aca3beaaSApple OSS Distributions 	/*
98*aca3beaaSApple OSS Distributions 	 * To avoid possible conflict with an overlaid sockaddr_inarp
99*aca3beaaSApple OSS Distributions 	 * having sin_other set to SIN_PROXY, we use the first 4-bytes
100*aca3beaaSApple OSS Distributions 	 * of sin_zero since sin_srcaddr is one of the unused fields
101*aca3beaaSApple OSS Distributions 	 * in sockaddr_inarp.
102*aca3beaaSApple OSS Distributions 	 */
103*aca3beaaSApple OSS Distributions 	union {
104*aca3beaaSApple OSS Distributions 		char    sin_zero[8];
105*aca3beaaSApple OSS Distributions 		struct {
106*aca3beaaSApple OSS Distributions 			__uint32_t      ifscope;
107*aca3beaaSApple OSS Distributions 		} _in_index;
108*aca3beaaSApple OSS Distributions 	} un;
109*aca3beaaSApple OSS Distributions #define sin_scope_id    un._in_index.ifscope
110*aca3beaaSApple OSS Distributions };
111*aca3beaaSApple OSS Distributions 
112*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
113*aca3beaaSApple OSS Distributions 
114*aca3beaaSApple OSS Distributions /*
115*aca3beaaSApple OSS Distributions  * Options for use with [gs]etsockopt at the IP level.
116*aca3beaaSApple OSS Distributions  * First word of comment is data type; bool is stored in int.
117*aca3beaaSApple OSS Distributions  */
118*aca3beaaSApple OSS Distributions #define IP_NO_IFT_CELLULAR      6969 /* for internal use only */
119*aca3beaaSApple OSS Distributions #define IP_NO_IFT_PDP           IP_NO_IFT_CELLULAR /* deprecated */
120*aca3beaaSApple OSS Distributions #define IP_OUT_IF               9696 /* for internal use only */
121*aca3beaaSApple OSS Distributions 
122*aca3beaaSApple OSS Distributions #ifdef BSD_KERNEL_PRIVATE
123*aca3beaaSApple OSS Distributions #define CTL_IPPROTO_NAMES { \
124*aca3beaaSApple OSS Distributions     { "ip", CTLTYPE_NODE }, \
125*aca3beaaSApple OSS Distributions     { "icmp", CTLTYPE_NODE }, \
126*aca3beaaSApple OSS Distributions     { "igmp", CTLTYPE_NODE }, \
127*aca3beaaSApple OSS Distributions     { "ggp", CTLTYPE_NODE }, \
128*aca3beaaSApple OSS Distributions     { 0, 0 }, \
129*aca3beaaSApple OSS Distributions     { 0, 0 }, \
130*aca3beaaSApple OSS Distributions     { "tcp", CTLTYPE_NODE }, \
131*aca3beaaSApple OSS Distributions     { 0, 0 }, \
132*aca3beaaSApple OSS Distributions     { "egp", CTLTYPE_NODE }, \
133*aca3beaaSApple OSS Distributions     { 0, 0 }, \
134*aca3beaaSApple OSS Distributions     { 0, 0 }, \
135*aca3beaaSApple OSS Distributions     { 0, 0 }, \
136*aca3beaaSApple OSS Distributions     { "pup", CTLTYPE_NODE }, \
137*aca3beaaSApple OSS Distributions     { 0, 0 }, \
138*aca3beaaSApple OSS Distributions     { 0, 0 }, \
139*aca3beaaSApple OSS Distributions     { 0, 0 }, \
140*aca3beaaSApple OSS Distributions     { 0, 0 }, \
141*aca3beaaSApple OSS Distributions     { "udp", CTLTYPE_NODE }, \
142*aca3beaaSApple OSS Distributions     { 0, 0 }, \
143*aca3beaaSApple OSS Distributions     { 0, 0 }, \
144*aca3beaaSApple OSS Distributions     { 0, 0 }, \
145*aca3beaaSApple OSS Distributions     { 0, 0 }, \
146*aca3beaaSApple OSS Distributions     { "idp", CTLTYPE_NODE }, \
147*aca3beaaSApple OSS Distributions     { 0, 0 }, \
148*aca3beaaSApple OSS Distributions     { 0, 0 }, \
149*aca3beaaSApple OSS Distributions     { 0, 0 }, \
150*aca3beaaSApple OSS Distributions     { 0, 0 }, \
151*aca3beaaSApple OSS Distributions     { 0, 0 }, \
152*aca3beaaSApple OSS Distributions     { 0, 0 }, \
153*aca3beaaSApple OSS Distributions     { 0, 0 }, \
154*aca3beaaSApple OSS Distributions     { 0, 0 }, \
155*aca3beaaSApple OSS Distributions     { 0, 0 }, \
156*aca3beaaSApple OSS Distributions     { 0, 0 }, \
157*aca3beaaSApple OSS Distributions     { 0, 0 }, \
158*aca3beaaSApple OSS Distributions     { 0, 0 }, \
159*aca3beaaSApple OSS Distributions     { 0, 0 }, \
160*aca3beaaSApple OSS Distributions     { 0, 0 }, \
161*aca3beaaSApple OSS Distributions     { 0, 0 }, \
162*aca3beaaSApple OSS Distributions     { 0, 0 }, \
163*aca3beaaSApple OSS Distributions     { 0, 0 }, \
164*aca3beaaSApple OSS Distributions     { 0, 0 }, \
165*aca3beaaSApple OSS Distributions     { 0, 0 }, \
166*aca3beaaSApple OSS Distributions     { 0, 0 }, \
167*aca3beaaSApple OSS Distributions     { 0, 0 }, \
168*aca3beaaSApple OSS Distributions     { 0, 0 }, \
169*aca3beaaSApple OSS Distributions     { 0, 0 }, \
170*aca3beaaSApple OSS Distributions     { 0, 0 }, \
171*aca3beaaSApple OSS Distributions     { 0, 0 }, \
172*aca3beaaSApple OSS Distributions     { 0, 0 }, \
173*aca3beaaSApple OSS Distributions     { 0, 0 }, \
174*aca3beaaSApple OSS Distributions     { 0, 0 }, \
175*aca3beaaSApple OSS Distributions     { "ipsec", CTLTYPE_NODE }, \
176*aca3beaaSApple OSS Distributions }
177*aca3beaaSApple OSS Distributions 
178*aca3beaaSApple OSS Distributions #define IPCTL_NAMES { \
179*aca3beaaSApple OSS Distributions     { 0, 0 }, \
180*aca3beaaSApple OSS Distributions     { "forwarding", CTLTYPE_INT }, \
181*aca3beaaSApple OSS Distributions     { "redirect", CTLTYPE_INT }, \
182*aca3beaaSApple OSS Distributions     { "ttl", CTLTYPE_INT }, \
183*aca3beaaSApple OSS Distributions     { "mtu", CTLTYPE_INT }, \
184*aca3beaaSApple OSS Distributions     { "rtexpire", CTLTYPE_INT }, \
185*aca3beaaSApple OSS Distributions     { "rtminexpire", CTLTYPE_INT }, \
186*aca3beaaSApple OSS Distributions     { "rtmaxcache", CTLTYPE_INT }, \
187*aca3beaaSApple OSS Distributions     { "sourceroute", CTLTYPE_INT }, \
188*aca3beaaSApple OSS Distributions     { "directed-broadcast", CTLTYPE_INT }, \
189*aca3beaaSApple OSS Distributions     { "intr-queue-maxlen", CTLTYPE_INT }, \
190*aca3beaaSApple OSS Distributions     { "intr-queue-drops", CTLTYPE_INT }, \
191*aca3beaaSApple OSS Distributions     { "stats", CTLTYPE_STRUCT }, \
192*aca3beaaSApple OSS Distributions     { "accept_sourceroute", CTLTYPE_INT }, \
193*aca3beaaSApple OSS Distributions     { "fastforwarding", CTLTYPE_INT }, \
194*aca3beaaSApple OSS Distributions     { "keepfaith", CTLTYPE_INT }, \
195*aca3beaaSApple OSS Distributions     { "gifttl", CTLTYPE_INT }, \
196*aca3beaaSApple OSS Distributions }
197*aca3beaaSApple OSS Distributions #endif /* BSD_KERNEL_PRIVATE */
198*aca3beaaSApple OSS Distributions 
199*aca3beaaSApple OSS Distributions #endif  /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
200*aca3beaaSApple OSS Distributions 
201*aca3beaaSApple OSS Distributions /* INET6 stuff */
202*aca3beaaSApple OSS Distributions #define __KAME_NETINET_IN_PRIVATE_H_INCLUDED_
203*aca3beaaSApple OSS Distributions #include <netinet6/in6_private.h>
204*aca3beaaSApple OSS Distributions #undef __KAME_NETINET_IN_PRIVATE_H_INCLUDED_
205*aca3beaaSApple OSS Distributions 
206*aca3beaaSApple OSS Distributions /*
207*aca3beaaSApple OSS Distributions  * Minimal sized structure to hold an IPv4 or IPv6 socket address
208*aca3beaaSApple OSS Distributions  * as sockaddr_storage can waste memory
209*aca3beaaSApple OSS Distributions  */
210*aca3beaaSApple OSS Distributions 
211*aca3beaaSApple OSS Distributions union sockaddr_in_4_6 {
212*aca3beaaSApple OSS Distributions #if !__has_ptrcheck
213*aca3beaaSApple OSS Distributions 	struct sockaddr             sa;
214*aca3beaaSApple OSS Distributions #endif
215*aca3beaaSApple OSS Distributions 	struct __sockaddr_header    sah;
216*aca3beaaSApple OSS Distributions 	struct sockaddr_in          sin;
217*aca3beaaSApple OSS Distributions 	struct sockaddr_in6         sin6;
218*aca3beaaSApple OSS Distributions };
219*aca3beaaSApple OSS Distributions #define CLAT46_HDR_EXPANSION_OVERHD     (sizeof(struct ip6_hdr) - sizeof(struct ip))
220*aca3beaaSApple OSS Distributions 
221*aca3beaaSApple OSS Distributions /*
222*aca3beaaSApple OSS Distributions  * Recommended DiffServ Code Point values
223*aca3beaaSApple OSS Distributions  */
224*aca3beaaSApple OSS Distributions 
225*aca3beaaSApple OSS Distributions #define _DSCP_DF        0       /* RFC 2474 */
226*aca3beaaSApple OSS Distributions 
227*aca3beaaSApple OSS Distributions #define _DSCP_CS0       0       /* RFC 2474 */
228*aca3beaaSApple OSS Distributions #define _DSCP_CS1       8       /* RFC 2474 */
229*aca3beaaSApple OSS Distributions #define _DSCP_CS2       16      /* RFC 2474 */
230*aca3beaaSApple OSS Distributions #define _DSCP_CS3       24      /* RFC 2474 */
231*aca3beaaSApple OSS Distributions #define _DSCP_CS4       32      /* RFC 2474 */
232*aca3beaaSApple OSS Distributions #define _DSCP_CS5       40      /* RFC 2474 */
233*aca3beaaSApple OSS Distributions #define _DSCP_CS6       48      /* RFC 2474 */
234*aca3beaaSApple OSS Distributions #define _DSCP_CS7       56      /* RFC 2474 */
235*aca3beaaSApple OSS Distributions 
236*aca3beaaSApple OSS Distributions #define _DSCP_EF        46      /* RFC 2474 */
237*aca3beaaSApple OSS Distributions #define _DSCP_VA        44      /* RFC 5865 */
238*aca3beaaSApple OSS Distributions 
239*aca3beaaSApple OSS Distributions #define _DSCP_AF11      10      /* RFC 2597 */
240*aca3beaaSApple OSS Distributions #define _DSCP_AF12      12      /* RFC 2597 */
241*aca3beaaSApple OSS Distributions #define _DSCP_AF13      14      /* RFC 2597 */
242*aca3beaaSApple OSS Distributions #define _DSCP_AF21      18      /* RFC 2597 */
243*aca3beaaSApple OSS Distributions #define _DSCP_AF22      20      /* RFC 2597 */
244*aca3beaaSApple OSS Distributions #define _DSCP_AF23      22      /* RFC 2597 */
245*aca3beaaSApple OSS Distributions #define _DSCP_AF31      26      /* RFC 2597 */
246*aca3beaaSApple OSS Distributions #define _DSCP_AF32      28      /* RFC 2597 */
247*aca3beaaSApple OSS Distributions #define _DSCP_AF33      30      /* RFC 2597 */
248*aca3beaaSApple OSS Distributions #define _DSCP_AF41      34      /* RFC 2597 */
249*aca3beaaSApple OSS Distributions #define _DSCP_AF42      36      /* RFC 2597 */
250*aca3beaaSApple OSS Distributions #define _DSCP_AF43      38      /* RFC 2597 */
251*aca3beaaSApple OSS Distributions 
252*aca3beaaSApple OSS Distributions #define _DSCP_52        52      /* Wi-Fi WMM Certification: Sigma */
253*aca3beaaSApple OSS Distributions 
254*aca3beaaSApple OSS Distributions #define _MAX_DSCP       63      /* coded on 6 bits */
255*aca3beaaSApple OSS Distributions 
256*aca3beaaSApple OSS Distributions #ifndef XNU_PLATFORM_DriverKit
257*aca3beaaSApple OSS Distributions #ifdef KERNEL
258*aca3beaaSApple OSS Distributions #ifdef BSD_KERNEL_PRIVATE
259*aca3beaaSApple OSS Distributions #include <mach/boolean.h>
260*aca3beaaSApple OSS Distributions 
261*aca3beaaSApple OSS Distributions struct ip;
262*aca3beaaSApple OSS Distributions struct ifnet;
263*aca3beaaSApple OSS Distributions struct mbuf;
264*aca3beaaSApple OSS Distributions 
265*aca3beaaSApple OSS Distributions extern boolean_t in_broadcast(struct in_addr, struct ifnet *);
266*aca3beaaSApple OSS Distributions extern boolean_t in_canforward(struct in_addr);
267*aca3beaaSApple OSS Distributions extern u_int32_t in_netof(struct in_addr);
268*aca3beaaSApple OSS Distributions 
269*aca3beaaSApple OSS Distributions extern uint32_t os_cpu_in_cksum_mbuf(struct mbuf *m, int len, int off,
270*aca3beaaSApple OSS Distributions     uint32_t initial_sum);
271*aca3beaaSApple OSS Distributions 
272*aca3beaaSApple OSS Distributions extern uint16_t inet_cksum(struct mbuf *, uint32_t, uint32_t, uint32_t);
273*aca3beaaSApple OSS Distributions extern uint16_t inet_cksum_buffer(const void *__sized_by(__len), uint32_t, uint32_t, uint32_t __len);
274*aca3beaaSApple OSS Distributions extern uint16_t in_addword(uint16_t, uint16_t);
275*aca3beaaSApple OSS Distributions extern uint16_t in_pseudo(uint32_t, uint32_t, uint32_t);
276*aca3beaaSApple OSS Distributions extern uint16_t in_pseudo64(uint64_t, uint64_t, uint64_t);
277*aca3beaaSApple OSS Distributions extern uint16_t in_cksum_hdr_opt(const struct ip *);
278*aca3beaaSApple OSS Distributions extern uint16_t ip_cksum_hdr_dir(struct mbuf *, uint32_t, int);
279*aca3beaaSApple OSS Distributions extern uint16_t ip_cksum_hdr_dir_buffer(const void *__sized_by(__len), uint32_t, uint32_t __len, int);
280*aca3beaaSApple OSS Distributions extern uint32_t in_finalize_cksum(struct mbuf *, uint32_t, uint32_t);
281*aca3beaaSApple OSS Distributions extern uint16_t b_sum16(const void *__sized_by(len)buf, int len);
282*aca3beaaSApple OSS Distributions #if DEBUG || DEVELOPMENT
283*aca3beaaSApple OSS Distributions extern uint32_t in_cksum_mbuf_ref(struct mbuf *, int, int, uint32_t);
284*aca3beaaSApple OSS Distributions #endif /* DEBUG || DEVELOPMENT */
285*aca3beaaSApple OSS Distributions 
286*aca3beaaSApple OSS Distributions extern int in_getconninfo(struct socket *, sae_connid_t, uint32_t *,
287*aca3beaaSApple OSS Distributions     uint32_t *, int32_t *, user_addr_t, socklen_t *, user_addr_t, socklen_t *,
288*aca3beaaSApple OSS Distributions     uint32_t *, user_addr_t, uint32_t *);
289*aca3beaaSApple OSS Distributions extern struct in_ifaddr * inifa_ifpwithflag(struct ifnet *, uint32_t);
290*aca3beaaSApple OSS Distributions extern struct in_ifaddr * inifa_ifpclatv4(struct ifnet *);
291*aca3beaaSApple OSS Distributions 
292*aca3beaaSApple OSS Distributions #define in_cksum(_m, _l)                        \
293*aca3beaaSApple OSS Distributions     inet_cksum(_m, 0, 0, _l)
294*aca3beaaSApple OSS Distributions #define in_cksum_buffer(_b, _l)                 \
295*aca3beaaSApple OSS Distributions     inet_cksum_buffer(_b, 0, 0, _l)
296*aca3beaaSApple OSS Distributions #define ip_cksum_hdr_in(_m, _l)                 \
297*aca3beaaSApple OSS Distributions     ip_cksum_hdr_dir(_m, _l, 0)
298*aca3beaaSApple OSS Distributions #define ip_cksum_hdr_out(_m, _l)                \
299*aca3beaaSApple OSS Distributions     ip_cksum_hdr_dir(_m, _l, 1)
300*aca3beaaSApple OSS Distributions 
301*aca3beaaSApple OSS Distributions #define in_cksum_hdr(_ip)                       \
302*aca3beaaSApple OSS Distributions     (~b_sum16(_ip, sizeof (struct ip)) & 0xffff)
303*aca3beaaSApple OSS Distributions 
304*aca3beaaSApple OSS Distributions #define in_cksum_offset(_m, _o)         \
305*aca3beaaSApple OSS Distributions     ((void) in_finalize_cksum(_m, _o, CSUM_DELAY_IP))
306*aca3beaaSApple OSS Distributions #define in_delayed_cksum(_m)            \
307*aca3beaaSApple OSS Distributions     ((void) in_finalize_cksum(_m, 0, CSUM_DELAY_DATA))
308*aca3beaaSApple OSS Distributions #define in_delayed_cksum_offset(_m, _o) \
309*aca3beaaSApple OSS Distributions     ((void) in_finalize_cksum(_m, _o, CSUM_DELAY_DATA))
310*aca3beaaSApple OSS Distributions 
311*aca3beaaSApple OSS Distributions #define in_hosteq(s, t) ((s).s_addr == (t).s_addr)
312*aca3beaaSApple OSS Distributions #define in_nullhost(x)  ((x).s_addr == INADDR_ANY)
313*aca3beaaSApple OSS Distributions #define in_allhosts(x)  ((x).s_addr == htonl(INADDR_ALLHOSTS_GROUP))
314*aca3beaaSApple OSS Distributions 
315*aca3beaaSApple OSS Distributions #define SIN(s)          ((struct sockaddr_in *)(void *)s)
316*aca3beaaSApple OSS Distributions #define satosin(sa)     SIN(sa)
317*aca3beaaSApple OSS Distributions #define sintosa(sin)    ((struct sockaddr *)(void *)(sin))
318*aca3beaaSApple OSS Distributions #define SINIFSCOPE(s)   ((struct sockaddr_inifscope *)(void *)(s))
319*aca3beaaSApple OSS Distributions 
320*aca3beaaSApple OSS Distributions #define IPTOS_UNSPEC                    (-1)    /* TOS byte not set */
321*aca3beaaSApple OSS Distributions #define IPTOS_MASK                      0xFF    /* TOS byte mask */
322*aca3beaaSApple OSS Distributions #endif /* BSD_KERNEL_PRIVATE */
323*aca3beaaSApple OSS Distributions 
324*aca3beaaSApple OSS Distributions #ifdef KERNEL_PRIVATE
325*aca3beaaSApple OSS Distributions /* exported for ApplicationFirewall */
326*aca3beaaSApple OSS Distributions extern int in_localaddr(struct in_addr);
327*aca3beaaSApple OSS Distributions extern int inaddr_local(struct in_addr);
328*aca3beaaSApple OSS Distributions 
329*aca3beaaSApple OSS Distributions extern char     *inet_ntoa(struct in_addr);
330*aca3beaaSApple OSS Distributions extern char     *inet_ntoa_r(struct in_addr ina, char *buf,
331*aca3beaaSApple OSS Distributions     size_t buflen);
332*aca3beaaSApple OSS Distributions extern int      inet_pton(int af, const char *, void *);
333*aca3beaaSApple OSS Distributions #endif /* KERNEL_PRIVATE */
334*aca3beaaSApple OSS Distributions 
335*aca3beaaSApple OSS Distributions #endif /* KERNEL */
336*aca3beaaSApple OSS Distributions #endif /* XNU_PLATFORM_DriverKit */
337*aca3beaaSApple OSS Distributions 
338*aca3beaaSApple OSS Distributions #endif /* _NETINET_IN_PRIVATE_H_ */
339