diff options
| author | root <[email protected]> | 2023-05-30 09:31:51 +0000 |
|---|---|---|
| committer | root <[email protected]> | 2023-05-30 09:31:51 +0000 |
| commit | fd75395ba232c71ca0f5b43cbe38214c7975f643 (patch) | |
| tree | bbe06e2a56b116bdf72ba9d1ff5ebec032bd5c85 /common | |
| parent | 57efeb63d5769c9f1b92b1266780968ad1c30d78 (diff) | |
add feature splitby and fairness
Diffstat (limited to 'common')
| -rw-r--r-- | common/include/addr_tuple4.h | 1 | ||||
| -rw-r--r-- | common/src/addr_tuple4.cpp | 21 | ||||
| -rw-r--r-- | common/test/gtest_addr_tuple4.cpp | 24 |
3 files changed, 46 insertions, 0 deletions
diff --git a/common/include/addr_tuple4.h b/common/include/addr_tuple4.h index 5efcce1..22caa1d 100644 --- a/common/include/addr_tuple4.h +++ b/common/include/addr_tuple4.h @@ -58,6 +58,7 @@ extern "C" char *addr_tuple4_to_str(const struct addr_tuple4 *addr); void addr_tuple4_reverse(const struct addr_tuple4 *orin, struct addr_tuple4 *out); + char *addr_src_ip_to_str(const struct addr_tuple4 *addr); #ifdef __cpluscplus } diff --git a/common/src/addr_tuple4.cpp b/common/src/addr_tuple4.cpp index fd60f0d..7e294f8 100644 --- a/common/src/addr_tuple4.cpp +++ b/common/src/addr_tuple4.cpp @@ -33,6 +33,27 @@ char *addr_tuple4_to_str(const struct addr_tuple4 *addr) return str_ret; } +char *addr_src_ip_to_str(const struct addr_tuple4 *addr)//TODO: self test +{ + char *str_ret = NULL; + + if (addr->addr_type == ADDR_TUPLE4_TYPE_V4) + { + char src_addr[INET_ADDRSTRLEN] = {0}; + inet_ntop(AF_INET, &addr->addr_v4.src_addr, src_addr, sizeof(src_addr)); + asprintf(&str_ret, "%s", src_addr); + } + + if (addr->addr_type == ADDR_TUPLE4_TYPE_V6) + { + char src_addr[INET6_ADDRSTRLEN] = {0}; + inet_ntop(AF_INET6, &addr->addr_v6.src_addr, src_addr, sizeof(src_addr)); + asprintf(&str_ret, "%s", src_addr); + } + + return str_ret; +} + void addr_tuple4_reverse(const struct addr_tuple4 *orin, struct addr_tuple4 *out) { memset(out, 0, sizeof(struct addr_tuple4)); diff --git a/common/test/gtest_addr_tuple4.cpp b/common/test/gtest_addr_tuple4.cpp index ad9b246..e81996c 100644 --- a/common/test/gtest_addr_tuple4.cpp +++ b/common/test/gtest_addr_tuple4.cpp @@ -41,6 +41,30 @@ TEST(ADDR_TUPLE4, IPV6) free(ret_str); } +TEST(ADDR_TUPLE4, SRC_IPV4_TO_STRING) +{ + char *ret_str = NULL; + + INIT_ADDR_V4(orin_addr, "1.2.3.4", 12345, "4.3.2.1", 23456) + + ret_str = addr_src_ip_to_str(&orin_addr); + EXPECT_TRUE(ret_str != nullptr); + EXPECT_STREQ(ret_str, "1.2.3.4"); + free(ret_str); +} + +TEST(ADDR_TUPLE4, SRC_IPV6_TO_STRING) +{ + char *ret_str = NULL; + + INIT_ADDR_V6(orin_addr, "1:2::3", 12345, "a:b::c", 23456); + + ret_str = addr_src_ip_to_str(&orin_addr); + EXPECT_TRUE(ret_str != nullptr); + EXPECT_STREQ(ret_str, "1:2::3"); + free(ret_str); +} + int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); |
