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