Blame


1 cfa37a7b 2004-04-10 devnull .TH IP 3
2 cfa37a7b 2004-04-10 devnull .SH NAME
3 058b0118 2005-01-03 devnull eipfmt, parseip, parseipmask, v4parseip, v4parsecidr, parseether, myipaddr, myetheraddr, maskip, equivip, defmask, isv4, v4tov6, v6tov4, nhgetl, nhgets, nhgetv, hnputl, hnputs, hnputv, ptclbsum, readipifc \- Internet protocol
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
5 cfa37a7b 2004-04-10 devnull .B #include <u.h>
6 cfa37a7b 2004-04-10 devnull .br
7 cfa37a7b 2004-04-10 devnull .B #include <libc.h>
8 cfa37a7b 2004-04-10 devnull .br
9 cfa37a7b 2004-04-10 devnull .B #include <ip.h>
10 cfa37a7b 2004-04-10 devnull .PP
11 cfa37a7b 2004-04-10 devnull .B
12 cfa37a7b 2004-04-10 devnull int eipfmt(Fmt*)
13 cfa37a7b 2004-04-10 devnull .PP
14 cfa37a7b 2004-04-10 devnull .B
15 cfa37a7b 2004-04-10 devnull ulong parseip(uchar *ipaddr, char *str)
16 cfa37a7b 2004-04-10 devnull .PP
17 cfa37a7b 2004-04-10 devnull .B
18 cfa37a7b 2004-04-10 devnull ulong parseipmask(uchar *ipaddr, char *str)
19 cfa37a7b 2004-04-10 devnull .PP
20 cfa37a7b 2004-04-10 devnull .B
21 cfa37a7b 2004-04-10 devnull char* v4parseip(uchar *ipaddr, char *str)
22 cfa37a7b 2004-04-10 devnull .PP
23 cfa37a7b 2004-04-10 devnull .B
24 cfa37a7b 2004-04-10 devnull ulong v4parsecidr(uchar *addr, uchar *mask, char *str)
25 cfa37a7b 2004-04-10 devnull .PP
26 cfa37a7b 2004-04-10 devnull .B
27 cfa37a7b 2004-04-10 devnull int parseether(uchar *eaddr, char *str)
28 cfa37a7b 2004-04-10 devnull .PP
29 cfa37a7b 2004-04-10 devnull .B
30 cfa37a7b 2004-04-10 devnull int myetheraddr(uchar *eaddr, char *dev)
31 cfa37a7b 2004-04-10 devnull .PP
32 cfa37a7b 2004-04-10 devnull .B
33 cfa37a7b 2004-04-10 devnull int myipaddr(uchar *ipaddr, char *net)
34 cfa37a7b 2004-04-10 devnull .PP
35 cfa37a7b 2004-04-10 devnull .B
36 cfa37a7b 2004-04-10 devnull void maskip(uchar *from, uchar *mask, uchar *to)
37 cfa37a7b 2004-04-10 devnull .PP
38 cfa37a7b 2004-04-10 devnull .B
39 cfa37a7b 2004-04-10 devnull int equivip(uchar *ipaddr1, uchar *ipaddr2)
40 cfa37a7b 2004-04-10 devnull .PP
41 cfa37a7b 2004-04-10 devnull .B
42 cfa37a7b 2004-04-10 devnull uchar* defmask(uchar *ipaddr)
43 cfa37a7b 2004-04-10 devnull .PP
44 cfa37a7b 2004-04-10 devnull .B
45 cfa37a7b 2004-04-10 devnull int isv4(uchar *ipaddr)
46 cfa37a7b 2004-04-10 devnull .PP
47 cfa37a7b 2004-04-10 devnull .B
48 cfa37a7b 2004-04-10 devnull void v4tov6(uchar *ipv6, uchar *ipv4)
49 cfa37a7b 2004-04-10 devnull .PP
50 cfa37a7b 2004-04-10 devnull .B
51 cfa37a7b 2004-04-10 devnull void v6tov4(uchar *ipv4, uchar *ipv6)
52 cfa37a7b 2004-04-10 devnull .PP
53 cfa37a7b 2004-04-10 devnull .B
54 cfa37a7b 2004-04-10 devnull ushort nhgets(void *p)
55 cfa37a7b 2004-04-10 devnull .PP
56 cfa37a7b 2004-04-10 devnull .B
57 cfa37a7b 2004-04-10 devnull uint nhgetl(void *p)
58 cfa37a7b 2004-04-10 devnull .PP
59 cfa37a7b 2004-04-10 devnull .B
60 058b0118 2005-01-03 devnull uvlong nhgetv(void *p)
61 058b0118 2005-01-03 devnull .PP
62 058b0118 2005-01-03 devnull .B
63 cfa37a7b 2004-04-10 devnull void hnputs(void *p, ushort v)
64 cfa37a7b 2004-04-10 devnull .PP
65 cfa37a7b 2004-04-10 devnull .B
66 cfa37a7b 2004-04-10 devnull void hnputl(void *p, uint v)
67 cfa37a7b 2004-04-10 devnull .PP
68 cfa37a7b 2004-04-10 devnull .B
69 058b0118 2005-01-03 devnull void hnputv(void *p, uvlong v)
70 058b0118 2005-01-03 devnull .PP
71 058b0118 2005-01-03 devnull .B
72 cfa37a7b 2004-04-10 devnull ushort ptclbsum(uchar *a, int n)
73 cfa37a7b 2004-04-10 devnull .PP
74 cfa37a7b 2004-04-10 devnull .B
75 cfa37a7b 2004-04-10 devnull Ipifc* readipifc(char *net, Ipifc *ifc, int index)
76 cfa37a7b 2004-04-10 devnull .PP
77 cfa37a7b 2004-04-10 devnull .B
78 cfa37a7b 2004-04-10 devnull uchar IPv4bcast[IPaddrlen];
79 cfa37a7b 2004-04-10 devnull .PP
80 cfa37a7b 2004-04-10 devnull .B
81 cfa37a7b 2004-04-10 devnull uchar IPv4allsys[IPaddrlen];
82 cfa37a7b 2004-04-10 devnull .PP
83 cfa37a7b 2004-04-10 devnull .B
84 cfa37a7b 2004-04-10 devnull uchar IPv4allrouter[IPaddrlen];
85 cfa37a7b 2004-04-10 devnull .PP
86 cfa37a7b 2004-04-10 devnull .B
87 cfa37a7b 2004-04-10 devnull uchar IPallbits[IPaddrlen];
88 cfa37a7b 2004-04-10 devnull .PP
89 cfa37a7b 2004-04-10 devnull .B
90 cfa37a7b 2004-04-10 devnull uchar IPnoaddr[IPaddrlen];
91 cfa37a7b 2004-04-10 devnull .PP
92 cfa37a7b 2004-04-10 devnull .B
93 cfa37a7b 2004-04-10 devnull uchar v4prefix[IPaddrlen];
94 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
95 cfa37a7b 2004-04-10 devnull These routines are used by Internet Protocol (IP) programs to
96 cfa37a7b 2004-04-10 devnull manipulate IP and Ethernet addresses.
97 cfa37a7b 2004-04-10 devnull Plan 9, by default, uses V6 format IP addresses. Since V4
98 cfa37a7b 2004-04-10 devnull addresses fit into the V6 space, all IP addresses can be represented.
99 cfa37a7b 2004-04-10 devnull IP addresses are stored as a string of 16
100 cfa37a7b 2004-04-10 devnull .B unsigned
101 cfa37a7b 2004-04-10 devnull .BR chars ,
102 cfa37a7b 2004-04-10 devnull Ethernet
103 cfa37a7b 2004-04-10 devnull addresses as 6
104 cfa37a7b 2004-04-10 devnull .B unsigned
105 cfa37a7b 2004-04-10 devnull .BR chars .
106 cfa37a7b 2004-04-10 devnull Either V4 or V6 string representation can be used for IP addresses.
107 cfa37a7b 2004-04-10 devnull For V4 addresses, the representation can be (up to) 4 decimal
108 cfa37a7b 2004-04-10 devnull integers from 0 to 255 separated by periods.
109 cfa37a7b 2004-04-10 devnull For V6 addresses, the representation is (up to) 8 hex integers
110 cfa37a7b 2004-04-10 devnull from 0x0 to 0xFFFF separated by colons.
111 cfa37a7b 2004-04-10 devnull Strings of 0 integers can be elided using two colons.
112 cfa37a7b 2004-04-10 devnull For example,
113 cfa37a7b 2004-04-10 devnull .B FFFF::1111
114 cfa37a7b 2004-04-10 devnull is equivalent to
115 cfa37a7b 2004-04-10 devnull .BR FFFF:0:0:0:0:0:0:1111 .
116 cfa37a7b 2004-04-10 devnull The string representation for IP masks is a superset of the
117 cfa37a7b 2004-04-10 devnull address representation. It includes slash notation that indicates
118 cfa37a7b 2004-04-10 devnull the number of leading 1 bits in the mask. Thus, a
119 cfa37a7b 2004-04-10 devnull V4 class C mask can be represented as
120 cfa37a7b 2004-04-10 devnull .BR FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FF00 ,
121 cfa37a7b 2004-04-10 devnull .BR 255.255.255.0 ,
122 cfa37a7b 2004-04-10 devnull or
123 cfa37a7b 2004-04-10 devnull .BR /120.
124 cfa37a7b 2004-04-10 devnull The string representation of Ethernet addresses is exactly
125 cfa37a7b 2004-04-10 devnull 12 hexadecimal digits.
126 cfa37a7b 2004-04-10 devnull .PP
127 cfa37a7b 2004-04-10 devnull .I Eipfmt
128 cfa37a7b 2004-04-10 devnull is a
129 d32deab1 2020-08-16 rsc .MR print (3)
130 cfa37a7b 2004-04-10 devnull formatter for Ethernet (verb
131 cfa37a7b 2004-04-10 devnull .BR E )
132 cfa37a7b 2004-04-10 devnull addresses,
133 cfa37a7b 2004-04-10 devnull IP V6 (verb
134 cfa37a7b 2004-04-10 devnull .BR I )
135 cfa37a7b 2004-04-10 devnull addresses,
136 cfa37a7b 2004-04-10 devnull IP V4 (verb
137 cfa37a7b 2004-04-10 devnull .BR V )
138 cfa37a7b 2004-04-10 devnull addresses,
139 cfa37a7b 2004-04-10 devnull and IP V6 (verb
140 cfa37a7b 2004-04-10 devnull .BR M )
141 cfa37a7b 2004-04-10 devnull masks.
142 cfa37a7b 2004-04-10 devnull .PP
143 cfa37a7b 2004-04-10 devnull .I Parseip
144 cfa37a7b 2004-04-10 devnull converts a string pointed to by
145 cfa37a7b 2004-04-10 devnull .I str
146 cfa37a7b 2004-04-10 devnull to a 16-byte IP address starting at
147 cfa37a7b 2004-04-10 devnull .IR ipaddr .
148 cfa37a7b 2004-04-10 devnull As a concession to backwards compatibility,
149 cfa37a7b 2004-04-10 devnull if the string is a V4 address, the return value
150 cfa37a7b 2004-04-10 devnull is an unsigned long integer containing the big-endian V4 address.
151 cfa37a7b 2004-04-10 devnull If not, the return value is 6.
152 cfa37a7b 2004-04-10 devnull .I Parseipmask
153 cfa37a7b 2004-04-10 devnull converts a string pointed to by
154 cfa37a7b 2004-04-10 devnull .I str
155 cfa37a7b 2004-04-10 devnull to a 6-byte IP mask starting at
156 cfa37a7b 2004-04-10 devnull .IR ipaddr .
157 cfa37a7b 2004-04-10 devnull It too returns an unsigned long big-endian V4 address or 6.
158 cfa37a7b 2004-04-10 devnull Both routines return -1 on errors.
159 cfa37a7b 2004-04-10 devnull .PP
160 cfa37a7b 2004-04-10 devnull .I V4parseip
161 cfa37a7b 2004-04-10 devnull converts a string pointed to by
162 cfa37a7b 2004-04-10 devnull .I str
163 cfa37a7b 2004-04-10 devnull to a 4-byte V4 IP address starting at
164 cfa37a7b 2004-04-10 devnull .IR ipaddr .
165 cfa37a7b 2004-04-10 devnull .PP
166 cfa37a7b 2004-04-10 devnull .I V4parsecidr
167 cfa37a7b 2004-04-10 devnull converts a string of the form
168 cfa37a7b 2004-04-10 devnull addr/mask, pointed to by
169 cfa37a7b 2004-04-10 devnull .IR str ,
170 cfa37a7b 2004-04-10 devnull to a 4-byte V4 IP address starting at
171 cfa37a7b 2004-04-10 devnull .I ipaddr
172 cfa37a7b 2004-04-10 devnull and a 4-byte V4 IP mask starting at
173 cfa37a7b 2004-04-10 devnull .IR mask .
174 cfa37a7b 2004-04-10 devnull .PP
175 cfa37a7b 2004-04-10 devnull .I Myipaddr
176 cfa37a7b 2004-04-10 devnull returns the first valid IP address in
177 cfa37a7b 2004-04-10 devnull the IP stack rooted at
178 cfa37a7b 2004-04-10 devnull .IR net .
179 cfa37a7b 2004-04-10 devnull .PP
180 cfa37a7b 2004-04-10 devnull .I Parseether
181 cfa37a7b 2004-04-10 devnull converts a string pointed to by
182 cfa37a7b 2004-04-10 devnull .I str
183 cfa37a7b 2004-04-10 devnull to a 6-byte Ethernet address starting at
184 cfa37a7b 2004-04-10 devnull .IR eaddr .
185 cfa37a7b 2004-04-10 devnull .I Myetheraddr
186 cfa37a7b 2004-04-10 devnull reads the Ethernet address string from file
187 cfa37a7b 2004-04-10 devnull .IB dev /1/stats
188 cfa37a7b 2004-04-10 devnull and parses it into
189 cfa37a7b 2004-04-10 devnull .IR eaddr .
190 cfa37a7b 2004-04-10 devnull Both routines return a negative number on errors.
191 cfa37a7b 2004-04-10 devnull .PP
192 cfa37a7b 2004-04-10 devnull .I Maskip
193 cfa37a7b 2004-04-10 devnull places the bit-wise AND of the IP addresses pointed
194 cfa37a7b 2004-04-10 devnull to by its first two arguments into the buffer pointed
195 cfa37a7b 2004-04-10 devnull to by the third.
196 cfa37a7b 2004-04-10 devnull .PP
197 cfa37a7b 2004-04-10 devnull .I Equivip
198 cfa37a7b 2004-04-10 devnull returns non-zero if the IP addresses pointed to by its two
199 cfa37a7b 2004-04-10 devnull arguments are equal.
200 cfa37a7b 2004-04-10 devnull .PP
201 cfa37a7b 2004-04-10 devnull .I Defmask
202 cfa37a7b 2004-04-10 devnull returns the standard class A, B, or C mask for
203 cfa37a7b 2004-04-10 devnull .IR ipaddr .
204 cfa37a7b 2004-04-10 devnull .PP
205 cfa37a7b 2004-04-10 devnull .I Isv4
206 cfa37a7b 2004-04-10 devnull returns non-zero if the V6 address is in the V4 space, that is,
207 cfa37a7b 2004-04-10 devnull if it starts with
208 cfa37a7b 2004-04-10 devnull .BR 0:0:0:0:0:0:FFFF .
209 cfa37a7b 2004-04-10 devnull .I V4tov6
210 cfa37a7b 2004-04-10 devnull converts the V4 address,
211 cfa37a7b 2004-04-10 devnull .IR v4ip ,
212 cfa37a7b 2004-04-10 devnull to a V6 address and puts the result in
213 cfa37a7b 2004-04-10 devnull .IR v6ip .
214 cfa37a7b 2004-04-10 devnull .I V6tov4
215 cfa37a7b 2004-04-10 devnull converts the V6 address,
216 cfa37a7b 2004-04-10 devnull .IR v6ip ,
217 cfa37a7b 2004-04-10 devnull to a V4 address and puts the result in
218 cfa37a7b 2004-04-10 devnull .IR v4ip .
219 cfa37a7b 2004-04-10 devnull .PP
220 058b0118 2005-01-03 devnull .IR Hnputs ,
221 058b0118 2005-01-03 devnull .IR hnputl ,
222 cfa37a7b 2004-04-10 devnull and
223 058b0118 2005-01-03 devnull .I hnputv
224 058b0118 2005-01-03 devnull are used to store 16-, 32-, and 64-bit integers into IP big-endian form.
225 058b0118 2005-01-03 devnull .IR Nhgets ,
226 058b0118 2005-01-03 devnull .IR nhgetl ,
227 cfa37a7b 2004-04-10 devnull and
228 058b0118 2005-01-03 devnull .I nhgetv
229 058b0118 2005-01-03 devnull convert big-endian 2-, 4-, and 8-byte quantities into integers.
230 cfa37a7b 2004-04-10 devnull .PP
231 cfa37a7b 2004-04-10 devnull .I Pctlbsum
232 cfa37a7b 2004-04-10 devnull returns the one's complement checksum used in IP protocols, typically invoked as
233 cfa37a7b 2004-04-10 devnull .EX
234 cfa37a7b 2004-04-10 devnull hnputs(hdr->cksum, ~ptclbsum(data, len) & 0xffff);
235 cfa37a7b 2004-04-10 devnull .EE
236 cfa37a7b 2004-04-10 devnull .PP
237 cfa37a7b 2004-04-10 devnull A number of standard IP addresses in V6 format are also defined. They
238 cfa37a7b 2004-04-10 devnull are:
239 cfa37a7b 2004-04-10 devnull .IP \f5IPv4bcast
240 cfa37a7b 2004-04-10 devnull the V4 broadcast address
241 cfa37a7b 2004-04-10 devnull .IP \f5IPv4allsys
242 cfa37a7b 2004-04-10 devnull the V4 all systems multicast address
243 cfa37a7b 2004-04-10 devnull .IP \f5IPv4allrouter
244 cfa37a7b 2004-04-10 devnull the V4 all routers multicast address
245 cfa37a7b 2004-04-10 devnull .IP \f5IPallbits
246 cfa37a7b 2004-04-10 devnull the V6 all bits on address
247 cfa37a7b 2004-04-10 devnull .IP \f5IPnoaddr
248 cfa37a7b 2004-04-10 devnull the V6 null address, all zeros
249 cfa37a7b 2004-04-10 devnull .IP \f5v4prefix
250 cfa37a7b 2004-04-10 devnull the IP V6 prefix to all embedded V4 addresses
251 cfa37a7b 2004-04-10 devnull .PP
252 cfa37a7b 2004-04-10 devnull .I Readipifc
253 cfa37a7b 2004-04-10 devnull returns information about
254 cfa37a7b 2004-04-10 devnull a particular interface (\fIindex\fP >= 0)
255 cfa37a7b 2004-04-10 devnull or all IP interfaces (\fIindex\fP < 0)
256 cfa37a7b 2004-04-10 devnull configured under a
257 cfa37a7b 2004-04-10 devnull mount point
258 cfa37a7b 2004-04-10 devnull .IR net ,
259 cfa37a7b 2004-04-10 devnull default
260 cfa37a7b 2004-04-10 devnull .BR /net .
261 cfa37a7b 2004-04-10 devnull Each interface is described by one
262 cfa37a7b 2004-04-10 devnull .I Ipifc
263 cfa37a7b 2004-04-10 devnull structure which in turn points to a linked list of
264 cfa37a7b 2004-04-10 devnull .IR Iplifc
265 cfa37a7b 2004-04-10 devnull structures describing the addresses assigned
266 cfa37a7b 2004-04-10 devnull to this interface.
267 cfa37a7b 2004-04-10 devnull If the list
268 cfa37a7b 2004-04-10 devnull .IR ifc
269 cfa37a7b 2004-04-10 devnull is supplied,
270 cfa37a7b 2004-04-10 devnull that list is freed.
271 cfa37a7b 2004-04-10 devnull Thus, subsequent calls can be used
272 cfa37a7b 2004-04-10 devnull to free the list returned by the previous call.
273 cfa37a7b 2004-04-10 devnull .I Ipifc
274 cfa37a7b 2004-04-10 devnull is:
275 cfa37a7b 2004-04-10 devnull .PP
276 cfa37a7b 2004-04-10 devnull .EX
277 cfa37a7b 2004-04-10 devnull typedef struct Ipifc
278 cfa37a7b 2004-04-10 devnull {
279 cfa37a7b 2004-04-10 devnull Ipifc *next;
280 cfa37a7b 2004-04-10 devnull Iplifc *lifc; /* local addressses */
281 cfa37a7b 2004-04-10 devnull
282 cfa37a7b 2004-04-10 devnull /* per ip interface */
283 cfa37a7b 2004-04-10 devnull int index; /* number of interface in ipifc dir */
284 cfa37a7b 2004-04-10 devnull char dev[64]; /* associated physical device */
285 cfa37a7b 2004-04-10 devnull int mtu; /* max transfer unit */
286 cfa37a7b 2004-04-10 devnull
287 cfa37a7b 2004-04-10 devnull long validlt; /* valid life time */
288 cfa37a7b 2004-04-10 devnull long preflt; /* preferred life time */
289 cfa37a7b 2004-04-10 devnull uchar sendra6; /* on == send router adv */
290 cfa37a7b 2004-04-10 devnull uchar recvra6; /* on == rcv router adv */
291 cfa37a7b 2004-04-10 devnull
292 cfa37a7b 2004-04-10 devnull ulong pktin; /* packets read */
293 cfa37a7b 2004-04-10 devnull ulong pktout; /* packets written */
294 cfa37a7b 2004-04-10 devnull ulong errin; /* read errors */
295 cfa37a7b 2004-04-10 devnull ulong errout; /* write errors */
296 cfa37a7b 2004-04-10 devnull Ipv6rp rp; /* route advertisement params */
297 cfa37a7b 2004-04-10 devnull } Ipifc;
298 cfa37a7b 2004-04-10 devnull .EE
299 cfa37a7b 2004-04-10 devnull .PP
300 cfa37a7b 2004-04-10 devnull .I Iplifc
301 cfa37a7b 2004-04-10 devnull is:
302 cfa37a7b 2004-04-10 devnull .PP
303 cfa37a7b 2004-04-10 devnull .EX
304 cfa37a7b 2004-04-10 devnull struct Iplifc
305 cfa37a7b 2004-04-10 devnull {
306 cfa37a7b 2004-04-10 devnull Iplifc *next;
307 cfa37a7b 2004-04-10 devnull
308 cfa37a7b 2004-04-10 devnull uchar ip[IPaddrlen];
309 cfa37a7b 2004-04-10 devnull uchar mask[IPaddrlen];
310 cfa37a7b 2004-04-10 devnull uchar net[IPaddrlen]; /* ip & mask */
311 cfa37a7b 2004-04-10 devnull ulong preflt; /* preferred lifetime */
312 cfa37a7b 2004-04-10 devnull ulong validlt; /* valid lifetime */
313 cfa37a7b 2004-04-10 devnull };
314 cfa37a7b 2004-04-10 devnull .EE
315 cfa37a7b 2004-04-10 devnull .PP
316 cfa37a7b 2004-04-10 devnull .I Ipv6rp
317 cfa37a7b 2004-04-10 devnull is:
318 cfa37a7b 2004-04-10 devnull struct Ipv6rp
319 cfa37a7b 2004-04-10 devnull {
320 cfa37a7b 2004-04-10 devnull int mflag;
321 cfa37a7b 2004-04-10 devnull int oflag;
322 cfa37a7b 2004-04-10 devnull int maxraint; /* max route adv interval */
323 cfa37a7b 2004-04-10 devnull int minraint; /* min route adv interval */
324 cfa37a7b 2004-04-10 devnull int linkmtu;
325 cfa37a7b 2004-04-10 devnull int reachtime;
326 cfa37a7b 2004-04-10 devnull int rxmitra;
327 cfa37a7b 2004-04-10 devnull int ttl;
328 cfa37a7b 2004-04-10 devnull int routerlt;
329 cfa37a7b 2004-04-10 devnull };
330 cfa37a7b 2004-04-10 devnull .PP
331 cfa37a7b 2004-04-10 devnull .I Dev
332 cfa37a7b 2004-04-10 devnull contains the first 64 bytes of the device configured with this
333 cfa37a7b 2004-04-10 devnull interface.
334 cfa37a7b 2004-04-10 devnull .I Net
335 cfa37a7b 2004-04-10 devnull is
336 cfa37a7b 2004-04-10 devnull .IB ip & mask
337 cfa37a7b 2004-04-10 devnull if the network is multipoint or
338 cfa37a7b 2004-04-10 devnull the remote address if the network is
339 cfa37a7b 2004-04-10 devnull point to point.
340 cfa37a7b 2004-04-10 devnull .SH SOURCE
341 c3674de4 2005-01-11 devnull .B \*9/src/libip
342 cfa37a7b 2004-04-10 devnull .SH SEE ALSO
343 d32deab1 2020-08-16 rsc .MR print (3)