diff options
Diffstat (limited to 'include/net/tc_act/tc_mirred.h')
| -rw-r--r-- | include/net/tc_act/tc_mirred.h | 14 | 
1 files changed, 11 insertions, 3 deletions
| diff --git a/include/net/tc_act/tc_mirred.h b/include/net/tc_act/tc_mirred.h index e891835eb74e..62770add15bd 100644 --- a/include/net/tc_act/tc_mirred.h +++ b/include/net/tc_act/tc_mirred.h @@ -5,15 +5,14 @@  #include <linux/tc_act/tc_mirred.h>  struct tcf_mirred { -	struct tcf_common	common; +	struct tc_action	common;  	int			tcfm_eaction;  	int			tcfm_ifindex;  	int			tcfm_ok_push;  	struct net_device __rcu	*tcfm_dev;  	struct list_head	tcfm_list;  }; -#define to_mirred(a) \ -	container_of(a->priv, struct tcf_mirred, common) +#define to_mirred(a) ((struct tcf_mirred *)a)  static inline bool is_tcf_mirred_redirect(const struct tc_action *a)  { @@ -24,6 +23,15 @@ static inline bool is_tcf_mirred_redirect(const struct tc_action *a)  	return false;  } +static inline bool is_tcf_mirred_mirror(const struct tc_action *a) +{ +#ifdef CONFIG_NET_CLS_ACT +	if (a->ops && a->ops->type == TCA_ACT_MIRRED) +		return to_mirred(a)->tcfm_eaction == TCA_EGRESS_MIRROR; +#endif +	return false; +} +  static inline int tcf_mirred_ifindex(const struct tc_action *a)  {  	return to_mirred(a)->tcfm_ifindex; |