root/net/sched/act_meta_mark.c

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

DEFINITIONS

This source file includes following definitions.
  1. skbmark_encode
  2. skbmark_decode
  3. skbmark_check
  4. ifemark_init_module
  5. ifemark_cleanup_module

   1 // SPDX-License-Identifier: GPL-2.0-or-later
   2 /*
   3  * net/sched/act_meta_mark.c IFE skb->mark metadata module
   4  *
   5  * copyright Jamal Hadi Salim (2015)
   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 skbmark_encode(struct sk_buff *skb, void *skbdata,
  22                           struct tcf_meta_info *e)
  23 {
  24         u32 ifemark = skb->mark;
  25 
  26         return ife_encode_meta_u32(ifemark, skbdata, e);
  27 }
  28 
  29 static int skbmark_decode(struct sk_buff *skb, void *data, u16 len)
  30 {
  31         u32 ifemark = *(u32 *)data;
  32 
  33         skb->mark = ntohl(ifemark);
  34         return 0;
  35 }
  36 
  37 static int skbmark_check(struct sk_buff *skb, struct tcf_meta_info *e)
  38 {
  39         return ife_check_meta_u32(skb->mark, e);
  40 }
  41 
  42 static struct tcf_meta_ops ife_skbmark_ops = {
  43         .metaid = IFE_META_SKBMARK,
  44         .metatype = NLA_U32,
  45         .name = "skbmark",
  46         .synopsis = "skb mark 32 bit metadata",
  47         .check_presence = skbmark_check,
  48         .encode = skbmark_encode,
  49         .decode = skbmark_decode,
  50         .get = ife_get_meta_u32,
  51         .alloc = ife_alloc_meta_u32,
  52         .release = ife_release_meta_gen,
  53         .validate = ife_validate_meta_u32,
  54         .owner = THIS_MODULE,
  55 };
  56 
  57 static int __init ifemark_init_module(void)
  58 {
  59         return register_ife_op(&ife_skbmark_ops);
  60 }
  61 
  62 static void __exit ifemark_cleanup_module(void)
  63 {
  64         unregister_ife_op(&ife_skbmark_ops);
  65 }
  66 
  67 module_init(ifemark_init_module);
  68 module_exit(ifemark_cleanup_module);
  69 
  70 MODULE_AUTHOR("Jamal Hadi Salim(2015)");
  71 MODULE_DESCRIPTION("Inter-FE skb mark metadata module");
  72 MODULE_LICENSE("GPL");
  73 MODULE_ALIAS_IFE_META("skbmark");

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