root/include/net/tc_act/tc_skbedit.h

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. is_tcf_skbedit_mark
  2. tcf_skbedit_mark
  3. is_tcf_skbedit_ptype
  4. tcf_skbedit_ptype

   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * Copyright (c) 2008, Intel Corporation.
   4  *
   5  * Author: Alexander Duyck <alexander.h.duyck@intel.com>
   6  */
   7 
   8 #ifndef __NET_TC_SKBEDIT_H
   9 #define __NET_TC_SKBEDIT_H
  10 
  11 #include <net/act_api.h>
  12 #include <linux/tc_act/tc_skbedit.h>
  13 
  14 struct tcf_skbedit_params {
  15         u32 flags;
  16         u32 priority;
  17         u32 mark;
  18         u32 mask;
  19         u16 queue_mapping;
  20         u16 ptype;
  21         struct rcu_head rcu;
  22 };
  23 
  24 struct tcf_skbedit {
  25         struct tc_action common;
  26         struct tcf_skbedit_params __rcu *params;
  27 };
  28 #define to_skbedit(a) ((struct tcf_skbedit *)a)
  29 
  30 /* Return true iff action is mark */
  31 static inline bool is_tcf_skbedit_mark(const struct tc_action *a)
  32 {
  33 #ifdef CONFIG_NET_CLS_ACT
  34         u32 flags;
  35 
  36         if (a->ops && a->ops->id == TCA_ID_SKBEDIT) {
  37                 rcu_read_lock();
  38                 flags = rcu_dereference(to_skbedit(a)->params)->flags;
  39                 rcu_read_unlock();
  40                 return flags == SKBEDIT_F_MARK;
  41         }
  42 #endif
  43         return false;
  44 }
  45 
  46 static inline u32 tcf_skbedit_mark(const struct tc_action *a)
  47 {
  48         u32 mark;
  49 
  50         rcu_read_lock();
  51         mark = rcu_dereference(to_skbedit(a)->params)->mark;
  52         rcu_read_unlock();
  53 
  54         return mark;
  55 }
  56 
  57 /* Return true iff action is ptype */
  58 static inline bool is_tcf_skbedit_ptype(const struct tc_action *a)
  59 {
  60 #ifdef CONFIG_NET_CLS_ACT
  61         u32 flags;
  62 
  63         if (a->ops && a->ops->id == TCA_ID_SKBEDIT) {
  64                 rcu_read_lock();
  65                 flags = rcu_dereference(to_skbedit(a)->params)->flags;
  66                 rcu_read_unlock();
  67                 return flags == SKBEDIT_F_PTYPE;
  68         }
  69 #endif
  70         return false;
  71 }
  72 
  73 static inline u32 tcf_skbedit_ptype(const struct tc_action *a)
  74 {
  75         u16 ptype;
  76 
  77         rcu_read_lock();
  78         ptype = rcu_dereference(to_skbedit(a)->params)->ptype;
  79         rcu_read_unlock();
  80 
  81         return ptype;
  82 }
  83 
  84 #endif /* __NET_TC_SKBEDIT_H */

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