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