aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/include/api/odp/packet_flags.h
diff options
context:
space:
mode:
Diffstat (limited to 'platform/linux-generic/include/api/odp/packet_flags.h')
-rw-r--r--platform/linux-generic/include/api/odp/packet_flags.h334
1 files changed, 334 insertions, 0 deletions
diff --git a/platform/linux-generic/include/api/odp/packet_flags.h b/platform/linux-generic/include/api/odp/packet_flags.h
new file mode 100644
index 000000000..0e47bdcce
--- /dev/null
+++ b/platform/linux-generic/include/api/odp/packet_flags.h
@@ -0,0 +1,334 @@
+/* Copyright (c) 2014, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+
+/**
+ * @file
+ *
+ * ODP packet flags
+ */
+
+#ifndef ODP_PACKET_FLAGS_H_
+#define ODP_PACKET_FLAGS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <odp/std_types.h>
+#include <odp/packet.h>
+
+/** @addtogroup odp_packet
+ * Boolean operations on a packet.
+ * @{
+ */
+
+/**
+ * Check for packet errors
+ *
+ * Checks all error flags at once.
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet has errors, 0 otherwise
+ */
+int odp_packet_error(odp_packet_t pkt);
+
+/**
+ * Check if error was 'frame length' error
+ *
+ * @param pkt Packet handle
+ * @return 1 if frame length error detected, 0 otherwise
+ */
+int odp_packet_errflag_frame_len(odp_packet_t pkt);
+
+/**
+ * Check for L2 header, e.g. ethernet
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet contains a valid & known L2 header, 0 otherwise
+ */
+int odp_packet_has_l2(odp_packet_t pkt);
+
+/**
+ * Check for L3 header, e.g. IPv4, IPv6
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet contains a valid & known L3 header, 0 otherwise
+ */
+int odp_packet_has_l3(odp_packet_t pkt);
+
+/**
+ * Check for L4 header, e.g. UDP, TCP, SCTP (also ICMP)
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet contains a valid & known L4 header, 0 otherwise
+ */
+int odp_packet_has_l4(odp_packet_t pkt);
+
+/**
+ * Check for Ethernet header
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet contains a valid eth header, 0 otherwise
+ */
+int odp_packet_has_eth(odp_packet_t pkt);
+
+/**
+ * Check for jumbo frame
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet contains jumbo frame, 0 otherwise
+ */
+int odp_packet_has_jumbo(odp_packet_t pkt);
+
+/**
+ * Check for VLAN
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet contains a VLAN header, 0 otherwise
+ */
+int odp_packet_has_vlan(odp_packet_t pkt);
+
+/**
+ * Check for VLAN QinQ (stacked VLAN)
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet contains a VLAN QinQ header, 0 otherwise
+ */
+int odp_packet_has_vlan_qinq(odp_packet_t pkt);
+
+/**
+ * Check for ARP
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet contains an ARP header, 0 otherwise
+ */
+int odp_packet_has_arp(odp_packet_t pkt);
+
+/**
+ * Check for IPv4
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet contains an IPv4 header, 0 otherwise
+ */
+int odp_packet_has_ipv4(odp_packet_t pkt);
+
+/**
+ * Check for IPv6
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet contains an IPv6 header, 0 otherwise
+ */
+int odp_packet_has_ipv6(odp_packet_t pkt);
+
+/**
+ * Check for IP fragment
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet is an IP fragment, 0 otherwise
+ */
+int odp_packet_has_ipfrag(odp_packet_t pkt);
+
+/**
+ * Check for IP options
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet contains IP options, 0 otherwise
+ */
+int odp_packet_has_ipopt(odp_packet_t pkt);
+
+/**
+ * Check for IPSec
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet requires IPSec processing, 0 otherwise
+ */
+int odp_packet_has_ipsec(odp_packet_t pkt);
+
+/**
+ * Check for UDP
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet contains a UDP header, 0 otherwise
+ */
+int odp_packet_has_udp(odp_packet_t pkt);
+
+/**
+ * Check for TCP
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet contains a TCP header, 0 otherwise
+ */
+int odp_packet_has_tcp(odp_packet_t pkt);
+
+/**
+ * Check for SCTP
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet contains an SCTP header, 0 otherwise
+ */
+int odp_packet_has_sctp(odp_packet_t pkt);
+
+/**
+ * Check for ICMP
+ *
+ * @param pkt Packet handle
+ * @return 1 if packet contains an ICMP header, 0 otherwise
+ */
+int odp_packet_has_icmp(odp_packet_t pkt);
+
+/**
+ * Request L4 checksum calculation
+ *
+ * @param pkt Packet handle
+ */
+void odp_packet_override_l4_chksum(odp_packet_t pkt);
+
+/**
+ * Set flag for L2 header, e.g. ethernet
+ *
+ * @param pkt Packet handle
+ * @param val Value
+ */
+void odp_packet_has_l2_set(odp_packet_t pkt, int val);
+
+/**
+ * Set flag for L3 header, e.g. IPv4, IPv6
+ *
+ * @param pkt Packet handle
+ * @param val Value
+ */
+void odp_packet_has_l3_set(odp_packet_t pkt, int val);
+
+/**
+ * Set flag for L4 header, e.g. UDP, TCP, SCTP (also ICMP)
+ *
+ * @param pkt Packet handle
+ * @param val Value
+ */
+void odp_packet_has_l4_set(odp_packet_t pkt, int val);
+
+/**
+ * Set flag for Ethernet header
+ *
+ * @param pkt Packet handle
+ * @param val Value
+ */
+void odp_packet_has_eth_set(odp_packet_t pkt, int val);
+
+/**
+ * Set flag for jumbo frame
+ *
+ * @param pkt Packet handle
+ * @param val Value
+ */
+void odp_packet_has_jumbo_set(odp_packet_t pkt, int val);
+
+/**
+ * Set flag for VLAN
+ *
+ * @param pkt Packet handle
+ * @param val Value
+ */
+void odp_packet_has_vlan_set(odp_packet_t pkt, int val);
+
+/**
+ * Set flag for VLAN QinQ (stacked VLAN)
+ *
+ * @param pkt Packet handle
+ * @param val Value
+ */
+void odp_packet_has_vlan_qinq_set(odp_packet_t pkt, int val);
+
+/**
+ * Set flag for ARP
+ *
+ * @param pkt Packet handle
+ * @param val Value
+ */
+void odp_packet_has_arp_set(odp_packet_t pkt, int val);
+
+/**
+ * Set flag for IPv4
+ *
+ * @param pkt Packet handle
+ * @param val Value
+ */
+void odp_packet_has_ipv4_set(odp_packet_t pkt, int val);
+
+/**
+ * Set flag for IPv6
+ *
+ * @param pkt Packet handle
+ * @param val Value
+ */
+void odp_packet_has_ipv6_set(odp_packet_t pkt, int val);
+
+/**
+ * Set flag for IP fragment
+ *
+ * @param pkt Packet handle
+ * @param val Value
+ */
+void odp_packet_has_ipfrag_set(odp_packet_t pkt, int val);
+
+/**
+ * Set flag for IP options
+ *
+ * @param pkt Packet handle
+ * @param val Value
+ */
+void odp_packet_has_ipopt_set(odp_packet_t pkt, int val);
+
+/**
+ * Set flag for IPSec
+ *
+ * @param pkt Packet handle
+ * @param val Value
+ */
+void odp_packet_has_ipsec_set(odp_packet_t pkt, int val);
+
+/**
+ * Set flag for UDP
+ *
+ * @param pkt Packet handle
+ * @param val Value
+ */
+void odp_packet_has_udp_set(odp_packet_t pkt, int val);
+
+/**
+ * Set flag for TCP
+ *
+ * @param pkt Packet handle
+ * @param val Value
+ */
+void odp_packet_has_tcp_set(odp_packet_t pkt, int val);
+
+/**
+ * Set flag for SCTP
+ *
+ * @param pkt Packet handle
+ * @param val Value
+ */
+void odp_packet_has_sctp_set(odp_packet_t pkt, int val);
+
+/**
+ * Set flag for ICMP
+ *
+ * @param pkt Packet handle
+ * @param val Value
+ */
+void odp_packet_has_icmp_set(odp_packet_t pkt, int val);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif