hc
2023-12-08 01573e231f18eb2d99162747186f59511f56b64d
kernel/include/uapi/linux/pkt_cls.h
....@@ -16,8 +16,35 @@
1616 TCA_ACT_STATS,
1717 TCA_ACT_PAD,
1818 TCA_ACT_COOKIE,
19
+ TCA_ACT_FLAGS,
20
+ TCA_ACT_HW_STATS,
21
+ TCA_ACT_USED_HW_STATS,
1922 __TCA_ACT_MAX
2023 };
24
+
25
+#define TCA_ACT_FLAGS_NO_PERCPU_STATS 1 /* Don't use percpu allocator for
26
+ * actions stats.
27
+ */
28
+
29
+/* tca HW stats type
30
+ * When user does not pass the attribute, he does not care.
31
+ * It is the same as if he would pass the attribute with
32
+ * all supported bits set.
33
+ * In case no bits are set, user is not interested in getting any HW statistics.
34
+ */
35
+#define TCA_ACT_HW_STATS_IMMEDIATE (1 << 0) /* Means that in dump, user
36
+ * gets the current HW stats
37
+ * state from the device
38
+ * queried at the dump time.
39
+ */
40
+#define TCA_ACT_HW_STATS_DELAYED (1 << 1) /* Means that in dump, user gets
41
+ * HW stats that might be out of date
42
+ * for some time, maybe couple of
43
+ * seconds. This is the case when
44
+ * driver polls stats updates
45
+ * periodically or when it gets async
46
+ * stats update from the device.
47
+ */
2148
2249 #define TCA_ACT_MAX __TCA_ACT_MAX
2350 #define TCA_OLD_COMPAT (TCA_ACT_MAX+1)
....@@ -63,12 +90,53 @@
6390 #define TC_ACT_GOTO_CHAIN __TC_ACT_EXT(2)
6491 #define TC_ACT_EXT_OPCODE_MAX TC_ACT_GOTO_CHAIN
6592
93
+/* These macros are put here for binary compatibility with userspace apps that
94
+ * make use of them. For kernel code and new userspace apps, use the TCA_ID_*
95
+ * versions.
96
+ */
97
+#define TCA_ACT_GACT 5
98
+#define TCA_ACT_IPT 6
99
+#define TCA_ACT_PEDIT 7
100
+#define TCA_ACT_MIRRED 8
101
+#define TCA_ACT_NAT 9
102
+#define TCA_ACT_XT 10
103
+#define TCA_ACT_SKBEDIT 11
104
+#define TCA_ACT_VLAN 12
105
+#define TCA_ACT_BPF 13
106
+#define TCA_ACT_CONNMARK 14
107
+#define TCA_ACT_SKBMOD 15
108
+#define TCA_ACT_CSUM 16
109
+#define TCA_ACT_TUNNEL_KEY 17
110
+#define TCA_ACT_SIMP 22
111
+#define TCA_ACT_IFE 25
112
+#define TCA_ACT_SAMPLE 26
113
+
66114 /* Action type identifiers*/
67
-enum {
68
- TCA_ID_UNSPEC=0,
69
- TCA_ID_POLICE=1,
115
+enum tca_id {
116
+ TCA_ID_UNSPEC = 0,
117
+ TCA_ID_POLICE = 1,
118
+ TCA_ID_GACT = TCA_ACT_GACT,
119
+ TCA_ID_IPT = TCA_ACT_IPT,
120
+ TCA_ID_PEDIT = TCA_ACT_PEDIT,
121
+ TCA_ID_MIRRED = TCA_ACT_MIRRED,
122
+ TCA_ID_NAT = TCA_ACT_NAT,
123
+ TCA_ID_XT = TCA_ACT_XT,
124
+ TCA_ID_SKBEDIT = TCA_ACT_SKBEDIT,
125
+ TCA_ID_VLAN = TCA_ACT_VLAN,
126
+ TCA_ID_BPF = TCA_ACT_BPF,
127
+ TCA_ID_CONNMARK = TCA_ACT_CONNMARK,
128
+ TCA_ID_SKBMOD = TCA_ACT_SKBMOD,
129
+ TCA_ID_CSUM = TCA_ACT_CSUM,
130
+ TCA_ID_TUNNEL_KEY = TCA_ACT_TUNNEL_KEY,
131
+ TCA_ID_SIMP = TCA_ACT_SIMP,
132
+ TCA_ID_IFE = TCA_ACT_IFE,
133
+ TCA_ID_SAMPLE = TCA_ACT_SAMPLE,
134
+ TCA_ID_CTINFO,
135
+ TCA_ID_MPLS,
136
+ TCA_ID_CT,
137
+ TCA_ID_GATE,
70138 /* other actions go here */
71
- __TCA_ID_MAX=255
139
+ __TCA_ID_MAX = 255
72140 };
73141
74142 #define TCA_ID_MAX __TCA_ID_MAX
....@@ -120,6 +188,8 @@
120188 TCA_POLICE_RESULT,
121189 TCA_POLICE_TM,
122190 TCA_POLICE_PAD,
191
+ TCA_POLICE_RATE64,
192
+ TCA_POLICE_PEAKRATE64,
123193 __TCA_POLICE_MAX
124194 #define TCA_POLICE_RESULT TCA_POLICE_RESULT
125195 };
....@@ -257,7 +327,7 @@
257327 TCA_FW_UNSPEC,
258328 TCA_FW_CLASSID,
259329 TCA_FW_POLICE,
260
- TCA_FW_INDEV, /* used by CONFIG_NET_CLS_IND */
330
+ TCA_FW_INDEV,
261331 TCA_FW_ACT, /* used by CONFIG_NET_CLS_ACT */
262332 TCA_FW_MASK,
263333 __TCA_FW_MAX
....@@ -333,12 +403,19 @@
333403
334404 /* Basic filter */
335405
406
+struct tc_basic_pcnt {
407
+ __u64 rcnt;
408
+ __u64 rhit;
409
+};
410
+
336411 enum {
337412 TCA_BASIC_UNSPEC,
338413 TCA_BASIC_CLASSID,
339414 TCA_BASIC_EMATCHES,
340415 TCA_BASIC_ACT,
341416 TCA_BASIC_POLICE,
417
+ TCA_BASIC_PCNT,
418
+ TCA_BASIC_PAD,
342419 __TCA_BASIC_MAX
343420 };
344421
....@@ -483,15 +560,53 @@
483560 TCA_FLOWER_KEY_ENC_OPTS,
484561 TCA_FLOWER_KEY_ENC_OPTS_MASK,
485562
563
+ TCA_FLOWER_IN_HW_COUNT,
564
+
565
+ TCA_FLOWER_KEY_PORT_SRC_MIN, /* be16 */
566
+ TCA_FLOWER_KEY_PORT_SRC_MAX, /* be16 */
567
+ TCA_FLOWER_KEY_PORT_DST_MIN, /* be16 */
568
+ TCA_FLOWER_KEY_PORT_DST_MAX, /* be16 */
569
+
570
+ TCA_FLOWER_KEY_CT_STATE, /* u16 */
571
+ TCA_FLOWER_KEY_CT_STATE_MASK, /* u16 */
572
+ TCA_FLOWER_KEY_CT_ZONE, /* u16 */
573
+ TCA_FLOWER_KEY_CT_ZONE_MASK, /* u16 */
574
+ TCA_FLOWER_KEY_CT_MARK, /* u32 */
575
+ TCA_FLOWER_KEY_CT_MARK_MASK, /* u32 */
576
+ TCA_FLOWER_KEY_CT_LABELS, /* u128 */
577
+ TCA_FLOWER_KEY_CT_LABELS_MASK, /* u128 */
578
+
579
+ TCA_FLOWER_KEY_MPLS_OPTS,
580
+
581
+ TCA_FLOWER_KEY_HASH, /* u32 */
582
+ TCA_FLOWER_KEY_HASH_MASK, /* u32 */
583
+
486584 __TCA_FLOWER_MAX,
487585 };
488586
489587 #define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
490588
491589 enum {
590
+ TCA_FLOWER_KEY_CT_FLAGS_NEW = 1 << 0, /* Beginning of a new connection. */
591
+ TCA_FLOWER_KEY_CT_FLAGS_ESTABLISHED = 1 << 1, /* Part of an existing connection. */
592
+ TCA_FLOWER_KEY_CT_FLAGS_RELATED = 1 << 2, /* Related to an established connection. */
593
+ TCA_FLOWER_KEY_CT_FLAGS_TRACKED = 1 << 3, /* Conntrack has occurred. */
594
+
595
+ __TCA_FLOWER_KEY_CT_FLAGS_MAX,
596
+};
597
+
598
+enum {
492599 TCA_FLOWER_KEY_ENC_OPTS_UNSPEC,
493600 TCA_FLOWER_KEY_ENC_OPTS_GENEVE, /* Nested
494601 * TCA_FLOWER_KEY_ENC_OPT_GENEVE_
602
+ * attributes
603
+ */
604
+ TCA_FLOWER_KEY_ENC_OPTS_VXLAN, /* Nested
605
+ * TCA_FLOWER_KEY_ENC_OPT_VXLAN_
606
+ * attributes
607
+ */
608
+ TCA_FLOWER_KEY_ENC_OPTS_ERSPAN, /* Nested
609
+ * TCA_FLOWER_KEY_ENC_OPT_ERSPAN_
495610 * attributes
496611 */
497612 __TCA_FLOWER_KEY_ENC_OPTS_MAX,
....@@ -512,17 +627,67 @@
512627 (__TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX - 1)
513628
514629 enum {
630
+ TCA_FLOWER_KEY_ENC_OPT_VXLAN_UNSPEC,
631
+ TCA_FLOWER_KEY_ENC_OPT_VXLAN_GBP, /* u32 */
632
+ __TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX,
633
+};
634
+
635
+#define TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX \
636
+ (__TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX - 1)
637
+
638
+enum {
639
+ TCA_FLOWER_KEY_ENC_OPT_ERSPAN_UNSPEC,
640
+ TCA_FLOWER_KEY_ENC_OPT_ERSPAN_VER, /* u8 */
641
+ TCA_FLOWER_KEY_ENC_OPT_ERSPAN_INDEX, /* be32 */
642
+ TCA_FLOWER_KEY_ENC_OPT_ERSPAN_DIR, /* u8 */
643
+ TCA_FLOWER_KEY_ENC_OPT_ERSPAN_HWID, /* u8 */
644
+ __TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX,
645
+};
646
+
647
+#define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX \
648
+ (__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1)
649
+
650
+enum {
651
+ TCA_FLOWER_KEY_MPLS_OPTS_UNSPEC,
652
+ TCA_FLOWER_KEY_MPLS_OPTS_LSE,
653
+ __TCA_FLOWER_KEY_MPLS_OPTS_MAX,
654
+};
655
+
656
+#define TCA_FLOWER_KEY_MPLS_OPTS_MAX (__TCA_FLOWER_KEY_MPLS_OPTS_MAX - 1)
657
+
658
+enum {
659
+ TCA_FLOWER_KEY_MPLS_OPT_LSE_UNSPEC,
660
+ TCA_FLOWER_KEY_MPLS_OPT_LSE_DEPTH,
661
+ TCA_FLOWER_KEY_MPLS_OPT_LSE_TTL,
662
+ TCA_FLOWER_KEY_MPLS_OPT_LSE_BOS,
663
+ TCA_FLOWER_KEY_MPLS_OPT_LSE_TC,
664
+ TCA_FLOWER_KEY_MPLS_OPT_LSE_LABEL,
665
+ __TCA_FLOWER_KEY_MPLS_OPT_LSE_MAX,
666
+};
667
+
668
+#define TCA_FLOWER_KEY_MPLS_OPT_LSE_MAX \
669
+ (__TCA_FLOWER_KEY_MPLS_OPT_LSE_MAX - 1)
670
+
671
+enum {
515672 TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0),
516673 TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1),
517674 };
518675
676
+#define TCA_FLOWER_MASK_FLAGS_RANGE (1 << 0) /* Range-based match */
677
+
519678 /* Match-all classifier */
679
+
680
+struct tc_matchall_pcnt {
681
+ __u64 rhit;
682
+};
520683
521684 enum {
522685 TCA_MATCHALL_UNSPEC,
523686 TCA_MATCHALL_CLASSID,
524687 TCA_MATCHALL_ACT,
525688 TCA_MATCHALL_FLAGS,
689
+ TCA_MATCHALL_PCNT,
690
+ TCA_MATCHALL_PAD,
526691 __TCA_MATCHALL_MAX,
527692 };
528693