| /* |
| * Implements a dummy match to allow attaching comments to rules |
| * |
| * 2003-05-13 Brad Fisher (brad@info-link.net) |
| */ |
| |
| #include <linux/module.h> |
| #include <linux/skbuff.h> |
| #include <linux/netfilter/x_tables.h> |
| #include <linux/netfilter/xt_comment.h> |
| |
| MODULE_AUTHOR("Brad Fisher <brad@info-link.net>"); |
| MODULE_DESCRIPTION("Xtables: No-op match which can be tagged with a comment"); |
| MODULE_LICENSE("GPL"); |
| MODULE_ALIAS("ipt_comment"); |
| MODULE_ALIAS("ip6t_comment"); |
| |
| static bool |
| comment_mt(const struct sk_buff *skb, const struct net_device *in, |
| const struct net_device *out, const struct xt_match *match, |
| const void *matchinfo, int offset, unsigned int protooff, |
| bool *hotdrop) |
| { |
| /* We always match */ |
| return true; |
| } |
| |
| static struct xt_match comment_mt_reg[] __read_mostly = { |
| { |
| .name = "comment", |
| .family = AF_INET, |
| .match = comment_mt, |
| .matchsize = sizeof(struct xt_comment_info), |
| .me = THIS_MODULE |
| }, |
| { |
| .name = "comment", |
| .family = AF_INET6, |
| .match = comment_mt, |
| .matchsize = sizeof(struct xt_comment_info), |
| .me = THIS_MODULE |
| }, |
| }; |
| |
| static int __init comment_mt_init(void) |
| { |
| return xt_register_matches(comment_mt_reg, ARRAY_SIZE(comment_mt_reg)); |
| } |
| |
| static void __exit comment_mt_exit(void) |
| { |
| xt_unregister_matches(comment_mt_reg, ARRAY_SIZE(comment_mt_reg)); |
| } |
| |
| module_init(comment_mt_init); |
| module_exit(comment_mt_exit); |