]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/ip/ipconfig/ipconfig.h
merge
[plan9front.git] / sys / src / cmd / ip / ipconfig / ipconfig.h
1 /* possible verbs */
2 enum
3 {
4         /* commands */
5         Vadd,
6         Vremove,
7         Vunbind,
8         Vaddpref6,
9         Vra6,
10
11         /* media */
12         Vether,
13         Vgbe,
14         Vppp,
15         Vloopback,
16         Vtorus,
17         Vtree,
18         Vpkt,
19 };
20
21 typedef struct Conf Conf;
22 typedef struct Ctl Ctl;
23
24 struct Conf
25 {
26         /* locally generated */
27         char    *type;
28         char    *dev;
29         char    mpoint[32];
30         int     cfd;                    /* ifc control channel */
31         int     rfd;                    /* iproute control channel */
32         char    *cputype;
33         uchar   hwa[32];                /* hardware address */
34         int     hwatype;
35         int     hwalen;
36         uchar   cid[32];
37         int     cidlen;
38         char    *baud;
39
40         /* learned info */
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];
49         int     mtu;
50
51         /* dhcp specific */
52         int     state;
53         int     fd;
54         ulong   xid;
55         ulong   starttime;
56         char    sname[64];
57         char    hostname[32];
58         char    domainname[64];
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 */
64
65         /*
66          * IPv6
67          */
68
69         /* router-advertisement related */
70         uchar   sendra;
71         uchar   recvra;
72         uchar   mflag;
73         uchar   oflag;
74         int     maxraint; /* rfc2461, p.39: 4sec ≤ maxraint ≤ 1800sec, def 600 */
75         int     minraint;       /* 3sec ≤ minraint ≤ 0.75*maxraint */
76         int     linkmtu;
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) */
81
82         /* prefix related */
83         uchar   lladdr[IPaddrlen];
84         uchar   v6pref[IPaddrlen];
85         int     prefixlen;
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) */
90
91         char    dnsdomain[256];
92 };
93
94 struct Ctl
95 {
96         Ctl     *next;
97         char    *ctl;
98 };
99
100 extern Conf     conf;
101 extern int      myifc;
102 extern int      beprimary;
103 extern int      noconfig;
104
105 extern int      debug;
106 extern int      dolog;
107
108 extern int      plan9;
109 extern int      Oflag;
110
111 extern int      dupl_disc;
112
113 extern int      nodhcpwatch;
114 extern int      sendhostname;
115 extern char     *ndboptions;
116
117 void    usage(void);
118 int     ip4cfg(void);
119 void    ipunconfig(void);
120
121 void    adddefroute(uchar*, uchar*, uchar*, uchar*);
122 void    removedefroute(uchar*, uchar*, uchar*, uchar*);
123
124 long    jitter(void);
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 int     pnames(uchar*, int, char*);
131 int     gnames(char*, int, uchar*, int);
132 Ndb*    opendatabase(void);
133 void    ndb2conf(Ndb *db, uchar *ip);
134 void    putndb(void);
135 void    refresh(void);
136 ulong   randint(ulong low, ulong hi);
137 int     validip(uchar*);
138 void    warning(char *fmt, ...);
139 #define DEBUG if(debug)warning
140 #pragma varargck argpos warning 1
141
142 /*
143  * DHCP
144  */
145 void    dhcpinit(void);
146 void    dhcpquery(int, int);
147 void    dhcpwatch(int);
148 int     addoption(char*);
149
150 /*
151  * IPv6
152  */
153 void    v6paraminit(Conf*);
154 void    parse6pref(int argc, char **argv);
155 void    parse6ra(int argc, char **argv);
156 void    doipv6(int);
157 void    ea2lla(uchar *lla, uchar *ea);
158 int     findllip(uchar *ip, Ipifc *ifc);
159 int     ip6cfg(void);