21 typedef struct Conf Conf;
22 typedef struct Ctl Ctl;
26 /* locally generated */
30 int cfd; /* ifc control channel */
31 int rfd; /* iproute control channel */
33 uchar hwa[32]; /* hardware address */
41 uchar gaddr[IPaddrlen];
42 uchar laddr[IPaddrlen];
43 uchar mask[IPaddrlen];
44 uchar raddr[IPaddrlen];
45 uchar dns[8*IPaddrlen];
46 uchar fs[2*IPaddrlen];
47 uchar auth[2*IPaddrlen];
48 uchar ntp[2*IPaddrlen];
59 uchar server[IPaddrlen]; /* server IP address */
60 ulong offered; /* offered lease time */
61 ulong lease; /* lease time */
62 ulong resend; /* # of resends for current state */
63 ulong timeout; /* time to timeout - seconds */
69 /* router-advertisement related */
74 int maxraint; /* rfc2461, p.39: 4sec ≤ maxraint ≤ 1800sec, def 600 */
75 int minraint; /* 3sec ≤ minraint ≤ 0.75*maxraint */
77 int routerlt; /* router life time */
78 int reachtime; /* 3,600,000 msec, default 0 */
79 int rxmitra; /* default 0 */
80 int ttl; /* default 0 (unspecified) */
83 uchar lladdr[IPaddrlen];
84 uchar v6pref[IPaddrlen];
86 uchar onlink; /* flag: address is `on-link' */
87 uchar autoflag; /* flag: autonomous */
88 ulong validlt; /* valid lifetime (seconds) */
89 ulong preflt; /* preferred lifetime (seconds) */
102 extern int beprimary;
111 extern int dupl_disc;
113 extern int nodhcpwatch;
114 extern int sendhostname;
115 extern char *ndboptions;
119 void ipunconfig(void);
121 void adddefroute(uchar*, uchar*, uchar*, uchar*);
122 void removedefroute(int, uchar*, uchar*);
125 void procsetname(char *fmt, ...);
126 void catch(void*, char*);
127 int countaddrs(uchar *a, int len);
128 void addaddrs(uchar *to, int nto, uchar *from, int nfrom);
129 void addnames(char *d, char *s, int len);
130 Ndb* opendatabase(void);
131 void ndb2conf(Ndb *db, uchar *ip);
134 ulong randint(ulong low, ulong hi);
136 void warning(char *fmt, ...);
137 #define DEBUG if(debug)warning
138 #pragma varargck argpos warning 1
144 void dhcpquery(int, int);
146 int addoption(char*);
151 void v6paraminit(Conf*);
152 void parse6pref(int argc, char **argv);
153 void parse6ra(int argc, char **argv);
155 void ea2lla(uchar *lla, uchar *ea);
156 int findllip(uchar *ip, Ipifc *ifc);