Blob


1 #pragma src "/sys/src/libip"
2 #pragma lib "libip.a"
4 enum
5 {
6 IPaddrlen= 16,
7 IPv4addrlen= 4,
8 IPv4off= 12,
9 IPllen= 4,
10 };
12 /*
13 * for reading /net/ipifc
14 */
15 typedef struct Ipifc Ipifc;
16 typedef struct Ipifcs Ipifcs;
18 struct Ipifc
19 {
20 char dev[64];
21 uchar ip[IPaddrlen];
22 uchar mask[IPaddrlen];
23 uchar net[IPaddrlen]; /* ip & mask */
24 Ipifc *next;
25 };
27 struct Ipifcs
28 {
29 Ipifc *first;
30 Ipifc *last;
31 };
33 /*
34 * user level udp headers
35 */
36 enum
37 {
38 Udphdrsize= 36, /* size of a Udphdr */
39 };
41 typedef struct Udphdr Udphdr;
42 struct Udphdr
43 {
44 uchar raddr[IPaddrlen]; /* remote address and port */
45 uchar laddr[IPaddrlen]; /* local address and port */
46 uchar rport[2];
47 uchar lport[2];
48 };
50 uchar* defmask(uchar*);
51 void maskip(uchar*, uchar*, uchar*);
52 int eipconv(va_list*, Fconv*);
53 ulong parseip(uchar*, char*);
54 ulong parseipmask(uchar*, char*);
55 int parseether(uchar*, char*);
56 int myipaddr(uchar*, char*);
57 int myetheraddr(uchar*, char*);
59 void readipifc(char*, Ipifcs*);
61 void hnputl(void*, uint);
62 void hnputs(void*, ushort);
63 uint nhgetl(void*);
64 ushort nhgets(void*);
66 #define ipcmp(x, y) memcmp(x, y, IPaddrlen)
67 #define ipmove(x, y) memmove(x, y, IPaddrlen)
69 extern uchar IPv4bcast[IPaddrlen];
70 extern uchar IPv4bcastobs[IPaddrlen];
71 extern uchar IPv4allsys[IPaddrlen];
72 extern uchar IPv4allrouter[IPaddrlen];
73 extern uchar IPnoaddr[IPaddrlen];
74 extern uchar v4prefix[IPaddrlen];
75 extern uchar IPallbits[IPaddrlen];
77 #define CLASS(p) ((*(uchar*)(p))>>6)