diff options
author | rodri <rgl@antares-labs.eu> | 2020-08-30 13:47:07 +0000 |
---|---|---|
committer | rodri <rgl@antares-labs.eu> | 2020-08-30 13:47:07 +0000 |
commit | 0e0598ccdd92079cf31f914d4e14749769cb8ba1 (patch) | |
tree | f88782bd29c3dd0d7322f3abf6033a5af2e9937e | |
parent | d65c1d05d062eb91824c9c376063ca6a51c0e369 (diff) | |
download | ipcalc-0e0598ccdd92079cf31f914d4e14749769cb8ba1.tar.gz ipcalc-0e0598ccdd92079cf31f914d4e14749769cb8ba1.tar.bz2 ipcalc-0e0598ccdd92079cf31f914d4e14749769cb8ba1.zip |
allow the cidr to be used in place of an ip mask
-rw-r--r-- | main.c | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -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; |