update IPv6 utils

This commit is contained in:
luwenpeng
2024-02-21 15:06:48 +08:00
parent bd3735d3c4
commit 5e5ac458f2
8 changed files with 118 additions and 20 deletions

View File

@@ -14,8 +14,8 @@ target_link_libraries(gtest_tcp_utils packet gtest)
add_executable(gtest_ipv4_utils gtest_ipv4_utils.cpp)
target_link_libraries(gtest_ipv4_utils packet gtest)
add_executable(gtest_ipv6_helpers gtest_ipv6_helpers.cpp)
target_link_libraries(gtest_ipv6_helpers packet gtest)
add_executable(gtest_ipv6_utils gtest_ipv6_utils.cpp)
target_link_libraries(gtest_ipv6_utils packet gtest)
add_executable(gtest_packet_helpers gtest_packet_helpers.cpp)
target_link_libraries(gtest_packet_helpers packet gtest)
@@ -25,5 +25,5 @@ gtest_discover_tests(gtest_packet)
gtest_discover_tests(gtest_udp_utils)
gtest_discover_tests(gtest_tcp_utils)
gtest_discover_tests(gtest_ipv4_utils)
gtest_discover_tests(gtest_ipv6_helpers)
gtest_discover_tests(gtest_ipv6_utils)
gtest_discover_tests(gtest_packet_helpers)

View File

@@ -1,6 +1,6 @@
#include <gtest/gtest.h>
#include "ipv6_helpers.h"
#include "ipv6_utils.h"
/*
* Internet Protocol Version 6, Src: fe80::250:56ff:fe69:dc00, Dst: ff02::1:2
@@ -21,7 +21,7 @@ unsigned char data[] = {
0x60, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x11, 0x01, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x50, 0x56, 0xff, 0xfe, 0x69, 0xdc, 0x00, 0xff, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02};
TEST(IPV6_HELPERS, TEST)
TEST(IPV6_UTILS, GET)
{
char src_str[INET6_ADDRSTRLEN];
char dst_str[INET6_ADDRSTRLEN];
@@ -32,14 +32,36 @@ TEST(IPV6_HELPERS, TEST)
EXPECT_TRUE(ipv6_hdr_get_payload_len(hdr) == 60);
EXPECT_TRUE(ipv6_hdr_get_next_header(hdr) == 17);
EXPECT_TRUE(ipv6_hdr_get_hop_limit(hdr) == 1);
struct in6_addr src_addr = ipv6_hdr_get_net_order_saddr(hdr);
struct in6_addr dst_addr = ipv6_hdr_get_net_order_daddr(hdr);
struct in6_addr src_addr = ipv6_hdr_get_src_in6_addr(hdr);
struct in6_addr dst_addr = ipv6_hdr_get_dst_in6_addr(hdr);
inet_ntop(AF_INET6, &src_addr, src_str, INET6_ADDRSTRLEN);
inet_ntop(AF_INET6, &dst_addr, dst_str, INET6_ADDRSTRLEN);
EXPECT_TRUE(strcmp(src_str, "fe80::250:56ff:fe69:dc00") == 0);
EXPECT_TRUE(strcmp(dst_str, "ff02::1:2") == 0);
}
TEST(IPV6_UTILS, SET)
{
char buff[40] = {0};
struct in6_addr src_addr;
struct in6_addr dst_addr;
struct ip6_hdr *hdr = (struct ip6_hdr *)buff;
inet_pton(AF_INET6, "fe80::250:56ff:fe69:dc00", &src_addr);
inet_pton(AF_INET6, "ff02::1:2", &dst_addr);
ipv6_hdr_set_version(hdr, 6);
ipv6_hdr_set_traffic_class(hdr, 0);
ipv6_hdr_set_flow_label(hdr, 0);
ipv6_hdr_set_payload_len(hdr, 60);
ipv6_hdr_set_next_header(hdr, 17);
ipv6_hdr_set_hop_limit(hdr, 1);
ipv6_hdr_set_src_in6_addr(hdr, src_addr);
ipv6_hdr_set_dst_in6_addr(hdr, dst_addr);
EXPECT_TRUE(memcmp(buff, data, 40) == 0);
}
int main(int argc, char **argv)
{
::testing::InitGoogleTest(&argc, argv);