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 9 enum { 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 21 enum { 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 */ 31 enum 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 42 enum 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 49 struct 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 58 struct 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 67