root/net/bridge/netfilter/ebt_pkttype.c

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

DEFINITIONS

This source file includes following definitions.
  1. ebt_pkttype_mt
  2. ebt_pkttype_mt_check
  3. ebt_pkttype_init
  4. ebt_pkttype_fini

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  *  ebt_pkttype
   4  *
   5  *      Authors:
   6  *      Bart De Schuymer <bdschuym@pandora.be>
   7  *
   8  *  April, 2003
   9  *
  10  */
  11 #include <linux/module.h>
  12 #include <linux/netfilter/x_tables.h>
  13 #include <linux/netfilter_bridge/ebtables.h>
  14 #include <linux/netfilter_bridge/ebt_pkttype.h>
  15 
  16 static bool
  17 ebt_pkttype_mt(const struct sk_buff *skb, struct xt_action_param *par)
  18 {
  19         const struct ebt_pkttype_info *info = par->matchinfo;
  20 
  21         return (skb->pkt_type == info->pkt_type) ^ info->invert;
  22 }
  23 
  24 static int ebt_pkttype_mt_check(const struct xt_mtchk_param *par)
  25 {
  26         const struct ebt_pkttype_info *info = par->matchinfo;
  27 
  28         if (info->invert != 0 && info->invert != 1)
  29                 return -EINVAL;
  30         /* Allow any pkt_type value */
  31         return 0;
  32 }
  33 
  34 static struct xt_match ebt_pkttype_mt_reg __read_mostly = {
  35         .name           = "pkttype",
  36         .revision       = 0,
  37         .family         = NFPROTO_BRIDGE,
  38         .match          = ebt_pkttype_mt,
  39         .checkentry     = ebt_pkttype_mt_check,
  40         .matchsize      = sizeof(struct ebt_pkttype_info),
  41         .me             = THIS_MODULE,
  42 };
  43 
  44 static int __init ebt_pkttype_init(void)
  45 {
  46         return xt_register_match(&ebt_pkttype_mt_reg);
  47 }
  48 
  49 static void __exit ebt_pkttype_fini(void)
  50 {
  51         xt_unregister_match(&ebt_pkttype_mt_reg);
  52 }
  53 
  54 module_init(ebt_pkttype_init);
  55 module_exit(ebt_pkttype_fini);
  56 MODULE_DESCRIPTION("Ebtables: Link layer packet type match");
  57 MODULE_LICENSE("GPL");

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