This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
tango-tsg-service-chaining-…/test/gtest_vlan_encapsulate.cpp

499 lines
23 KiB
C++

#include "gtest_utils.h"
#include "packet_io.h"
/*
* Frame 3: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
* Encapsulation type: Ethernet (1)
* Arrival Time: Mar 1, 2019 11:22:58.243662000 CST
* [Time shift for this packet: 0.000000000 seconds]
* Epoch Time: 1551410578.243662000 seconds
* [Time delta from previous captured frame: 0.000428000 seconds]
* [Time delta from previous displayed frame: 0.000428000 seconds]
* [Time since reference or first frame: 0.000474000 seconds]
* Frame Number: 3
* Frame Length: 66 bytes (528 bits)
* Capture Length: 66 bytes (528 bits)
* [Frame is marked: False]
* [Frame is ignored: False]
* [Protocols in frame: eth:ethertype:ip:tcp]
* [Coloring Rule Name: TCP]
* [Coloring Rule String: tcp]
* Ethernet II, Src: 76:fc:ca:ef:29:28 (76:fc:ca:ef:29:28), Dst: AdlinkTe_4b:58:64 (00:30:64:4b:58:64)
* Destination: AdlinkTe_4b:58:64 (00:30:64:4b:58:64)
* Address: AdlinkTe_4b:58:64 (00:30:64:4b:58:64)
* .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
* .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
* Source: 76:fc:ca:ef:29:28 (76:fc:ca:ef:29:28)
* Address: 76:fc:ca:ef:29:28 (76:fc:ca:ef:29:28)
* .... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
* .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
* Type: IPv4 (0x0800)
* Internet Protocol Version 4, Src: 192.168.10.250, Dst: 192.168.10.234
* 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: 52
* Identification: 0x4878 (18552)
* 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: 127
* Protocol: TCP (6)
* Header Checksum: 0x1c17 [correct]
* [Header checksum status: Good]
* [Calculated Checksum: 0x1c17]
* Source Address: 192.168.10.250
* Destination Address: 192.168.10.234
* Transmission Control Protocol, Src Port: 58725, Dst Port: 22, Seq: 1, Ack: 1, Len: 0
* Source Port: 58725
* Destination Port: 22
* [Stream index: 0]
* [Conversation completeness: Complete, WITH_DATA (31)]
* [TCP Segment Len: 0]
* Sequence Number: 1 (relative sequence number)
* Sequence Number (raw): 2587138324
* [Next Sequence Number: 1 (relative sequence number)]
* Acknowledgment Number: 1 (relative ack number)
* Acknowledgment number (raw): 2046996948
* 1000 .... = Header Length: 32 bytes (8)
* 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: 16646
* [Calculated window size: 66584]
* [Window size scaling factor: 4]
* Checksum: 0xa4ff [correct]
* [Checksum Status: Good]
* [Calculated Checksum: 0xa4ff]
* Urgent Pointer: 0
* Options: (12 bytes), No-Operation (NOP), No-Operation (NOP), Timestamps
* TCP Option - No-Operation (NOP)
* Kind: No-Operation (1)
* TCP Option - No-Operation (NOP)
* Kind: No-Operation (1)
* TCP Option - Timestamps
* Kind: Time Stamp Option (8)
* Length: 10
* Timestamp value: 155719012: TSval 155719012, TSecr 1560361273
* Timestamp echo reply: 1560361273
* [Timestamps]
* [Time since first frame in this TCP stream: 0.000474000 seconds]
* [Time since previous frame in this TCP stream: 0.000428000 seconds]
* [SEQ/ACK analysis]
* [This is an ACK to the segment in frame: 2]
* [The RTT to ACK the segment was: 0.000428000 seconds]
* [iRTT: 0.000474000 seconds]
*/
static u_char data_packet1_no_vlan_layer[] = {
0x00, 0x30, 0x64, 0x4b, 0x58, 0x64, 0x76, 0xfc, 0xca, 0xef, 0x29, 0x28, 0x08, 0x00, /* ETH */
0x45, 0x00, 0x00, 0x34, 0x48, 0x78, 0x40, 0x00, 0x7f, 0x06, 0x1c, 0x17, 0xc0, 0xa8, 0x0a, 0xfa,
0xc0, 0xa8, 0x0a, 0xea, /* IPv4 */
0xe5, 0x65, 0x00, 0x16, 0x9a, 0x34, 0x99, 0x14, 0x7a, 0x02, 0xb1, 0xd4, 0x80, 0x10, 0x41, 0x06,
0xa4, 0xff, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x09, 0x48, 0x15, 0x64, 0x5d, 0x01, 0x39, 0x39 /* TCP */};
/*
* Frame 1: 70 bytes on wire (560 bits), 70 bytes captured (560 bits)
* Encapsulation type: Ethernet (1)
* Arrival Time: Nov 6, 1999 02:20:41.093005000 CST
* [Time shift for this packet: 0.000000000 seconds]
* Epoch Time: 941826041.093005000 seconds
* [Time delta from previous captured frame: 0.000000000 seconds]
* [Time delta from previous displayed frame: 0.000000000 seconds]
* [Time since reference or first frame: 0.000000000 seconds]
* Frame Number: 1
* Frame Length: 70 bytes (560 bits)
* Capture Length: 70 bytes (560 bits)
* [Frame is marked: False]
* [Frame is ignored: False]
* [Protocols in frame: eth:ethertype:vlan:ethertype:ip:tcp]
* [Coloring Rule Name: TCP]
* [Coloring Rule String: tcp]
* Ethernet II, Src: 3com_9f:b1:f3 (00:60:08:9f:b1:f3), Dst: AniCommu_40:ef:24 (00:40:05:40:ef:24)
* Destination: AniCommu_40:ef:24 (00:40:05:40:ef:24)
* Address: AniCommu_40:ef:24 (00:40:05:40:ef:24)
* .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
* .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
* Source: 3com_9f:b1:f3 (00:60:08:9f:b1:f3)
* Address: 3com_9f:b1:f3 (00:60:08:9f:b1:f3)
* .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
* .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
* Type: 802.1Q Virtual LAN (0x8100)
* 802.1Q Virtual LAN, PRI: 0, DEI: 0, ID: 32
* 000. .... .... .... = Priority: Best Effort (default) (0)
* ...0 .... .... .... = DEI: Ineligible
* .... 0000 0010 0000 = ID: 32
* Type: IPv4 (0x0800)
* Internet Protocol Version 4, Src: 131.151.32.21, Dst: 131.151.32.129
* 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: 52
* Identification: 0x8a9b (35483)
* 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: 0x6864 [correct]
* [Header checksum status: Good]
* [Calculated Checksum: 0x6864]
* Source Address: 131.151.32.21
* Destination Address: 131.151.32.129
* Transmission Control Protocol, Src Port: 6000, Dst Port: 1162, Seq: 1, Ack: 1, Len: 0
* Source Port: 6000
* Destination Port: 1162
* [Stream index: 0]
* [Conversation completeness: Incomplete (4)]
* [TCP Segment Len: 0]
* Sequence Number: 1 (relative sequence number)
* Sequence Number (raw): 1295870649
* [Next Sequence Number: 1 (relative sequence number)]
* Acknowledgment Number: 1 (relative ack number)
* Acknowledgment number (raw): 1310007649
* 1000 .... = Header Length: 32 bytes (8)
* 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: 31856
* [Calculated window size: 31856]
* [Window size scaling factor: -1 (unknown)]
* Checksum: 0xd7f9 [correct]
* [Checksum Status: Good]
* [Calculated Checksum: 0xd7f9]
* Urgent Pointer: 0
* Options: (12 bytes), No-Operation (NOP), No-Operation (NOP), Timestamps
* TCP Option - No-Operation (NOP)
* Kind: No-Operation (1)
* TCP Option - No-Operation (NOP)
* Kind: No-Operation (1)
* TCP Option - Timestamps
* Kind: Time Stamp Option (8)
* Length: 10
* Timestamp value: 26846298: TSval 26846298, TSecr 323887
* Timestamp echo reply: 323887
* [Timestamps]
* [Time since first frame in this TCP stream: 0.000000000 seconds]
* [Time since previous frame in this TCP stream: 0.000000000 seconds]
*/
static u_char data_packet2_one_vlan_layer[] = {
0x00, 0x40, 0x05, 0x40, 0xef, 0x24, 0x00, 0x60, 0x08, 0x9f, 0xb1, 0xf3, 0x81, 0x00, /* ETH */
0x00, 0x20, 0x08, 0x00, /* VLAN */
0x45, 0x00, 0x00, 0x34, 0x8a, 0x9b, 0x40, 0x00, 0x40, 0x06, 0x68, 0x64, 0x83, 0x97, 0x20, 0x15,
0x83, 0x97, 0x20, 0x81, /* IPv4 */
0x17, 0x70, 0x04, 0x8a, 0x4d, 0x3d, 0x6a, 0xb9, 0x4e, 0x15, 0x21, 0x61, 0x80, 0x10, 0x7c, 0x70,
0xd7, 0xf9, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x01, 0x99, 0xa4, 0x5a, 0x00, 0x04, 0xf1, 0x2f /* TCP */};
/*
* Frame 1: 122 bytes on wire (976 bits), 122 bytes captured (976 bits)
* Encapsulation type: Ethernet (1)
* Arrival Time: Jun 30, 2010 03:41:35.140128000 CST
* [Time shift for this packet: 0.000000000 seconds]
* Epoch Time: 1277840495.140128000 seconds
* [Time delta from previous captured frame: 0.000000000 seconds]
* [Time delta from previous displayed frame: 0.000000000 seconds]
* [Time since reference or first frame: 0.000000000 seconds]
* Frame Number: 1
* Frame Length: 122 bytes (976 bits)
* Capture Length: 122 bytes (976 bits)
* [Frame is marked: False]
* [Frame is ignored: False]
* [Protocols in frame: eth:ethertype:vlan:ethertype:vlan:ethertype:ip:tcp:data]
* [Coloring Rule Name: TCP]
* [Coloring Rule String: tcp]
* Ethernet II, Src: Cisco_df:ae:18 (00:13:c3:df:ae:18), Dst: Cisco_1b:a4:d8 (00:1b:d4:1b:a4:d8)
* Destination: Cisco_1b:a4:d8 (00:1b:d4:1b:a4:d8)
* Address: Cisco_1b:a4:d8 (00:1b:d4:1b:a4:d8)
* .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
* .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
* Source: Cisco_df:ae:18 (00:13:c3:df:ae:18)
* Address: Cisco_df:ae:18 (00:13:c3:df:ae:18)
* .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
* .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
* Type: 802.1Q Virtual LAN (0x8100)
* 802.1Q Virtual LAN, PRI: 0, DEI: 0, ID: 118
* 000. .... .... .... = Priority: Best Effort (default) (0)
* ...0 .... .... .... = DEI: Ineligible
* .... 0000 0111 0110 = ID: 118
* Type: 802.1Q Virtual LAN (0x8100)
* 802.1Q Virtual LAN, PRI: 0, DEI: 0, ID: 10
* 000. .... .... .... = Priority: Best Effort (default) (0)
* ...0 .... .... .... = DEI: Ineligible
* .... 0000 0000 1010 = ID: 10
* Type: IPv4 (0x0800)
* Internet Protocol Version 4, Src: 10.118.10.1, Dst: 10.118.10.2
* 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: 100
* Identification: 0x0012 (18)
* 000. .... = Flags: 0x0
* 0... .... = Reserved bit: Not set
* .0.. .... = Don't fragment: Not set
* ..0. .... = More fragments: Not set
* ...0 0000 0000 0000 = Fragment Offset: 0
* Time to Live: 255
* Protocol: TCP (6)
* Header Checksum: 0x9293 [correct]
* [Header checksum status: Good]
* [Calculated Checksum: 0x9293]
* Source Address: 10.118.10.1
* Destination Address: 10.118.10.2
* Transmission Control Protocol, Src Port: 2048, Dst Port: 52912, Seq: 1, Ack: 1, Len: 60
* Source Port: 2048
* Destination Port: 52912
* [Stream index: 0]
* [Conversation completeness: Incomplete (8)]
* [TCP Segment Len: 60]
* Sequence Number: 1 (relative sequence number)
* Sequence Number (raw): 196611
* [Next Sequence Number: 61 (relative sequence number)]
* Acknowledgment Number: 1 (relative ack number)
* Acknowledgment number (raw): 0
* 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: 44916
* [Calculated window size: 44916]
* [Window size scaling factor: -1 (unknown)]
* Checksum: 0x8965 [correct]
* [Checksum Status: Good]
* [Calculated Checksum: 0x8965]
* 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]
* [SEQ/ACK analysis]
* [Bytes in flight: 60]
* [Bytes sent since last PSH flag: 60]
* TCP payload (60 bytes)
* Data (60 bytes)
* Data: 00cdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd…
* [Length: 60]
*/
static u_char data_packet3_two_vlan_layer[] = {
0x00, 0x1b, 0xd4, 0x1b, 0xa4, 0xd8, 0x00, 0x13, 0xc3, 0xdf, 0xae, 0x18, 0x81, 0x00, /* ETH */
0x00, 0x76, 0x81, 0x00, /* VLAN */
0x00, 0x0a, 0x08, 0x00, /* VLAN */
0x45, 0x00, 0x00, 0x64, 0x00, 0x12, 0x00, 0x00, 0xff, 0x06, 0x92, 0x93, 0x0a, 0x76, 0x0a, 0x01,
0x0a, 0x76, 0x0a, 0x02, /* IPv4 */
0x08, 0x00, 0xce, 0xb0, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x50, 0x10, 0xaf, 0x74,
0x89, 0x65, 0x00, 0x00, 0x00, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd /* TCP */};
static u_char expect_packet1_prepend_vlan_header[] = {
0x00, 0x30, 0x64, 0x4b, 0x58, 0x64, 0x76, 0xfc, 0xca, 0xef, 0x29, 0x28, 0x81, 0x00, /* ETH */
0x04, 0x00, 0x08, 0x00, /* VLAN */
0x45, 0x00, 0x00, 0x34, 0x48, 0x78, 0x40, 0x00, 0x7f, 0x06, 0x1c, 0x17, 0xc0, 0xa8, 0x0a, 0xfa,
0xc0, 0xa8, 0x0a, 0xea, /* IPv4 */
0xe5, 0x65, 0x00, 0x16, 0x9a, 0x34, 0x99, 0x14, 0x7a, 0x02, 0xb1, 0xd4, 0x80, 0x10, 0x41, 0x06,
0xa4, 0xff, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x09, 0x48, 0x15, 0x64, 0x5d, 0x01, 0x39, 0x39 /* TCP */};
static u_char expect_packet2_prepend_vlan_header[] = {
0x00, 0x40, 0x05, 0x40, 0xef, 0x24, 0x00, 0x60, 0x08, 0x9f, 0xb1, 0xf3, 0x81, 0x00, /* ETH */
0x04, 0x00, 0x81, 0x00, /* VLAN */
0x00, 0x20, 0x08, 0x00, /* VLAN */
0x45, 0x00, 0x00, 0x34, 0x8a, 0x9b, 0x40, 0x00, 0x40, 0x06, 0x68, 0x64, 0x83, 0x97, 0x20, 0x15,
0x83, 0x97, 0x20, 0x81, /* IPv4 */
0x17, 0x70, 0x04, 0x8a, 0x4d, 0x3d, 0x6a, 0xb9, 0x4e, 0x15, 0x21, 0x61, 0x80, 0x10, 0x7c, 0x70,
0xd7, 0xf9, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x01, 0x99, 0xa4, 0x5a, 0x00, 0x04, 0xf1, 0x2f /* TCP */};
static u_char expect_packet3_prepend_vlan_header[] = {
0x00, 0x1b, 0xd4, 0x1b, 0xa4, 0xd8, 0x00, 0x13, 0xc3, 0xdf, 0xae, 0x18, 0x81, 0x00, /* ETH */
0x04, 0x00, 0x81, 0x00, /* VLAN */
0x00, 0x76, 0x81, 0x00, /* VLAN */
0x00, 0x0a, 0x08, 0x00, /* VLAN */
0x45, 0x00, 0x00, 0x64, 0x00, 0x12, 0x00, 0x00, 0xff, 0x06, 0x92, 0x93, 0x0a, 0x76, 0x0a, 0x01,
0x0a, 0x76, 0x0a, 0x02, /* IPv4 */
0x08, 0x00, 0xce, 0xb0, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x50, 0x10, 0xaf, 0x74,
0x89, 0x65, 0x00, 0x00, 0x00, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd /* TCP */};
static u_char expect_packet2_replace_vlan_header[] = {
0x00, 0x40, 0x05, 0x40, 0xef, 0x24, 0x00, 0x60, 0x08, 0x9f, 0xb1, 0xf3, 0x81, 0x00, /* ETH */
0x04, 0x00, 0x08, 0x00, /* VLAN */
0x45, 0x00, 0x00, 0x34, 0x8a, 0x9b, 0x40, 0x00, 0x40, 0x06, 0x68, 0x64, 0x83, 0x97, 0x20, 0x15,
0x83, 0x97, 0x20, 0x81, /* IPv4 */
0x17, 0x70, 0x04, 0x8a, 0x4d, 0x3d, 0x6a, 0xb9, 0x4e, 0x15, 0x21, 0x61, 0x80, 0x10, 0x7c, 0x70,
0xd7, 0xf9, 0x00, 0x00, 0x01, 0x01, 0x08, 0x0a, 0x01, 0x99, 0xa4, 0x5a, 0x00, 0x04, 0xf1, 0x2f /* TCP */};
static u_char expect_packet3_replace_vlan_header[] = {
0x00, 0x1b, 0xd4, 0x1b, 0xa4, 0xd8, 0x00, 0x13, 0xc3, 0xdf, 0xae, 0x18, 0x81, 0x00, /* ETH */
0x04, 0x00, 0x08, 0x00, /* VLAN */
0x45, 0x00, 0x00, 0x64, 0x00, 0x12, 0x00, 0x00, 0xff, 0x06, 0x92, 0x93, 0x0a, 0x76, 0x0a, 0x01,
0x0a, 0x76, 0x0a, 0x02, /* IPv4 */
0x08, 0x00, 0xce, 0xb0, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x50, 0x10, 0xaf, 0x74,
0x89, 0x65, 0x00, 0x00, 0x00, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,
0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd /* TCP */};
static void hexdump(char *data, uint32_t len)
{
for (uint32_t i = 0; i < len; i++)
{
printf("%02X", data[i] & 0xFF);
}
printf("\n");
for (uint32_t i = 0; i < len; i++)
{
printf("0x%02X, ", data[i] & 0xFF);
}
printf("\n");
}
TEST(PACKET_IO, VLAN_ENCAPSULATE_PREPEND_HEADER_1)
{
marsio_buff_t *mbuff = NULL;
int replace_orig_vlan_header = 0;
build_mbuf_for_data_pkt(mbuff, data_packet1_no_vlan_layer, sizeof(data_packet1_no_vlan_layer), 290484492702581737, 1);
vlan_encapsulate(mbuff, 1024, replace_orig_vlan_header);
char *data = marsio_buff_mtod(mbuff);
uint32_t len = marsio_buff_datalen(mbuff);
hexdump(data, len);
EXPECT_TRUE(len == sizeof(expect_packet1_prepend_vlan_header));
EXPECT_TRUE(memcmp(data, expect_packet1_prepend_vlan_header, len) == 0);
marsio_buff_free(NULL, &mbuff, 1, 0, 0);
}
TEST(PACKET_IO, VLAN_ENCAPSULATE_PREPEND_HEADER_2)
{
marsio_buff_t *mbuff = NULL;
int replace_orig_vlan_header = 0;
build_mbuf_for_data_pkt(mbuff, data_packet2_one_vlan_layer, sizeof(data_packet2_one_vlan_layer), 290484492702581737, 1);
vlan_encapsulate(mbuff, 1024, replace_orig_vlan_header);
char *data = marsio_buff_mtod(mbuff);
uint32_t len = marsio_buff_datalen(mbuff);
hexdump(data, len);
EXPECT_TRUE(len == sizeof(expect_packet2_prepend_vlan_header));
EXPECT_TRUE(memcmp(data, expect_packet2_prepend_vlan_header, len) == 0);
marsio_buff_free(NULL, &mbuff, 1, 0, 0);
}
TEST(PACKET_IO, VLAN_ENCAPSULATE_PREPEND_HEADER_3)
{
marsio_buff_t *mbuff = NULL;
int replace_orig_vlan_header = 0;
build_mbuf_for_data_pkt(mbuff, data_packet3_two_vlan_layer, sizeof(data_packet3_two_vlan_layer), 290484492702581737, 1);
vlan_encapsulate(mbuff, 1024, replace_orig_vlan_header);
char *data = marsio_buff_mtod(mbuff);
uint32_t len = marsio_buff_datalen(mbuff);
hexdump(data, len);
EXPECT_TRUE(len == sizeof(expect_packet3_prepend_vlan_header));
EXPECT_TRUE(memcmp(data, expect_packet3_prepend_vlan_header, len) == 0);
marsio_buff_free(NULL, &mbuff, 1, 0, 0);
}
TEST(PACKET_IO, VLAN_ENCAPSULATE_PEPLACE_HEADER_1)
{
marsio_buff_t *mbuff = NULL;
int replace_orig_vlan_header = 1;
build_mbuf_for_data_pkt(mbuff, data_packet1_no_vlan_layer, sizeof(data_packet1_no_vlan_layer), 290484492702581737, 1);
vlan_encapsulate(mbuff, 1024, replace_orig_vlan_header);
char *data = marsio_buff_mtod(mbuff);
uint32_t len = marsio_buff_datalen(mbuff);
hexdump(data, len);
EXPECT_TRUE(len == sizeof(expect_packet1_prepend_vlan_header));
EXPECT_TRUE(memcmp(data, expect_packet1_prepend_vlan_header, len) == 0);
marsio_buff_free(NULL, &mbuff, 1, 0, 0);
}
TEST(PACKET_IO, VLAN_ENCAPSULATE_PEPLACE_HEADER_2)
{
marsio_buff_t *mbuff = NULL;
int replace_orig_vlan_header = 1;
build_mbuf_for_data_pkt(mbuff, data_packet2_one_vlan_layer, sizeof(data_packet2_one_vlan_layer), 290484492702581737, 1);
vlan_encapsulate(mbuff, 1024, replace_orig_vlan_header);
char *data = marsio_buff_mtod(mbuff);
uint32_t len = marsio_buff_datalen(mbuff);
hexdump(data, len);
EXPECT_TRUE(len == sizeof(expect_packet2_replace_vlan_header));
EXPECT_TRUE(memcmp(data, expect_packet2_replace_vlan_header, len) == 0);
marsio_buff_free(NULL, &mbuff, 1, 0, 0);
}
TEST(PACKET_IO, VLAN_ENCAPSULATE_PEPLACE_HEADER_3)
{
marsio_buff_t *mbuff = NULL;
int replace_orig_vlan_header = 1;
build_mbuf_for_data_pkt(mbuff, data_packet3_two_vlan_layer, sizeof(data_packet3_two_vlan_layer), 290484492702581737, 1);
vlan_encapsulate(mbuff, 1024, replace_orig_vlan_header);
char *data = marsio_buff_mtod(mbuff);
uint32_t len = marsio_buff_datalen(mbuff);
hexdump(data, len);
EXPECT_TRUE(len == sizeof(expect_packet3_replace_vlan_header));
EXPECT_TRUE(memcmp(data, expect_packet3_replace_vlan_header, len) == 0);
marsio_buff_free(NULL, &mbuff, 1, 0, 0);
}
int main(int argc, char **argv)
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}