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