linux/include/net/tc_act/tc_mirred.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef __NET_TC_MIR_H
   3#define __NET_TC_MIR_H
   4
   5#include <net/act_api.h>
   6#include <linux/tc_act/tc_mirred.h>
   7
   8struct tcf_mirred {
   9        struct tc_action        common;
  10        int                     tcfm_eaction;
  11        bool                    tcfm_mac_header_xmit;
  12        struct net_device __rcu *tcfm_dev;
  13        struct list_head        tcfm_list;
  14};
  15#define to_mirred(a) ((struct tcf_mirred *)a)
  16
  17static inline bool is_tcf_mirred_egress_redirect(const struct tc_action *a)
  18{
  19#ifdef CONFIG_NET_CLS_ACT
  20        if (a->ops && a->ops->type == TCA_ACT_MIRRED)
  21                return to_mirred(a)->tcfm_eaction == TCA_EGRESS_REDIR;
  22#endif
  23        return false;
  24}
  25
  26static inline bool is_tcf_mirred_egress_mirror(const struct tc_action *a)
  27{
  28#ifdef CONFIG_NET_CLS_ACT
  29        if (a->ops && a->ops->type == TCA_ACT_MIRRED)
  30                return to_mirred(a)->tcfm_eaction == TCA_EGRESS_MIRROR;
  31#endif
  32        return false;
  33}
  34
  35static inline struct net_device *tcf_mirred_dev(const struct tc_action *a)
  36{
  37        return rtnl_dereference(to_mirred(a)->tcfm_dev);
  38}
  39
  40#endif /* __NET_TC_MIR_H */
  41