diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-02-11 23:43:14 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-02-11 23:43:14 +0100 |
commit | 7102a23245a07bf0a9517b3731f70e0475daf39b (patch) | |
tree | 9c24d82b010fd9d42187058e5a4526b2b3236c49 | |
parent | b1c9ddb3f0757d900e3d51c82f73b196d5631ef7 (diff) |
devip: use parseipandmask() for ipifc and route control message parsing
-rw-r--r-- | sys/src/9/ip/ip.h | 1 | ||||
-rw-r--r-- | sys/src/9/ip/ipifc.c | 9 | ||||
-rw-r--r-- | sys/src/9/ip/iproute.c | 6 |
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]); |