Update the header file so we can use the new defines in subsequent
patches. Also make sure they remain up to date.

Reviewed-by: Toke Høiland-Jørgensen <t...@redhat.com>
Signed-off-by: Kumar Kartikeya Dwivedi <mem...@gmail.com>
---
 tools/include/uapi/linux/pkt_cls.h | 174 ++++++++++++++++++++++++++++-
 tools/lib/bpf/Makefile             |   3 +
 2 files changed, 173 insertions(+), 4 deletions(-)

diff --git a/tools/include/uapi/linux/pkt_cls.h 
b/tools/include/uapi/linux/pkt_cls.h
index 12153771396a..025c40fef93d 100644
--- a/tools/include/uapi/linux/pkt_cls.h
+++ b/tools/include/uapi/linux/pkt_cls.h
@@ -16,9 +16,36 @@ enum {
        TCA_ACT_STATS,
        TCA_ACT_PAD,
        TCA_ACT_COOKIE,
+       TCA_ACT_FLAGS,
+       TCA_ACT_HW_STATS,
+       TCA_ACT_USED_HW_STATS,
        __TCA_ACT_MAX
 };
 
+#define TCA_ACT_FLAGS_NO_PERCPU_STATS 1 /* Don't use percpu allocator for
+                                        * actions stats.
+                                        */
+
+/* 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 (1 << 0) /* Means that in dump, user
+                                            * gets the current HW stats
+                                            * state from the device
+                                            * queried at the dump time.
+                                            */
+#define TCA_ACT_HW_STATS_DELAYED (1 << 1) /* Means that in dump, user gets
+                                          * HW stats that might be out of date
+                                          * for some time, maybe couple of
+                                          * seconds. This is the case when
+                                          * driver polls stats updates
+                                          * periodically or when it gets async
+                                          * stats update from the device.
+                                          */
+
 #define TCA_ACT_MAX __TCA_ACT_MAX
 #define TCA_OLD_COMPAT (TCA_ACT_MAX+1)
 #define TCA_ACT_MAX_PRIO 32
