#include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> in_addr_t inet_network(const char *p) { return ntohl(inet_addr(p)); } struct in_addr inet_makeaddr(in_addr_t n, in_addr_t h) { if (n < 256) h |= n<<24; else if (n < 65536) h |= n<<16; else h |= n<<8; return (struct in_addr){ htonl(h) }; } in_addr_t inet_lnaof(struct in_addr in) { uint32_t h = ntohl(in.s_addr); if (h>>24 < 128) return h & 0xffffff; if (h>>24 < 192) return h & 0xffff; return h & 0xff; } in_addr_t inet_netof(struct in_addr in) { uint32_t h = ntohl(in.s_addr); if (h>>24 < 128) return h >> 24; if (h>>24 < 192) return h >> 16; return h >> 8; }