1{ 2 This file is part of the Free Pascal run time library. 3 (c) 2000-2003 by Marco van de Voort 4 member of the Free Pascal development team. 5 6 See the file COPYING.FPC, included in this distribution, 7 for details about the copyright. 8 9 OS dependant part of the header. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY;without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14} 15 16Const 17{* 18 * Address families. 19 *} 20 AF_UNSPEC = 0; { unspecified } 21 AF_UNIX = 1; { standardized name for AF_LOCAL } 22 AF_LOCAL = AF_UNIX; { local to host (pipes, portals) } 23 AF_INET = 2; { internetwork: UDP, TCP, etc. } 24 AF_IMPLINK = 3; { arpanet imp addresses } 25 AF_PUP = 4; { pup protocols: e.g. BSP } 26 AF_CHAOS = 5; { mit CHAOS protocols } 27 AF_NETBIOS = 6; { SMB protocols } 28 AF_ISO = 7; { ISO protocols } 29 AF_OSI = AF_ISO; 30 AF_ECMA = 8; { European computer manufacturers } 31 AF_DATAKIT = 9; { datakit protocols } 32 AF_CCITT = 10; { CCITT protocols, X.25 etc } 33 AF_SNA = 11; { IBM SNA } 34 AF_DECnet = 12; { DECnet } 35 AF_DLI = 13; { DEC Direct data link interface } 36 AF_LAT = 14; { LAT } 37 AF_HYLINK = 15; { NSC Hyperchannel } 38 AF_APPLETALK = 16; { Apple Talk } 39 AF_ROUTE = 17; { Internal Routing Protocol } 40 AF_LINK = 18; { Link layer interface } 41 pseudo_AF_XTP = 19; { eXpress Transfer Protocol (no AF) } 42 AF_COIP = 20; { connection-oriented IP, aka ST II } 43 AF_CNT = 21; { Computer Network Technology } 44 pseudo_AF_RTIP = 22; { Help Identify RTIP packets } 45 AF_IPX = 23; { Novell Internet Protocol } 46 AF_SIP = 24; { Simple Internet Protocol } 47 pseudo_AF_PIP = 25; { Help Identify PIP packets } 48 AF_ISDN = 26; { Integrated Services Digital Network} 49 AF_E164 = AF_ISDN; { CCITT E.164 recommendation } 50 pseudo_AF_KEY = 27; { Internal key-management function } 51 AF_INET6 = 28; { IPv6 } 52 AF_NATM = 29; { native ATM access } 53 AF_ATM = 30; { ATM } 54 pseudo_AF_HDRCMPLT = 31; { Used by BPF to not rewrite headers 55 * in interface output routine 56 } 57 AF_NETGRAPH = 32; { Netgraph sockets } 58 AF_SLOW = 33; { 802.3ad slow protocol } 59 AF_SCLUSTER = 34; { Sitara cluster protocol } 60 AF_ARP = 35; 61 AF_BLUETOOTH = 36; { Bluetooth sockets } 62 AF_IEEE80211 = 37; { IEEE 802.11 protocol } 63 AF_MAX = 38; 64 65 { 66 * Protocol families, same as address families for now. 67 } 68 69 const 70 PF_UNSPEC = AF_UNSPEC; 71 PF_LOCAL = AF_LOCAL; 72 { backward compatibility } 73 PF_UNIX = PF_LOCAL; 74 PF_INET = AF_INET; 75 PF_IMPLINK = AF_IMPLINK; 76 PF_PUP = AF_PUP; 77 PF_CHAOS = AF_CHAOS; 78 PF_NETBIOS = AF_NETBIOS; 79 PF_ISO = AF_ISO; 80 PF_OSI = AF_ISO; 81 PF_ECMA = AF_ECMA; 82 PF_DATAKIT = AF_DATAKIT; 83 PF_CCITT = AF_CCITT; 84 PF_SNA = AF_SNA; 85 PF_DECnet = AF_DECnet; 86 PF_DLI = AF_DLI; 87 PF_LAT = AF_LAT; 88 PF_HYLINK = AF_HYLINK; 89 PF_APPLETALK = AF_APPLETALK; 90 PF_ROUTE = AF_ROUTE; 91 PF_LINK = AF_LINK; 92 { really just proto family, no AF } 93 PF_XTP = pseudo_AF_XTP; 94 PF_COIP = AF_COIP; 95 PF_CNT = AF_CNT; 96 PF_SIP = AF_SIP; 97 PF_IPX = AF_IPX; 98 { same format as AF_INET } 99 PF_RTIP = pseudo_AF_RTIP; 100 PF_PIP = pseudo_AF_PIP; 101 PF_ISDN = AF_ISDN; 102 PF_KEY = pseudo_AF_KEY; 103 PF_INET6 = AF_INET6; 104 PF_NATM = AF_NATM; 105 PF_ATM = AF_ATM; 106 PF_NETGRAPH = AF_NETGRAPH; 107 PF_SLOW = AF_SLOW; 108 PF_SCLUSTER = AF_SCLUSTER; 109 PF_ARP = AF_ARP; 110 PF_BLUETOOTH = AF_BLUETOOTH; 111 PF_MAX = AF_MAX; 112 113 114 SOCK_PACKET = 10; 115 116 117{ Maximum queue length specifiable by listen. } 118 SOMAXCONN = 128; 119 120 SOL_SOCKET = $FFFF; 121 SO_DEBUG = $0001; { turn on debugging info recording } 122 SO_ACCEPTCONN = $0002; { socket has had listen() } 123 SO_REUSEADDR = $0004; { allow local address reuse } 124 SO_KEEPALIVE = $0008; { keep connections alive } 125 SO_DONTROUTE = $0010; { just use interface addresses } 126 SO_BROADCAST = $0020; { permit sending of broadcast msgs } 127 SO_USELOOPBACK = $0040; { bypass hardware when possible } 128 SO_LINGER = $0080; { linger on close if data present } 129 SO_OOBINLINE = $0100; { leave received OOB data in line } 130 SO_REUSEPORT = $0200; { allow local address & port reuse } 131 SO_TIMESTAMP = $0400; { timestamp received dgram traffic } 132 133{ 134 * Additional options, not kept in so_options. 135 } 136 SO_SNDBUF =$1001; { send buffer size } 137 SO_RCVBUF =$1002; { receive buffer size } 138 SO_SNDLOWAT =$1003; { send low-water mark } 139 SO_RCVLOWAT =$1004; { receive low-water mark } 140 SO_SNDTIMEO =$1005; { send timeout } 141 SO_RCVTIMEO =$1006; { receive timeout } 142 SO_ERROR =$1007; { get error status and clear } 143 SO_TYPE =$1008; { get socket type } 144 145 146 SHUT_RD =0; { shut down the reading side } 147 SHUT_WR =1; { shut down the writing side } 148 SHUT_RDWR =2; { shut down both sides } 149 150 IPPROTO_IP = 0; { dummy for IP } 151 IPPROTO_ICMP = 1; { control message protocol } 152 IPPROTO_TCP = 6; { tcp } 153 IPPROTO_UDP = 17; { user datagram protocol } 154 155 156 IPPROTO_HOPOPTS = 0 ; { IP6 hop-by-hop options } 157 IPPROTO_IGMP = 2 ; { group mgmt protocol } 158 IPPROTO_GGP = 3 ; { gateway^2 (deprecated) } 159 IPPROTO_IPV4 = 4 ; { IPv4 encapsulation } 160 IPPROTO_IPIP = IPPROTO_IPV4; { for compatibility } 161 IPPROTO_ST = 7 ; { Stream protocol II } 162 IPPROTO_EGP = 8 ; { exterior gateway protocol } 163 IPPROTO_PIGP = 9 ; { private interior gateway } 164 IPPROTO_RCCMON = 10; { BBN RCC Monitoring } 165 IPPROTO_NVPII = 11; { network voice protocol} 166 IPPROTO_PUP = 12; { pup } 167 IPPROTO_ARGUS = 13; { Argus } 168 IPPROTO_EMCON = 14; { EMCON } 169 IPPROTO_XNET = 15; { Cross Net Debugger } 170 IPPROTO_CHAOS = 16; { Chaos} 171 IPPROTO_MUX = 18; { Multiplexing } 172 IPPROTO_MEAS = 19; { DCN Measurement Subsystems } 173 IPPROTO_HMP = 20; { Host Monitoring } 174 IPPROTO_PRM = 21; { Packet Radio Measurement } 175 IPPROTO_IDP = 22; { xns idp } 176 IPPROTO_TRUNK1 = 23; { Trunk-1 } 177 IPPROTO_TRUNK2 = 24; { Trunk-2 } 178 IPPROTO_LEAF1 = 25; { Leaf-1 } 179 IPPROTO_LEAF2 = 26; { Leaf-2 } 180 IPPROTO_RDP = 27; { Reliable Data } 181 IPPROTO_IRTP = 28; { Reliable Transaction } 182 IPPROTO_TP = 29; { tp-4 w/ class negotiation } 183 IPPROTO_BLT = 30; { Bulk Data Transfer } 184 IPPROTO_NSP = 31; { Network Services } 185 IPPROTO_INP = 32; { Merit Internodal } 186 IPPROTO_SEP = 33; { Sequential Exchange } 187 IPPROTO_3PC = 34; { Third Party Connect } 188 IPPROTO_IDPR = 35; { InterDomain Policy Routing } 189 IPPROTO_XTP = 36; { XTP } 190 IPPROTO_DDP = 37; { Datagram Delivery } 191 IPPROTO_CMTP = 38; { Control Message Transport } 192 IPPROTO_TPXX = 39; { TP++ Transport } 193 IPPROTO_IL = 40; { IL transport protocol } 194 IPPROTO_IPV6 = 41; { IP6 header } 195 IPPROTO_SDRP = 42; { Source Demand Routing } 196 IPPROTO_ROUTING = 43; { IP6 routing header } 197 IPPROTO_FRAGMENT = 44; { IP6 fragmentation header } 198 IPPROTO_IDRP = 45; { InterDomain Routing} 199 IPPROTO_RSVP = 46; { resource reservation } 200 IPPROTO_GRE = 47; { General Routing Encap. } 201 IPPROTO_MHRP = 48; { Mobile Host Routing } 202 IPPROTO_BHA = 49; { BHA } 203 IPPROTO_ESP = 50; { IP6 Encap Sec. Payload } 204 IPPROTO_AH = 51; { IP6 Auth Header } 205 IPPROTO_INLSP = 52; { Integ. Net Layer Security } 206 IPPROTO_SWIPE = 53; { IP with encryption } 207 IPPROTO_NHRP = 54; { Next Hop Resolution } 208 IPPROTO_MOBILE = 55; { IP Mobility } 209 IPPROTO_TLSP = 56; { Transport Layer Security } 210 IPPROTO_SKIP = 57; { SKIP } 211 IPPROTO_ICMPV6 = 58; { ICMP6 } 212 IPPROTO_NONE = 59; { IP6 no next header } 213 IPPROTO_DSTOPTS = 60; { IP6 destination option } 214 IPPROTO_AHIP = 61; { any host internal protocol } 215 IPPROTO_CFTP = 62; { CFTP } 216 IPPROTO_HELLO = 63; { "hello" routing protocol } 217 IPPROTO_SATEXPAK = 64; { SATNET/Backroom EXPAK } 218 IPPROTO_KRYPTOLAN = 65; { Kryptolan } 219 IPPROTO_RVD = 66; { Remote Virtual Disk } 220 IPPROTO_IPPC = 67; { Pluribus Packet Core } 221 IPPROTO_ADFS = 68; { Any distributed FS } 222 IPPROTO_SATMON = 69; { Satnet Monitoring } 223 IPPROTO_VISA = 70; { VISA Protocol } 224 IPPROTO_IPCV = 71; { Packet Core Utility } 225 IPPROTO_CPNX = 72; { Comp. Prot. Net. Executive } 226 IPPROTO_CPHB = 73; { Comp. Prot. HeartBeat } 227 IPPROTO_WSN = 74; { Wang Span Network } 228 IPPROTO_PVP = 75; { Packet Video Protocol } 229 IPPROTO_BRSATMON = 76; { BackRoom SATNET Monitoring } 230 IPPROTO_ND = 77; { Sun net disk proto (temp.) } 231 IPPROTO_WBMON = 78; { WIDEBAND Monitoring } 232 IPPROTO_WBEXPAK = 79; { WIDEBAND EXPAK } 233 IPPROTO_EON = 80; { ISO cnlp } 234 IPPROTO_VMTP = 81; { VMTP } 235 IPPROTO_SVMTP = 82; { Secure VMTP } 236 IPPROTO_VINES = 83; { Banyon VINES } 237 IPPROTO_TTP = 84; { TTP } 238 IPPROTO_IGP = 85; { NSFNET-IGP } 239 IPPROTO_DGP = 86; { dissimilar gateway prot. } 240 IPPROTO_TCF = 87; { TCF } 241 IPPROTO_IGRP = 88; { Cisco/GXS IGRP } 242 IPPROTO_OSPFIGP = 89; { OSPFIGP } 243 IPPROTO_SRPC = 90; { Strite RPC protocol } 244 IPPROTO_LARP = 91; { Locus Address Resoloution } 245 IPPROTO_MTP = 92; { Multicast Transport } 246 IPPROTO_AX25 = 93; { AX.25 Frames } 247 IPPROTO_IPEIP = 94; { IP encapsulated in IP } 248 IPPROTO_MICP = 95; { Mobile Int.ing control } 249 IPPROTO_SCCSP = 96; { Semaphore Comm. security } 250 IPPROTO_ETHERIP = 97; { Ethernet IP encapsulation } 251 IPPROTO_ENCAP = 98; { encapsulation header } 252 IPPROTO_APES = 99; { any private encr. scheme } 253 IPPROTO_GMTP = 100; { GMTP} 254 IPPROTO_IPCOMP = 108; { payload compression (IPComp) } 255{ 101-254: Partly Unassigned } 256 IPPROTO_PIM = 103; { Protocol Independent Mcast } 257 IPPROTO_CARP = 112; { CARP } 258 IPPROTO_PGM = 113; { PGM } 259 IPPROTO_PFSYNC = 240; { PFSYNC } 260 261{ last return value of *_input(), meaning "all job for this pkt is done". } 262 IPPROTO_RAW = 255; 263 IPPROTO_MAX = 256; 264 IPPROTO_DONE = 257; 265 266{ 267 * Options for use with [gs]etsockopt at the IP level. 268 * First word of comment is data type; bool is stored in int. 269 } 270 IP_OPTIONS = 1 ; { buf/ip_opts; set/get IP options } 271 IP_HDRINCL = 2 ; { int; header is included with data } 272 IP_TOS = 3 ; { int; IP type of service and preced. } 273 IP_TTL = 4 ; { int; IP time to live } 274 IP_RECVOPTS = 5 ; { bool; receive all IP opts w/dgram } 275 IP_RECVRETOPTS = 6 ; { bool; receive IP opts for response } 276 IP_RECVDSTADDR = 7 ; { bool; receive IP dst addr w/dgram } 277 IP_SENDSRCADDR = IP_RECVDSTADDR; { cmsg_type to set src addr } 278 IP_RETOPTS = 8 ; { ip_opts; set/get IP options } 279 IP_MULTICAST_IF = 9 ; { u_char; set/get IP multicast i/f } 280 IP_MULTICAST_TTL = 10; { u_char; set/get IP multicast ttl } 281 IP_MULTICAST_LOOP = 11; { u_char; set/get IP multicast loopback } 282 IP_ADD_MEMBERSHIP = 12; { ip_mreq; add an IP group membership } 283 IP_DROP_MEMBERSHIP = 13; { ip_mreq; drop an IP group membership } 284 IP_MULTICAST_VIF = 14; { set/get IP mcast virt. iface } 285 IP_RSVP_ON = 15; { enable RSVP in kernel } 286 IP_RSVP_OFF = 16; { disable RSVP in kernel } 287 IP_RSVP_VIF_ON = 17; { set RSVP per-vif socket } 288 IP_RSVP_VIF_OFF = 18; { unset RSVP per-vif socket } 289 IP_PORTRANGE = 19; { int; range to choose for unspec port } 290 IP_RECVIF = 20; { bool; receive reception if w/dgram } 291 292{ for IPSEC } 293 IP_IPSEC_POLICY = 21; { int; set/get security policy } 294 IP_FAITH = 22; { bool; accept FAITH'ed connections } 295 296 IP_ONESBCAST = 23; { bool: send all-ones broadcast } 297 298 IP_FW_TABLE_ADD = 40; { add entry } 299 IP_FW_TABLE_DEL = 41; { delete entry } 300 IP_FW_TABLE_FLUSH = 42; { flush table } 301 IP_FW_TABLE_GETSIZE = 43; { get table size } 302 IP_FW_TABLE_LIST = 44; { list table contents } 303 304 IP_FW_ADD = 50; { add a firewall rule to chain } 305 IP_FW_DEL = 51; { delete a firewall rule from chain } 306 IP_FW_FLUSH = 52; { flush firewall rule chain } 307 IP_FW_ZERO = 53; { clear single/all firewall counter(s) } 308 IP_FW_GET = 54; { get entire firewall rule chain } 309 IP_FW_RESETLOG = 55; { reset logging counters } 310 311 IP_DUMMYNET_CONFIGURE = 60; { add/configure a dummynet pipe } 312 IP_DUMMYNET_DEL = 61; { delete a dummynet pipe from chain } 313 IP_DUMMYNET_FLUSH = 62; { flush dummynet } 314 IP_DUMMYNET_GET = 64; { get entire dummynet pipes } 315 316 IP_RECVTTL = 65; { bool; receive IP TTL w/dgram } 317 318 IPV6_SOCKOPT_RESERVED1 = 3 ; { reserved for future use } 319 IPV6_UNICAST_HOPS = 4 ; { int; IP6 hops } 320 IPV6_MULTICAST_IF = 9 ; { u_int; setget IP6 multicast if } 321 IPV6_MULTICAST_HOPS = 10; { int; setget IP6 multicast hops } 322 IPV6_MULTICAST_LOOP = 11; { u_int; setget IP6 multicast loopback } 323 IPV6_JOIN_GROUP = 12; { ip6_mreq; join a group membership } 324 IPV6_LEAVE_GROUP = 13; { ip6_mreq; leave a group membership } 325 IPV6_PORTRANGE = 14; { int; range to choose for unspec port } 326 327 IPV6_PKTINFO = 46; { in6_pktinfo; send if, src addr } 328 IPV6_HOPLIMIT = 47; { int; send hop limit } 329 IPV6_NEXTHOP = 48; { sockaddr; next hop addr } 330 IPV6_HOPOPTS = 49; { ip6_hbh; send hop-by-hop option } 331 IPV6_DSTOPTS = 50; { ip6_dest; send dst option befor rthdr } 332 IPV6_RTHDR = 51; { ip6_rthdr; send routing header } 333 IPV6_PKTOPTIONS = 52; { buf/cmsghdr; set/get IPv6 options } 334 335 { Flags for send, recv etc. } 336 MSG_OOB = $0001; { Process out-of-band data} 337 MSG_PEEK = $0002; { Peek at incoming messages } 338 MSG_DONTROUTE = $0004; { Don't use local routing } 339 MSG_EOR = $0008; { End of record } 340 MSG_TRUNC = $0010; 341 MSG_CTRUNC = $0020; { Control data lost before delivery } 342 MSG_WAITALL = $0040; { Wait for a full request } 343 MSG_DONTWAIT = $0080; { Non-blocking I/O } 344 MSG_EOF = $0100; 345 MSG_NBIO = $4000; 346 MSG_COMPAT = $8000; 347 MSG_SOCALLBCK = $10000; 348 MSG_NOSIGNAL = $20000; { Do not generate SIGPIPE } 349 350 INVALID_SOCKET = -1; 351 SOCKET_ERROR = -1; 352 353 TCP_NODELAY = $01; 354 { set maximum segment size } 355 TCP_MAXSEG = $02; 356 { don't push last block of write } 357 TCP_NOPUSH = $04; 358 { don't use TCP options } 359 TCP_NOOPT = $08; 360 { use MD5 digests (RFC2385) } 361 TCP_MD5SIG = $10; 362 { retrieve tcp_info structure } 363 TCP_INFO = $20; 364 365 366