#include <linux/slab.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/skbuff.h>
#include <net/pkt_cls.h>
#include <linux/can.h>
#define EM_CAN_RULES_MAX …
struct canid_match { … };
static canid_t em_canid_get_id(struct sk_buff *skb)
{ … }
static void em_canid_sff_match_add(struct canid_match *cm, u32 can_id,
u32 can_mask)
{ … }
static inline struct canid_match *em_canid_priv(struct tcf_ematch *m)
{ … }
static int em_canid_match(struct sk_buff *skb, struct tcf_ematch *m,
struct tcf_pkt_info *info)
{ … }
static int em_canid_change(struct net *net, void *data, int len,
struct tcf_ematch *m)
{ … }
static void em_canid_destroy(struct tcf_ematch *m)
{ … }
static int em_canid_dump(struct sk_buff *skb, struct tcf_ematch *m)
{ … }
static struct tcf_ematch_ops em_canid_ops = …;
static int __init init_em_canid(void)
{ … }
static void __exit exit_em_canid(void)
{ … }
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
module_init(…) …;
module_exit(exit_em_canid);
MODULE_ALIAS_TCF_EMATCH(…);