#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; | |
} |