@@ -321,10 +321,10 @@ odp_packet_t create_packet(cls_packet_info_t pkt_info)
ip->proto = next_hdr;
ip->tot_len = odp_cpu_to_be_16(l3_len);
ip->ttl = DEFAULT_TTL;
- odp_packet_has_ipv4_set(pkt, 1);
+ odp_packet_l3_type_set(pkt, ODP_PROTO_L3_TYPE_IPV4);
} else {
/* ipv6 */
- odp_packet_has_ipv6_set(pkt, 1);
+ odp_packet_l3_type_set(pkt, ODP_PROTO_L3_TYPE_IPV6);
ipv6 = (odph_ipv6hdr_t *)odp_packet_l3_ptr(pkt, NULL);
version = ODPH_IPV6 << ODPH_IPV6HDR_VERSION_SHIFT;
tc = DEFAULT_TOS << ODPH_IPV6HDR_TC_SHIFT;
@@ -1047,9 +1047,6 @@ void packet_test_in_flags(void)
TEST_INFLAG(pkt, jumbo);
TEST_INFLAG(pkt, vlan);
TEST_INFLAG(pkt, vlan_qinq);
- TEST_INFLAG(pkt, arp);
- TEST_INFLAG(pkt, ipv4);
- TEST_INFLAG(pkt, ipv6);
TEST_INFLAG(pkt, ip_bcast);
TEST_INFLAG(pkt, ip_mcast);
TEST_INFLAG(pkt, ipfrag);
@@ -1059,6 +1056,30 @@ void packet_test_in_flags(void)
TEST_INFLAG(pkt, tcp);
TEST_INFLAG(pkt, sctp);
TEST_INFLAG(pkt, icmp);
+
+ odp_packet_l3_type_set(pkt, ODP_PROTO_L3_TYPE_NONE);
+ CU_ASSERT_EQUAL(odp_packet_l3_type(pkt), ODP_PROTO_L3_TYPE_NONE);
+ CU_ASSERT(!odp_packet_has_arp(pkt));
+ CU_ASSERT(!odp_packet_has_ipv4(pkt));
+ CU_ASSERT(!odp_packet_has_ipv6(pkt));
+
+ odp_packet_l3_type_set(pkt, ODP_PROTO_L3_TYPE_ARP);
+ CU_ASSERT_EQUAL(odp_packet_l3_type(pkt), ODP_PROTO_L3_TYPE_ARP);
+ CU_ASSERT(odp_packet_has_arp(pkt));
+ CU_ASSERT(!odp_packet_has_ipv4(pkt));
+ CU_ASSERT(!odp_packet_has_ipv6(pkt));
+
+ odp_packet_l3_type_set(pkt, ODP_PROTO_L3_TYPE_IPV4);
+ CU_ASSERT_EQUAL(odp_packet_l3_type(pkt), ODP_PROTO_L3_TYPE_IPV4);
+ CU_ASSERT(!odp_packet_has_arp(pkt));
+ CU_ASSERT(odp_packet_has_ipv4(pkt));
+ CU_ASSERT(!odp_packet_has_ipv6(pkt));
+
+ odp_packet_l3_type_set(pkt, ODP_PROTO_L3_TYPE_IPV6);
+ CU_ASSERT_EQUAL(odp_packet_l3_type(pkt), ODP_PROTO_L3_TYPE_IPV6);
+ CU_ASSERT(!odp_packet_has_arp(pkt));
+ CU_ASSERT(!odp_packet_has_ipv4(pkt));
+ CU_ASSERT(odp_packet_has_ipv6(pkt));
}
void packet_test_error_flags(void)
@@ -739,7 +739,7 @@ static odp_packet_t make_pkt(odp_pool_t pkt_pool,
odp_packet_l3_offset_set(odp_pkt, l3_offset);
if (pkt_info->use_ipv6) {
/* IPv6 Header */
- odp_packet_has_ipv6_set(odp_pkt, 1);
+ odp_packet_l3_type_set(odp_pkt, ODP_PROTO_L3_TYPE_IPV6);
version = ODPH_IPV6 << ODPH_IPV6HDR_VERSION_SHIFT;
tc = pkt_info->ip_tos << ODPH_IPV6HDR_TC_SHIFT;
flow = unique_id << ODPH_IPV6HDR_FLOW_LABEL_SHIFT;
@@ -754,7 +754,7 @@ static odp_packet_t make_pkt(odp_pool_t pkt_pool,
memcpy(ipv6_hdr->dst_addr, IPV6_DST_ADDR, ODPH_IPV6ADDR_LEN);
} else {
/* IPv4 Header */
- odp_packet_has_ipv4_set(odp_pkt, 1);
+ odp_packet_l3_type_set(odp_pkt, ODP_PROTO_L3_TYPE_IPV4);
ipv4_hdr = (odph_ipv4hdr_t *)(buf + l3_offset);
ipv4_hdr->ver_ihl = (ODPH_IPV4 << 4) | ODPH_IPV4HDR_IHL_MIN;
ipv4_hdr->tos = pkt_info->ip_tos;