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