devip: use parseipandmask() for ipifc and route control message parsing

This commit is contained in:
cinap_lenrek 2019-02-11 23:43:14 +01:00
parent b1c9ddb3f0
commit 7102a23245
3 changed files with 6 additions and 10 deletions

View file

@ -623,6 +623,7 @@ extern void ndpsendsol(Fs*, Ipifc*, Arpent*);
extern int parseether(uchar*, char*);
extern vlong parseip(uchar*, char*);
extern vlong parseipmask(uchar*, char*);
extern vlong parseipandmask(uchar*, uchar*, char*, char*);
extern char* v4parseip(uchar*, char*);
extern void maskip(uchar *from, uchar *mask, uchar *to);
extern int parsemac(uchar *to, char *from, int len);

View file

@ -455,15 +455,13 @@ ipifcadd(Ipifc *ifc, char **argv, int argc, int tentative, Iplifc *lifcp)
mtu = strtoul(argv[4], 0, 0);
/* fall through */
case 4:
if (parseip(ip, argv[1]) == -1 || parseip(rem, argv[3]) == -1)
if (parseipandmask(ip, mask, argv[1], argv[2]) == -1 || parseip(rem, argv[3]) == -1)
return Ebadip;
parseipmask(mask, argv[2]);
maskip(rem, mask, net);
break;
case 3:
if (parseip(ip, argv[1]) == -1)
if (parseipandmask(ip, mask, argv[1], argv[2]) == -1)
return Ebadip;
parseipmask(mask, argv[2]);
maskip(ip, mask, rem);
maskip(rem, mask, net);
break;
@ -691,9 +689,8 @@ ipifcrem(Ipifc *ifc, char **argv, int argc)
if(argc < 3)
return Ebadarg;
if(parseip(ip, argv[1]) == -1)
if(parseipandmask(ip, mask, argv[1], argv[2]) == -1)
return Ebadip;
parseipmask(mask, argv[2]);
if(argc < 4)
maskip(ip, mask, rem);
else if(parseip(rem, argv[3]) == -1)

View file

@ -917,9 +917,8 @@ parseroute(Fs *f, char **argv, int argc)
if(argc < 3)
error(Ebadctl);
if(parseip(addr, argv[1]) == -1)
if(parseipandmask(addr, mask, argv[1], argv[2]) == -1)
error(Ebadip);
parseipmask(mask, argv[2]);
if(strcmp(argv[0], "add") == 0 || (argc > 3 && argc != 5)){
if(argc < 4)
@ -928,9 +927,8 @@ parseroute(Fs *f, char **argv, int argc)
error(Ebadip);
}
if(argc > 4 && (strcmp(argv[0], "add") != 0 || argc != 5)){
if(parseip(src, argv[argc-2]) == -1)
if(parseipandmask(src, smask, argv[argc-2], argv[argc-1]) == -1)
error(Ebadip);
parseipmask(smask, argv[argc-1]);
}
if(argc == 5 && strcmp(argv[0], "add") == 0)
ifc = findipifcstr(f, argv[4]);