diff options
Diffstat (limited to 'platform/linux-dpdk/odp_packet_flags.c')
-rw-r--r-- | platform/linux-dpdk/odp_packet_flags.c | 110 |
1 files changed, 55 insertions, 55 deletions
diff --git a/platform/linux-dpdk/odp_packet_flags.c b/platform/linux-dpdk/odp_packet_flags.c index 964f45ef0..18c30bb15 100644 --- a/platform/linux-dpdk/odp_packet_flags.c +++ b/platform/linux-dpdk/odp_packet_flags.c @@ -11,17 +11,17 @@ #include <odp/api/plat/packet_flags_inlines.h> #endif -#define retflag(pkt, x) do { \ +#define retflag(pkt, x, layer) do { \ odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); \ - if (packet_parse_not_complete(pkt_hdr)) \ - packet_parse_full(pkt_hdr); \ + if (pkt_hdr->p.parsed_layers < layer) \ + packet_parse_layer(pkt_hdr, layer); \ return pkt_hdr->p.x; \ } while (0) -#define setflag(pkt, x, v) do { \ +#define setflag(pkt, x, v, layer) do { \ odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); \ - if (packet_parse_not_complete(pkt_hdr)) \ - packet_parse_full(pkt_hdr); \ + if (pkt_hdr->p.parsed_layers < layer) \ + packet_parse_layer(pkt_hdr, layer); \ pkt_hdr->p.x = v & 1; \ } while (0) @@ -29,7 +29,7 @@ int odp_packet_has_error(odp_packet_t pkt) { odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); if (packet_parse_not_complete(pkt_hdr)) - packet_parse_full(pkt_hdr); + packet_parse_layer(pkt_hdr, LAYER_ALL); return odp_packet_hdr(pkt)->p.error_flags.all != 0; } @@ -54,7 +54,7 @@ int odp_packet_has_l2_error(odp_packet_t pkt) int odp_packet_has_l3(odp_packet_t pkt) { - retflag(pkt, input_flags.l3); + retflag(pkt, input_flags.l3, LAYER_L3); } int odp_packet_has_l3_error(odp_packet_t pkt) @@ -62,22 +62,22 @@ int odp_packet_has_l3_error(odp_packet_t pkt) odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); if (packet_parse_not_complete(pkt_hdr)) - packet_parse_full(pkt_hdr); + packet_parse_layer(pkt_hdr, LAYER_ALL); return pkt_hdr->p.error_flags.ip_err; } int odp_packet_has_l4(odp_packet_t pkt) { - retflag(pkt, input_flags.l4); + retflag(pkt, input_flags.l4, LAYER_L4); } int odp_packet_has_l4_error(odp_packet_t pkt) { odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); - if (packet_parse_not_complete(pkt_hdr)) - packet_parse_full(pkt_hdr); + if (pkt_hdr->p.parsed_layers < LAYER_L4) + packet_parse_layer(pkt_hdr, LAYER_L4); return pkt_hdr->p.error_flags.tcp_err | pkt_hdr->p.error_flags.udp_err; } @@ -91,12 +91,12 @@ int odp_packet_has_eth(odp_packet_t pkt) int odp_packet_has_eth_bcast(odp_packet_t pkt) { - retflag(pkt, input_flags.eth_bcast); + retflag(pkt, input_flags.eth_bcast, LAYER_L2); } int odp_packet_has_eth_mcast(odp_packet_t pkt) { - retflag(pkt, input_flags.eth_mcast); + retflag(pkt, input_flags.eth_mcast, LAYER_L2); } int odp_packet_has_jumbo(odp_packet_t pkt) @@ -108,72 +108,72 @@ int odp_packet_has_jumbo(odp_packet_t pkt) int odp_packet_has_vlan(odp_packet_t pkt) { - retflag(pkt, input_flags.vlan); + retflag(pkt, input_flags.vlan, LAYER_L2); } int odp_packet_has_vlan_qinq(odp_packet_t pkt) { - retflag(pkt, input_flags.vlan_qinq); + retflag(pkt, input_flags.vlan_qinq, LAYER_L2); } int odp_packet_has_arp(odp_packet_t pkt) { - retflag(pkt, input_flags.arp); + retflag(pkt, input_flags.arp, LAYER_L3); } int odp_packet_has_ipv4(odp_packet_t pkt) { - retflag(pkt, input_flags.ipv4); + retflag(pkt, input_flags.ipv4, LAYER_L3); } int odp_packet_has_ipv6(odp_packet_t pkt) { - retflag(pkt, input_flags.ipv6); + retflag(pkt, input_flags.ipv6, LAYER_L3); } int odp_packet_has_ip_bcast(odp_packet_t pkt) { - retflag(pkt, input_flags.ip_bcast); + retflag(pkt, input_flags.ip_bcast, LAYER_L3); } int odp_packet_has_ip_mcast(odp_packet_t pkt) { - retflag(pkt, input_flags.ip_mcast); + retflag(pkt, input_flags.ip_mcast, LAYER_L3); } int odp_packet_has_ipfrag(odp_packet_t pkt) { - retflag(pkt, input_flags.ipfrag); + retflag(pkt, input_flags.ipfrag, LAYER_L3); } int odp_packet_has_ipopt(odp_packet_t pkt) { - retflag(pkt, input_flags.ipopt); + retflag(pkt, input_flags.ipopt, LAYER_L3); } int odp_packet_has_ipsec(odp_packet_t pkt) { - retflag(pkt, input_flags.ipsec); + retflag(pkt, input_flags.ipsec, LAYER_L4); } int odp_packet_has_udp(odp_packet_t pkt) { - retflag(pkt, input_flags.udp); + retflag(pkt, input_flags.udp, LAYER_L4); } int odp_packet_has_tcp(odp_packet_t pkt) { - retflag(pkt, input_flags.tcp); + retflag(pkt, input_flags.tcp, LAYER_L4); } int odp_packet_has_sctp(odp_packet_t pkt) { - retflag(pkt, input_flags.sctp); + retflag(pkt, input_flags.sctp, LAYER_L4); } int odp_packet_has_icmp(odp_packet_t pkt) { - retflag(pkt, input_flags.icmp); + retflag(pkt, input_flags.icmp, LAYER_L4); } int odp_packet_has_ts(odp_packet_t pkt) @@ -185,7 +185,7 @@ int odp_packet_has_ts(odp_packet_t pkt) odp_packet_color_t odp_packet_color(odp_packet_t pkt) { - retflag(pkt, input_flags.color); + retflag(pkt, input_flags.color, LAYER_ALL); } void odp_packet_color_set(odp_packet_t pkt, odp_packet_color_t color) @@ -193,7 +193,7 @@ void odp_packet_color_set(odp_packet_t pkt, odp_packet_color_t color) odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); if (packet_parse_not_complete(pkt_hdr)) - packet_parse_full(pkt_hdr); + packet_parse_layer(pkt_hdr, LAYER_ALL); pkt_hdr->p.input_flags.color = color; } @@ -203,19 +203,19 @@ odp_bool_t odp_packet_drop_eligible(odp_packet_t pkt) odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); if (packet_parse_not_complete(pkt_hdr)) - packet_parse_full(pkt_hdr); + packet_parse_layer(pkt_hdr, LAYER_ALL); return !pkt_hdr->p.input_flags.nodrop; } void odp_packet_drop_eligible_set(odp_packet_t pkt, odp_bool_t drop) { - setflag(pkt, input_flags.nodrop, !drop); + setflag(pkt, input_flags.nodrop, !drop, LAYER_ALL); } int8_t odp_packet_shaper_len_adjust(odp_packet_t pkt) { - retflag(pkt, output_flags.shaper_len_adj); + retflag(pkt, output_flags.shaper_len_adj, LAYER_ALL); } void odp_packet_shaper_len_adjust_set(odp_packet_t pkt, int8_t adj) @@ -223,7 +223,7 @@ void odp_packet_shaper_len_adjust_set(odp_packet_t pkt, int8_t adj) odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); if (packet_parse_not_complete(pkt_hdr)) - packet_parse_full(pkt_hdr); + packet_parse_layer(pkt_hdr, LAYER_ALL); pkt_hdr->p.output_flags.shaper_len_adj = adj; } @@ -232,107 +232,107 @@ void odp_packet_shaper_len_adjust_set(odp_packet_t pkt, int8_t adj) void odp_packet_has_l2_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.l2, val); + setflag(pkt, input_flags.l2, val, LAYER_L2); } void odp_packet_has_l3_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.l3, val); + setflag(pkt, input_flags.l3, val, LAYER_L3); } void odp_packet_has_l4_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.l4, val); + setflag(pkt, input_flags.l4, val, LAYER_L4); } void odp_packet_has_eth_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.eth, val); + setflag(pkt, input_flags.eth, val, LAYER_L2); } void odp_packet_has_eth_bcast_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.eth_bcast, val); + setflag(pkt, input_flags.eth_bcast, val, LAYER_L2); } void odp_packet_has_eth_mcast_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.eth_mcast, val); + setflag(pkt, input_flags.eth_mcast, val, LAYER_L2); } void odp_packet_has_jumbo_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.jumbo, val); + setflag(pkt, input_flags.jumbo, val, LAYER_L2); } void odp_packet_has_vlan_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.vlan, val); + setflag(pkt, input_flags.vlan, val, LAYER_L2); } void odp_packet_has_vlan_qinq_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.vlan_qinq, val); + setflag(pkt, input_flags.vlan_qinq, val, LAYER_L2); } void odp_packet_has_arp_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.arp, val); + setflag(pkt, input_flags.arp, val, LAYER_L3); } void odp_packet_has_ipv4_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.ipv4, val); + setflag(pkt, input_flags.ipv4, val, LAYER_L3); } void odp_packet_has_ipv6_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.ipv6, val); + setflag(pkt, input_flags.ipv6, val, LAYER_L3); } void odp_packet_has_ip_bcast_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.ip_bcast, val); + setflag(pkt, input_flags.ip_bcast, val, LAYER_L3); } void odp_packet_has_ip_mcast_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.ip_mcast, val); + setflag(pkt, input_flags.ip_mcast, val, LAYER_L3); } void odp_packet_has_ipfrag_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.ipfrag, val); + setflag(pkt, input_flags.ipfrag, val, LAYER_L3); } void odp_packet_has_ipopt_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.ipopt, val); + setflag(pkt, input_flags.ipopt, val, LAYER_L3); } void odp_packet_has_ipsec_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.ipsec, val); + setflag(pkt, input_flags.ipsec, val, LAYER_L4); } void odp_packet_has_udp_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.udp, val); + setflag(pkt, input_flags.udp, val, LAYER_L4); } void odp_packet_has_tcp_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.tcp, val); + setflag(pkt, input_flags.tcp, val, LAYER_L4); } void odp_packet_has_sctp_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.sctp, val); + setflag(pkt, input_flags.sctp, val, LAYER_L4); } void odp_packet_has_icmp_set(odp_packet_t pkt, int val) { - setflag(pkt, input_flags.icmp, val); + setflag(pkt, input_flags.icmp, val, LAYER_L4); } void odp_packet_has_ts_clr(odp_packet_t pkt) |