1 2 3Const 4 IPPROTO_IP = 0; 5 IPPROTO_HOPOPTS = 0; 6 IPPROTO_ICMP = 1; 7 IPPROTO_IGMP = 2; 8 IPPROTO_IPIP = 4; 9 IPPROTO_TCP = 6; 10 IPPROTO_EGP = 8; 11 IPPROTO_PUP = 12; 12 IPPROTO_UDP = 17; 13 IPPROTO_IDP = 22; 14 IPPROTO_TP = 29; 15 IPPROTO_IPV6 = 41; 16 IPPROTO_ROUTING = 43; 17 IPPROTO_FRAGMENT = 44; 18 IPPROTO_RSVP = 46; 19 IPPROTO_GRE = 47; 20 IPPROTO_ESP = 50; 21 IPPROTO_AH = 51; 22 IPPROTO_ICMPV6 = 58; 23 IPPROTO_NONE = 59; 24 IPPROTO_DSTOPTS = 60; 25 IPPROTO_MTP = 92; 26 IPPROTO_ENCAP = 98; 27 IPPROTO_PIM = 103; 28 IPPROTO_COMP = 108; 29 IPPROTO_RAW = 255; 30 IPPROTO_MAX = 256; 31 32 33type 34 Pin_port_t = ^in_port_t; 35 in_port_t = uint16_t; 36 37Const 38 IPPORT_ECHO = 7; 39 IPPORT_DISCARD = 9; 40 IPPORT_SYSTAT = 11; 41 IPPORT_DAYTIME = 13; 42 IPPORT_NETSTAT = 15; 43 IPPORT_FTP = 21; 44 IPPORT_TELNET = 23; 45 IPPORT_SMTP = 25; 46 IPPORT_TIMESERVER = 37; 47 IPPORT_NAMESERVER = 42; 48 IPPORT_WHOIS = 43; 49 IPPORT_MTP = 57; 50 IPPORT_TFTP = 69; 51 IPPORT_RJE = 77; 52 IPPORT_FINGER = 79; 53 IPPORT_TTYLINK = 87; 54 IPPORT_SUPDUP = 95; 55 IPPORT_EXECSERVER = 512; 56 IPPORT_LOGINSERVER = 513; 57 IPPORT_CMDSERVER = 514; 58 IPPORT_EFSSERVER = 520; 59 IPPORT_BIFFUDP = 512; 60 IPPORT_WHOSERVER = 513; 61 IPPORT_ROUTESERVER = 520; 62 IPPORT_RESERVED = 1024; 63 IPPORT_USERRESERVED = 5000; 64 65type 66 67 Pin_addr_t = ^in_addr_t; 68 in_addr_t = uint32_t; 69 Pin_addr = ^in_addr; 70{ 71 in_addr = record 72 s_addr : in_addr_t; 73 end; 74} 75 76 77const 78 IN_CLASSA_NET = $ff000000; 79 IN_CLASSA_NSHIFT = 24; 80 IN_CLASSA_HOST = $ffffffff and ( not (IN_CLASSA_NET)); 81 IN_CLASSA_MAX = 128; 82 83const 84 IN_CLASSB_NET = $ffff0000; 85 IN_CLASSB_NSHIFT = 16; 86 IN_CLASSB_HOST = $ffffffff and ( not (IN_CLASSB_NET)); 87 IN_CLASSB_MAX = 65536; 88 89 90const 91 IN_CLASSC_NET = $ffffff00; 92 IN_CLASSC_NSHIFT = 8; 93 IN_CLASSC_HOST = $ffffffff and ( not (IN_CLASSC_NET)); 94 95Function IN_CLASSA(a: in_addr_t): Boolean; 96Function IN_CLASSB(a: in_addr_t): Boolean; 97Function IN_CLASSC(a: in_addr_t): Boolean; 98Function IN_CLASSD(a: in_addr_t): Boolean; 99Function IN_MULTICAST(a: in_addr_t): Boolean; 100Function IN_EXPERIMENTAL(a: in_addr_t): Boolean; 101Function IN_BADCLASS(a: in_addr_t): Boolean; 102 103 104const 105 IN_LOOPBACKNET = 127; 106 INADDR_LOOPBACK = in_addr_t($7f000001); 107 INADDR_UNSPEC_GROUP = in_addr_t($e0000000); 108 INADDR_ALLHOSTS_GROUP = in_addr_t($e0000001); 109 INADDR_ALLRTRS_GROUP = in_addr_t($0000002); 110 INADDR_MAX_LOCAL_GROUP = in_addr_t($e00000ff); 111 112type 113 Pin6_addr = ^in6_addr; 114 in6_addr = record 115 case longint of 116 0 : ( in6_u : record 117 case longint of 118 0 : ( u6_addr8 : array[0..15] of uint8_t ); 119 1 : ( u6_addr16 : array[0..7] of uint16_t ); 120 2 : ( u6_addr32 : array[0..3] of uint32_t ); 121 end;); 122 1 : (case Integer of 123 0: (s6_addr: packed array [0..16-1] of __uint8_t); 124 1: (s6_addr16: packed array [0..8-1] of uint16_t); 125 2: (s6_addr32: packed array [0..4-1] of uint32_t); 126 ); 127 end; 128 129 130Const 131 IN6ADDR_ANY_INIT : in6_addr = ( in6_u : (U6_addr8 : (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 )) ); 132 IN6ADDR_LOOPBACK_INIT : in6_addr = ( in6_u : (U6_addr8 : ( 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 ))); 133 134const 135 INET_ADDRSTRLEN = 16; 136 INET6_ADDRSTRLEN = 46; 137 138Type 139 Psockaddr_in6 = ^sockaddr_in6; 140 sockaddr_in6 = record 141 sin6_family: sa_family_t; 142 sin6_port : in_port_t; 143 sin6_flowinfo : uint32_t; 144 sin6_addr : in6_addr; 145 sin6_scope_id : uint32_t; 146 end; 147 148 Pipv6_mreq = ^ipv6_mreq; 149 ipv6_mreq = record 150 ipv6mr_multiaddr : in6_addr; 151 ipv6mr_interface : dword; 152 end; 153 154type 155 in6_pktinfo = {packed} record 156 ipi6_addr: in6_addr; { src/dst IPv6 address } 157 ipi6_ifindex: Cardinal; { send/recv interface index } 158 end; 159 160Function IN6_IS_ADDR_UNSPECIFIED(const a: in6_addr): Boolean; 161Function IN6_IS_ADDR_LOOPBACK(const a: in6_addr): Boolean; 162Function IN6_IS_ADDR_MULTICAST(const a: in6_addr): Boolean; 163Function IN6_IS_ADDR_LINKLOCAL(const a: in6_addr): Boolean; 164Function IN6_IS_ADDR_SITELOCAL(const a: in6_addr): Boolean; 165Function IN6_IS_ADDR_V4MAPPED(const a: in6_addr): Boolean; 166Function IN6_IS_ADDR_V4COMPAT(const a: in6_addr): Boolean; 167Function IN6_ARE_ADDR_EQUAL(const a, b: in6_addr): Boolean; 168Function IN6_IS_ADDR_MC_NODELOCAL(const a: in6_addr): Boolean; 169Function IN6_IS_ADDR_MC_LINKLOCAL(const a: in6_addr): Boolean; 170Function IN6_IS_ADDR_MC_SITELOCAL(const a: in6_addr): Boolean; 171Function IN6_IS_ADDR_MC_ORGLOCAL(const a: in6_addr): Boolean; 172Function IN6_IS_ADDR_MC_GLOBAL(const a: in6_addr): Boolean; 173 174function ntohl(__netlong:uint32_t):uint32_t;cdecl;external clib name 'ntohl'; 175function ntohs(__netshort:uint16_t):uint16_t;cdecl;external clib name 'ntohs'; 176function htonl(__hostlong:uint32_t):uint32_t;cdecl;external clib name 'htonl'; 177function htons(__hostshort:uint16_t):uint16_t;cdecl;external clib name 'htons'; 178 179function bindresvport6(__sockfd:longint; __sock_in:Psockaddr_in6):longint;cdecl;external clib name 'bindresvport6'; 180function bindresvport(__sockfd:longint; __sock_in:Psockaddr_in):longint;cdecl;external clib name 'bindresvport'; 181 182