33 lines
1.2 KiB
C++
33 lines
1.2 KiB
C++
|
|
#include <stdio.h>
|
||
|
|
#include <arpa/inet.h>
|
||
|
|
|
||
|
|
#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;
|
||
|
|
}
|