X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=sys%2Fsrc%2Fcmd%2Fip%2Fipconfig%2Fipconfig.h;h=c4784a5e3c31e8d587940b6f983e771d5ed00497;hb=19166f2cf32725b1907c8032ae224282a1fa3f8f;hp=555073c1439142db2b8746595ba6a48426443716;hpb=a9060cc06bee66e12fe16644511f181a4b0cdbd3;p=plan9front.git diff --git a/sys/src/cmd/ip/ipconfig/ipconfig.h b/sys/src/cmd/ip/ipconfig/ipconfig.h index 555073c14..c4784a5e3 100644 --- a/sys/src/cmd/ip/ipconfig/ipconfig.h +++ b/sys/src/cmd/ip/ipconfig/ipconfig.h @@ -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);