3 #if defined(__cplusplus)
7 #pragma src "/sys/src/libip"
9 #pragma varargck type "I" uchar*
10 #pragma varargck type "V" uchar*
11 #pragma varargck type "E" uchar*
12 #pragma varargck type "M" uchar*
23 * for reading /net/ipifc
25 typedef struct Ipifc Ipifc;
26 typedef struct Iplifc Iplifc;
27 typedef struct Ipv6rp Ipv6rp;
34 /* per address on the ip interface */
36 uchar mask[IPaddrlen];
37 uchar net[IPaddrlen]; /* ip & mask */
38 ulong preflt; /* preferred lifetime */
39 ulong validlt; /* valid lifetime */
42 /* default values, one per stack */
56 /* actual interface */
62 /* per ip interface */
63 int index; /* number of interface in ipifc dir */
65 uchar sendra6; /* on == send router adv */
66 uchar recvra6; /* on == rcv router adv */
76 * user level udp headers
80 Udphdrsize= 36, /* size of a Udphdr */
83 typedef struct Udphdr Udphdr;
86 uchar raddr[IPaddrlen]; /* remote address and port */
87 uchar laddr[IPaddrlen]; /* local address and port */
92 uchar* defmask(uchar*);
93 void maskip(uchar*, uchar*, uchar*);
96 ulong parseip(uchar*, char*);
97 ulong parseipmask(uchar*, char*);
98 char* v4parseip(uchar*, char*);
99 char* v4parsecidr(uchar*, uchar*, char*);
100 int parseether(uchar*, char*);
101 int myipaddr(uchar*, char*);
102 int myetheraddr(uchar*, char*);
103 int equivip(uchar*, uchar*);
104 long udpread(int, Udphdr*, void*, long);
105 long udpwrite(int, Udphdr*, void*, long);
107 Ipifc* readipifc(char*, Ipifc*, int);
109 void hnputl(void*, uint);
110 void hnputs(void*, ushort);
112 ushort nhgets(void*);
113 ushort ptclbsum(uchar*, int);
115 int v6tov4(uchar*, uchar*);
116 void v4tov6(uchar*, uchar*);
118 #define ipcmp(x, y) memcmp(x, y, IPaddrlen)
119 #define ipmove(x, y) memmove(x, y, IPaddrlen)
121 extern uchar IPv4bcast[IPaddrlen];
122 extern uchar IPv4bcastobs[IPaddrlen];
123 extern uchar IPv4allsys[IPaddrlen];
124 extern uchar IPv4allrouter[IPaddrlen];
125 extern uchar IPnoaddr[IPaddrlen];
126 extern uchar v4prefix[IPaddrlen];
127 extern uchar IPallbits[IPaddrlen];
129 #define CLASS(p) ((*(uchar*)(p))>>6)
131 #if defined(__cplusplus)