From 4aca87515a5083ae0e31ce3177189fd43b6d05ac Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sat, 3 Jan 2015 13:58:15 +0100 Subject: patch to Vanilla Tomato 1.28 --- .../src/linux/linux/net/ipv4/netfilter/ipt_exp.c | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 release/src/linux/linux/net/ipv4/netfilter/ipt_exp.c (limited to 'release/src/linux/linux/net/ipv4/netfilter/ipt_exp.c') diff --git a/release/src/linux/linux/net/ipv4/netfilter/ipt_exp.c b/release/src/linux/linux/net/ipv4/netfilter/ipt_exp.c new file mode 100644 index 00000000..1b682b9c --- /dev/null +++ b/release/src/linux/linux/net/ipv4/netfilter/ipt_exp.c @@ -0,0 +1,57 @@ +/* + + Experimental Netfilter Crap + Copyright (C) 2006 Jonathan Zarate + +*/ +#include +#include +#include +#include + +#include +#include +#include "../../bridge/br_private.h" + + +static int match(const struct sk_buff *skb, const struct net_device *in, const struct net_device *out, + const void *matchinfo, int offset, const void *hdr, u_int16_t datalen, int *hotdrop) +{ +// const struct ipt_exp_info *info = matchinfo; + + if ((skb->mac.raw >= skb->head) && ((skb->mac.raw + ETH_HLEN) <= skb->data)) { + printk(KERN_INFO "exp src=%02X:%02X:%02X:%02X:%02X:%02X dst=%02X:%02X:%02X:%02X:%02X:%02X\n", + skb->mac.ethernet->h_source[0], skb->mac.ethernet->h_source[1], skb->mac.ethernet->h_source[2], + skb->mac.ethernet->h_source[3], skb->mac.ethernet->h_source[4], skb->mac.ethernet->h_source[5], + skb->mac.ethernet->h_dest[0], skb->mac.ethernet->h_dest[1], skb->mac.ethernet->h_dest[2], + skb->mac.ethernet->h_dest[3], skb->mac.ethernet->h_dest[4], skb->mac.ethernet->h_dest[5]); + return 1; + } + printk(KERN_INFO "exp mac=%p head=%p in=%p\n", skb->mac.raw, skb->head, in); + return 0; +} + +static int checkentry(const char *tablename, const struct ipt_ip *ip, void *matchinfo, + unsigned int matchsize, unsigned int hook_mask) +{ + return (matchsize == IPT_ALIGN(sizeof(struct ipt_exp_info))); +} + +static struct ipt_match exp_match + = { { NULL, NULL }, "exp", &match, &checkentry, NULL, THIS_MODULE }; + +static int __init init(void) +{ + printk(KERN_INFO "exp init " __DATE__ " " __TIME__ "\n"); + return ipt_register_match(&exp_match); +} + +static void __exit fini(void) +{ + printk(KERN_INFO "exp fini\n"); + ipt_unregister_match(&exp_match); +} + +module_init(init); +module_exit(fini); +MODULE_LICENSE("GPL"); -- cgit v1.2.3-54-g00ecf