From 0e0598ccdd92079cf31f914d4e14749769cb8ba1 Mon Sep 17 00:00:00 2001 From: rodri Date: Sun, 30 Aug 2020 13:47:07 +0000 Subject: allow the cidr to be used in place of an ip mask --- main.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/main.c b/main.c index af10edb..6cfd203 100644 --- a/main.c +++ b/main.c @@ -74,6 +74,7 @@ main(int argc, char *argv[]) IPNet net; u32int addr, mask; char *a, *m; + int cidr; fmtinstall('I', Ifmt); fmtinstall('N', Nfmt); @@ -89,10 +90,15 @@ main(int argc, char *argv[]) addr |= strtoul(++a, &a, 10) << 8; addr |= strtoul(++a, &a, 10); m = argv[1]; - mask = strtoul(m, &m, 10) << 24; - mask |= strtoul(++m, &m, 10) << 16; - mask |= strtoul(++m, &m, 10) << 8; - mask |= strtoul(++m, &m, 10); + if(strlen(m) <= 2){ + cidr = strtol(m, nil, 10); + mask = ~0 << (32-cidr); + }else{ + mask = strtoul(m, &m, 10) << 24; + mask |= strtoul(++m, &m, 10) << 16; + mask |= strtoul(++m, &m, 10) << 8; + mask |= strtoul(++m, &m, 10); + } net.addr = addr&mask; net.mask = mask; -- cgit v1.2.3