Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | #ifndef __NET_TC_MIR_H |
| 2 | #define __NET_TC_MIR_H |
| 3 | |
| 4 | #include <net/act_api.h> |
Sridhar Samudrala | 229d285 | 2016-05-02 03:33:42 -0700 | [diff] [blame] | 5 | #include <linux/tc_act/tc_mirred.h> |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 6 | |
David S. Miller | e9ce1cd | 2006-08-21 23:54:55 -0700 | [diff] [blame] | 7 | struct tcf_mirred { |
| 8 | struct tcf_common common; |
| 9 | int tcfm_eaction; |
| 10 | int tcfm_ifindex; |
| 11 | int tcfm_ok_push; |
Eric Dumazet | 2ee22a9 | 2015-07-06 05:18:09 -0700 | [diff] [blame] | 12 | struct net_device __rcu *tcfm_dev; |
stephen hemminger | 3b87956 | 2010-07-22 18:45:04 +0000 | [diff] [blame] | 13 | struct list_head tcfm_list; |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 14 | }; |
WANG Cong | 8606203 | 2014-02-11 17:07:31 -0800 | [diff] [blame] | 15 | #define to_mirred(a) \ |
| 16 | container_of(a->priv, struct tcf_mirred, common) |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 17 | |
Sridhar Samudrala | 229d285 | 2016-05-02 03:33:42 -0700 | [diff] [blame] | 18 | static inline bool is_tcf_mirred_redirect(const struct tc_action *a) |
| 19 | { |
| 20 | #ifdef CONFIG_NET_CLS_ACT |
| 21 | if (a->ops && a->ops->type == TCA_ACT_MIRRED) |
| 22 | return to_mirred(a)->tcfm_eaction == TCA_EGRESS_REDIR; |
| 23 | #endif |
| 24 | return false; |
| 25 | } |
| 26 | |
| 27 | static inline int tcf_mirred_ifindex(const struct tc_action *a) |
| 28 | { |
| 29 | return to_mirred(a)->tcfm_ifindex; |
| 30 | } |
| 31 | |
David S. Miller | e9ce1cd | 2006-08-21 23:54:55 -0700 | [diff] [blame] | 32 | #endif /* __NET_TC_MIR_H */ |