#include #include #include "stream_addr.h" char *stream_addr_to_str(const struct stream_addr *addr) { char *str_ret = NULL; if (addr->addr_type == STREAM_ADDR_TYPE_V4) { char src_addr[INET_ADDRSTRLEN] = {0}; char dst_addr[INET_ADDRSTRLEN] = {0}; uint16_t src_port = ntohs((uint16_t)addr->addr_v4.src_port); uint16_t dst_port = ntohs((uint16_t)addr->addr_v4.dst_port); inet_ntop(AF_INET, &addr->addr_v4.src_addr, src_addr, sizeof(src_addr)); inet_ntop(AF_INET, &addr->addr_v4.dst_addr, dst_addr, sizeof(dst_addr)); asprintf(&str_ret, "%s %u %s %u", src_addr, src_port, dst_addr, dst_port); } if (addr->addr_type == STREAM_ADDR_TYPE_V6) { char src_addr[INET6_ADDRSTRLEN] = {0}; char dst_addr[INET6_ADDRSTRLEN] = {0}; uint16_t src_port = ntohs((uint16_t)addr->addr_v6.src_port); uint16_t dst_port = ntohs((uint16_t)addr->addr_v6.dst_port); inet_ntop(AF_INET6, &addr->addr_v6.src_addr, src_addr, sizeof(src_addr)); inet_ntop(AF_INET6, &addr->addr_v6.dst_addr, dst_addr, sizeof(dst_addr)); asprintf(&str_ret, "%s %u %s %u", src_addr, src_port, dst_addr, dst_port); } return str_ret; }