summaryrefslogtreecommitdiff
path: root/infra/test/TestPacketParser.cc
diff options
context:
space:
mode:
Diffstat (limited to 'infra/test/TestPacketParser.cc')
-rw-r--r--infra/test/TestPacketParser.cc104
1 files changed, 104 insertions, 0 deletions
diff --git a/infra/test/TestPacketParser.cc b/infra/test/TestPacketParser.cc
index 062829c..3671087 100644
--- a/infra/test/TestPacketParser.cc
+++ b/infra/test/TestPacketParser.cc
@@ -736,6 +736,110 @@ TEST(PacketParseInnerL3, EtherIPv6UDPGTPv1EXTIPv6)
TestCheckIPv6Addr(result, "2409:8034:2000::4", "2409:8934:4484:1236:60a5:d6ff:fefc:9c59");
}
+/*
+ Frame 33857: 318 bytes on wire (2544 bits), 318 bytes captured (2544 bits)
+ Ethernet II, Src: 0a:0a:0a:0a:00:10 (0a:0a:0a:0a:00:10), Dst: 90:00:00:91:40:46 (90:00:00:91:40:46)
+ Internet Protocol Version 4, Src: 10.10.0.16, Dst: 10.252.22.1
+ User Datagram Protocol, Src Port: 60055, Dst Port: 4789
+ Virtual eXtensible Local Area Network
+ Ethernet II, Src: HuaweiTe_2a:dc:03 (10:51:72:2a:dc:03), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
+ 802.1Q Virtual LAN, PRI: 0, DEI: 0, ID: 600
+ Internet Protocol Version 4, Src: 10.202.0.74, Dst: 10.254.142.4
+ User Datagram Protocol, Src Port: 2152, Dst Port: 2152
+ GPRS Tunneling Protocol
+ Internet Protocol Version 4, Src: 216.58.209.132, Dst: 10.59.238.65
+ Transmission Control Protocol, Src Port: 443, Dst Port: 37714, Seq: 1, Ack: 1, Len: 162
+ Transport Layer Security
+*/
+static const unsigned char _pkt_gtp_u_over_vxlan_tls_1[318] = {
+0x90, 0x00, 0x00, 0x91, 0x40, 0x46, 0x0a, 0x0a, /* ....@F.. */
+0x0a, 0x0a, 0x00, 0x10, 0x08, 0x00, 0x45, 0x00, /* ......E. */
+0x01, 0x30, 0x00, 0x00, 0x40, 0x00, 0x40, 0x11, /* .0..@.@. */
+0x0e, 0xa7, 0x0a, 0x0a, 0x00, 0x10, 0x0a, 0xfc, /* ........ */
+0x16, 0x01, 0xea, 0x97, 0x12, 0xb5, 0x01, 0x1c, /* ........ */
+0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, /* ........ */
+0x39, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 9....... */
+0x10, 0x51, 0x72, 0x2a, 0xdc, 0x03, 0x81, 0x00, /* .Qr*.... */
+0x02, 0x58, 0x08, 0x00, 0x45, 0x00, 0x00, 0xfa, /* .X..E... */
+0xde, 0x40, 0x00, 0x00, 0x3d, 0x11, 0xfa, 0x9c, /* .@..=... */
+0x0a, 0xca, 0x00, 0x4a, 0x0a, 0xfe, 0x8e, 0x04, /* ...J.... */
+0x08, 0x68, 0x08, 0x68, 0x00, 0xe6, 0x00, 0x00, /* .h.h.... */
+0x30, 0xff, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x8d, /* 0....... */
+0x45, 0x00, 0x00, 0xd6, 0x8d, 0x70, 0x00, 0x00, /* E....p.. */
+0x39, 0x06, 0x51, 0x76, 0xd8, 0x3a, 0xd1, 0x84, /* 9.Qv.:.. */
+0x0a, 0x3b, 0xee, 0x41, 0x01, 0xbb, 0x93, 0x52, /* .;.A...R */
+0xed, 0xc0, 0xfd, 0x50, 0x97, 0x79, 0xf8, 0x1f, /* ...P.y.. */
+0x80, 0x19, 0x01, 0x05, 0xf7, 0x13, 0x00, 0x00, /* ........ */
+0x01, 0x01, 0x08, 0x0a, 0x77, 0xe8, 0x07, 0x3f, /* ....w..? */
+0x00, 0x22, 0xac, 0xc2, 0x16, 0x03, 0x03, 0x00, /* ."...... */
+0x6a, 0x02, 0x00, 0x00, 0x66, 0x03, 0x03, 0x61, /* j...f..a */
+0x92, 0x5a, 0x25, 0x9c, 0xf5, 0x72, 0xba, 0x26, /* .Z%..r.& */
+0x90, 0xdd, 0xb7, 0xdb, 0x28, 0xad, 0xb3, 0xc7, /* ....(... */
+0x84, 0xd1, 0xac, 0x58, 0x44, 0x46, 0x51, 0x44, /* ...XDFQD */
+0x4f, 0x57, 0x4e, 0x47, 0x52, 0x44, 0x01, 0x20, /* OWNGRD. */
+0xca, 0xcb, 0x30, 0xe4, 0x4a, 0x36, 0x14, 0x93, /* ..0.J6.. */
+0x1e, 0x53, 0x67, 0xa6, 0xa2, 0xc7, 0x94, 0xca, /* .Sg..... */
+0x41, 0xd7, 0x05, 0xf9, 0xed, 0x97, 0xcc, 0x8b, /* A....... */
+0xb5, 0x66, 0xbe, 0x9f, 0x54, 0x7f, 0xdd, 0x5e, /* .f..T..^ */
+0xc0, 0x2b, 0x00, 0x00, 0x1e, 0x00, 0x17, 0x00, /* .+...... */
+0x00, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x0b, /* ........ */
+0x00, 0x02, 0x01, 0x00, 0x00, 0x10, 0x00, 0x0b, /* ........ */
+0x00, 0x09, 0x08, 0x68, 0x74, 0x74, 0x70, 0x2f, /* ...http/ */
+0x31, 0x2e, 0x31, 0x14, 0x03, 0x03, 0x00, 0x01, /* 1.1..... */
+0x01, 0x16, 0x03, 0x03, 0x00, 0x28, 0x00, 0x00, /* .....(.. */
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3d, /* ......>= */
+0x1c, 0x7f, 0xe0, 0xdd, 0x4e, 0x13, 0x81, 0xd5, /* ....N... */
+0x78, 0xc8, 0x3c, 0xe6, 0x6d, 0xa6, 0xfe, 0xbf, /* x.<.m... */
+0x00, 0x02, 0xb0, 0x6c, 0xd7, 0x76, 0xa4, 0x30, /* ...l.v.0 */
+0x16, 0xf7, 0xb1, 0x51, 0x3d, 0x54 /* ...Q=T */
+};
+
+TEST(PacketParseOuterL3, EtherVxlanGTPIPv4TCP)
+{
+ struct pkt_parser _pkt_gtp_u_over_vxlan_tls_1_handler;
+ _pkt_gtp_u_over_vxlan_tls_1_handler.expect_layer_type = LAYER_TYPE_L3;
+ _pkt_gtp_u_over_vxlan_tls_1_handler.nr_expect_results = 1;
+ _pkt_gtp_u_over_vxlan_tls_1_handler.nr_results = 0;
+
+ complex_parser_ether(&_pkt_gtp_u_over_vxlan_tls_1_handler, _pkt_gtp_u_over_vxlan_tls_1);
+ EXPECT_EQ(_pkt_gtp_u_over_vxlan_tls_1_handler.nr_results, 1);
+
+ struct pkt_parser_result * result = &_pkt_gtp_u_over_vxlan_tls_1_handler.results[0];
+ EXPECT_EQ(result->this_layer_type, LAYER_TYPE_IPV4);
+ EXPECT_TRUE(result->data != NULL);
+
+ TestCheckIPv4Addr(result, "10.10.0.16", "10.252.22.1");
+}
+
+TEST(PacketParseInnerL3, EtherVxlanGTPIPv4TCP)
+{
+ struct pkt_parser _pkt_gtp_u_over_vxlan_tls_1_handler;
+ _pkt_gtp_u_over_vxlan_tls_1_handler.expect_layer_type = LAYER_TYPE_L3;
+ _pkt_gtp_u_over_vxlan_tls_1_handler.nr_expect_results = 4;
+ _pkt_gtp_u_over_vxlan_tls_1_handler.nr_results = 0;
+
+ complex_parser_ether(&_pkt_gtp_u_over_vxlan_tls_1_handler, _pkt_gtp_u_over_vxlan_tls_1);
+ EXPECT_EQ(_pkt_gtp_u_over_vxlan_tls_1_handler.nr_results, 3);
+
+ struct pkt_parser_result * result = &_pkt_gtp_u_over_vxlan_tls_1_handler.results[0];
+ EXPECT_EQ(result->this_layer_type, LAYER_TYPE_IPV4);
+ EXPECT_TRUE(result->data != NULL);
+
+ TestCheckIPv4Addr(result, "10.10.0.16", "10.252.22.1");
+
+ result = &_pkt_gtp_u_over_vxlan_tls_1_handler.results[1];
+ EXPECT_EQ(result->this_layer_type, LAYER_TYPE_IPV4);
+ EXPECT_TRUE(result->data != NULL);
+
+ TestCheckIPv4Addr(result, "10.202.0.74", "10.254.142.4");
+
+ result = &_pkt_gtp_u_over_vxlan_tls_1_handler.results[2];
+ EXPECT_EQ(result->this_layer_type, LAYER_TYPE_IPV4);
+ EXPECT_TRUE(result->data != NULL);
+
+ TestCheckIPv4Addr(result, "216.58.209.132", "10.59.238.65");
+}
+
#if 0
TEST(DistributerInner4, EtherIPv4VxLANIPv4TCP)
{