hc
2024-05-10 ee930fffee469d076998274a2ca55e13dc1efb67
kernel/include/net/tc_act/tc_skbedit.h
....@@ -1,17 +1,6 @@
1
+/* SPDX-License-Identifier: GPL-2.0-only */
12 /*
23 * Copyright (c) 2008, Intel Corporation.
3
- *
4
- * This program is free software; you can redistribute it and/or modify it
5
- * under the terms and conditions of the GNU General Public License,
6
- * version 2, as published by the Free Software Foundation.
7
- *
8
- * This program is distributed in the hope it will be useful, but WITHOUT
9
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
11
- * more details.
12
- *
13
- * You should have received a copy of the GNU General Public License along with
14
- * this program; if not, see <http://www.gnu.org/licenses/>.
154 *
165 * Author: Alexander Duyck <alexander.h.duyck@intel.com>
176 */
....@@ -38,20 +27,26 @@
3827 };
3928 #define to_skbedit(a) ((struct tcf_skbedit *)a)
4029
41
-/* Return true iff action is mark */
42
-static inline bool is_tcf_skbedit_mark(const struct tc_action *a)
30
+/* Return true iff action is the one identified by FLAG. */
31
+static inline bool is_tcf_skbedit_with_flag(const struct tc_action *a, u32 flag)
4332 {
4433 #ifdef CONFIG_NET_CLS_ACT
4534 u32 flags;
4635
47
- if (a->ops && a->ops->type == TCA_ACT_SKBEDIT) {
36
+ if (a->ops && a->ops->id == TCA_ID_SKBEDIT) {
4837 rcu_read_lock();
4938 flags = rcu_dereference(to_skbedit(a)->params)->flags;
5039 rcu_read_unlock();
51
- return flags == SKBEDIT_F_MARK;
40
+ return flags == flag;
5241 }
5342 #endif
5443 return false;
44
+}
45
+
46
+/* Return true iff action is mark */
47
+static inline bool is_tcf_skbedit_mark(const struct tc_action *a)
48
+{
49
+ return is_tcf_skbedit_with_flag(a, SKBEDIT_F_MARK);
5550 }
5651
5752 static inline u32 tcf_skbedit_mark(const struct tc_action *a)
....@@ -65,4 +60,38 @@
6560 return mark;
6661 }
6762
63
+/* Return true iff action is ptype */
64
+static inline bool is_tcf_skbedit_ptype(const struct tc_action *a)
65
+{
66
+ return is_tcf_skbedit_with_flag(a, SKBEDIT_F_PTYPE);
67
+}
68
+
69
+static inline u32 tcf_skbedit_ptype(const struct tc_action *a)
70
+{
71
+ u16 ptype;
72
+
73
+ rcu_read_lock();
74
+ ptype = rcu_dereference(to_skbedit(a)->params)->ptype;
75
+ rcu_read_unlock();
76
+
77
+ return ptype;
78
+}
79
+
80
+/* Return true iff action is priority */
81
+static inline bool is_tcf_skbedit_priority(const struct tc_action *a)
82
+{
83
+ return is_tcf_skbedit_with_flag(a, SKBEDIT_F_PRIORITY);
84
+}
85
+
86
+static inline u32 tcf_skbedit_priority(const struct tc_action *a)
87
+{
88
+ u32 priority;
89
+
90
+ rcu_read_lock();
91
+ priority = rcu_dereference(to_skbedit(a)->params)->priority;
92
+ rcu_read_unlock();
93
+
94
+ return priority;
95
+}
96
+
6897 #endif /* __NET_TC_SKBEDIT_H */