ip/ipconfig: simplify by combining mklladdr() into mkclientid()
This commit is contained in:
parent
9445f08788
commit
ab4c0a012f
3 changed files with 31 additions and 48 deletions
|
@ -121,7 +121,6 @@ void ipunconfig(void);
|
||||||
void adddefroute(uchar*, uchar*, uchar*, uchar*);
|
void adddefroute(uchar*, uchar*, uchar*, uchar*);
|
||||||
void removedefroute(int, uchar*, uchar*);
|
void removedefroute(int, uchar*, uchar*);
|
||||||
|
|
||||||
void mklladdr(void);
|
|
||||||
long jitter(void);
|
long jitter(void);
|
||||||
void procsetname(char *fmt, ...);
|
void procsetname(char *fmt, ...);
|
||||||
void catch(void*, char*);
|
void catch(void*, char*);
|
||||||
|
|
|
@ -1139,8 +1139,6 @@ startra6(void)
|
||||||
{
|
{
|
||||||
static char routeon[] = "iprouting 1";
|
static char routeon[] = "iprouting 1";
|
||||||
|
|
||||||
mklladdr();
|
|
||||||
|
|
||||||
if(conf.recvra > 0)
|
if(conf.recvra > 0)
|
||||||
recvra6();
|
recvra6();
|
||||||
|
|
||||||
|
|
|
@ -278,6 +278,32 @@ findifc(char *net, char *dev)
|
||||||
return -1;
|
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
|
void
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
@ -385,6 +411,7 @@ main(int argc, char **argv)
|
||||||
|
|
||||||
switch(action){
|
switch(action){
|
||||||
case Vadd:
|
case Vadd:
|
||||||
|
mkclientid();
|
||||||
if(dondbconfig){
|
if(dondbconfig){
|
||||||
dodhcp = 0;
|
dodhcp = 0;
|
||||||
ndbconfig();
|
ndbconfig();
|
||||||
|
@ -394,6 +421,7 @@ main(int argc, char **argv)
|
||||||
break;
|
break;
|
||||||
case Vra6:
|
case Vra6:
|
||||||
case Vaddpref6:
|
case Vaddpref6:
|
||||||
|
mkclientid();
|
||||||
doipv6(action);
|
doipv6(action);
|
||||||
break;
|
break;
|
||||||
case Vremove:
|
case Vremove:
|
||||||
|
@ -406,50 +434,11 @@ main(int argc, char **argv)
|
||||||
exits(nil);
|
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
|
static void
|
||||||
doadd(void)
|
doadd(void)
|
||||||
{
|
{
|
||||||
if(!validip(conf.laddr)){
|
if(!validip(conf.laddr)){
|
||||||
if(ipv6auto){
|
if(ipv6auto){
|
||||||
mklladdr();
|
|
||||||
ipmove(conf.laddr, conf.lladdr);
|
ipmove(conf.laddr, conf.lladdr);
|
||||||
dodhcp = 0;
|
dodhcp = 0;
|
||||||
} else
|
} else
|
||||||
|
@ -459,8 +448,6 @@ doadd(void)
|
||||||
/* run dhcp if we need something */
|
/* run dhcp if we need something */
|
||||||
if(dodhcp){
|
if(dodhcp){
|
||||||
fprint(conf.rfd, "tag dhcp");
|
fprint(conf.rfd, "tag dhcp");
|
||||||
|
|
||||||
mkclientid();
|
|
||||||
dhcpquery(!noconfig, Sselecting);
|
dhcpquery(!noconfig, Sselecting);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1012,7 +999,7 @@ ndbconfig(void)
|
||||||
|
|
||||||
memset(ips, 0, sizeof(ips));
|
memset(ips, 0, sizeof(ips));
|
||||||
|
|
||||||
if(!isether() || myetheraddr(conf.hwa, conf.dev) != 0)
|
if(conf.hwatype != 1)
|
||||||
sysfatal("can't read hardware address");
|
sysfatal("can't read hardware address");
|
||||||
snprint(etheraddr, sizeof(etheraddr), "%E", conf.hwa);
|
snprint(etheraddr, sizeof(etheraddr), "%E", conf.hwa);
|
||||||
|
|
||||||
|
@ -1033,7 +1020,7 @@ ndbconfig(void)
|
||||||
sysfatal("no ip addresses found in ndb");
|
sysfatal("no ip addresses found in ndb");
|
||||||
|
|
||||||
/* add link local address first, if not already done */
|
/* 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++){
|
for(i = 0; i < n; i++){
|
||||||
ipmove(conf.laddr, ips+i*IPaddrlen);
|
ipmove(conf.laddr, ips+i*IPaddrlen);
|
||||||
if(ISIPV6LINKLOCAL(conf.laddr)){
|
if(ISIPV6LINKLOCAL(conf.laddr)){
|
||||||
|
@ -1053,8 +1040,7 @@ ndbconfig(void)
|
||||||
/* add v4 addresses and v6 if link local address is available */
|
/* add v4 addresses and v6 if link local address is available */
|
||||||
for(i = 0; i < n; i++){
|
for(i = 0; i < n; i++){
|
||||||
ipmove(conf.laddr, ips+i*IPaddrlen);
|
ipmove(conf.laddr, ips+i*IPaddrlen);
|
||||||
if(isv4(conf.laddr)
|
if(isv4(conf.laddr) || ipcmp(conf.laddr, conf.lladdr) != 0){
|
||||||
|| validip(conf.lladdr) && ipcmp(conf.laddr, conf.lladdr) != 0){
|
|
||||||
ndb2conf(db, conf.laddr);
|
ndb2conf(db, conf.laddr);
|
||||||
doadd();
|
doadd();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue