Dmitry Eremin-Solenikov(lumag) replied on github web page:

test/validation/api/packet/packet.c
line 443
@@ -2713,6 +2714,216 @@ static void parse_eth_ipv6_tcp(void)
        odp_packet_free_multi(pkt, num_pkt);
 }
 
+/* Ethernet/VLAN/IPv4/UDP */
+static void parse_eth_vlan_ipv4_udp(void)
+{
+       odp_packet_parse_param_t parse;
+       int i;
+       int num_pkt = parse_test.num_pkt;
+       odp_packet_t pkt[num_pkt];
+       uint32_t offset[num_pkt];
+
+       parse_test_alloc(pkt, test_packet_vlan_ipv4_udp,
+                        sizeof(test_packet_vlan_ipv4_udp));
+
+       for (i = 0; i < num_pkt; i++)
+               offset[i] = 0;
+
+       parse.proto = ODP_PROTO_ETH;
+       parse.last_layer = ODP_PROTO_LAYER_L4;
+       parse.chksums.all_chksum = 0;
+
+       CU_ASSERT(odp_packet_parse(pkt[0], offset[0], &parse) == 0);
+       CU_ASSERT(odp_packet_parse_multi(&pkt[1], &offset[1],
+                                        num_pkt - 1, &parse) == (num_pkt - 1));
+
+       for (i = 0; i < num_pkt; i++) {
+               CU_ASSERT(odp_packet_has_eth(pkt[i]));
+               CU_ASSERT(odp_packet_has_vlan(pkt[i]));
+               CU_ASSERT(odp_packet_has_ipv4(pkt[i]));
+               CU_ASSERT(odp_packet_has_udp(pkt[i]));
+               CU_ASSERT(!odp_packet_has_ipv6(pkt[i]));
+               CU_ASSERT(!odp_packet_has_tcp(pkt[i]));
+       }
+
+       odp_packet_free_multi(pkt, num_pkt);
+}
+
+/* Ethernet/VLAN/IPv6/UDP */
+static void parse_eth_vlan_ipv6_udp(void)
+{
+       odp_packet_parse_param_t parse;
+       int i;
+       int num_pkt = parse_test.num_pkt;
+       odp_packet_t pkt[num_pkt];
+       uint32_t offset[num_pkt];
+
+       parse_test_alloc(pkt, test_packet_vlan_ipv6_udp,
+                        sizeof(test_packet_vlan_ipv6_udp));
+
+       for (i = 0; i < num_pkt; i++)
+               offset[i] = 0;
+
+       parse.proto = ODP_PROTO_ETH;
+       parse.last_layer = ODP_PROTO_LAYER_L4;
+       parse.chksums.all_chksum = 0;
+
+       CU_ASSERT(odp_packet_parse(pkt[0], offset[0], &parse) == 0);
+       CU_ASSERT(odp_packet_parse_multi(&pkt[1], &offset[1],
+                                        num_pkt - 1, &parse) == (num_pkt - 1));
+
+       for (i = 0; i < num_pkt; i++) {
+               CU_ASSERT(odp_packet_has_eth(pkt[i]));
+               CU_ASSERT(odp_packet_has_vlan(pkt[i]));
+               CU_ASSERT(odp_packet_has_ipv6(pkt[i]));
+               CU_ASSERT(odp_packet_has_udp(pkt[i]));
+               CU_ASSERT(!odp_packet_has_ipv4(pkt[i]));
+               CU_ASSERT(!odp_packet_has_tcp(pkt[i]));
+       }
+
+       odp_packet_free_multi(pkt, num_pkt);
+}
+
+/* Ethernet/VLAN/VLAN/IPv4/UDP */
+static void parse_eth_vlan_qinq_ipv4_udp(void)
+{
+       odp_packet_parse_param_t parse;
+       int i;
+       int num_pkt = parse_test.num_pkt;
+       odp_packet_t pkt[num_pkt];
+       uint32_t offset[num_pkt];
+
+       parse_test_alloc(pkt, test_packet_vlan_qinq_ipv4_udp,
+                        sizeof(test_packet_vlan_qinq_ipv4_udp));
+
+       for (i = 0; i < num_pkt; i++)
+               offset[i] = 0;
+
+       parse.proto = ODP_PROTO_ETH;
+       parse.last_layer = ODP_PROTO_LAYER_L4;
+       parse.chksums.all_chksum = 0;
+
+       CU_ASSERT(odp_packet_parse(pkt[0], offset[0], &parse) == 0);
+       CU_ASSERT(odp_packet_parse_multi(&pkt[1], &offset[1],
+                                        num_pkt - 1, &parse) == (num_pkt - 1));
+
+       for (i = 0; i < num_pkt; i++) {
+               CU_ASSERT(odp_packet_has_eth(pkt[i]));
+               CU_ASSERT(odp_packet_has_vlan(pkt[i]));
+               CU_ASSERT(odp_packet_has_vlan_qinq(pkt[i]));
+               CU_ASSERT(odp_packet_has_ipv4(pkt[i]));
+               CU_ASSERT(odp_packet_has_udp(pkt[i]));
+               CU_ASSERT(!odp_packet_has_ipv6(pkt[i]));
+               CU_ASSERT(!odp_packet_has_tcp(pkt[i]));
+       }
+
+       odp_packet_free_multi(pkt, num_pkt);
+}
+
+/* Ethernet/ARP */
+static void parse_eth_arp(void)
+{
+       odp_packet_parse_param_t parse;
+       int i;
+       int num_pkt = parse_test.num_pkt;
+       odp_packet_t pkt[num_pkt];
+       uint32_t offset[num_pkt];
+
+       parse_test_alloc(pkt, test_packet_arp,
+                        sizeof(test_packet_arp));
+
+       for (i = 0; i < num_pkt; i++)
+               offset[i] = 0;
+
+       parse.proto = ODP_PROTO_ETH;
+       parse.last_layer = ODP_PROTO_LAYER_L4;
+       parse.chksums.all_chksum = 0;
+
+       CU_ASSERT(odp_packet_parse(pkt[0], offset[0], &parse) == 0);
+       CU_ASSERT(odp_packet_parse_multi(&pkt[1], &offset[1],
+                                        num_pkt - 1, &parse) == (num_pkt - 1));
+
+       for (i = 0; i < num_pkt; i++) {
+               CU_ASSERT(odp_packet_has_eth(pkt[i]));
+               CU_ASSERT(odp_packet_has_eth_bcast(pkt[i]));
+               CU_ASSERT(odp_packet_has_arp(pkt[i]));
+               CU_ASSERT(!odp_packet_has_vlan(pkt[i]));
+               CU_ASSERT(!odp_packet_has_ipv4(pkt[i]));


Comment:
And not ipv6 here

> Dmitry Eremin-Solenikov(lumag) wrote:
> could you please add IPsec packets from IPsec testsuite?


https://github.com/Linaro/odp/pull/472#discussion_r167595056
updated_at 2018-02-12 15:46:32

Reply via email to