When the packet length is greater than the IP expected length, the padding data at the end of the frame will be trimmed.
This commit is contained in:
@@ -82,7 +82,7 @@ TEST(PACKET, ETH_VLAN_VLAN_IP4_IP4_UDP)
|
||||
const char *payload = packet_parse(&handler, (const char *)data1, sizeof(data1));
|
||||
EXPECT_TRUE(payload != nullptr);
|
||||
EXPECT_TRUE((char *)payload - (char *)&data1 == 70);
|
||||
packet_print(&handler);
|
||||
packet_print_str(&handler);
|
||||
|
||||
/******************************************************
|
||||
* packet_get_outermost/innermost_layer
|
||||
@@ -321,7 +321,7 @@ TEST(PACKET, ETH_IP6_IP4_TCP_SSH)
|
||||
const char *payload = packet_parse(&handler, (const char *)data2, sizeof(data2));
|
||||
EXPECT_TRUE(payload != nullptr);
|
||||
EXPECT_TRUE((char *)payload - (char *)&data2 == 94);
|
||||
packet_print(&handler);
|
||||
packet_print_str(&handler);
|
||||
|
||||
/******************************************************
|
||||
* packet_get_outermost/innermost_layer
|
||||
@@ -540,7 +540,7 @@ TEST(PACKET, ETH_VLAN_IP6_IP4_GRE_PPP_IP4_UDP_DNS)
|
||||
const char *payload = packet_parse(&handler, (const char *)data3, sizeof(data3));
|
||||
EXPECT_TRUE(payload != nullptr);
|
||||
EXPECT_TRUE((char *)payload - (char *)&data3 == 126);
|
||||
packet_print(&handler);
|
||||
packet_print_str(&handler);
|
||||
|
||||
/******************************************************
|
||||
* packet_get_outermost/innermost_layer
|
||||
@@ -797,7 +797,7 @@ TEST(PACKET, ETH_IP4_IP6_TCP)
|
||||
const char *payload = packet_parse(&handler, (const char *)data4, sizeof(data4));
|
||||
EXPECT_TRUE(payload != nullptr);
|
||||
EXPECT_TRUE((char *)payload - (char *)&data4 == 106);
|
||||
packet_print(&handler);
|
||||
packet_print_str(&handler);
|
||||
|
||||
/******************************************************
|
||||
* packet_get_outermost/innermost_layer
|
||||
@@ -981,7 +981,7 @@ TEST(PACKET, ETH_IP6_IP6_UDP)
|
||||
const char *payload = packet_parse(&handler, (const char *)data5, sizeof(data5));
|
||||
EXPECT_TRUE(payload != nullptr);
|
||||
EXPECT_TRUE((char *)payload - (char *)&data5 == 102);
|
||||
packet_print(&handler);
|
||||
packet_print_str(&handler);
|
||||
|
||||
/******************************************************
|
||||
* packet_get_outermost/innermost_layer
|
||||
@@ -1166,7 +1166,7 @@ TEST(PACKET, ETH_MPLS_IP4_TCP)
|
||||
const char *payload = packet_parse(&handler, (const char *)data6, sizeof(data6));
|
||||
EXPECT_TRUE(payload != nullptr);
|
||||
EXPECT_TRUE((char *)payload - (char *)&data6 == 70);
|
||||
packet_print(&handler);
|
||||
packet_print_str(&handler);
|
||||
|
||||
/******************************************************
|
||||
* packet_get_outermost/innermost_layer
|
||||
@@ -1368,7 +1368,7 @@ TEST(PACKET, ETH_MPLS_MPLS_IP4_TCP)
|
||||
const char *payload = packet_parse(&handler, (const char *)data7, sizeof(data7));
|
||||
EXPECT_TRUE(payload != nullptr);
|
||||
EXPECT_TRUE((char *)payload - (char *)&data7 == 66);
|
||||
packet_print(&handler);
|
||||
packet_print_str(&handler);
|
||||
|
||||
/******************************************************
|
||||
* packet_get_outermost/innermost_layer
|
||||
@@ -1583,7 +1583,7 @@ TEST(PACKET, ETH_VLAN_PPPOE_IP4_TCP)
|
||||
const char *payload = packet_parse(&handler, (const char *)data8, sizeof(data8));
|
||||
EXPECT_TRUE(payload != nullptr);
|
||||
EXPECT_TRUE((char *)payload - (char *)&data8 == 78);
|
||||
packet_print(&handler);
|
||||
packet_print_str(&handler);
|
||||
|
||||
/******************************************************
|
||||
* packet_get_outermost/innermost_layer
|
||||
@@ -1863,7 +1863,7 @@ TEST(PACKET, ETH_IP6_UDP_GTP_IP6_TCP_TLS)
|
||||
const char *payload = packet_parse(&handler, (const char *)data9, sizeof(data9));
|
||||
EXPECT_TRUE(payload != nullptr);
|
||||
EXPECT_TRUE((char *)payload - (char *)&data9 == 130);
|
||||
packet_print(&handler);
|
||||
packet_print_str(&handler);
|
||||
|
||||
/******************************************************
|
||||
* packet_get_outermost/innermost_layer
|
||||
@@ -2149,7 +2149,7 @@ TEST(PACKET, ETH_IP6_UDP_GTP_IP4_TCP_TLS)
|
||||
const char *payload = packet_parse(&handler, (const char *)data10, sizeof(data10));
|
||||
EXPECT_TRUE(payload != nullptr);
|
||||
EXPECT_TRUE((char *)payload - (char *)&data10 == 122);
|
||||
packet_print(&handler);
|
||||
packet_print_str(&handler);
|
||||
|
||||
/******************************************************
|
||||
* packet_get_outermost/innermost_layer
|
||||
@@ -2383,7 +2383,7 @@ TEST(PACKET, ETH_IP4_UDP_VXLAN_ETH_IP4_UDP_DNS)
|
||||
const char *payload = packet_parse(&handler, (const char *)data11, sizeof(data11));
|
||||
EXPECT_TRUE(payload != nullptr);
|
||||
EXPECT_TRUE((char *)payload - (char *)&data11 == 92);
|
||||
packet_print(&handler);
|
||||
packet_print_str(&handler);
|
||||
|
||||
/******************************************************
|
||||
* packet_get_outermost/innermost_layer
|
||||
@@ -2575,7 +2575,7 @@ TEST(PACKET, ETH_MPLS_MPLS_PWETHCW_ETH_ARP)
|
||||
const char *payload = packet_parse(&handler, (const char *)data12, sizeof(data12));
|
||||
EXPECT_TRUE(payload != nullptr);
|
||||
EXPECT_TRUE((char *)payload - (char *)&data12 == 40);
|
||||
packet_print(&handler);
|
||||
packet_print_str(&handler);
|
||||
|
||||
/******************************************************
|
||||
* packet_get_outermost/innermost_layer
|
||||
@@ -2727,7 +2727,7 @@ TEST(PACKET, ETH_IP4_ICMP)
|
||||
const char *payload = packet_parse(&handler, (const char *)data13, sizeof(data13));
|
||||
EXPECT_TRUE(payload != nullptr);
|
||||
EXPECT_TRUE((char *)payload - (char *)&data13 == 14 + 20 + 8);
|
||||
packet_print(&handler);
|
||||
packet_print_str(&handler);
|
||||
|
||||
/******************************************************
|
||||
* packet_get_outermost/innermost_layer
|
||||
@@ -2859,7 +2859,7 @@ TEST(PACKET, ETH_IP6_ICMP6)
|
||||
const char *payload = packet_parse(&handler, (const char *)data14, sizeof(data14));
|
||||
EXPECT_TRUE(payload != nullptr);
|
||||
EXPECT_TRUE((char *)payload - (char *)&data14 == 14 + 40 + 8);
|
||||
packet_print(&handler);
|
||||
packet_print_str(&handler);
|
||||
|
||||
/******************************************************
|
||||
* packet_get_outermost/innermost_layer
|
||||
@@ -3050,7 +3050,7 @@ TEST(PACKET, ETH_IP4_UDP_L2TPV2_PPP_IP4_UDP)
|
||||
const char *payload = packet_parse(&handler, (const char *)data15, sizeof(data15));
|
||||
EXPECT_TRUE(payload != nullptr);
|
||||
EXPECT_TRUE((char *)payload - (char *)&data15 == 14 + 20 + 8 + 8 + 4 + 20 + 8);
|
||||
packet_print(&handler);
|
||||
packet_print_str(&handler);
|
||||
|
||||
/******************************************************
|
||||
* packet_get_outermost/innermost_layer
|
||||
@@ -3159,6 +3159,174 @@ TEST(PACKET, ETH_IP4_UDP_L2TPV2_PPP_IP4_UDP)
|
||||
}
|
||||
#endif
|
||||
|
||||
/******************************************************************************
|
||||
* [Protocols in frame: eth:ethertype:ip:tcp]
|
||||
******************************************************************************
|
||||
*
|
||||
* Frame 1: 60 bytes on wire (480 bits), 60 bytes captured (480 bits)
|
||||
* Ethernet II, Src: 52:54:00:94:27:9b (52:54:00:94:27:9b), Dst: 52:54:00:19:8f:63 (52:54:00:19:8f:63)
|
||||
* Destination: 52:54:00:19:8f:63 (52:54:00:19:8f:63)
|
||||
* Source: 52:54:00:94:27:9b (52:54:00:94:27:9b)
|
||||
* Type: IPv4 (0x0800)
|
||||
* Padding: 000000000000
|
||||
* Internet Protocol Version 4, Src: 192.168.122.202, Dst: 192.168.122.100
|
||||
* 0100 .... = Version: 4
|
||||
* .... 0101 = Header Length: 20 bytes (5)
|
||||
* Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
|
||||
* 0000 00.. = Differentiated Services Codepoint: Default (0)
|
||||
* .... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0)
|
||||
* Total Length: 40
|
||||
* Identification: 0x0c5e (3166)
|
||||
* 010. .... = Flags: 0x2, Don't fragment
|
||||
* 0... .... = Reserved bit: Not set
|
||||
* .1.. .... = Don't fragment: Set
|
||||
* ..0. .... = More fragments: Not set
|
||||
* ...0 0000 0000 0000 = Fragment Offset: 0
|
||||
* Time to Live: 64
|
||||
* Protocol: TCP (6)
|
||||
* Header Checksum: 0xb7f2 [correct]
|
||||
* [Header checksum status: Good]
|
||||
* [Calculated Checksum: 0xb7f2]
|
||||
* Source Address: 192.168.122.202
|
||||
* Destination Address: 192.168.122.100
|
||||
* Transmission Control Protocol, Src Port: 1080, Dst Port: 62395, Seq: 1457975085, Ack: 1047768425, Len: 0
|
||||
* Source Port: 1080
|
||||
* Destination Port: 62395
|
||||
* [Stream index: 0]
|
||||
* [Conversation completeness: Incomplete (4)]
|
||||
* ..0. .... = RST: Absent
|
||||
* ...0 .... = FIN: Absent
|
||||
* .... 0... = Data: Absent
|
||||
* .... .1.. = ACK: Present
|
||||
* .... ..0. = SYN-ACK: Absent
|
||||
* .... ...0 = SYN: Absent
|
||||
* [Completeness Flags: ···A··]
|
||||
* [TCP Segment Len: 0]
|
||||
* Sequence Number: 1457975085
|
||||
* [Next Sequence Number: 1457975085]
|
||||
* Acknowledgment Number: 1047768425
|
||||
* 0101 .... = Header Length: 20 bytes (5)
|
||||
* Flags: 0x010 (ACK)
|
||||
* 000. .... .... = Reserved: Not set
|
||||
* ...0 .... .... = Accurate ECN: Not set
|
||||
* .... 0... .... = Congestion Window Reduced: Not set
|
||||
* .... .0.. .... = ECN-Echo: Not set
|
||||
* .... ..0. .... = Urgent: Not set
|
||||
* .... ...1 .... = Acknowledgment: Set
|
||||
* .... .... 0... = Push: Not set
|
||||
* .... .... .0.. = Reset: Not set
|
||||
* .... .... ..0. = Syn: Not set
|
||||
* .... .... ...0 = Fin: Not set
|
||||
* [TCP Flags: ·······A····]
|
||||
* Window: 457
|
||||
* [Calculated window size: 457]
|
||||
* [Window size scaling factor: -1 (unknown)]
|
||||
* Checksum: 0x0da7 [correct]
|
||||
* [Calculated Checksum: 0x0da7]
|
||||
* [Checksum Status: Good]
|
||||
* Urgent Pointer: 0
|
||||
* [Timestamps]
|
||||
* [Time since first frame in this TCP stream: 0.000000000 seconds]
|
||||
* [Time since previous frame in this TCP stream: 0.000000000 seconds]
|
||||
*/
|
||||
|
||||
unsigned char data16[] = {
|
||||
0x52, 0x54, 0x00, 0x19, 0x8f, 0x63, 0x52, 0x54, 0x00, 0x94, 0x27, 0x9b, 0x08, 0x00, 0x45, 0x00, 0x00, 0x28, 0x0c, 0x5e, 0x40, 0x00, 0x40, 0x06, 0xb7, 0xf2,
|
||||
0xc0, 0xa8, 0x7a, 0xca, 0xc0, 0xa8, 0x7a, 0x64, 0x04, 0x38, 0xf3, 0xbb, 0x56, 0xe6, 0xef, 0x2d, 0x3e, 0x73, 0xad, 0x69, 0x50, 0x10, 0x01, 0xc9, 0x0d, 0xa7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||
|
||||
#if 1
|
||||
TEST(PACKET, ETH_IP4_TCP_PADDING)
|
||||
{
|
||||
char buffer[256];
|
||||
struct packet handler;
|
||||
|
||||
const char *payload = packet_parse(&handler, (const char *)data16, sizeof(data16));
|
||||
EXPECT_TRUE(payload != nullptr);
|
||||
EXPECT_TRUE((char *)payload - (char *)&data16 == 14 + 20 + 20);
|
||||
packet_print_str(&handler);
|
||||
|
||||
/******************************************************
|
||||
* packet_get_outermost/innermost_layer
|
||||
******************************************************/
|
||||
|
||||
// LAYER_TYPE_ETHER
|
||||
const struct packet_layer *outer_eth_record = packet_get_outermost_layer(&handler, LAYER_TYPE_ETHER);
|
||||
const struct packet_layer *inner_eth_record = packet_get_innermost_layer(&handler, LAYER_TYPE_ETHER);
|
||||
|
||||
EXPECT_TRUE(outer_eth_record != nullptr);
|
||||
EXPECT_TRUE(inner_eth_record != nullptr);
|
||||
EXPECT_TRUE(outer_eth_record == inner_eth_record);
|
||||
EXPECT_TRUE(outer_eth_record->hdr_offset == 0);
|
||||
EXPECT_TRUE(outer_eth_record->hdr_len == 14);
|
||||
EXPECT_TRUE(outer_eth_record->pld_len == 46);
|
||||
|
||||
// LAYER_TYPE_L2
|
||||
const struct packet_layer *outer_l2_record = packet_get_outermost_layer(&handler, LAYER_TYPE_L2);
|
||||
const struct packet_layer *inner_l2_record = packet_get_innermost_layer(&handler, LAYER_TYPE_L2);
|
||||
|
||||
EXPECT_TRUE(outer_l2_record != nullptr);
|
||||
EXPECT_TRUE(inner_l2_record != nullptr);
|
||||
EXPECT_TRUE(outer_l2_record == inner_l2_record);
|
||||
EXPECT_TRUE(outer_l2_record == outer_eth_record);
|
||||
|
||||
// LAYER_TYPE_IPV4
|
||||
const struct packet_layer *outer_ipv4_record = packet_get_outermost_layer(&handler, LAYER_TYPE_IPV4);
|
||||
const struct packet_layer *inner_ipv4_record = packet_get_innermost_layer(&handler, LAYER_TYPE_IPV4);
|
||||
|
||||
EXPECT_TRUE(outer_ipv4_record != nullptr);
|
||||
EXPECT_TRUE(inner_ipv4_record != nullptr);
|
||||
EXPECT_TRUE(outer_ipv4_record == inner_ipv4_record);
|
||||
EXPECT_TRUE(outer_ipv4_record->hdr_offset == 14);
|
||||
EXPECT_TRUE(outer_ipv4_record->hdr_len == 20);
|
||||
EXPECT_TRUE(outer_ipv4_record->pld_len == 20);
|
||||
|
||||
// LAYER_TYPE_L3
|
||||
const struct packet_layer *outer_l3_record = packet_get_outermost_layer(&handler, LAYER_TYPE_L3);
|
||||
const struct packet_layer *inner_l3_record = packet_get_innermost_layer(&handler, LAYER_TYPE_L3);
|
||||
|
||||
EXPECT_TRUE(outer_l3_record != nullptr);
|
||||
EXPECT_TRUE(inner_l3_record != nullptr);
|
||||
EXPECT_TRUE(outer_l3_record == inner_l3_record);
|
||||
EXPECT_TRUE(outer_l3_record == outer_ipv4_record);
|
||||
|
||||
// LAYER_TYPE_TCP
|
||||
const struct packet_layer *outer_tcp_record = packet_get_outermost_layer(&handler, LAYER_TYPE_TCP);
|
||||
const struct packet_layer *inner_tcp_record = packet_get_innermost_layer(&handler, LAYER_TYPE_TCP);
|
||||
|
||||
EXPECT_TRUE(outer_tcp_record != nullptr);
|
||||
EXPECT_TRUE(inner_tcp_record != nullptr);
|
||||
EXPECT_TRUE(outer_tcp_record == inner_tcp_record);
|
||||
EXPECT_TRUE(outer_tcp_record->hdr_offset == 34);
|
||||
EXPECT_TRUE(outer_tcp_record->hdr_len == 20);
|
||||
EXPECT_TRUE(outer_tcp_record->pld_len == 0);
|
||||
|
||||
// LAYER_TYPE_L4
|
||||
const struct packet_layer *outer_l4_record = packet_get_outermost_layer(&handler, LAYER_TYPE_L4);
|
||||
const struct packet_layer *inner_l4_record = packet_get_innermost_layer(&handler, LAYER_TYPE_L4);
|
||||
|
||||
EXPECT_TRUE(outer_l4_record != nullptr);
|
||||
EXPECT_TRUE(inner_l4_record != nullptr);
|
||||
EXPECT_TRUE(outer_l4_record == inner_l4_record);
|
||||
EXPECT_TRUE(outer_l4_record == outer_tcp_record);
|
||||
|
||||
/******************************************************
|
||||
* packet_get_outermost/innermost_tuple4
|
||||
******************************************************/
|
||||
|
||||
struct tuple4 outer_tuple4;
|
||||
struct tuple4 inner_tuple4;
|
||||
EXPECT_TRUE(packet_get_outermost_tuple4(&handler, &outer_tuple4) == 0);
|
||||
EXPECT_TRUE(packet_get_innermost_tuple4(&handler, &inner_tuple4) == 0);
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
tuple4_to_str(&outer_tuple4, buffer, sizeof(buffer));
|
||||
EXPECT_STREQ(buffer, "192.168.122.202:1080-192.168.122.100:62395");
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
tuple4_to_str(&inner_tuple4, buffer, sizeof(buffer));
|
||||
EXPECT_STREQ(buffer, "192.168.122.202:1080-192.168.122.100:62395");
|
||||
}
|
||||
#endif
|
||||
|
||||
#if 1
|
||||
TEST(PACKET, HASH_VALUE)
|
||||
{
|
||||
@@ -3167,7 +3335,7 @@ TEST(PACKET, HASH_VALUE)
|
||||
const char *payload = packet_parse(&handler, (const char *)data4, sizeof(data4));
|
||||
EXPECT_TRUE(payload != nullptr);
|
||||
EXPECT_TRUE((char *)payload - (char *)&data4 == 106);
|
||||
packet_print(&handler);
|
||||
packet_print_str(&handler);
|
||||
|
||||
// buffer: "2001:da8:200:900e:200:5efe:d24d:58a3 0 2600:140e:6::1702:1058 0"
|
||||
// buffer: "210.77.88.163 0 59.66.4.50 0"
|
||||
|
||||
Reference in New Issue
Block a user