]>
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; |
16577923 | 11 | bool tcfm_mac_header_xmit; |
2ee22a90 | 12 | struct net_device __rcu *tcfm_dev; |
3b87956e | 13 | struct list_head tcfm_list; |
1da177e4 | 14 | }; |
a85a970a | 15 | #define to_mirred(a) ((struct tcf_mirred *)a) |
1da177e4 | 16 | |
5724b8b5 | 17 | static inline bool is_tcf_mirred_egress_redirect(const struct tc_action *a) |
229d2850 SS |
18 | { |
19 | #ifdef CONFIG_NET_CLS_ACT | |
eddd2cf1 | 20 | if (a->ops && a->ops->id == TCA_ID_MIRRED) |
229d2850 SS |
21 | return to_mirred(a)->tcfm_eaction == TCA_EGRESS_REDIR; |
22 | #endif | |
23 | return false; | |
24 | } | |
25 | ||
5724b8b5 | 26 | static inline bool is_tcf_mirred_egress_mirror(const struct tc_action *a) |
56a20680 YG |
27 | { |
28 | #ifdef CONFIG_NET_CLS_ACT | |
eddd2cf1 | 29 | if (a->ops && a->ops->id == TCA_ID_MIRRED) |
56a20680 YG |
30 | return to_mirred(a)->tcfm_eaction == TCA_EGRESS_MIRROR; |
31 | #endif | |
32 | return false; | |
33 | } | |
34 | ||
9f8a739e | 35 | static inline struct net_device *tcf_mirred_dev(const struct tc_action *a) |
229d2850 | 36 | { |
9f8a739e | 37 | return rtnl_dereference(to_mirred(a)->tcfm_dev); |
229d2850 SS |
38 | } |
39 | ||
e9ce1cd3 | 40 | #endif /* __NET_TC_MIR_H */ |