1 #include <sys/socket.h> 2 #include <netinet/in.h> 3 #include <arpa/inet.h> 4 inet_network(const char * p)5in_addr_t inet_network(const char *p) 6 { 7 return ntohl(inet_addr(p)); 8 } 9 inet_makeaddr(in_addr_t n,in_addr_t h)10struct in_addr inet_makeaddr(in_addr_t n, in_addr_t h) 11 { 12 if (n < 256) h |= n<<24; 13 else if (n < 65536) h |= n<<16; 14 else h |= n<<8; 15 return (struct in_addr){ htonl(h) }; 16 } 17 inet_lnaof(struct in_addr in)18in_addr_t inet_lnaof(struct in_addr in) 19 { 20 uint32_t h = ntohl(in.s_addr); 21 if (h>>24 < 128) return h & 0xffffff; 22 if (h>>24 < 192) return h & 0xffff; 23 return h & 0xff; 24 } 25 inet_netof(struct in_addr in)26in_addr_t inet_netof(struct in_addr in) 27 { 28 uint32_t h = ntohl(in.s_addr); 29 if (h>>24 < 128) return h >> 24; 30 if (h>>24 < 192) return h >> 16; 31 return h >> 8; 32 } 33