#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){ h };}in_addr_t inet_lnaof(struct in_addr in){uint32_t h = 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 = in.s_addr;if (h>>24 < 128) return h >> 24;if (h>>24 < 192) return h >> 16;return h >> 8;}