@@ -63,12 +90,53 @@ enum {
 #define TC_ACT_GOTO_CHAIN __TC_ACT_EXT(2)
 #define TC_ACT_EXT_OPCODE_MAX  TC_ACT_GOTO_CHAIN
 
+/* 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 5
+#define TCA_ACT_IPT 6
+#define TCA_ACT_PEDIT 7
+#define TCA_ACT_MIRRED 8
+#define TCA_ACT_NAT 9
+#define TCA_ACT_XT 10
+#define TCA_ACT_SKBEDIT 11
+#define TCA_ACT_VLAN 12
+#define TCA_ACT_BPF 13
+#define TCA_ACT_CONNMARK 14
+#define TCA_ACT_SKBMOD 15
+#define TCA_ACT_CSUM 16
+#define TCA_ACT_TUNNEL_KEY 17
+#define TCA_ACT_SIMP 22
+#define TCA_ACT_IFE 25
+#define TCA_ACT_SAMPLE 26
+
 /* Action type identifiers*/
-enum {
-       TCA_ID_UNSPEC=0,
-       TCA_ID_POLICE=1,
+enum tca_id {
+       TCA_ID_UNSPEC = 0,
+       TCA_ID_POLICE = 1,
+       TCA_ID_GACT = TCA_ACT_GACT,
+       TCA_ID_IPT = TCA_ACT_IPT,
+       TCA_ID_PEDIT = TCA_ACT_PEDIT,
+       TCA_ID_MIRRED = TCA_ACT_MIRRED,
+       TCA_ID_NAT = TCA_ACT_NAT,
+       TCA_ID_XT = TCA_ACT_XT,
+       TCA_ID_SKBEDIT = TCA_ACT_SKBEDIT,
+       TCA_ID_VLAN = TCA_ACT_VLAN,
+       TCA_ID_BPF = TCA_ACT_BPF,
+       TCA_ID_CONNMARK = TCA_ACT_CONNMARK,
+       TCA_ID_SKBMOD = TCA_ACT_SKBMOD,
+       TCA_ID_CSUM = TCA_ACT_CSUM,
+       TCA_ID_TUNNEL_KEY = TCA_ACT_TUNNEL_KEY,
+       TCA_ID_SIMP = TCA_ACT_SIMP,
+       TCA_ID_IFE = TCA_ACT_IFE,
+       TCA_ID_SAMPLE = TCA_ACT_SAMPLE,
+       TCA_ID_CTINFO,
+       TCA_ID_MPLS,
+       TCA_ID_CT,
+       TCA_ID_GATE,
        /* other actions go here */
-       __TCA_ID_MAX=255
+       __TCA_ID_MAX = 255
 };
 
 #define TCA_ID_MAX __TCA_ID_MAX
@@ -120,6 +188,10 @@ enum {
        TCA_POLICE_RESULT,
        TCA_POLICE_TM,
        TCA_POLICE_PAD,
+       TCA_POLICE_RATE64,
+       TCA_POLICE_PEAKRATE64,
+       TCA_POLICE_PKTRATE64,
+       TCA_POLICE_PKTBURST64,
        __TCA_POLICE_MAX
 #define TCA_POLICE_RESULT TCA_POLICE_RESULT
 };
@@ -333,12 +405,19 @@ enum {
 
 /* Basic filter */
 
+struct tc_basic_pcnt {
+       __u64 rcnt;
+       __u64 rhit;
+};
+
 enum {
        TCA_BASIC_UNSPEC,
        TCA_BASIC_CLASSID,
        TCA_BASIC_EMATCHES,
        TCA_BASIC_ACT,
        TCA_BASIC_POLICE,
+       TCA_BASIC_PCNT,
+       TCA_BASIC_PAD,
        __TCA_BASIC_MAX
 };
 
@@ -485,17 +564,54 @@ enum {
 
        TCA_FLOWER_IN_HW_COUNT,
 
+       TCA_FLOWER_KEY_PORT_SRC_MIN,    /* be16 */
+       TCA_FLOWER_KEY_PORT_SRC_MAX,    /* be16 */
+       TCA_FLOWER_KEY_PORT_DST_MIN,    /* be16 */
+       TCA_FLOWER_KEY_PORT_DST_MAX,    /* be16 */
+
+       TCA_FLOWER_KEY_CT_STATE,        /* u16 */
+       TCA_FLOWER_KEY_CT_STATE_MASK,   /* u16 */
+       TCA_FLOWER_KEY_CT_ZONE,         /* u16 */
+       TCA_FLOWER_KEY_CT_ZONE_MASK,    /* u16 */
+       TCA_FLOWER_KEY_CT_MARK,         /* u32 */
+       TCA_FLOWER_KEY_CT_MARK_MASK,    /* u32 */
+       TCA_FLOWER_KEY_CT_LABELS,       /* u128 */
+       TCA_FLOWER_KEY_CT_LABELS_MASK,  /* u128 */
+
+       TCA_FLOWER_KEY_MPLS_OPTS,
+
+       TCA_FLOWER_KEY_HASH,            /* u32 */
+       TCA_FLOWER_KEY_HASH_MASK,       /* u32 */
+
        __TCA_FLOWER_MAX,
 };
 
 #define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
 
+enum {
+       TCA_FLOWER_KEY_CT_FLAGS_NEW = 1 << 0, /* Beginning of a new connection. 
*/
+       TCA_FLOWER_KEY_CT_FLAGS_ESTABLISHED = 1 << 1, /* Part of an existing 
connection. */
+       TCA_FLOWER_KEY_CT_FLAGS_RELATED = 1 << 2, /* Related to an established 
connection. */
+       TCA_FLOWER_KEY_CT_FLAGS_TRACKED = 1 << 3, /* Conntrack has occurred. */
+       TCA_FLOWER_KEY_CT_FLAGS_INVALID = 1 << 4, /* Conntrack is invalid. */
+       TCA_FLOWER_KEY_CT_FLAGS_REPLY = 1 << 5, /* Packet is in the reply 
direction. */
+       __TCA_FLOWER_KEY_CT_FLAGS_MAX,
+};
+
 enum {
        TCA_FLOWER_KEY_ENC_OPTS_UNSPEC,
        TCA_FLOWER_KEY_ENC_OPTS_GENEVE, /* Nested
                                         * TCA_FLOWER_KEY_ENC_OPT_GENEVE_
                                         * attributes
                                         */
+       TCA_FLOWER_KEY_ENC_OPTS_VXLAN,  /* Nested
+                                        * TCA_FLOWER_KEY_ENC_OPT_VXLAN_
+                                        * attributes
+                                        */
+       TCA_FLOWER_KEY_ENC_OPTS_ERSPAN, /* Nested
+                                        * TCA_FLOWER_KEY_ENC_OPT_ERSPAN_
+                                        * attributes
+                                        */
        __TCA_FLOWER_KEY_ENC_OPTS_MAX,
 };
 
@@ -513,18 +629,68 @@ enum {
 #define TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX \
                (__TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX - 1)
 
+enum {
+       TCA_FLOWER_KEY_ENC_OPT_VXLAN_UNSPEC,
+       TCA_FLOWER_KEY_ENC_OPT_VXLAN_GBP,               /* u32 */
+       __TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX,
+};
+
+#define TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX \
+               (__TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX - 1)
+
+enum {
+       TCA_FLOWER_KEY_ENC_OPT_ERSPAN_UNSPEC,
+       TCA_FLOWER_KEY_ENC_OPT_ERSPAN_VER,              /* u8 */
+       TCA_FLOWER_KEY_ENC_OPT_ERSPAN_INDEX,            /* be32 */
+       TCA_FLOWER_KEY_ENC_OPT_ERSPAN_DIR,              /* u8 */
+       TCA_FLOWER_KEY_ENC_OPT_ERSPAN_HWID,             /* u8 */
+       __TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX,
+};
+
+#define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX \
+               (__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1)
+
+enum {
+       TCA_FLOWER_KEY_MPLS_OPTS_UNSPEC,
+       TCA_FLOWER_KEY_MPLS_OPTS_LSE,
+       __TCA_FLOWER_KEY_MPLS_OPTS_MAX,
+};
+
+#define TCA_FLOWER_KEY_MPLS_OPTS_MAX (__TCA_FLOWER_KEY_MPLS_OPTS_MAX - 1)
+
+enum {
+       TCA_FLOWER_KEY_MPLS_OPT_LSE_UNSPEC,
+       TCA_FLOWER_KEY_MPLS_OPT_LSE_DEPTH,
+       TCA_FLOWER_KEY_MPLS_OPT_LSE_TTL,
+       TCA_FLOWER_KEY_MPLS_OPT_LSE_BOS,
+       TCA_FLOWER_KEY_MPLS_OPT_LSE_TC,
+       TCA_FLOWER_KEY_MPLS_OPT_LSE_LABEL,
+       __TCA_FLOWER_KEY_MPLS_OPT_LSE_MAX,
+};
+
+#define TCA_FLOWER_KEY_MPLS_OPT_LSE_MAX \
+               (__TCA_FLOWER_KEY_MPLS_OPT_LSE_MAX - 1)
+
 enum {
        TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0),
        TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1),
 };
 
+#define TCA_FLOWER_MASK_FLAGS_RANGE    (1 << 0) /* Range-based match */
+
 /* Match-all classifier */
 
+struct tc_matchall_pcnt {
+       __u64 rhit;
+};
+
 enum {
        TCA_MATCHALL_UNSPEC,
        TCA_MATCHALL_CLASSID,
        TCA_MATCHALL_ACT,
        TCA_MATCHALL_FLAGS,
+       TCA_MATCHALL_PCNT,
+       TCA_MATCHALL_PAD,
        __TCA_MATCHALL_MAX,
 };
 
diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile
index e43e1896cb4b..745624d91a01 100644
--- a/tools/lib/bpf/Makefile
+++ b/tools/lib/bpf/Makefile
@@ -152,6 +152,9 @@ $(BPF_IN_SHARED): force $(BPF_HELPER_DEFS)
        @(test -f ../../include/uapi/linux/if_xdp.h -a -f 
../../../include/uapi/linux/if_xdp.h && ( \
        (diff -B ../../include/uapi/linux/if_xdp.h 
../../../include/uapi/linux/if_xdp.h >/dev/null) || \
        echo "Warning: Kernel ABI header at 'tools/include/uapi/linux/if_xdp.h' 
differs from latest version at 'include/uapi/linux/if_xdp.h'" >&2 )) || true
+       @(test -f ../../include/uapi/linux/pkt_cls.h -a -f 
../../../include/uapi/linux/pkt_cls.h && ( \
+       (diff -B ../../include/uapi/linux/pkt_cls.h 
../../../include/uapi/linux/pkt_cls.h >/dev/null) || \
+       echo "Warning: Kernel ABI header at 
'tools/include/uapi/linux/pkt_cls.h' differs from latest version at 
'include/uapi/linux/pkt_cls.h'" >&2 )) || true
        $(Q)$(MAKE) $(build)=libbpf OUTPUT=$(SHARED_OBJDIR) CFLAGS="$(CFLAGS) 
$(SHLIB_FLAGS)"
 
 $(BPF_IN_STATIC): force $(BPF_HELPER_DEFS)
-- 
2.30.2

Reply via email to