Blame


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