#include #include typedef struct IPNet IPNet; struct IPNet { u32int addr; u32int mask; u32int minaddr; u32int maxaddr; u32int bcast; uint nhosts; int cidr; }; void printip(u32int 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<