From 1e9d5fb24b3fffd7fff919918d6a980d57d23fcc Mon Sep 17 00:00:00 2001 From: pierre Date: Tue, 4 Oct 2011 22:23:00 +0000 Subject: [PATCH] * Updated using freebsd version (not verified) git-svn-id: trunk@19371 - --- rtl/openbsd/unxsockh.inc | 431 +++++++++++++++++++++++++++++---------- 1 file changed, 321 insertions(+), 110 deletions(-) diff --git a/rtl/openbsd/unxsockh.inc b/rtl/openbsd/unxsockh.inc index d2bc56fa2c..101b20ded4 100644 --- a/rtl/openbsd/unxsockh.inc +++ b/rtl/openbsd/unxsockh.inc @@ -1,83 +1,72 @@ +{ + This file is part of the Free Pascal run time library. + (c) 2000-2003 by Marco van de Voort + member of the Free Pascal development team. -const - { - * Address families. - } + See the file COPYING.FPC, included in this distribution, + for details about the copyright. - { unspecified } - AF_UNSPEC = 0; - { local to host (pipes, portals) } - AF_LOCAL = 1; - { backward compatibility } - AF_UNIX = AF_LOCAL; - { internetwork: UDP, TCP, etc. } - AF_INET = 2; - { arpanet imp addresses } - AF_IMPLINK = 3; - { pup protocols: e.g. BSP } - AF_PUP = 4; - { mit CHAOS protocols } - AF_CHAOS = 5; - { XEROX NS protocols } - AF_NS = 6; - { ISO protocols } - AF_ISO = 7; - AF_OSI = AF_ISO; - { european computer manufacturers } - AF_ECMA = 8; - { datakit protocols } - AF_DATAKIT = 9; - { CCITT protocols, X.25 etc } - AF_CCITT = 10; - { IBM SNA } - AF_SNA = 11; - { DECnet } - AF_DECnet = 12; - { DEC Direct data link interface } - AF_DLI = 13; - { LAT } - AF_LAT = 14; - { NSC Hyperchannel } - AF_HYLINK = 15; - { Apple Talk } - AF_APPLETALK = 16; - { Internal Routing Protocol } - AF_ROUTE = 17; - { Link layer interface } - AF_LINK = 18; - { eXpress Transfer Protocol (no AF) } - pseudo_AF_XTP = 19; - { connection-oriented IP, aka ST II } - AF_COIP = 20; - { Computer Network Technology } - AF_CNT = 21; - { Help Identify RTIP packets } - pseudo_AF_RTIP = 22; - { Novell Internet Protocol } - AF_IPX = 23; - { IPv6 } - AF_INET6 = 24; - { Help Identify PIP packets } - pseudo_AF_PIP = 25; - { Integrated Services Digital Network } - AF_ISDN = 26; - { CCITT E.164 recommendation } - AF_E164 = AF_ISDN; - { native ATM access } - AF_NATM = 27; - AF_ENCAP = 28; - { Simple Internet Protocol } - AF_SIP = 29; - AF_KEY = 30; - { Used by BPF to not rewrite headers - in interface output routine } - pseudo_AF_HDRCMPLT = 31; - { Bluetooth } - AF_BLUETOOTH = 32; - AF_MAX = 33; + OS dependant part of the header. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY;without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +} + +Const +{* + * Address families. + *} + AF_UNSPEC = 0; { unspecified } + AF_UNIX = 1; { standardized name for AF_LOCAL } + AF_LOCAL = AF_UNIX; { local to host (pipes, portals) } + AF_INET = 2; { internetwork: UDP, TCP, etc. } + AF_IMPLINK = 3; { arpanet imp addresses } + AF_PUP = 4; { pup protocols: e.g. BSP } + AF_CHAOS = 5; { mit CHAOS protocols } + AF_NETBIOS = 6; { SMB protocols } + AF_ISO = 7; { ISO protocols } + AF_OSI = AF_ISO; + AF_ECMA = 8; { European computer manufacturers } + AF_DATAKIT = 9; { datakit protocols } + AF_CCITT = 10; { CCITT protocols, X.25 etc } + AF_SNA = 11; { IBM SNA } + AF_DECnet = 12; { DECnet } + AF_DLI = 13; { DEC Direct data link interface } + AF_LAT = 14; { LAT } + AF_HYLINK = 15; { NSC Hyperchannel } + AF_APPLETALK = 16; { Apple Talk } + AF_ROUTE = 17; { Internal Routing Protocol } + AF_LINK = 18; { Link layer interface } + pseudo_AF_XTP = 19; { eXpress Transfer Protocol (no AF) } + AF_COIP = 20; { connection-oriented IP, aka ST II } + AF_CNT = 21; { Computer Network Technology } + pseudo_AF_RTIP = 22; { Help Identify RTIP packets } + AF_IPX = 23; { Novell Internet Protocol } + AF_SIP = 24; { Simple Internet Protocol } + pseudo_AF_PIP = 25; { Help Identify PIP packets } + AF_ISDN = 26; { Integrated Services Digital Network} + AF_E164 = AF_ISDN; { CCITT E.164 recommendation } + pseudo_AF_KEY = 27; { Internal key-management function } + AF_INET6 = 28; { IPv6 } + AF_NATM = 29; { native ATM access } + AF_ATM = 30; { ATM } + pseudo_AF_HDRCMPLT = 31; { Used by BPF to not rewrite headers + * in interface output routine + } + AF_NETGRAPH = 32; { Netgraph sockets } + AF_SLOW = 33; { 802.3ad slow protocol } + AF_SCLUSTER = 34; { Sitara cluster protocol } + AF_ARP = 35; + AF_BLUETOOTH = 36; { Bluetooth sockets } + AF_IEEE80211 = 37; { IEEE 802.11 protocol } + AF_MAX = 38; + { * Protocol families, same as address families for now. } + + const PF_UNSPEC = AF_UNSPEC; PF_LOCAL = AF_LOCAL; { backward compatibility } @@ -86,7 +75,7 @@ const PF_IMPLINK = AF_IMPLINK; PF_PUP = AF_PUP; PF_CHAOS = AF_CHAOS; - PF_NS = AF_NS; + PF_NETBIOS = AF_NETBIOS; PF_ISO = AF_ISO; PF_OSI = AF_ISO; PF_ECMA = AF_ECMA; @@ -104,51 +93,273 @@ const PF_XTP = pseudo_AF_XTP; PF_COIP = AF_COIP; PF_CNT = AF_CNT; - { same format as AF_NS } + PF_SIP = AF_SIP; PF_IPX = AF_IPX; - PF_INET6 = AF_INET6; { same format as AF_INET } PF_RTIP = pseudo_AF_RTIP; PF_PIP = pseudo_AF_PIP; PF_ISDN = AF_ISDN; + PF_KEY = pseudo_AF_KEY; + PF_INET6 = AF_INET6; PF_NATM = AF_NATM; - PF_ENCAP = AF_ENCAP; - PF_SIP = AF_SIP; - PF_KEY = AF_KEY; - PF_BPF = pseudo_AF_HDRCMPLT; + PF_ATM = AF_ATM; + PF_NETGRAPH = AF_NETGRAPH; + PF_SLOW = AF_SLOW; + PF_SCLUSTER = AF_SCLUSTER; + PF_ARP = AF_ARP; PF_BLUETOOTH = AF_BLUETOOTH; PF_MAX = AF_MAX; - - MSG_OOB = $1; - { peek at incoming message } - MSG_PEEK = $2; - { send without using routing tables } - MSG_DONTROUTE = $4; - { data completes record } - MSG_EOR = $8; - { data discarded before delivery } - MSG_TRUNC = $10; - { control data lost before delivery } - MSG_CTRUNC = $20; - { wait for full request or error } - MSG_WAITALL = $40; - { this message should be nonblocking } - MSG_DONTWAIT = $80; - { this message rec'd as broadcast } - MSG_BCAST = $100; - { this message rec'd as multicast } - MSG_MCAST = $200; - - TCP_NODELAY = $01; - { set maximum segment size } - TCP_MAXSEG = $02; - { enable TCP MD5 signature option } - TCP_MD5SIG = $04; - { enable SACKs (if disabled by def.) } - TCP_SACK_ENABLE = $08; + + + SOCK_PACKET = 10; + + +{ Maximum queue length specifiable by listen. } + SOMAXCONN = 128; + + SOL_SOCKET = $FFFF; + SO_DEBUG = $0001; { turn on debugging info recording } + SO_ACCEPTCONN = $0002; { socket has had listen() } + SO_REUSEADDR = $0004; { allow local address reuse } + SO_KEEPALIVE = $0008; { keep connections alive } + SO_DONTROUTE = $0010; { just use interface addresses } + SO_BROADCAST = $0020; { permit sending of broadcast msgs } + SO_USELOOPBACK = $0040; { bypass hardware when possible } + SO_LINGER = $0080; { linger on close if data present } + SO_OOBINLINE = $0100; { leave received OOB data in line } + SO_REUSEPORT = $0200; { allow local address & port reuse } + SO_TIMESTAMP = $0400; { timestamp received dgram traffic } + +{ + * Additional options, not kept in so_options. + } + SO_SNDBUF =$1001; { send buffer size } + SO_RCVBUF =$1002; { receive buffer size } + SO_SNDLOWAT =$1003; { send low-water mark } + SO_RCVLOWAT =$1004; { receive low-water mark } + SO_SNDTIMEO =$1005; { send timeout } + SO_RCVTIMEO =$1006; { receive timeout } + SO_ERROR =$1007; { get error status and clear } + SO_TYPE =$1008; { get socket type } + SHUT_RD =0; { shut down the reading side } SHUT_WR =1; { shut down the writing side } SHUT_RDWR =2; { shut down both sides } + IPPROTO_IP = 0; { dummy for IP } + IPPROTO_ICMP = 1; { control message protocol } + IPPROTO_TCP = 6; { tcp } + IPPROTO_UDP = 17; { user datagram protocol } + + + IPPROTO_HOPOPTS = 0 ; { IP6 hop-by-hop options } + IPPROTO_IGMP = 2 ; { group mgmt protocol } + IPPROTO_GGP = 3 ; { gateway^2 (deprecated) } + IPPROTO_IPV4 = 4 ; { IPv4 encapsulation } + IPPROTO_IPIP = IPPROTO_IPV4; { for compatibility } + IPPROTO_ST = 7 ; { Stream protocol II } + IPPROTO_EGP = 8 ; { exterior gateway protocol } + IPPROTO_PIGP = 9 ; { private interior gateway } + IPPROTO_RCCMON = 10; { BBN RCC Monitoring } + IPPROTO_NVPII = 11; { network voice protocol} + IPPROTO_PUP = 12; { pup } + IPPROTO_ARGUS = 13; { Argus } + IPPROTO_EMCON = 14; { EMCON } + IPPROTO_XNET = 15; { Cross Net Debugger } + IPPROTO_CHAOS = 16; { Chaos} + IPPROTO_MUX = 18; { Multiplexing } + IPPROTO_MEAS = 19; { DCN Measurement Subsystems } + IPPROTO_HMP = 20; { Host Monitoring } + IPPROTO_PRM = 21; { Packet Radio Measurement } + IPPROTO_IDP = 22; { xns idp } + IPPROTO_TRUNK1 = 23; { Trunk-1 } + IPPROTO_TRUNK2 = 24; { Trunk-2 } + IPPROTO_LEAF1 = 25; { Leaf-1 } + IPPROTO_LEAF2 = 26; { Leaf-2 } + IPPROTO_RDP = 27; { Reliable Data } + IPPROTO_IRTP = 28; { Reliable Transaction } + IPPROTO_TP = 29; { tp-4 w/ class negotiation } + IPPROTO_BLT = 30; { Bulk Data Transfer } + IPPROTO_NSP = 31; { Network Services } + IPPROTO_INP = 32; { Merit Internodal } + IPPROTO_SEP = 33; { Sequential Exchange } + IPPROTO_3PC = 34; { Third Party Connect } + IPPROTO_IDPR = 35; { InterDomain Policy Routing } + IPPROTO_XTP = 36; { XTP } + IPPROTO_DDP = 37; { Datagram Delivery } + IPPROTO_CMTP = 38; { Control Message Transport } + IPPROTO_TPXX = 39; { TP++ Transport } + IPPROTO_IL = 40; { IL transport protocol } + IPPROTO_IPV6 = 41; { IP6 header } + IPPROTO_SDRP = 42; { Source Demand Routing } + IPPROTO_ROUTING = 43; { IP6 routing header } + IPPROTO_FRAGMENT = 44; { IP6 fragmentation header } + IPPROTO_IDRP = 45; { InterDomain Routing} + IPPROTO_RSVP = 46; { resource reservation } + IPPROTO_GRE = 47; { General Routing Encap. } + IPPROTO_MHRP = 48; { Mobile Host Routing } + IPPROTO_BHA = 49; { BHA } + IPPROTO_ESP = 50; { IP6 Encap Sec. Payload } + IPPROTO_AH = 51; { IP6 Auth Header } + IPPROTO_INLSP = 52; { Integ. Net Layer Security } + IPPROTO_SWIPE = 53; { IP with encryption } + IPPROTO_NHRP = 54; { Next Hop Resolution } + IPPROTO_MOBILE = 55; { IP Mobility } + IPPROTO_TLSP = 56; { Transport Layer Security } + IPPROTO_SKIP = 57; { SKIP } + IPPROTO_ICMPV6 = 58; { ICMP6 } + IPPROTO_NONE = 59; { IP6 no next header } + IPPROTO_DSTOPTS = 60; { IP6 destination option } + IPPROTO_AHIP = 61; { any host internal protocol } + IPPROTO_CFTP = 62; { CFTP } + IPPROTO_HELLO = 63; { "hello" routing protocol } + IPPROTO_SATEXPAK = 64; { SATNET/Backroom EXPAK } + IPPROTO_KRYPTOLAN = 65; { Kryptolan } + IPPROTO_RVD = 66; { Remote Virtual Disk } + IPPROTO_IPPC = 67; { Pluribus Packet Core } + IPPROTO_ADFS = 68; { Any distributed FS } + IPPROTO_SATMON = 69; { Satnet Monitoring } + IPPROTO_VISA = 70; { VISA Protocol } + IPPROTO_IPCV = 71; { Packet Core Utility } + IPPROTO_CPNX = 72; { Comp. Prot. Net. Executive } + IPPROTO_CPHB = 73; { Comp. Prot. HeartBeat } + IPPROTO_WSN = 74; { Wang Span Network } + IPPROTO_PVP = 75; { Packet Video Protocol } + IPPROTO_BRSATMON = 76; { BackRoom SATNET Monitoring } + IPPROTO_ND = 77; { Sun net disk proto (temp.) } + IPPROTO_WBMON = 78; { WIDEBAND Monitoring } + IPPROTO_WBEXPAK = 79; { WIDEBAND EXPAK } + IPPROTO_EON = 80; { ISO cnlp } + IPPROTO_VMTP = 81; { VMTP } + IPPROTO_SVMTP = 82; { Secure VMTP } + IPPROTO_VINES = 83; { Banyon VINES } + IPPROTO_TTP = 84; { TTP } + IPPROTO_IGP = 85; { NSFNET-IGP } + IPPROTO_DGP = 86; { dissimilar gateway prot. } + IPPROTO_TCF = 87; { TCF } + IPPROTO_IGRP = 88; { Cisco/GXS IGRP } + IPPROTO_OSPFIGP = 89; { OSPFIGP } + IPPROTO_SRPC = 90; { Strite RPC protocol } + IPPROTO_LARP = 91; { Locus Address Resoloution } + IPPROTO_MTP = 92; { Multicast Transport } + IPPROTO_AX25 = 93; { AX.25 Frames } + IPPROTO_IPEIP = 94; { IP encapsulated in IP } + IPPROTO_MICP = 95; { Mobile Int.ing control } + IPPROTO_SCCSP = 96; { Semaphore Comm. security } + IPPROTO_ETHERIP = 97; { Ethernet IP encapsulation } + IPPROTO_ENCAP = 98; { encapsulation header } + IPPROTO_APES = 99; { any private encr. scheme } + IPPROTO_GMTP = 100; { GMTP} + IPPROTO_IPCOMP = 108; { payload compression (IPComp) } +{ 101-254: Partly Unassigned } + IPPROTO_PIM = 103; { Protocol Independent Mcast } + IPPROTO_CARP = 112; { CARP } + IPPROTO_PGM = 113; { PGM } + IPPROTO_PFSYNC = 240; { PFSYNC } + +{ last return value of *_input(), meaning "all job for this pkt is done". } + IPPROTO_RAW = 255; + IPPROTO_MAX = 256; + IPPROTO_DONE = 257; + +{ + * Options for use with [gs]etsockopt at the IP level. + * First word of comment is data type; bool is stored in int. + } + IP_OPTIONS = 1 ; { buf/ip_opts; set/get IP options } + IP_HDRINCL = 2 ; { int; header is included with data } + IP_TOS = 3 ; { int; IP type of service and preced. } + IP_TTL = 4 ; { int; IP time to live } + IP_RECVOPTS = 5 ; { bool; receive all IP opts w/dgram } + IP_RECVRETOPTS = 6 ; { bool; receive IP opts for response } + IP_RECVDSTADDR = 7 ; { bool; receive IP dst addr w/dgram } + IP_SENDSRCADDR = IP_RECVDSTADDR; { cmsg_type to set src addr } + IP_RETOPTS = 8 ; { ip_opts; set/get IP options } + IP_MULTICAST_IF = 9 ; { u_char; set/get IP multicast i/f } + IP_MULTICAST_TTL = 10; { u_char; set/get IP multicast ttl } + IP_MULTICAST_LOOP = 11; { u_char; set/get IP multicast loopback } + IP_ADD_MEMBERSHIP = 12; { ip_mreq; add an IP group membership } + IP_DROP_MEMBERSHIP = 13; { ip_mreq; drop an IP group membership } + IP_MULTICAST_VIF = 14; { set/get IP mcast virt. iface } + IP_RSVP_ON = 15; { enable RSVP in kernel } + IP_RSVP_OFF = 16; { disable RSVP in kernel } + IP_RSVP_VIF_ON = 17; { set RSVP per-vif socket } + IP_RSVP_VIF_OFF = 18; { unset RSVP per-vif socket } + IP_PORTRANGE = 19; { int; range to choose for unspec port } + IP_RECVIF = 20; { bool; receive reception if w/dgram } + +{ for IPSEC } + IP_IPSEC_POLICY = 21; { int; set/get security policy } + IP_FAITH = 22; { bool; accept FAITH'ed connections } + + IP_ONESBCAST = 23; { bool: send all-ones broadcast } + + IP_FW_TABLE_ADD = 40; { add entry } + IP_FW_TABLE_DEL = 41; { delete entry } + IP_FW_TABLE_FLUSH = 42; { flush table } + IP_FW_TABLE_GETSIZE = 43; { get table size } + IP_FW_TABLE_LIST = 44; { list table contents } + + IP_FW_ADD = 50; { add a firewall rule to chain } + IP_FW_DEL = 51; { delete a firewall rule from chain } + IP_FW_FLUSH = 52; { flush firewall rule chain } + IP_FW_ZERO = 53; { clear single/all firewall counter(s) } + IP_FW_GET = 54; { get entire firewall rule chain } + IP_FW_RESETLOG = 55; { reset logging counters } + + IP_DUMMYNET_CONFIGURE = 60; { add/configure a dummynet pipe } + IP_DUMMYNET_DEL = 61; { delete a dummynet pipe from chain } + IP_DUMMYNET_FLUSH = 62; { flush dummynet } + IP_DUMMYNET_GET = 64; { get entire dummynet pipes } + + IP_RECVTTL = 65; { bool; receive IP TTL w/dgram } + + IPV6_SOCKOPT_RESERVED1 = 3 ; { reserved for future use } + IPV6_UNICAST_HOPS = 4 ; { int; IP6 hops } + IPV6_MULTICAST_IF = 9 ; { u_int; setget IP6 multicast if } + IPV6_MULTICAST_HOPS = 10; { int; setget IP6 multicast hops } + IPV6_MULTICAST_LOOP = 11; { u_int; setget IP6 multicast loopback } + IPV6_JOIN_GROUP = 12; { ip6_mreq; join a group membership } + IPV6_LEAVE_GROUP = 13; { ip6_mreq; leave a group membership } + IPV6_PORTRANGE = 14; { int; range to choose for unspec port } + + IPV6_PKTINFO = 46; { in6_pktinfo; send if, src addr } + IPV6_HOPLIMIT = 47; { int; send hop limit } + IPV6_NEXTHOP = 48; { sockaddr; next hop addr } + IPV6_HOPOPTS = 49; { ip6_hbh; send hop-by-hop option } + IPV6_DSTOPTS = 50; { ip6_dest; send dst option befor rthdr } + IPV6_RTHDR = 51; { ip6_rthdr; send routing header } + IPV6_PKTOPTIONS = 52; { buf/cmsghdr; set/get IPv6 options } + + { Flags for send, recv etc. } + MSG_OOB = $0001; { Process out-of-band data} + MSG_PEEK = $0002; { Peek at incoming messages } + MSG_DONTROUTE = $0004; { Don't use local routing } + MSG_EOR = $0008; { End of record } + MSG_TRUNC = $0010; + MSG_CTRUNC = $0020; { Control data lost before delivery } + MSG_WAITALL = $0040; { Wait for a full request } + MSG_DONTWAIT = $0080; { Non-blocking I/O } + MSG_EOF = $0100; + MSG_NBIO = $4000; + MSG_COMPAT = $8000; + MSG_SOCALLBCK = $10000; + MSG_NOSIGNAL = $20000; { Do not generate SIGPIPE } + + INVALID_SOCKET = -1; + SOCKET_ERROR = -1; + + TCP_NODELAY = $01; + { set maximum segment size } + TCP_MAXSEG = $02; + { don't push last block of write } + TCP_NOPUSH = $04; + { don't use TCP options } + TCP_NOOPT = $08; + { use MD5 digests (RFC2385) } + TCP_MD5SIG = $10; + { retrieve tcp_info structure } + TCP_INFO = $20; +