root/net/sched/act_meta_skbtcindex.c

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

DEFINITIONS

This source file includes following definitions.
  1. skbtcindex_encode
  2. skbtcindex_decode
  3. skbtcindex_check
  4. ifetc_index_init_module
  5. ifetc_index_cleanup_module

   1 // SPDX-License-Identifier: GPL-2.0-or-later
   2 /*
   3  * net/sched/act_meta_tc_index.c IFE skb->tc_index metadata module
   4  *
   5  * copyright Jamal Hadi Salim (2016)
   6 */
   7 
   8 #include <linux/types.h>
   9 #include <linux/kernel.h>
  10 #include <linux/string.h>
  11 #include <linux/errno.h>
  12 #include <linux/skbuff.h>
  13 #include <linux/rtnetlink.h>
  14 #include <linux/module.h>
  15 #include <linux/init.h>
  16 #include <net/netlink.h>
  17 #include <net/pkt_sched.h>
  18 #include <uapi/linux/tc_act/tc_ife.h>
  19 #include <net/tc_act/tc_ife.h>
  20 
  21 static int skbtcindex_encode(struct sk_buff *skb, void *skbdata,
  22                              struct tcf_meta_info *e)
  23 {
  24         u32 ifetc_index = skb->tc_index;
  25 
  26         return ife_encode_meta_u16(ifetc_index, skbdata, e);
  27 }
  28 
  29 static int skbtcindex_decode(struct sk_buff *skb, void *data, u16 len)
  30 {
  31         u16 ifetc_index = *(u16 *)data;
  32 
  33         skb->tc_index = ntohs(ifetc_index);
  34         return 0;
  35 }
  36 
  37 static int skbtcindex_check(struct sk_buff *skb, struct tcf_meta_info *e)
  38 {
  39         return ife_check_meta_u16(skb->tc_index, e);
  40 }
  41 
  42 static struct tcf_meta_ops ife_skbtcindex_ops = {
  43         .metaid = IFE_META_TCINDEX,
  44         .metatype = NLA_U16,
  45         .name = "tc_index",
  46         .synopsis = "skb tc_index 16 bit metadata",
  47         .check_presence = skbtcindex_check,
  48         .encode = skbtcindex_encode,
  49         .decode = skbtcindex_decode,
  50         .get = ife_get_meta_u16,
  51         .alloc = ife_alloc_meta_u16,
  52         .release = ife_release_meta_gen,
  53         .validate = ife_validate_meta_u16,
  54         .owner = THIS_MODULE,
  55 };
  56 
  57 static int __init ifetc_index_init_module(void)
  58 {
  59         return register_ife_op(&ife_skbtcindex_ops);
  60 }
  61 
  62 static void __exit ifetc_index_cleanup_module(void)
  63 {
  64         unregister_ife_op(&ife_skbtcindex_ops);
  65 }
  66 
  67 module_init(ifetc_index_init_module);
  68 module_exit(ifetc_index_cleanup_module);
  69 
  70 MODULE_AUTHOR("Jamal Hadi Salim(2016)");
  71 MODULE_DESCRIPTION("Inter-FE skb tc_index metadata module");
  72 MODULE_LICENSE("GPL");
  73 MODULE_ALIAS_IFE_META("tcindex");

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