summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorroot <[email protected]>2023-05-30 09:31:51 +0000
committerroot <[email protected]>2023-05-30 09:31:51 +0000
commitfd75395ba232c71ca0f5b43cbe38214c7975f643 (patch)
treebbe06e2a56b116bdf72ba9d1ff5ebec032bd5c85 /common
parent57efeb63d5769c9f1b92b1266780968ad1c30d78 (diff)
add feature splitby and fairness
Diffstat (limited to 'common')
-rw-r--r--common/include/addr_tuple4.h1
-rw-r--r--common/src/addr_tuple4.cpp21
-rw-r--r--common/test/gtest_addr_tuple4.cpp24
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);