diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-08-12 22:39:44 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-08-12 22:39:44 +0200 |
commit | ab4c0a012f4b57e9a9a2c084097c919a40029380 (patch) | |
tree | 55fbd0c94cd0079bcd8b7aeb6967f33822e74cf0 | |
parent | 9445f08788765dbcc763cc0eab598216cca97667 (diff) | |
download | plan9front-ab4c0a012f4b57e9a9a2c084097c919a40029380.tar.xz |
ip/ipconfig: simplify by combining mklladdr() into mkclientid()
-rw-r--r-- | sys/src/cmd/ip/ipconfig/ipconfig.h | 1 | ||||
-rw-r--r-- | sys/src/cmd/ip/ipconfig/ipv6.c | 2 | ||||
-rw-r--r-- | sys/src/cmd/ip/ipconfig/main.c | 76 |
3 files changed, 31 insertions, 48 deletions
diff --git a/sys/src/cmd/ip/ipconfig/ipconfig.h b/sys/src/cmd/ip/ipconfig/ipconfig.h index 8797c7154..7f58a5148 100644 --- a/sys/src/cmd/ip/ipconfig/ipconfig.h +++ b/sys/src/cmd/ip/ipconfig/ipconfig.h @@ -121,7 +121,6 @@ void ipunconfig(void); void adddefroute(uchar*, uchar*, uchar*, uchar*); void removedefroute(int, uchar*, uchar*); -void mklladdr(void); long jitter(void); void procsetname(char *fmt, ...); void catch(void*, char*); diff --git a/sys/src/cmd/ip/ipconfig/ipv6.c b/sys/src/cmd/ip/ipconfig/ipv6.c index 9f31e37e0..c1e8cde8f 100644 --- a/sys/src/cmd/ip/ipconfig/ipv6.c +++ b/sys/src/cmd/ip/ipconfig/ipv6.c @@ -1139,8 +1139,6 @@ startra6(void) { static char routeon[] = "iprouting 1"; - mklladdr(); - if(conf.recvra > 0) recvra6(); diff --git a/sys/src/cmd/ip/ipconfig/main.c b/sys/src/cmd/ip/ipconfig/main.c index 5bb16bdf0..1ed4bea43 100644 --- a/sys/src/cmd/ip/ipconfig/main.c +++ b/sys/src/cmd/ip/ipconfig/main.c @@ -278,6 +278,32 @@ findifc(char *net, char *dev) return -1; } +static int +isether(void) +{ + return strcmp(conf.type, "ether") == 0 || strcmp(conf.type, "gbe") == 0; +} + +/* create a client id */ +static void +mkclientid(void) +{ + if(isether() && myetheraddr(conf.hwa, conf.dev) == 0){ + conf.hwalen = 6; + conf.hwatype = 1; + conf.cid[0] = conf.hwatype; + memmove(&conf.cid[1], conf.hwa, conf.hwalen); + conf.cidlen = conf.hwalen+1; + } else { + conf.hwatype = -1; + snprint((char*)conf.cid, sizeof conf.cid, + "plan9_%ld.%d", lrand(), getpid()); + conf.cidlen = strlen((char*)conf.cid); + genrandom(conf.hwa, sizeof(conf.hwa)); + } + ea2lla(conf.lladdr, conf.hwa); +} + void main(int argc, char **argv) { @@ -385,6 +411,7 @@ main(int argc, char **argv) switch(action){ case Vadd: + mkclientid(); if(dondbconfig){ dodhcp = 0; ndbconfig(); @@ -394,6 +421,7 @@ main(int argc, char **argv) break; case Vra6: case Vaddpref6: + mkclientid(); doipv6(action); break; case Vremove: @@ -406,50 +434,11 @@ main(int argc, char **argv) exits(nil); } -static int -isether(void) -{ - return strcmp(conf.type, "ether") == 0 || strcmp(conf.type, "gbe") == 0; -} - -/* create link local address */ -void -mklladdr(void) -{ - if(isether() && myetheraddr(conf.hwa, conf.dev) == 0){ - conf.hwalen = 6; - conf.hwatype = 1; - } else { - genrandom(conf.hwa, sizeof(conf.hwa)); - conf.hwatype = -1; - } - ea2lla(conf.lladdr, conf.hwa); -} - -/* create a client id */ -static void -mkclientid(void) -{ - if(isether() && myetheraddr(conf.hwa, conf.dev) == 0){ - conf.hwalen = 6; - conf.hwatype = 1; - conf.cid[0] = conf.hwatype; - memmove(&conf.cid[1], conf.hwa, conf.hwalen); - conf.cidlen = conf.hwalen+1; - } else { - conf.hwatype = -1; - snprint((char*)conf.cid, sizeof conf.cid, - "plan9_%ld.%d", lrand(), getpid()); - conf.cidlen = strlen((char*)conf.cid); - } -} - static void doadd(void) { if(!validip(conf.laddr)){ if(ipv6auto){ - mklladdr(); ipmove(conf.laddr, conf.lladdr); dodhcp = 0; } else @@ -459,8 +448,6 @@ doadd(void) /* run dhcp if we need something */ if(dodhcp){ fprint(conf.rfd, "tag dhcp"); - - mkclientid(); dhcpquery(!noconfig, Sselecting); } @@ -1012,7 +999,7 @@ ndbconfig(void) memset(ips, 0, sizeof(ips)); - if(!isether() || myetheraddr(conf.hwa, conf.dev) != 0) + if(conf.hwatype != 1) sysfatal("can't read hardware address"); snprint(etheraddr, sizeof(etheraddr), "%E", conf.hwa); @@ -1033,7 +1020,7 @@ ndbconfig(void) sysfatal("no ip addresses found in ndb"); /* add link local address first, if not already done */ - if(!validip(conf.lladdr) && !findllip(conf.lladdr, ifc)){ + if(!findllip(conf.lladdr, ifc)){ for(i = 0; i < n; i++){ ipmove(conf.laddr, ips+i*IPaddrlen); if(ISIPV6LINKLOCAL(conf.laddr)){ @@ -1053,8 +1040,7 @@ ndbconfig(void) /* add v4 addresses and v6 if link local address is available */ for(i = 0; i < n; i++){ ipmove(conf.laddr, ips+i*IPaddrlen); - if(isv4(conf.laddr) - || validip(conf.lladdr) && ipcmp(conf.laddr, conf.lladdr) != 0){ + if(isv4(conf.laddr) || ipcmp(conf.laddr, conf.lladdr) != 0){ ndb2conf(db, conf.laddr); doadd(); } |