Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
0002 #ifndef __LINUX_TC_PED_H
0003 #define __LINUX_TC_PED_H
0004 
0005 #include <linux/types.h>
0006 #include <linux/pkt_cls.h>
0007 
0008 enum {
0009     TCA_PEDIT_UNSPEC,
0010     TCA_PEDIT_TM,
0011     TCA_PEDIT_PARMS,
0012     TCA_PEDIT_PAD,
0013     TCA_PEDIT_PARMS_EX,
0014     TCA_PEDIT_KEYS_EX,
0015     TCA_PEDIT_KEY_EX,
0016     __TCA_PEDIT_MAX
0017 };
0018 
0019 #define TCA_PEDIT_MAX (__TCA_PEDIT_MAX - 1)
0020 
0021 enum {
0022     TCA_PEDIT_KEY_EX_HTYPE = 1,
0023     TCA_PEDIT_KEY_EX_CMD = 2,
0024     __TCA_PEDIT_KEY_EX_MAX
0025 };
0026 
0027 #define TCA_PEDIT_KEY_EX_MAX (__TCA_PEDIT_KEY_EX_MAX - 1)
0028 
0029  /* TCA_PEDIT_KEY_EX_HDR_TYPE_NETWROK is a special case for legacy users. It
0030   * means no specific header type - offset is relative to the network layer
0031   */
0032 enum pedit_header_type {
0033     TCA_PEDIT_KEY_EX_HDR_TYPE_NETWORK = 0,
0034     TCA_PEDIT_KEY_EX_HDR_TYPE_ETH = 1,
0035     TCA_PEDIT_KEY_EX_HDR_TYPE_IP4 = 2,
0036     TCA_PEDIT_KEY_EX_HDR_TYPE_IP6 = 3,
0037     TCA_PEDIT_KEY_EX_HDR_TYPE_TCP = 4,
0038     TCA_PEDIT_KEY_EX_HDR_TYPE_UDP = 5,
0039     __PEDIT_HDR_TYPE_MAX,
0040 };
0041 
0042 #define TCA_PEDIT_HDR_TYPE_MAX (__PEDIT_HDR_TYPE_MAX - 1)
0043 
0044 enum pedit_cmd {
0045     TCA_PEDIT_KEY_EX_CMD_SET = 0,
0046     TCA_PEDIT_KEY_EX_CMD_ADD = 1,
0047     __PEDIT_CMD_MAX,
0048 };
0049 
0050 #define TCA_PEDIT_CMD_MAX (__PEDIT_CMD_MAX - 1)
0051 
0052 struct tc_pedit_key {
0053     __u32           mask;  /* AND */
0054     __u32           val;   /*XOR */
0055     __u32           off;  /*offset */
0056     __u32           at;
0057     __u32           offmask;
0058     __u32           shift;
0059 };
0060 
0061 struct tc_pedit_sel {
0062     tc_gen;
0063     unsigned char           nkeys;
0064     unsigned char           flags;
0065     struct tc_pedit_key     keys[0];
0066 };
0067 
0068 #define tc_pedit tc_pedit_sel
0069 
0070 #endif