From 9b6ef159316a449e61aed75ac6a5eaaeb72e8038 Mon Sep 17 00:00:00 2001 From: rodri Date: Sun, 23 Aug 2020 14:59:26 +0000 Subject: initial working release. --- main.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ mkfile | 8 ++++++ readme | 5 ++++ 3 files changed, 107 insertions(+) create mode 100644 main.c create mode 100644 mkfile create mode 100644 readme diff --git a/main.c b/main.c new file mode 100644 index 0000000..b3d3d4e --- /dev/null +++ b/main.c @@ -0,0 +1,94 @@ +#include +#include + +typedef struct IPNet IPNet; + +struct IPNet +{ + u32int addr; + u32int mask; + u32int minaddr; + u32int maxaddr; + u32int bcast; + uint nhosts; + int cidr; +}; + +void +printip(uint addr) +{ + uchar ip4[4]; + + ip4[0] = (addr>>24)&0xff; + ip4[1] = (addr>>16)&0xff; + ip4[2] = (addr>>8)&0xff; + ip4[3] = addr&0xff; + + print("%d.%d.%d.%d\n", ip4[0], ip4[1], ip4[2], ip4[3]); +} + +void +printipnet(IPNet net) +{ + print("network "); printip(net.addr); + print("netmask "); printip(net.mask); + print("minaddr "); printip(net.minaddr); + print("maxaddr "); printip(net.maxaddr); + print("bcast "); printip(net.bcast); + print("hosts %d\n", net.nhosts); + print("cidr %d\n", net.cidr); +} + +int +countones(u32int addr) +{ + int cnt, shift; + + for(cnt = 0, shift = 31; cnt < 32 && (addr&(1<