source: trunk/Sibyl/RTL/INTERNET.PAS

Last change on this file was 8, checked in by RBRi, 19 years ago

+ rest of sibyl stuff

  • Property svn:eol-style set to native
File size: 3.9 KB
Line 
1UNIT Internet;
2
3INTERFACE
4
5/*
6 * Protocols
7 */
8CONST
9 IPPROTO_IP =0; /* dummy for IP */
10 IPPROTO_ICMP =1; /* control message protocol */
11 IPPROTO_GGP =3; /* gateway^2 (deprecated) */
12 IPPROTO_TCP =6; /* tcp */
13 IPPROTO_EGP =8; /* exterior gateway protocol */
14 IPPROTO_PUP =12; /* pup */
15 IPPROTO_UDP =17; /* user datagram protocol */
16 IPPROTO_IDP =22; /* xns idp */
17
18 IPPROTO_RAW =255; /* raw IP packet */
19 IPPROTO_MAX =256;
20
21
22/*
23 * Ports < IPPORT_RESERVED are reserved for
24 * privileged processes (e.g. root).
25 * Ports > IPPORT_USERRESERVED are reserved
26 * for servers, not necessarily privileged.
27 */
28CONST
29 IPPORT_RESERVED =1024;
30 IPPORT_USERRESERVED =5000;
31
32/*
33 * Link numbers
34 */
35CONST
36 IMPLINK_IP =155;
37 IMPLINK_LOWEXPER =156;
38 IMPLINK_HIGHEXPER =158;
39
40/*
41 * Internet address (a structure for historical reasons)
42 */
43TYPE
44 in_addr=RECORD
45 s_addr:LONGWORD;
46 END;
47
48/*
49 * Definitions of bits in internet address integers.
50 * On subnets, the decomposition of addresses to host and net parts
51 * is done according to subnet mask, not the masks here.
52 */
53CONST
54 IN_CLASSA_NET =$ff000000;
55 IN_CLASSA_NSHIFT =24;
56 IN_CLASSA_HOST =$00ffffff;
57 IN_CLASSA_MAX =128;
58
59 IN_CLASSB_NET =$ffff0000;
60 IN_CLASSB_NSHIFT =16;
61 IN_CLASSB_HOST =$0000ffff;
62 IN_CLASSB_MAX =65536;
63
64 IN_CLASSC_NET =$ffffff00;
65 IN_CLASSC_NSHIFT =8;
66 IN_CLASSC_HOST =$000000ff;
67
68 INADDR_ANY =$00000000;
69 INADDR_BROADCAST =$ffffffff; /* must be masked */
70 INADDR_NONE =$ffffffff; /* -1 return */
71
72 IN_LOOPBACKNET =127; /* official! */
73
74/*
75 * Socket address, internet style.
76 */
77TYPE
78 sockaddr_in=RECORD
79 sin_family:INTEGER;
80 sin_port:WORD;
81 sin_addr:in_addr;
82 sin_zero:CSTRING[7];
83 END;
84
85/*
86 * Options for use with [gs]etsockopt at the IP level.
87 */
88CONST
89 IP_OPTIONS =1; /* set/get IP per-packet options */
90
91IMPORTS
92FUNCTION inet_addr(CONST c:CSTRING):LONGWORD;
93 APIENTRY; 'TCP32DLL' index 5;
94FUNCTION inet_makeaddr(p1,p2:LONGWORD):LONGWORD; {in_addr}
95 APIENTRY; 'TCP32DLL' index 8;
96FUNCTION inet_network(VAR c:CSTRING):LONGWORD;
97 APIENTRY; 'TCP32DLL' index 9;
98FUNCTION inet_ntoa(ia:LONGWORD{in_addr}):LONGWORD;
99 APIENTRY; 'TCP32DLL' index 10;
100FUNCTION inet_lnaof(ia:LONGWORD{in_addr}):LONGWORD;
101 APIENTRY; 'TCP32DLL' index 6;
102FUNCTION inet_netof(ia:LONGWORD{in_addr}):LONGWORD;
103 APIENTRY; 'TCP32DLL' index 7;
104END;
105
106FUNCTION IN_CLASSA(i:LONGINT):BOOLEAN;
107FUNCTION IN_CLASSB(i:LONGINT):BOOLEAN;
108FUNCTION IN_CLASSC(i:LONGINT):BOOLEAN;
109FUNCTION IN_CLASSD(i:LONGINT):BOOLEAN;
110FUNCTION IN_MULTICAST(i:LONGINT):BOOLEAN;
111FUNCTION IN_EXPERIMENTAL(i:LONGINT):BOOLEAN;
112FUNCTION IN_BADCLASS(i:LONGINT):BOOLEAN;
113
114IMPLEMENTATION
115
116FUNCTION IN_CLASSA(i:LONGINT):BOOLEAN;
117BEGIN
118 result:=(((i) AND $80000000) = 0);
119END;
120
121FUNCTION IN_CLASSB(i:LONGINT):BOOLEAN;
122BEGIN
123 result:=(((i) AND $c0000000) = $80000000);
124END;
125
126FUNCTION IN_CLASSC(i:LONGINT):BOOLEAN;
127BEGIN
128 result:=(((i) AND $e0000000) = $c0000000);
129END;
130
131FUNCTION IN_CLASSD(i:LONGINT):BOOLEAN;
132BEGIN
133 result:=(((i) AND $f0000000) = $e0000000);
134END;
135
136FUNCTION IN_MULTICAST(i:LONGINT):BOOLEAN;
137BEGIN
138 result:=IN_CLASSD(i);
139END;
140
141FUNCTION IN_EXPERIMENTAL(i:LONGINT):BOOLEAN;
142BEGIN
143 result:=(((i) AND $e0000000) = $e0000000);
144END;
145
146FUNCTION IN_BADCLASS(i:LONGINT):BOOLEAN;
147BEGIN
148 result:=(((i) AND $f0000000) = $f0000000);
149END;
150
151
152BEGIN
153END.
Note: See TracBrowser for help on using the repository browser.