linux/include/uapi/linux/pkt_cls.h

/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_PKT_CLS_H
#define __LINUX_PKT_CLS_H

#include <linux/types.h>
#include <linux/pkt_sched.h>

#define TC_COOKIE_MAX_SIZE

/* Action attributes */
enum {};

/* See other TCA_ACT_FLAGS_ * flags in include/net/act_api.h. */
#define TCA_ACT_FLAGS_NO_PERCPU_STATS
#define TCA_ACT_FLAGS_SKIP_HW
#define TCA_ACT_FLAGS_SKIP_SW

/* tca HW stats type
 * When user does not pass the attribute, he does not care.
 * It is the same as if he would pass the attribute with
 * all supported bits set.
 * In case no bits are set, user is not interested in getting any HW statistics.
 */
#define TCA_ACT_HW_STATS_IMMEDIATE
#define TCA_ACT_HW_STATS_DELAYED

#define TCA_ACT_MAX
#define TCA_OLD_COMPAT
#define TCA_ACT_MAX_PRIO
#define TCA_ACT_BIND
#define TCA_ACT_NOBIND
#define TCA_ACT_UNBIND
#define TCA_ACT_NOUNBIND
#define TCA_ACT_REPLACE
#define TCA_ACT_NOREPLACE

#define TC_ACT_UNSPEC
#define TC_ACT_OK
#define TC_ACT_RECLASSIFY
#define TC_ACT_SHOT
#define TC_ACT_PIPE
#define TC_ACT_STOLEN
#define TC_ACT_QUEUED
#define TC_ACT_REPEAT
#define TC_ACT_REDIRECT
#define TC_ACT_TRAP
#define TC_ACT_VALUE_MAX

/* There is a special kind of actions called "extended actions",
 * which need a value parameter. These have a local opcode located in
 * the highest nibble, starting from 1. The rest of the bits
 * are used to carry the value. These two parts together make
 * a combined opcode.
 */
#define __TC_ACT_EXT_SHIFT
#define __TC_ACT_EXT(local)
#define TC_ACT_EXT_VAL_MASK
#define TC_ACT_EXT_OPCODE(combined)
#define TC_ACT_EXT_CMP(combined, opcode)

#define TC_ACT_JUMP
#define TC_ACT_GOTO_CHAIN
#define TC_ACT_EXT_OPCODE_MAX

/* These macros are put here for binary compatibility with userspace apps that
 * make use of them. For kernel code and new userspace apps, use the TCA_ID_*
 * versions.
 */
#define TCA_ACT_GACT
#define TCA_ACT_IPT
#define TCA_ACT_PEDIT
#define TCA_ACT_MIRRED
#define TCA_ACT_NAT
#define TCA_ACT_XT
#define TCA_ACT_SKBEDIT
#define TCA_ACT_VLAN
#define TCA_ACT_BPF
#define TCA_ACT_CONNMARK
#define TCA_ACT_SKBMOD
#define TCA_ACT_CSUM
#define TCA_ACT_TUNNEL_KEY
#define TCA_ACT_SIMP
#define TCA_ACT_IFE
#define TCA_ACT_SAMPLE

/* Action type identifiers*/
enum tca_id {};

#define TCA_ID_MAX

struct tc_police {};

struct tcf_t {};

struct tc_cnt {};

#define tc_gen

enum {};

#define TCA_POLICE_MAX

/* tca flags definitions */
#define TCA_CLS_FLAGS_SKIP_HW
#define TCA_CLS_FLAGS_SKIP_SW
#define TCA_CLS_FLAGS_IN_HW
#define TCA_CLS_FLAGS_NOT_IN_HW
#define TCA_CLS_FLAGS_VERBOSE

/* U32 filters */

#define TC_U32_HTID(h)
#define TC_U32_USERHTID(h)
#define TC_U32_HASH(h)
#define TC_U32_NODE(h)
#define TC_U32_KEY(h)
#define TC_U32_UNSPEC
#define TC_U32_ROOT

enum {};

#define TCA_U32_MAX

struct tc_u32_key {};

struct tc_u32_sel {};

struct tc_u32_mark {};

struct tc_u32_pcnt {};

/* Flags */

#define TC_U32_TERMINAL
#define TC_U32_OFFSET
#define TC_U32_VAROFFSET
#define TC_U32_EAT

#define TC_U32_MAXDEPTH

/* ROUTE filter */

enum {};

#define TCA_ROUTE4_MAX


/* FW filter */

enum {};

#define TCA_FW_MAX

/* Flow filter */

enum {};

#define FLOW_KEY_MAX

enum {};

enum {};

#define TCA_FLOW_MAX

/* Basic filter */

struct tc_basic_pcnt {};

enum {};

#define TCA_BASIC_MAX


/* Cgroup classifier */

enum {};

#define TCA_CGROUP_MAX

/* BPF classifier */

#define TCA_BPF_FLAG_ACT_DIRECT

enum {};

#define TCA_BPF_MAX

/* Flower classifier */

enum {};

#define TCA_FLOWER_MAX

enum {};

enum {};

#define TCA_FLOWER_KEY_ENC_OPTS_MAX

enum {};

#define TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX

enum {};

#define TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX

enum {};

#define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX

enum {};

#define TCA_FLOWER_KEY_ENC_OPT_GTP_MAX

enum {};

#define TCA_FLOWER_KEY_ENC_OPT_PFCP_MAX

enum {};

#define TCA_FLOWER_KEY_MPLS_OPTS_MAX

enum {};

#define TCA_FLOWER_KEY_MPLS_OPT_LSE_MAX

enum {};

#define TCA_FLOWER_KEY_FLAGS_MAX

enum {};

#define TCA_FLOWER_KEY_CFM_OPT_MAX

#define TCA_FLOWER_MASK_FLAGS_RANGE

/* Match-all classifier */

struct tc_matchall_pcnt {};

enum {};

#define TCA_MATCHALL_MAX

/* Extended Matches */

struct tcf_ematch_tree_hdr {};

enum {};
#define TCA_EMATCH_TREE_MAX

struct tcf_ematch_hdr {};

/*  0                   1
 *  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 
 * +-----------------------+-+-+---+
 * |         Unused        |S|I| R |
 * +-----------------------+-+-+---+
 *
 * R(2) ::= relation to next ematch
 *          where: 0 0 END (last ematch)
 *                 0 1 AND
 *                 1 0 OR
 *                 1 1 Unused (invalid)
 * I(1) ::= invert result
 * S(1) ::= simple payload
 */
#define TCF_EM_REL_END
#define TCF_EM_REL_AND
#define TCF_EM_REL_OR
#define TCF_EM_INVERT
#define TCF_EM_SIMPLE

#define TCF_EM_REL_MASK
#define TCF_EM_REL_VALID(v)

enum {};
#define TCF_LAYER_MAX

/* Ematch type assignments
 *   1..32767		Reserved for ematches inside kernel tree
 *   32768..65535	Free to use, not reliable
 */
#define TCF_EM_CONTAINER
#define TCF_EM_CMP
#define TCF_EM_NBYTE
#define TCF_EM_U32
#define TCF_EM_META
#define TCF_EM_TEXT
#define TCF_EM_VLAN
#define TCF_EM_CANID
#define TCF_EM_IPSET
#define TCF_EM_IPT
#define TCF_EM_MAX

enum {};

enum {};

#endif