summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2019-02-11 23:43:14 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2019-02-11 23:43:14 +0100
commit7102a23245a07bf0a9517b3731f70e0475daf39b (patch)
tree9c24d82b010fd9d42187058e5a4526b2b3236c49
parentb1c9ddb3f0757d900e3d51c82f73b196d5631ef7 (diff)
devip: use parseipandmask() for ipifc and route control message parsing
-rw-r--r--sys/src/9/ip/ip.h1
-rw-r--r--sys/src/9/ip/ipifc.c9
-rw-r--r--sys/src/9/ip/iproute.c6
3 files changed, 6 insertions, 10 deletions
diff --git a/sys/src/9/ip/ip.h b/sys/src/9/ip/ip.h
index 66e6e82c7..a1233ec46 100644
--- a/sys/src/9/ip/ip.h
+++ b/sys/src/9/ip/ip.h
@@ -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);
diff --git a/sys/src/9/ip/ipifc.c b/sys/src/9/ip/ipifc.c
index c72a55971..65c56df10 100644
--- a/sys/src/9/ip/ipifc.c
+++ b/sys/src/9/ip/ipifc.c
@@ -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)
diff --git a/sys/src/9/ip/iproute.c b/sys/src/9/ip/iproute.c
index d30991a33..65ea63ff2 100644
--- a/sys/src/9/ip/iproute.c
+++ b/sys/src/9/ip/iproute.c
@@ -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]);