update TCP utils

This commit is contained in:
luwenpeng
2024-02-21 11:49:20 +08:00
parent c37f9869a6
commit 03f428681e
7 changed files with 341 additions and 178 deletions

View File

@@ -8,8 +8,8 @@ target_link_libraries(gtest_packet packet gtest)
add_executable(gtest_udp_utils gtest_udp_utils.cpp)
target_link_libraries(gtest_udp_utils packet gtest)
add_executable(gtest_tcp_helpers gtest_tcp_helpers.cpp)
target_link_libraries(gtest_tcp_helpers packet gtest)
add_executable(gtest_tcp_utils gtest_tcp_utils.cpp)
target_link_libraries(gtest_tcp_utils packet gtest)
add_executable(gtest_ipv4_helpers gtest_ipv4_helpers.cpp)
target_link_libraries(gtest_ipv4_helpers packet gtest)
@@ -23,7 +23,7 @@ target_link_libraries(gtest_packet_helpers packet gtest)
include(GoogleTest)
gtest_discover_tests(gtest_packet)
gtest_discover_tests(gtest_udp_utils)
gtest_discover_tests(gtest_tcp_helpers)
gtest_discover_tests(gtest_tcp_utils)
gtest_discover_tests(gtest_ipv4_helpers)
gtest_discover_tests(gtest_ipv6_helpers)
gtest_discover_tests(gtest_packet_helpers)

View File

@@ -1,6 +1,6 @@
#include <gtest/gtest.h>
#include "tcp_helpers.h"
#include "tcp_utils.h"
/*
* Transmission Control Protocol, Src Port: 55555, Dst Port: 40856, Seq: 0, Ack: 1, Len: 0
@@ -74,26 +74,71 @@ unsigned char data[] = {
0xd9, 0x03, 0x9f, 0x98, 0xec, 0x5f, 0xc6, 0x3c, 0x3b, 0x12, 0x47, 0x92, 0xa0, 0x12, 0xaa, 0xaa, 0xfe, 0x30, 0x00, 0x00, 0x02, 0x04, 0xff, 0xd7, 0x04, 0x02,
0x08, 0x0a, 0xa4, 0xef, 0xa3, 0xcc, 0xa4, 0xef, 0xa3, 0xcc, 0x01, 0x03, 0x03, 0x07};
TEST(TCP_HELPERS, TEST)
TEST(TCP_UTILS, GET)
{
const struct tcphdr *hdr = (struct tcphdr *)data;
EXPECT_TRUE(tcp_hdr_get_host_order_sport(hdr) == 55555);
EXPECT_TRUE(tcp_hdr_get_host_order_dport(hdr) == 40856);
EXPECT_TRUE(tcp_hdr_get_src_port(hdr) == 55555);
EXPECT_TRUE(tcp_hdr_get_dst_port(hdr) == 40856);
EXPECT_TRUE(tcp_hdr_get_seq(hdr) == 3965699644);
EXPECT_TRUE(tcp_hdr_get_ack(hdr) == 991053714);
EXPECT_TRUE(tcp_hdr_get_doff(hdr) == 40);
EXPECT_TRUE(tcp_hdr_get_hdr_len(hdr) == 40);
EXPECT_TRUE(tcp_hdr_get_flags(hdr) == 0x012);
EXPECT_TRUE(tcp_hdr_has_flag_urg(hdr) == false);
EXPECT_TRUE(tcp_hdr_has_flag_ack(hdr) == true);
EXPECT_TRUE(tcp_hdr_has_flag_psh(hdr) == false);
EXPECT_TRUE(tcp_hdr_has_flag_rst(hdr) == false);
EXPECT_TRUE(tcp_hdr_has_flag_syn(hdr) == true);
EXPECT_TRUE(tcp_hdr_has_flag_fin(hdr) == false);
EXPECT_TRUE(tcp_hdr_get_urg_flag(hdr) == false);
EXPECT_TRUE(tcp_hdr_get_ack_flag(hdr) == true);
EXPECT_TRUE(tcp_hdr_get_push_flag(hdr) == false);
EXPECT_TRUE(tcp_hdr_get_rst_flag(hdr) == false);
EXPECT_TRUE(tcp_hdr_get_syn_flag(hdr) == true);
EXPECT_TRUE(tcp_hdr_get_fin_flag(hdr) == false);
EXPECT_TRUE(tcp_hdr_get_window(hdr) == 43690);
EXPECT_TRUE(tcp_hdr_get_checksum(hdr) == 0xfe30);
EXPECT_TRUE(tcp_hdr_get_urg_ptr(hdr) == 0);
EXPECT_TRUE(tcp_hdr_get_opt_len(hdr) == 20);
EXPECT_TRUE(tcp_hdr_get_opt_ptr(hdr) == data + 20);
EXPECT_TRUE(tcp_hdr_get_opt_data(hdr) == data + 20);
}
TEST(TCP_UTILS, SET1)
{
char buff[40];
struct tcphdr *hdr = (struct tcphdr *)buff;
tcp_hdr_set_src_port(hdr, 55555);
tcp_hdr_set_dst_port(hdr, 40856);
tcp_hdr_set_seq(hdr, 3965699644);
tcp_hdr_set_ack(hdr, 991053714);
tcp_hdr_set_hdr_len(hdr, 40);
tcp_hdr_set_flags(hdr, 0x012);
tcp_hdr_set_window(hdr, 43690);
tcp_hdr_set_checksum(hdr, 0xfe30);
tcp_hdr_set_urg_ptr(hdr, 0);
tcp_hdr_set_opt_len(hdr, 20);
tcp_hdr_set_opt_data(hdr, data + 20);
EXPECT_TRUE(memcmp(buff, data, 40) == 0);
}
TEST(TCP_UTILS, SET2)
{
char buff[40] = {0};
struct tcphdr *hdr = (struct tcphdr *)buff;
tcp_hdr_set_src_port(hdr, 55555);
tcp_hdr_set_dst_port(hdr, 40856);
tcp_hdr_set_seq(hdr, 3965699644);
tcp_hdr_set_ack(hdr, 991053714);
tcp_hdr_set_hdr_len(hdr, 40);
tcp_hdr_set_urg_flag(hdr, false);
tcp_hdr_set_ack_flag(hdr, true);
tcp_hdr_set_push_flag(hdr, false);
tcp_hdr_set_rst_flag(hdr, false);
tcp_hdr_set_syn_flag(hdr, true);
tcp_hdr_set_fin_flag(hdr, false);
tcp_hdr_set_window(hdr, 43690);
tcp_hdr_set_checksum(hdr, 0xfe30);
tcp_hdr_set_urg_ptr(hdr, 0);
tcp_hdr_set_opt_len(hdr, 20);
tcp_hdr_set_opt_data(hdr, data + 20);
EXPECT_TRUE(memcmp(buff, data, 40) == 0);
}
int main(int argc, char **argv)