root/include/net/tc_act/tc_vlan.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. is_tcf_vlan
  2. tcf_vlan_action
  3. tcf_vlan_push_vid
  4. tcf_vlan_push_proto
  5. tcf_vlan_push_prio

   1 /* SPDX-License-Identifier: GPL-2.0-or-later */
   2 /*
   3  * Copyright (c) 2014 Jiri Pirko <jiri@resnulli.us>
   4  */
   5 
   6 #ifndef __NET_TC_VLAN_H
   7 #define __NET_TC_VLAN_H
   8 
   9 #include <net/act_api.h>
  10 #include <linux/tc_act/tc_vlan.h>
  11 
  12 struct tcf_vlan_params {
  13         int               tcfv_action;
  14         u16               tcfv_push_vid;
  15         __be16            tcfv_push_proto;
  16         u8                tcfv_push_prio;
  17         struct rcu_head   rcu;
  18 };
  19 
  20 struct tcf_vlan {
  21         struct tc_action        common;
  22         struct tcf_vlan_params __rcu *vlan_p;
  23 };
  24 #define to_vlan(a) ((struct tcf_vlan *)a)
  25 
  26 static inline bool is_tcf_vlan(const struct tc_action *a)
  27 {
  28 #ifdef CONFIG_NET_CLS_ACT
  29         if (a->ops && a->ops->id == TCA_ID_VLAN)
  30                 return true;
  31 #endif
  32         return false;
  33 }
  34 
  35 static inline u32 tcf_vlan_action(const struct tc_action *a)
  36 {
  37         u32 tcfv_action;
  38 
  39         rcu_read_lock();
  40         tcfv_action = rcu_dereference(to_vlan(a)->vlan_p)->tcfv_action;
  41         rcu_read_unlock();
  42 
  43         return tcfv_action;
  44 }
  45 
  46 static inline u16 tcf_vlan_push_vid(const struct tc_action *a)
  47 {
  48         u16 tcfv_push_vid;
  49 
  50         rcu_read_lock();
  51         tcfv_push_vid = rcu_dereference(to_vlan(a)->vlan_p)->tcfv_push_vid;
  52         rcu_read_unlock();
  53 
  54         return tcfv_push_vid;
  55 }
  56 
  57 static inline __be16 tcf_vlan_push_proto(const struct tc_action *a)
  58 {
  59         __be16 tcfv_push_proto;
  60 
  61         rcu_read_lock();
  62         tcfv_push_proto = rcu_dereference(to_vlan(a)->vlan_p)->tcfv_push_proto;
  63         rcu_read_unlock();
  64 
  65         return tcfv_push_proto;
  66 }
  67 
  68 static inline u8 tcf_vlan_push_prio(const struct tc_action *a)
  69 {
  70         u8 tcfv_push_prio;
  71 
  72         rcu_read_lock();
  73         tcfv_push_prio = rcu_dereference(to_vlan(a)->vlan_p)->tcfv_push_prio;
  74         rcu_read_unlock();
  75 
  76         return tcfv_push_prio;
  77 }
  78 #endif /* __NET_TC_VLAN_H */

/* [<][>][^][v][top][bottom][index][help] */