From 0df4c4b8c4e7f1012a6384a2d2845860bc153e94 Mon Sep 17 00:00:00 2001 From: rodri Date: Sun, 6 Sep 2020 13:01:13 +0000 Subject: check if the mask is correct. --- main.c | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/main.c b/main.c index dc77019..86e2c0b 100644 --- a/main.c +++ b/main.c @@ -57,6 +57,18 @@ countones(u32int addr) { int cnt, shift; + for(cnt = 0, shift = 31; shift >= 0; shift--) + if((addr & 1< 0 && cidr <= 32); mask = ~0 << (32-cidr); - }else + }else{ mask = getip4(argv[1]); + if(checkmask(mask) < 0) + sysfatal("invalid mask"); + } net.addr = addr&mask; net.mask = mask; @@ -118,7 +141,7 @@ main(int argc, char *argv[]) net.minaddr = net.addr+1; net.maxaddr = net.bcast-1; net.nhosts = net.maxaddr-net.minaddr; - net.cidr = countones(net.mask); + net.cidr = countmsones(net.mask); print("%N", net); exits(nil); -- cgit v1.2.3