diff options
Diffstat (limited to 'addr.c')
-rw-r--r-- | addr.c | 74 |
1 files changed, 0 insertions, 74 deletions
@@ -1,74 +0,0 @@ -#include <stdio.h> -#include <string.h> - -#include "addr.h" - -int addr_len(const sockaddr_any *addr) -{ - switch (addr->any.sa_family) { - case AF_INET: - return sizeof(struct sockaddr_in); - default: - return 0; - } -} - -sockaddr_any *addr_parse(blob_t b, sockaddr_any *addr) -{ - memset(addr, 0, sizeof(*addr)); - addr->ipv4.sin_family = AF_INET; - addr->ipv4.sin_addr.s_addr = blob_inet_addr(b); - if (addr->ipv4.sin_addr.s_addr == -1) - return NULL; - return addr; -} - -unsigned long addr_hash(const sockaddr_any *addr) -{ - switch (addr->any.sa_family) { - case AF_INET: - return htonl(addr->ipv4.sin_addr.s_addr); - default: - return 0; - } -} - -const char *addr_print(const sockaddr_any *addr) -{ - switch (addr->any.sa_family) { - case AF_INET: - return inet_ntoa(addr->ipv4.sin_addr); - default: - return "unknown"; - } -} - -blob_t addr_get_hostaddr_blob(const sockaddr_any *addr) -{ - switch (addr->any.sa_family) { - case AF_INET: - return BLOB_BUF(&addr->ipv4.sin_addr); - default: - return BLOB_NULL; - } -} - -void addr_push_hostaddr(blob_t *b, const sockaddr_any *addr) -{ - char buf[64]; - blob_t f; - unsigned int t; - - switch (addr->any.sa_family) { - case AF_INET: - t = ntohl(addr->ipv4.sin_addr.s_addr); - f.ptr = buf; - f.len = sprintf(buf, "%d.%d.%d.%d", - (t ) & 0xff, (t >> 8) & 0xff, - (t >> 16) & 0xff, (t >> 24) & 0xff); - break; - default: - return; - } - blob_push(b, f); -} |