Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1#ifndef __LINUX_TC_PED_H
2#define __LINUX_TC_PED_H
3
4#include <linux/types.h>
5#include <linux/pkt_cls.h>
6
7#define TCA_ACT_PEDIT 7
8
9enum {
10 TCA_PEDIT_UNSPEC,
11 TCA_PEDIT_TM,
12 TCA_PEDIT_PARMS,
13 TCA_PEDIT_PAD,
14 TCA_PEDIT_PARMS_EX,
15 TCA_PEDIT_KEYS_EX,
16 TCA_PEDIT_KEY_EX,
17 __TCA_PEDIT_MAX
18};
19#define TCA_PEDIT_MAX (__TCA_PEDIT_MAX - 1)
20
21enum {
22 TCA_PEDIT_KEY_EX_HTYPE = 1,
23 TCA_PEDIT_KEY_EX_CMD = 2,
24 __TCA_PEDIT_KEY_EX_MAX
25};
26#define TCA_PEDIT_KEY_EX_MAX (__TCA_PEDIT_KEY_EX_MAX - 1)
27
28 /* TCA_PEDIT_KEY_EX_HDR_TYPE_NETWROK is a special case for legacy users. It
29 * means no specific header type - offset is relative to the network layer
30 */
31enum pedit_header_type {
32 TCA_PEDIT_KEY_EX_HDR_TYPE_NETWORK = 0,
33 TCA_PEDIT_KEY_EX_HDR_TYPE_ETH = 1,
34 TCA_PEDIT_KEY_EX_HDR_TYPE_IP4 = 2,
35 TCA_PEDIT_KEY_EX_HDR_TYPE_IP6 = 3,
36 TCA_PEDIT_KEY_EX_HDR_TYPE_TCP = 4,
37 TCA_PEDIT_KEY_EX_HDR_TYPE_UDP = 5,
38 __PEDIT_HDR_TYPE_MAX,
39};
40#define TCA_PEDIT_HDR_TYPE_MAX (__PEDIT_HDR_TYPE_MAX - 1)
41
42enum pedit_cmd {
43 TCA_PEDIT_KEY_EX_CMD_SET = 0,
44 TCA_PEDIT_KEY_EX_CMD_ADD = 1,
45 __PEDIT_CMD_MAX,
46};
47#define TCA_PEDIT_CMD_MAX (__PEDIT_CMD_MAX - 1)
48
49struct tc_pedit_key {
50 __u32 mask; /* AND */
51 __u32 val; /*XOR */
52 __u32 off; /*offset */
53 __u32 at;
54 __u32 offmask;
55 __u32 shift;
56};
57
58struct tc_pedit_sel {
59 tc_gen;
60 unsigned char nkeys;
61 unsigned char flags;
62 struct tc_pedit_key keys[0];
63};
64#define tc_pedit tc_pedit_sel
65
66#endif