1 typedef struct Conf Conf;
2 typedef struct Ctl Ctl;
6 /* locally generated */
10 int cfd; /* ifc control channel */
11 int dfd; /* ifc data channel (for ppp) */
13 uchar hwa[32]; /* hardware address */
21 uchar gaddr[IPaddrlen];
22 uchar laddr[IPaddrlen];
23 uchar mask[IPaddrlen];
24 uchar raddr[IPaddrlen];
25 uchar dns[2*IPaddrlen];
26 uchar fs[2*IPaddrlen];
27 uchar auth[2*IPaddrlen];
39 uchar server[IPaddrlen]; /* server IP address */
40 ulong offered; /* offered lease time */
41 ulong lease; /* lease time */
42 ulong resend; /* # of resends for current state */
43 ulong timeout; /* time to timeout - seconds */
49 /* solicitation specific - XXX add support for IPv6 leases */
50 // ulong solicit_retries;
52 /* router-advertisement related */
57 int maxraint; /* rfc2461, p.39: 4sec ≤ maxraint ≤ 1800sec, def 600 */
58 int minraint; /* 3sec ≤ minraint ≤ 0.75*maxraint */
60 int reachtime; /* 3,600,000 msec, default 0 */
61 int rxmitra; /* default 0 */
62 int ttl; /* default 0 (unspecified) */
63 /* default gateway params */
64 uchar v6gaddr[IPaddrlen];
65 int routerlt; /* router life time */
68 uchar v6pref[IPaddrlen];
70 uchar onlink; /* flag: address is `on-link' */
71 uchar autoflag; /* flag: autonomous */
72 ulong validlt; /* valid lifetime (seconds) */
73 ulong preflt; /* preferred lifetime (seconds) */
82 extern Ctl *firstctl, **ctll;
99 void adddefroute(char*, uchar*);
100 void binddevice(void);
101 void bootprequest(void);
102 void controldevice(void);
103 void dhcpquery(int, int);
115 void lookforip(char*);
116 void mkclientid(void);
118 int openlisten(void);
119 uchar *optaddaddr(uchar*, int, uchar*);
120 uchar *optaddbyte(uchar*, int, int);
121 uchar *optaddstr(uchar*, int, char*);
122 uchar *optadd(uchar*, int, void*, int);
123 uchar *optaddulong(uchar*, int, ulong);
124 uchar *optaddvec(uchar*, int, uchar*, int);
125 int optgetaddrs(uchar*, int, uchar*, int);
126 int optgetaddr(uchar*, int, uchar*);
127 int optgetbyte(uchar*, int);
128 int optgetstr(uchar*, int, char*, int);
129 uchar *optget(uchar*, int, int*);
130 ulong optgetulong(uchar*, int);
131 int optgetvec(uchar*, int, uchar*, int);
132 int parseoptions(uchar *p, int n);
133 int parseverb(char*);
134 void procsetname(char *fmt, ...);
136 ulong randint(ulong low, ulong hi);
137 void tweakservers(void);
140 void warning(char *fmt, ...);
141 void writendb(char*, int, int);
151 void v6paraminit(Conf *);
153 typedef struct Headers Headers;
154 typedef struct Ip4hdr Ip4hdr;
155 typedef struct Lladdropt Lladdropt;
156 typedef struct Mtuopt Mtuopt;
157 typedef struct Prefixopt Prefixopt;
158 typedef struct Routeradv Routeradv;
159 typedef struct Routersol Routersol;
198 D64HLEN = IPV6HDR_LEN - IPV4HDR_LEN,
203 uchar dst[IPaddrlen];
204 uchar src[IPaddrlen];
208 uchar vcf[4]; /* version:4, traffic class:8, flow label:20 */
209 uchar ploadlen[2]; /* payload length: packet length - 40 */
210 uchar proto; /* next header type */
211 uchar ttl; /* hop limit */
212 uchar src[IPaddrlen];
213 uchar dst[IPaddrlen];
221 uchar vcf[4]; /* version:4, traffic class:8, flow label:20 */
222 uchar ploadlen[2]; /* payload length: packet length - 40 */
223 uchar proto; /* next header type */
224 uchar ttl; /* hop limit */
225 uchar src[IPaddrlen];
226 uchar dst[IPaddrlen];
240 uchar lladdr[MAClen];
251 uchar pref[IPaddrlen];
261 void ea2lla(uchar *lla, uchar *ea);
262 void ipv62smcast(uchar *smcast, uchar *a);