This source file includes following definitions.
- is_tcf_skbedit_mark
- tcf_skbedit_mark
- is_tcf_skbedit_ptype
- tcf_skbedit_ptype
1
2
3
4
5
6
7
8 #ifndef __NET_TC_SKBEDIT_H
9 #define __NET_TC_SKBEDIT_H
10
11 #include <net/act_api.h>
12 #include <linux/tc_act/tc_skbedit.h>
13
14 struct tcf_skbedit_params {
15 u32 flags;
16 u32 priority;
17 u32 mark;
18 u32 mask;
19 u16 queue_mapping;
20 u16 ptype;
21 struct rcu_head rcu;
22 };
23
24 struct tcf_skbedit {
25 struct tc_action common;
26 struct tcf_skbedit_params __rcu *params;
27 };
28 #define to_skbedit(a) ((struct tcf_skbedit *)a)
29
30
31 static inline bool is_tcf_skbedit_mark(const struct tc_action *a)
32 {
33 #ifdef CONFIG_NET_CLS_ACT
34 u32 flags;
35
36 if (a->ops && a->ops->id == TCA_ID_SKBEDIT) {
37 rcu_read_lock();
38 flags = rcu_dereference(to_skbedit(a)->params)->flags;
39 rcu_read_unlock();
40 return flags == SKBEDIT_F_MARK;
41 }
42 #endif
43 return false;
44 }
45
46 static inline u32 tcf_skbedit_mark(const struct tc_action *a)
47 {
48 u32 mark;
49
50 rcu_read_lock();
51 mark = rcu_dereference(to_skbedit(a)->params)->mark;
52 rcu_read_unlock();
53
54 return mark;
55 }
56
57
58 static inline bool is_tcf_skbedit_ptype(const struct tc_action *a)
59 {
60 #ifdef CONFIG_NET_CLS_ACT
61 u32 flags;
62
63 if (a->ops && a->ops->id == TCA_ID_SKBEDIT) {
64 rcu_read_lock();
65 flags = rcu_dereference(to_skbedit(a)->params)->flags;
66 rcu_read_unlock();
67 return flags == SKBEDIT_F_PTYPE;
68 }
69 #endif
70 return false;
71 }
72
73 static inline u32 tcf_skbedit_ptype(const struct tc_action *a)
74 {
75 u16 ptype;
76
77 rcu_read_lock();
78 ptype = rcu_dereference(to_skbedit(a)->params)->ptype;
79 rcu_read_unlock();
80
81 return ptype;
82 }
83
84 #endif