tip.h - plan9port - [fork] Plan 9 from user space | |
git clone git://src.adamsgaard.dk/plan9port | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
tip.h (2778B) | |
--- | |
1 #ifndef _IP_H_ | |
2 #define _IP_H_ 1 | |
3 #if defined(__cplusplus) | |
4 extern "C" { | |
5 #endif | |
6 | |
7 AUTOLIB(ip) | |
8 /* | |
9 #pragma src "/sys/src/libip" | |
10 #pragma lib "libip.a" | |
11 #pragma varargck type "I" uchar* | |
12 #pragma varargck type "V" uchar* | |
13 #pragma varargck type "E" uchar* | |
14 #pragma varargck type "M" uchar* | |
15 */ | |
16 enum | |
17 { | |
18 IPaddrlen= 16, | |
19 IPv4addrlen= 4, | |
20 IPv4off= 12, | |
21 IPllen= 4 | |
22 }; | |
23 | |
24 /* | |
25 * for reading /net/ipifc | |
26 */ | |
27 typedef struct Ipifc Ipifc; | |
28 typedef struct Iplifc Iplifc; | |
29 typedef struct Ipv6rp Ipv6rp; | |
30 | |
31 /* local address */ | |
32 struct Iplifc | |
33 { | |
34 Iplifc *next; | |
35 | |
36 /* per address on the ip interface */ | |
37 uchar ip[IPaddrlen]; | |
38 uchar mask[IPaddrlen]; | |
39 uchar net[IPaddrlen]; /* ip & mask */ | |
40 ulong preflt; /* preferred lifetim… | |
41 ulong validlt; /* valid lifetime */ | |
42 }; | |
43 | |
44 /* default values, one per stack */ | |
45 struct Ipv6rp | |
46 { | |
47 int mflag; | |
48 int oflag; | |
49 int maxraint; | |
50 int minraint; | |
51 int linkmtu; | |
52 int reachtime; | |
53 int rxmitra; | |
54 int ttl; | |
55 int routerlt; | |
56 }; | |
57 | |
58 /* actual interface */ | |
59 struct Ipifc | |
60 { | |
61 Ipifc *next; | |
62 Iplifc *lifc; | |
63 | |
64 /* per ip interface */ | |
65 int index; /* number of interface … | |
66 char dev[64]; | |
67 uchar ether[6]; | |
68 uchar sendra6; /* on == send router adv */ | |
69 uchar recvra6; /* on == rcv router adv */ | |
70 int mtu; | |
71 ulong pktin; | |
72 ulong pktout; | |
73 ulong errin; | |
74 ulong errout; | |
75 Ipv6rp rp; | |
76 }; | |
77 | |
78 /* | |
79 * user level udp headers | |
80 */ | |
81 enum | |
82 { | |
83 Udphdrsize= 52 /* size of a Udphdr */ | |
84 }; | |
85 | |
86 typedef struct Udphdr Udphdr; | |
87 struct Udphdr | |
88 { | |
89 uchar raddr[IPaddrlen]; /* remote address and port… | |
90 uchar laddr[IPaddrlen]; /* local address and port … | |
91 uchar ifcaddr[IPaddrlen]; /* address of ifc messag… | |
92 uchar rport[2]; | |
93 uchar lport[2]; | |
94 }; | |
95 | |
96 uchar* defmask(uchar*); | |
97 void maskip(uchar*, uchar*, uchar*); | |
98 int eipfmt(Fmt*); | |
99 int isv4(uchar*); | |
100 ulong parseip(uchar*, char*); | |
101 ulong parseipmask(uchar*, char*); | |
102 char* v4parseip(uchar*, char*); | |
103 char* v4parsecidr(uchar*, uchar*, char*); | |
104 int parseether(uchar*, char*); | |
105 int myipaddr(uchar*, char*); | |
106 int myetheraddr(uchar*, char*); | |
107 int equivip(uchar*, uchar*); | |
108 long udpread(int, Udphdr*, void*, long); | |
109 long udpwrite(int, Udphdr*, void*, long); | |
110 | |
111 Ipifc* readipifc(char*, Ipifc*, int); | |
112 void freeipifc(Ipifc*); | |
113 | |
114 void hnputv(void*, uvlong); | |
115 void hnputl(void*, uint); | |
116 void hnputs(void*, ushort); | |
117 uint nhgetl(void*); | |
118 uvlong nhgetv(void*); | |
119 ushort nhgets(void*); | |
120 ushort ptclbsum(uchar*, int); | |
121 | |
122 int v6tov4(uchar*, uchar*); | |
123 void v4tov6(uchar*, uchar*); | |
124 | |
125 #define ipcmp(x, y) memcmp(x, y, IPaddrlen) | |
126 #define ipmove(x, y) memmove(x, y, IPaddrlen) | |
127 | |
128 extern uchar IPv4bcast[IPaddrlen]; | |
129 extern uchar IPv4bcastobs[IPaddrlen]; | |
130 extern uchar IPv4allsys[IPaddrlen]; | |
131 extern uchar IPv4allrouter[IPaddrlen]; | |
132 extern uchar IPnoaddr[IPaddrlen]; | |
133 extern uchar v4prefix[IPaddrlen]; | |
134 extern uchar IPallbits[IPaddrlen]; | |
135 | |
136 #define CLASS(p) ((*(uchar*)(p))>>6) | |
137 | |
138 #if defined(__cplusplus) | |
139 } | |
140 #endif | |
141 #endif |