aboutsummaryrefslogtreecommitdiff
path: root/include/odp/api/abi-default/packet_types.h
blob: e8b2c8484c05dcb284948d65dd5a6ba5d7f2bc55 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* SPDX-License-Identifier: BSD-3-Clause
 * Copyright (c) 2017-2018 Linaro Limited
 * Copyright (c) 2021 Nokia
 */

#ifndef ODP_ABI_PACKET_TYPES_H_
#define ODP_ABI_PACKET_TYPES_H_

#ifdef __cplusplus
extern "C" {
#endif

#include <stdint.h>

/** @internal Dummy type for strong typing */
typedef struct { char dummy; /**< @internal Dummy */ } _odp_abi_packet_t;

/** @internal Dummy  type for strong typing */
typedef struct { char dummy; /**< *internal Dummy */ } _odp_abi_packet_seg_t;

/** @internal Dummy  type for strong typing */
typedef struct { char dummy; /**< *internal Dummy */ } _odp_abi_packet_buf_t;

/** @internal Dummy type for strong typing */
typedef struct { char dummy; /**< *internal Dummy */ } _odp_abi_packet_vector_t;

/** @internal Dummy type for strong typing */
typedef struct { char dummy; /**< *internal Dummy */ } _odp_abi_packet_tx_compl_t;

/** @addtogroup odp_packet
 *  @{
 */

typedef _odp_abi_packet_t *odp_packet_t;
typedef _odp_abi_packet_seg_t *odp_packet_seg_t;
typedef _odp_abi_packet_buf_t *odp_packet_buf_t;
typedef _odp_abi_packet_vector_t *odp_packet_vector_t;
typedef _odp_abi_packet_tx_compl_t *odp_packet_tx_compl_t;

#define ODP_PACKET_INVALID        ((odp_packet_t)0)
#define ODP_PACKET_SEG_INVALID    ((odp_packet_seg_t)0)
#define ODP_PACKET_BUF_INVALID    ((odp_packet_buf_t)0)
#define ODP_PACKET_OFFSET_INVALID 0xffff
#define ODP_PACKET_VECTOR_INVALID   ((odp_packet_vector_t)0)
#define ODP_PACKET_TX_COMPL_INVALID ((odp_packet_tx_compl_t)0)

/** Packet Color */
typedef enum {
	ODP_PACKET_GREEN = 0,
	ODP_PACKET_YELLOW = 1,
	ODP_PACKET_RED = 2,
	ODP_PACKET_ALL_COLORS = 3,
} odp_packet_color_t;

/** Packet Checksum Status */
typedef enum {
	ODP_PACKET_CHKSUM_UNKNOWN = 0,
	ODP_PACKET_CHKSUM_BAD,
	ODP_PACKET_CHKSUM_OK
} odp_packet_chksum_status_t;

/** Parse result flags */
typedef struct odp_packet_parse_result_flag_t {
	/** Flags union */
	union {
		/** All flags as a 64 bit word */
		uint64_t all;

		/** Flags as a bitfield struct */
		struct {
			/** See odp_packet_has_error() */
			uint64_t has_error    : 1;
			/** See odp_packet_has_l2_error() */
			uint64_t has_l2_error : 1;
			/** See odp_packet_has_l3_error() */
			uint64_t has_l3_error : 1;
			/** See odp_packet_has_l4_error() */
			uint64_t has_l4_error : 1;
			/** See odp_packet_has_l2() */
			uint64_t has_l2 : 1;
			/** See odp_packet_has_l3() */
			uint64_t has_l3 : 1;
			/** See odp_packet_has_l4() */
			uint64_t has_l4 : 1;
			/** See odp_packet_has_eth() */
			uint64_t has_eth : 1;
			/** See odp_packet_has_eth_bcast() */
			uint64_t has_eth_bcast : 1;
			/** See odp_packet_has_eth_mcast() */
			uint64_t has_eth_mcast : 1;
			/** See odp_packet_has_jumbo() */
			uint64_t has_jumbo : 1;
			/** See odp_packet_has_vlan() */
			uint64_t has_vlan : 1;
			/** See odp_packet_has_vlan_qinq() */
			uint64_t has_vlan_qinq : 1;
			/** See odp_packet_has_arp() */
			uint64_t has_arp : 1;
			/** See odp_packet_has_ipv4() */
			uint64_t has_ipv4 : 1;
			/** See odp_packet_has_ipv6() */
			uint64_t has_ipv6 : 1;
			/** See odp_packet_has_ip_bcast() */
			uint64_t has_ip_bcast : 1;
			/** See odp_packet_has_ip_mcast() */
			uint64_t has_ip_mcast : 1;
			/** See odp_packet_has_ipfrag() */
			uint64_t has_ipfrag : 1;
			/** See odp_packet_has_ipopt() */
			uint64_t has_ipopt : 1;
			/** See odp_packet_has_ipsec() */
			uint64_t has_ipsec : 1;
			/** See odp_packet_has_udp() */
			uint64_t has_udp : 1;
			/** See odp_packet_has_tcp() */
			uint64_t has_tcp : 1;
			/** See odp_packet_has_sctp() */
			uint64_t has_sctp : 1;
			/** See odp_packet_has_icmp() */
			uint64_t has_icmp : 1;
		};
	};

} odp_packet_parse_result_flag_t;

/**
 * @}
 */

#ifdef __cplusplus
}
#endif

#endif