]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/cmd/ip/ipconfig/ipconfig.h
libc: add procsetname()
[plan9front.git] / sys / src / cmd / ip / ipconfig / ipconfig.h
index 555073c1439142db2b8746595ba6a48426443716..c4784a5e3c31e8d587940b6f983e771d5ed00497 100644 (file)
@@ -1,3 +1,23 @@
+/* possible verbs */
+enum
+{
+       /* commands */
+       Vadd,
+       Vremove,
+       Vunbind,
+       Vaddpref6,
+       Vra6,
+
+       /* media */
+       Vether,
+       Vgbe,
+       Vppp,
+       Vloopback,
+       Vtorus,
+       Vtree,
+       Vpkt,
+};
+
 typedef struct Conf Conf;
 typedef struct Ctl Ctl;
 
@@ -8,7 +28,7 @@ struct Conf
        char    *dev;
        char    mpoint[32];
        int     cfd;                    /* ifc control channel */
-       int     dfd;                    /* ifc data channel (for ppp) */
+       int     rfd;                    /* iproute control channel */
        char    *cputype;
        uchar   hwa[32];                /* hardware address */
        int     hwatype;
@@ -22,10 +42,10 @@ struct Conf
        uchar   laddr[IPaddrlen];
        uchar   mask[IPaddrlen];
        uchar   raddr[IPaddrlen];
-       uchar   dns[2*IPaddrlen];
+       uchar   dns[8*IPaddrlen];
        uchar   fs[2*IPaddrlen];
        uchar   auth[2*IPaddrlen];
-       uchar   ntp[IPaddrlen];
+       uchar   ntp[2*IPaddrlen];
        int     mtu;
 
        /* dhcp specific */
@@ -34,8 +54,9 @@ struct Conf
        ulong   xid;
        ulong   starttime;
        char    sname[64];
-       char    hostname[32];
-       char    domainname[64];
+       char    hostname[256];
+       char    domainname[256];
+       char    dnsdomain[256];
        uchar   server[IPaddrlen];      /* server IP address */
        ulong   offered;                /* offered lease time */
        ulong   lease;                  /* lease time */
@@ -46,9 +67,6 @@ struct Conf
         * IPv6
         */
 
-       /* solicitation specific - XXX add support for IPv6 leases */
-//     ulong   solicit_retries;
-
        /* router-advertisement related */
        uchar   sendra;
        uchar   recvra;
@@ -57,14 +75,13 @@ struct Conf
        int     maxraint; /* rfc2461, p.39: 4sec ≤ maxraint ≤ 1800sec, def 600 */
        int     minraint;       /* 3sec ≤ minraint ≤ 0.75*maxraint */
        int     linkmtu;
+       int     routerlt;       /* router life time */
        int     reachtime;      /* 3,600,000 msec, default 0 */
        int     rxmitra;        /* default 0 */
        int     ttl;            /* default 0 (unspecified) */
-       /* default gateway params */
-       uchar   v6gaddr[IPaddrlen];
-       int     routerlt;       /* router life time */
 
        /* prefix related */
+       uchar   lladdr[IPaddrlen];
        uchar   v6pref[IPaddrlen];
        int     prefixlen;
        uchar   onlink;         /* flag: address is `on-link' */
@@ -79,184 +96,62 @@ struct Ctl
        char    *ctl;
 };
 
-extern Ctl *firstctl, **ctll;
-
-extern Conf conf;
-
+extern Conf    conf;
+extern int     myifc;
+extern int     beprimary;
 extern int     noconfig;
-extern int     ipv6auto;
+
 extern int     debug;
-extern int     dodhcp;
 extern int     dolog;
-extern int     nip;
+
 extern int     plan9;
+extern int     Oflag;
+
 extern int     dupl_disc;
 
-extern Conf    conf;
-extern int     myifc;
-extern char    *vs;
+extern int     nodhcpwatch;
+extern int     sendhostname;
+extern char    *ndboptions;
+
+void   usage(void);
+int    ip4cfg(void);
+void   ipunconfig(void);
+
+void   adddefroute(uchar*, uchar*, uchar*, uchar*);
+void   removedefroute(uchar*, uchar*, uchar*, uchar*);
 
-void   adddefroute(char*, uchar*);
-void   binddevice(void);
-void   bootprequest(void);
-void   controldevice(void);
-void   dhcpquery(int, int);
-void   dhcprecv(void);
-void   dhcpsend(int);
-int    dhcptimer(void);
-void   dhcpwatch(int);
-void   doadd(int);
-void   doremove(void);
-void   dounbind(void);
-int    getndb(void);
-int    ipconfig4(void);
-int    ipconfig6(int);
 long   jitter(void);
-void   lookforip(char*);
-void   mkclientid(void);
-int    nipifcs(char*);
-int    openlisten(void);
-uchar  *optaddaddr(uchar*, int, uchar*);
-uchar  *optaddbyte(uchar*, int, int);
-uchar  *optaddstr(uchar*, int, char*);
-uchar  *optadd(uchar*, int, void*, int);
-uchar  *optaddulong(uchar*, int, ulong);
-uchar  *optaddvec(uchar*, int, uchar*, int);
-int    optgetaddrs(uchar*, int, uchar*, int);
-int    optgetaddr(uchar*, int, uchar*);
-int    optgetbyte(uchar*, int);
-int    optgetstr(uchar*, int, char*, int);
-uchar  *optget(uchar*, int, int*);
-ulong  optgetulong(uchar*, int);
-int    optgetvec(uchar*, int, uchar*, int);
-int    parseoptions(uchar *p, int n);
-int    parseverb(char*);
-void   procsetname(char *fmt, ...);
+void   catch(void*, char*);
+int    countaddrs(uchar *a, int len);
+void   addaddrs(uchar *to, int nto, uchar *from, int nfrom);
+void   addnames(char *d, char *s, int len);
+int    pnames(uchar*, int, char*);
+int    gnames(char*, int, uchar*, int);
+Ndb*   opendatabase(void);
+void   ndb2conf(Ndb *db, uchar *ip);
 void   putndb(void);
+void   refresh(void);
 ulong  randint(ulong low, ulong hi);
-void   tweakservers(void);
-void   usage(void);
 int    validip(uchar*);
 void   warning(char *fmt, ...);
-void   writendb(char*, int, int);
+#define DEBUG if(debug)warning
+#pragma        varargck argpos warning 1
 
 /*
- * IPv6
+ * DHCP
  */
+void   dhcpinit(void);
+void   dhcpquery(int, int);
+void   dhcpwatch(int);
+int    addoption(char*);
 
+/*
+ * IPv6
+ */
+void   v6paraminit(Conf*);
+void   parse6pref(int argc, char **argv);
+void   parse6ra(int argc, char **argv);
 void   doipv6(int);
-int    ipconfig6(int);
-void   recvra6(void);
-void   sendra6(void);
-void   v6paraminit(Conf *);
-
-typedef struct Headers Headers;
-typedef struct Ip4hdr  Ip4hdr;
-typedef struct Lladdropt Lladdropt;
-typedef struct Mtuopt Mtuopt;
-typedef struct Prefixopt Prefixopt;
-typedef struct Routeradv Routeradv;
-typedef struct Routersol Routersol;
-
-enum {
-       IsRouter        = 1,
-       IsHostRecv      = 2,
-       IsHostNoRecv    = 3,
-
-       MAClen          = 6,
-
-       IPv4            = 4,
-       IPv6            = 6,
-       Defmtu          = 1400,
-
-       IP_HOPBYHOP     = 0,
-       ICMPv4          = 1,
-       IP_IGMPPROTO    = 2,
-       IP_TCPPROTO     = 6,
-       IP_UDPPROTO     = 17,
-       IP_ILPROTO      = 40,
-       IP_v6ROUTE      = 43,
-       IP_v6FRAG       = 44,
-       IP_IPsecESP     = 50,
-       IP_IPsecAH      = 51,
-       IP_v6NOMORE     = 59,
-       ICMP6_RS        = 133,
-       ICMP6_RA        = 134,
-
-       IP_IN_IP        = 41,
-};
-
-enum {
-       MFMASK = 1 << 7,
-       OCMASK = 1 << 6,
-       OLMASK = 1 << 7,
-       AFMASK = 1 << 6,
-};
-
-enum {
-       MAXTTL          = 255,
-       D64HLEN         = IPV6HDR_LEN - IPV4HDR_LEN,
-       IP_MAX          = 32*1024,
-};
-
-struct Headers {
-       uchar   dst[IPaddrlen];
-       uchar   src[IPaddrlen];
-};
-
-struct Routersol {
-       uchar   vcf[4];         /* version:4, traffic class:8, flow label:20 */
-       uchar   ploadlen[2];    /* payload length: packet length - 40 */
-       uchar   proto;          /* next header  type */
-       uchar   ttl;            /* hop limit */
-       uchar   src[IPaddrlen];
-       uchar   dst[IPaddrlen];
-       uchar   type;
-       uchar   code;
-       uchar   cksum[2];
-       uchar   res[4];
-};
-
-struct Routeradv {
-       uchar   vcf[4];         /* version:4, traffic class:8, flow label:20 */
-       uchar   ploadlen[2];    /* payload length: packet length - 40 */
-       uchar   proto;          /* next header  type */
-       uchar   ttl;            /* hop limit */
-       uchar   src[IPaddrlen];
-       uchar   dst[IPaddrlen];
-       uchar   type;
-       uchar   code;
-       uchar   cksum[2];
-       uchar   cttl;
-       uchar   mor;
-       uchar   routerlt[2];
-       uchar   rchbltime[4];
-       uchar   rxmtimer[4];
-};
-
-struct Lladdropt {
-       uchar   type;
-       uchar   len;
-       uchar   lladdr[MAClen];
-};
-
-struct Prefixopt {
-       uchar   type;
-       uchar   len;
-       uchar   plen;
-       uchar   lar;
-       uchar   validlt[4];
-       uchar   preflt[4];
-       uchar   reserv[4];
-       uchar   pref[IPaddrlen];
-};
-
-struct Mtuopt {
-       uchar   type;
-       uchar   len;
-       uchar   reserv[2];
-       uchar   mtu[4];
-};
-
 void   ea2lla(uchar *lla, uchar *ea);
-void   ipv62smcast(uchar *smcast, uchar *a);
+int    findllip(uchar *ip, Ipifc *ifc);
+int    ip6cfg(void);