Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
1da177e4 LT |
2 | #ifndef __NET_TC_MIR_H |
3 | #define __NET_TC_MIR_H | |
4 | ||
5 | #include <net/act_api.h> | |
229d2850 | 6 | #include <linux/tc_act/tc_mirred.h> |
1da177e4 | 7 | |
e9ce1cd3 | 8 | struct tcf_mirred { |
ec0595cc | 9 | struct tc_action common; |
e9ce1cd3 | 10 | int tcfm_eaction; |
42f39036 | 11 | u32 tcfm_blockid; |
16577923 | 12 | bool tcfm_mac_header_xmit; |
2ee22a90 | 13 | struct net_device __rcu *tcfm_dev; |
ada066b2 | 14 | netdevice_tracker tcfm_dev_tracker; |
3b87956e | 15 | struct list_head tcfm_list; |
1da177e4 | 16 | }; |
a85a970a | 17 | #define to_mirred(a) ((struct tcf_mirred *)a) |
1da177e4 | 18 | |
5724b8b5 | 19 | static inline bool is_tcf_mirred_egress_redirect(const struct tc_action *a) |
229d2850 SS |
20 | { |
21 | #ifdef CONFIG_NET_CLS_ACT | |
eddd2cf1 | 22 | if (a->ops && a->ops->id == TCA_ID_MIRRED) |
229d2850 SS |
23 | return to_mirred(a)->tcfm_eaction == TCA_EGRESS_REDIR; |
24 | #endif | |
25 | return false; | |
26 | } | |
27 | ||
5724b8b5 | 28 | static inline bool is_tcf_mirred_egress_mirror(const struct tc_action *a) |
56a20680 YG |
29 | { |
30 | #ifdef CONFIG_NET_CLS_ACT | |
eddd2cf1 | 31 | if (a->ops && a->ops->id == TCA_ID_MIRRED) |
56a20680 YG |
32 | return to_mirred(a)->tcfm_eaction == TCA_EGRESS_MIRROR; |
33 | #endif | |
34 | return false; | |
35 | } | |
36 | ||
d7609c96 JH |
37 | static inline bool is_tcf_mirred_ingress_redirect(const struct tc_action *a) |
38 | { | |
39 | #ifdef CONFIG_NET_CLS_ACT | |
40 | if (a->ops && a->ops->id == TCA_ID_MIRRED) | |
41 | return to_mirred(a)->tcfm_eaction == TCA_INGRESS_REDIR; | |
42 | #endif | |
43 | return false; | |
44 | } | |
45 | ||
46 | static inline bool is_tcf_mirred_ingress_mirror(const struct tc_action *a) | |
47 | { | |
48 | #ifdef CONFIG_NET_CLS_ACT | |
49 | if (a->ops && a->ops->id == TCA_ID_MIRRED) | |
50 | return to_mirred(a)->tcfm_eaction == TCA_INGRESS_MIRROR; | |
51 | #endif | |
52 | return false; | |
53 | } | |
54 | ||
9f8a739e | 55 | static inline struct net_device *tcf_mirred_dev(const struct tc_action *a) |
229d2850 | 56 | { |
9f8a739e | 57 | return rtnl_dereference(to_mirred(a)->tcfm_dev); |
229d2850 SS |
58 | } |
59 | ||
e9ce1cd3 | 60 | #endif /* __NET_TC_MIR_H */ |