tc_pedit.h (1527B)
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2#ifndef __LINUX_TC_PED_H 3#define __LINUX_TC_PED_H 4 5#include <linux/types.h> 6#include <linux/pkt_cls.h> 7 8enum { 9 TCA_PEDIT_UNSPEC, 10 TCA_PEDIT_TM, 11 TCA_PEDIT_PARMS, 12 TCA_PEDIT_PAD, 13 TCA_PEDIT_PARMS_EX, 14 TCA_PEDIT_KEYS_EX, 15 TCA_PEDIT_KEY_EX, 16 __TCA_PEDIT_MAX 17}; 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 27#define TCA_PEDIT_KEY_EX_MAX (__TCA_PEDIT_KEY_EX_MAX - 1) 28 29 /* TCA_PEDIT_KEY_EX_HDR_TYPE_NETWROK is a special case for legacy users. It 30 * means no specific header type - offset is relative to the network layer 31 */ 32enum pedit_header_type { 33 TCA_PEDIT_KEY_EX_HDR_TYPE_NETWORK = 0, 34 TCA_PEDIT_KEY_EX_HDR_TYPE_ETH = 1, 35 TCA_PEDIT_KEY_EX_HDR_TYPE_IP4 = 2, 36 TCA_PEDIT_KEY_EX_HDR_TYPE_IP6 = 3, 37 TCA_PEDIT_KEY_EX_HDR_TYPE_TCP = 4, 38 TCA_PEDIT_KEY_EX_HDR_TYPE_UDP = 5, 39 __PEDIT_HDR_TYPE_MAX, 40}; 41 42#define TCA_PEDIT_HDR_TYPE_MAX (__PEDIT_HDR_TYPE_MAX - 1) 43 44enum pedit_cmd { 45 TCA_PEDIT_KEY_EX_CMD_SET = 0, 46 TCA_PEDIT_KEY_EX_CMD_ADD = 1, 47 __PEDIT_CMD_MAX, 48}; 49 50#define TCA_PEDIT_CMD_MAX (__PEDIT_CMD_MAX - 1) 51 52struct tc_pedit_key { 53 __u32 mask; /* AND */ 54 __u32 val; /*XOR */ 55 __u32 off; /*offset */ 56 __u32 at; 57 __u32 offmask; 58 __u32 shift; 59}; 60 61struct tc_pedit_sel { 62 tc_gen; 63 unsigned char nkeys; 64 unsigned char flags; 65 struct tc_pedit_key keys[0]; 66}; 67 68#define tc_pedit tc_pedit_sel 69 70#endif