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_MAX 24 }; 25 #define TCA_PEDIT_KEY_EX_MAX (__TCA_PEDIT_KEY_EX_MAX - 1) 26 27 /* TCA_PEDIT_KEY_EX_HDR_TYPE_NETWROK is a special case for legacy users. It 28 * means no specific header type - offset is relative to the network layer 29 */ 30 enum pedit_header_type { 31 TCA_PEDIT_KEY_EX_HDR_TYPE_NETWORK = 0, 32 TCA_PEDIT_KEY_EX_HDR_TYPE_ETH = 1, 33 TCA_PEDIT_KEY_EX_HDR_TYPE_IP4 = 2, 34 TCA_PEDIT_KEY_EX_HDR_TYPE_IP6 = 3, 35 TCA_PEDIT_KEY_EX_HDR_TYPE_TCP = 4, 36 TCA_PEDIT_KEY_EX_HDR_TYPE_UDP = 5, 37 __PEDIT_HDR_TYPE_MAX, 38 }; 39 #define TCA_PEDIT_HDR_TYPE_MAX (__PEDIT_HDR_TYPE_MAX - 1) 40 41 struct tc_pedit_key { 42 __u32 mask; /* AND */ 43 __u32 val; /*XOR */ 44 __u32 off; /*offset */ 45 __u32 at; 46 __u32 offmask; 47 __u32 shift; 48 }; 49 50 struct tc_pedit_sel { 51 tc_gen; 52 unsigned char nkeys; 53 unsigned char flags; 54 struct tc_pedit_key keys[0]; 55 }; 56 #define tc_pedit tc_pedit_sel 57 58 #endif 59