1 /* 2 * Copyright (c) 2023 Apple Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28 /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */ 29 /*- 30 * Copyright (c) 1982, 1986, 1990, 1993, 1994 31 * The Regents of the University of California. All rights reserved. 32 * 33 * Redistribution and use in source and binary forms, with or without 34 * modification, are permitted provided that the following conditions 35 * are met: 36 * 1. Redistributions of source code must retain the above copyright 37 * notice, this list of conditions and the following disclaimer. 38 * 2. Redistributions in binary form must reproduce the above copyright 39 * notice, this list of conditions and the following disclaimer in the 40 * documentation and/or other materials provided with the distribution. 41 * 3. All advertising materials mentioning features or use of this software 42 * must display the following acknowledgement: 43 * This product includes software developed by the University of 44 * California, Berkeley and its contributors. 45 * 4. Neither the name of the University nor the names of its contributors 46 * may be used to endorse or promote products derived from this software 47 * without specific prior written permission. 48 * 49 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 50 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 51 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 52 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 53 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 54 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 55 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 56 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 57 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 58 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 59 * SUCH DAMAGE. 60 * 61 * @(#)sockio.h 8.1 (Berkeley) 3/28/94 62 */ 63 64 #ifndef _SYS_SOCKIO_PRIVATE_H_ 65 #define _SYS_SOCKIO_PRIVATE_H_ 66 67 #ifndef KERNEL_PRIVATE 68 #include <net/if.h> 69 #include <net/if_private.h> 70 #include <net/network_agent.h> 71 #endif 72 #include <sys/ioccom.h> 73 #ifndef KERNEL_PRIVATE 74 #include <sys/socket_private.h> 75 #endif 76 77 /* 78 * OSIOCGIF* ioctls are deprecated; they are kept for binary compatibility. 79 */ 80 #ifdef KERNEL_PRIVATE 81 #define OSIOCGIFADDR _IOWR('i', 13, struct ifreq) /* deprecated */ 82 #define OSIOCGIFDSTADDR _IOWR('i', 15, struct ifreq) /* deprecated */ 83 #define OSIOCGIFBRDADDR _IOWR('i', 18, struct ifreq) /* deprecated */ 84 #define OSIOCGIFCONF _IOWR('i', 20, struct ifconf) /* deprecated */ 85 #define OSIOCGIFCONF32 _IOWR('i', 20, struct ifconf32) /* deprecated */ 86 #define OSIOCGIFCONF64 _IOWR('i', 20, struct ifconf64) /* deprecated */ 87 #define OSIOCGIFNETMASK _IOWR('i', 21, struct ifreq) /* deprecated */ 88 89 #define SIOCGIFCONF32 _IOWR('i', 36, struct ifconf32) /* get ifnet list */ 90 #define SIOCGIFCONF64 _IOWR('i', 36, struct ifconf64) /* get ifnet list */ 91 92 /* 93 * The command SIOCGIFMEDIA does not allow a process to access the extended 94 * media subtype and extended subtype values are returned as IFM_OTHER. 95 */ 96 #define SIOCGIFMEDIA32 _IOWR('i', 56, struct ifmediareq32) /* get compatible net media (32-bit) */ 97 #define SIOCGIFMEDIA64 _IOWR('i', 56, struct ifmediareq64) /* get compatible net media (64-bit) */ 98 99 /* 100 * The command SIOCGIFXMEDIA is meant to be used by processes only to be able 101 * to access the extended media subtypes with the extended IFM_TMASK. 102 * 103 * An ifnet must not implement SIOCGIFXMEDIA as it gets the extended 104 * media subtypes by simply compiling with <net/if_media.h> 105 */ 106 #define SIOCGIFXMEDIA32 _IOWR('i', 72, struct ifmediareq32) /* get net extended media */ 107 #define SIOCGIFXMEDIA64 _IOWR('i', 72, struct ifmediareq64) /* get net extended media (64-bit) */ 108 #endif /* KERNEL_PRIVATE */ 109 110 /* 111 * temporary control calls to attach/detach IP to/from an ethernet interface 112 */ 113 #define SIOCPROTOATTACH _IOWR('i', 80, struct ifreq) /* attach proto to interface */ 114 #define SIOCPROTODETACH _IOWR('i', 81, struct ifreq) /* detach proto from interface */ 115 116 #define SIOCSATTACHPROTONULL _IOWR('i', 94, struct ifreq) /* attach/detach NULL proto to interface */ 117 118 #ifdef KERNEL_PRIVATE 119 #define SIOCSDRVSPEC32 _IOW('i', 123, struct ifdrv32) /* set driver-specific 120 * parameters */ 121 #define SIOCGDRVSPEC32 _IOWR('i', 123, struct ifdrv32) /* get driver-specific 122 * parameters */ 123 #define SIOCSDRVSPEC64 _IOW('i', 123, struct ifdrv64) /* set driver-specific 124 * parameters */ 125 #define SIOCGDRVSPEC64 _IOWR('i', 123, struct ifdrv64) /* get driver-specific 126 * parameters */ 127 128 #define SIOCSIFDEVMTU SIOCSIFALTMTU /* deprecated */ 129 130 #define SIOCIFGCLONERS32 _IOWR('i', 129, struct if_clonereq32) /* get cloners */ 131 #define SIOCIFGCLONERS64 _IOWR('i', 129, struct if_clonereq64) /* get cloners */ 132 #endif /* KERNEL_PRIVATE */ 133 134 135 #define SIOCSETOT _IOW('s', 128, int) /* deprecated */ 136 137 #define SIOCGIFGETRTREFCNT _IOWR('i', 137, struct ifreq) /* get interface route refcnt */ 138 #define SIOCGIFLINKQUALITYMETRIC _IOWR('i', 138, struct ifreq) /* get LQM */ 139 #define SIOCSIFOPPORTUNISTIC _IOWR('i', 139, struct ifreq) /* deprecated; use SIOCSIFTHROTTLE */ 140 #define SIOCGIFOPPORTUNISTIC _IOWR('i', 140, struct ifreq) /* deprecated; use SIOCGIFTHROTTLE */ 141 #define SIOCSETROUTERMODE _IOWR('i', 141, struct ifreq) /* enable/disable IPv4 router mode on interface */ 142 #define SIOCGIFEFLAGS _IOWR('i', 142, struct ifreq) /* get extended ifnet flags */ 143 #define SIOCSIFDESC _IOWR('i', 143, struct if_descreq) 144 #define SIOCGIFDESC _IOWR('i', 144, struct if_descreq) 145 #define SIOCSIFLINKPARAMS _IOWR('i', 145, struct if_linkparamsreq) 146 #define SIOCGIFLINKPARAMS _IOWR('i', 146, struct if_linkparamsreq) 147 #define SIOCGIFQUEUESTATS _IOWR('i', 147, struct if_qstatsreq) 148 #define SIOCSIFTHROTTLE _IOWR('i', 148, struct if_throttlereq) 149 #define SIOCGIFTHROTTLE _IOWR('i', 149, struct if_throttlereq) 150 151 #define SIOCGASSOCIDS _IOWR('s', 150, struct so_aidreq) /* get associds */ 152 #define SIOCGCONNIDS _IOWR('s', 151, struct so_cidreq) /* get connids */ 153 #define SIOCGCONNINFO _IOWR('s', 152, struct so_cinforeq) /* get conninfo */ 154 #ifdef BSD_KERNEL_PRIVATE 155 #define SIOCGASSOCIDS32 _IOWR('s', 150, struct so_aidreq32) 156 #define SIOCGASSOCIDS64 _IOWR('s', 150, struct so_aidreq64) 157 #define SIOCGCONNIDS32 _IOWR('s', 151, struct so_cidreq32) 158 #define SIOCGCONNIDS64 _IOWR('s', 151, struct so_cidreq64) 159 #define SIOCGCONNINFO32 _IOWR('s', 152, struct so_cinforeq32) 160 #define SIOCGCONNINFO64 _IOWR('s', 152, struct so_cinforeq64) 161 #endif /* BSD_KERNEL_PRIVATE */ 162 #define SIOCSCONNORDER _IOWR('s', 153, struct so_cordreq) /* set conn order */ 163 #define SIOCGCONNORDER _IOWR('s', 154, struct so_cordreq) /* get conn order */ 164 165 #define SIOCSIFLOG _IOWR('i', 155, struct ifreq) 166 #define SIOCGIFLOG _IOWR('i', 156, struct ifreq) 167 #define SIOCGIFDELEGATE _IOWR('i', 157, struct ifreq) 168 #define SIOCGIFLLADDR _IOWR('i', 158, struct ifreq) /* get link level addr */ 169 #define SIOCGIFTYPE _IOWR('i', 159, struct ifreq) /* get interface type */ 170 #define SIOCGIFEXPENSIVE _IOWR('i', 160, struct ifreq) /* get interface expensive flag */ 171 #define SIOCSIFEXPENSIVE _IOWR('i', 161, struct ifreq) /* mark interface expensive */ 172 #define SIOCGIF2KCL _IOWR('i', 162, struct ifreq) /* interface prefers 2 KB clusters */ 173 #define SIOCSIF2KCL _IOWR('i', 163, struct ifreq) 174 #define SIOCGSTARTDELAY _IOWR('i', 164, struct ifreq) 175 176 #define SIOCAIFAGENTID _IOWR('i', 165, struct if_agentidreq) /* Add netagent id */ 177 #define SIOCDIFAGENTID _IOWR('i', 166, struct if_agentidreq) /* Delete netagent id */ 178 #define SIOCGIFAGENTIDS _IOWR('i', 167, struct if_agentidsreq) /* Get netagent ids */ 179 #define SIOCGIFAGENTDATA _IOWR('i', 168, struct netagent_req) /* Get netagent data */ 180 181 #ifdef BSD_KERNEL_PRIVATE 182 #define SIOCGIFAGENTIDS32 _IOWR('i', 167, struct if_agentidsreq32) 183 #define SIOCGIFAGENTIDS64 _IOWR('i', 167, struct if_agentidsreq64) 184 #define SIOCGIFAGENTDATA32 _IOWR('i', 168, struct netagent_req32) 185 #define SIOCGIFAGENTDATA64 _IOWR('i', 168, struct netagent_req64) 186 #endif /* BSD_KERNEL_PRIVATE */ 187 188 #define SIOCSIFINTERFACESTATE _IOWR('i', 169, struct ifreq) /* set interface state */ 189 #define SIOCGIFINTERFACESTATE _IOWR('i', 170, struct ifreq) /* get interface state */ 190 #define SIOCSIFPROBECONNECTIVITY _IOWR('i', 171, struct ifreq) /* Start/Stop probes to check connectivity */ 191 #define SIOCGIFPROBECONNECTIVITY _IOWR('i', 172, struct ifreq) /* check if connectivity probes are enabled */ 192 193 #define SIOCSIFNETSIGNATURE _IOWR('i', 174, struct if_nsreq) 194 #define SIOCGIFNETSIGNATURE _IOWR('i', 175, struct if_nsreq) 195 196 #define SIOCGECNMODE _IOWR('i', 176, struct ifreq) 197 #define SIOCSECNMODE _IOW('i', 177, struct ifreq) 198 199 #define SIOCSIFORDER _IOWR('i', 178, struct if_order) 200 #define SIOCGIFORDER _IOWR('i', 179, struct if_order) 201 202 #define SIOCSQOSMARKINGMODE _IOWR('i', 180, struct ifreq) 203 #define SIOCSFASTLANECAPABLE SIOCSQOSMARKINGMODE 204 #define SIOCSQOSMARKINGENABLED _IOWR('i', 181, struct ifreq) 205 #define SIOCSFASTLEENABLED SIOCSQOSMARKINGENABLED 206 #define SIOCGQOSMARKINGMODE _IOWR('i', 182, struct ifreq) 207 #define SIOCGQOSMARKINGENABLED _IOWR('i', 183, struct ifreq) 208 209 210 #define SIOCSIFTIMESTAMPENABLE _IOWR('i', 184, struct ifreq) 211 #define SIOCSIFTIMESTAMPDISABLE _IOWR('i', 185, struct ifreq) 212 #define SIOCGIFTIMESTAMPENABLED _IOWR('i', 186, struct ifreq) 213 214 #define SIOCSIFDISABLEOUTPUT _IOWR('i', 187, struct ifreq) 215 216 #define SIOCSIFSUBFAMILY _IOWR('i', 188, struct ifreq) 217 218 #define SIOCGIFAGENTLIST _IOWR('i', 190, struct netagentlist_req) /* Get netagent dump */ 219 220 #ifdef BSD_KERNEL_PRIVATE 221 #define SIOCGIFAGENTLIST32 _IOWR('i', 190, struct netagentlist_req32) 222 #define SIOCGIFAGENTLIST64 _IOWR('i', 190, struct netagentlist_req64) 223 #endif /* BSD_KERNEL_PRIVATE */ 224 225 #define SIOCSIFLOWINTERNET _IOWR('i', 191, struct ifreq) 226 #define SIOCGIFLOWINTERNET _IOWR('i', 192, struct ifreq) 227 228 #define SIOCGIFNAT64PREFIX _IOWR('i', 193, struct if_nat64req) 229 #define SIOCSIFNAT64PREFIX _IOWR('i', 194, struct if_nat64req) 230 #define SIOCGIFNEXUS _IOWR('i', 195, struct if_nexusreq) 231 #define SIOCGIFPROTOLIST _IOWR('i', 196, struct if_protolistreq) /* get list of attached protocols */ 232 #ifdef BSD_KERNEL_PRIVATE 233 #define SIOCGIFPROTOLIST32 _IOWR('i', 196, struct if_protolistreq32) 234 #define SIOCGIFPROTOLIST64 _IOWR('i', 196, struct if_protolistreq64) 235 #endif /* BSD_KERNEL_PRIVATE */ 236 237 #define SIOCGIFTCPKAOMAX _IOWR('i', 198, struct ifreq) /* Max TCP keep alive offload slots */ 238 #define SIOCGIFLOWPOWER _IOWR('i', 199, struct ifreq) /* Low Power Mode */ 239 #define SIOCSIFLOWPOWER _IOWR('i', 200, struct ifreq) /* Low Power Mode */ 240 241 #define SIOCGIFCLAT46ADDR _IOWR('i', 201, struct if_clat46req) 242 243 #define SIOCGIFMPKLOG _IOWR('i', 202, struct ifreq) /* Multi-layer Packet Logging */ 244 #define SIOCSIFMPKLOG _IOWR('i', 203, struct ifreq) /* Multi-layer Packet Logging */ 245 246 #define SIOCGIFCONSTRAINED _IOWR('i', 204, struct ifreq) /* get interface constrained flag */ 247 #define SIOCSIFCONSTRAINED _IOWR('i', 205, struct ifreq) /* mark interface constrained */ 248 249 #define SIOCGIFXFLAGS _IOWR('i', 206, struct ifreq) /* get extended ifnet flags */ 250 251 #define SIOCGIFNOACKPRIO _IOWR('i', 207, struct ifreq) /* get interface no ack prioritization flag */ 252 #define SIOCSIFNOACKPRIO _IOWR('i', 208, struct ifreq) /* mark interface no ack prioritization flagd */ 253 #define SIOCGETROUTERMODE _IOWR('i', 209, struct ifreq) /* get IPv4 router mode state */ 254 255 #define SIOCSIFNETWORKID _IOWR('i', 210, struct if_netidreq) /* set Network Identifier for a given interface */ 256 257 #define SIOCSIFMARKWAKEPKT _IOWR('i', 211, struct ifreq) /* to mark the next input packet with wake flag */ 258 259 #define SIOCSIFESTTHROUGHPUT _IOWR('i', 212, struct ifreq) /* set ifru_estimated_throughput */ 260 #define SIOCSIFRADIODETAILS _IOWR('i', 213, struct ifreq) /* set ifru_radio_details */ 261 262 #define SIOCSIFLINKQUALITYMETRIC _IOWR('i', 214, struct ifreq) /* set LQM */ 263 264 #define SIOCSIFNOTRAFFICSHAPING _IOWR('i', 215, struct ifreq) /* skip dummynet and netem traffic shaping */ 265 #define SIOCGIFNOTRAFFICSHAPING _IOWR('i', 216, struct ifreq) /* skip dummynet and netem traffic shaping */ 266 267 #define SIOCGIFGENERATIONID _IOWR('i', 217, struct ifreq) /* value of generation count at interface creation */ 268 269 #define SIOCGIFULTRACONSTRAINED _IOWR('i', 218, struct ifreq) /* get interface ultra constrained flag */ 270 #define SIOCSIFULTRACONSTRAINED _IOWR('i', 219, struct ifreq) /* mark interface ultra constrained */ 271 272 #define SIOCSIFPEEREGRESSFUNCTIONALTYPE _IOWR('i', 220, struct ifreq) /* set the peer device's egress interface type */ 273 274 #define SIOCSIFDIRECTLINK _IOWR('i', 221, struct ifreq) /* set DIRECTLINK */ 275 276 #define SIOCSIFISVPN _IOWR('i', 223, struct ifreq) /* marks interface to be used as a VPN */ 277 278 #define SIOCSIFDELAYWAKEPKTEVENT _IOW('i', 224, struct ifreq) 279 #define SIOCGIFDELAYWAKEPKTEVENT _IOWR('i', 224, struct ifreq) 280 281 #define SIOCSIFDISABLEINPUT _IOW('i', 225, struct ifreq) 282 #define SIOCGIFDISABLEINPUT _IOWR('i', 225, struct ifreq) 283 284 #endif /* !_SYS_SOCKIO_PRIVATE_H_ */ 285