From de923c5f36f5244e888b616de42b6a1cbf045372 Mon Sep 17 00:00:00 2001 From: laforge Date: Thu, 10 Aug 2000 11:45:49 +0000 Subject: Initial revision --- kernel-ULOG1-to-ULOG2.diff | 210 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 210 insertions(+) create mode 100644 kernel-ULOG1-to-ULOG2.diff (limited to 'kernel-ULOG1-to-ULOG2.diff') diff --git a/kernel-ULOG1-to-ULOG2.diff b/kernel-ULOG1-to-ULOG2.diff new file mode 100644 index 0000000..a690e05 --- /dev/null +++ b/kernel-ULOG1-to-ULOG2.diff @@ -0,0 +1,210 @@ +diff -Nru linux-2.4.0-test4-ulog1/include/linux/netfilter_ipv4/ipt_ULOG.h linux-2.4.0-test4-work/include/linux/netfilter_ipv4/ipt_ULOG.h +--- linux-2.4.0-test4-ulog1/include/linux/netfilter_ipv4/ipt_ULOG.h Mon Jul 31 13:31:51 2000 ++++ linux-2.4.0-test4-work/include/linux/netfilter_ipv4/ipt_ULOG.h Mon Jul 31 17:17:04 2000 +@@ -7,6 +7,7 @@ + struct ipt_ulog_info + { + unsigned int nl_group; ++ size_t copy_range; + char prefix[ULOG_PREFIX_LEN]; + }; + +diff -Nru linux-2.4.0-test4-ulog1/net/ipv4/netfilter/ipt_ULOG.c linux-2.4.0-test4-work/net/ipv4/netfilter/ipt_ULOG.c +--- linux-2.4.0-test4-ulog1/net/ipv4/netfilter/ipt_ULOG.c Mon Jul 31 13:31:51 2000 ++++ linux-2.4.0-test4-work/net/ipv4/netfilter/ipt_ULOG.c Mon Jul 31 13:41:57 2000 +@@ -4,6 +4,8 @@ + * (C) 2000 by Harald Welte + * + * Released under the terms of the GPL ++ * ++ * ipt_ULOG.c,v 1.4 2000/07/31 11:41:06 laforge Exp + */ + + #include +@@ -15,15 +17,17 @@ + #include + #include + #include ++#include + #include + #include ++#include + +-#define ULOG_NL_EVENT 111 /* Harald's favorite number */ ++#define ULOG_NL_EVENT 111 /* Harald's favorite number */ + + #if 0 + #define DEBUGP printk + #else +-#define DEBUGP(format, args ...) ++#define DEBUGP(format, args...) + #endif + + static struct sock *nflognl; +@@ -33,35 +37,38 @@ + printk("nflog_rcv: did receive netlink message ?!?\n"); + } + +-static unsigned int ipt_ulog_target( +- struct sk_buff **pskb, +- unsigned int hooknum, +- const struct net_device *in, +- const struct net_device *out, +- const void *targinfo, +- void *userinfo) ++static unsigned int ipt_ulog_target(struct sk_buff **pskb, ++ unsigned int hooknum, ++ const struct net_device *in, ++ const struct net_device *out, ++ const void *targinfo, void *userinfo) + { + ulog_packet_msg_t *pm; +- size_t size; ++ size_t size, copy_len; + struct sk_buff *nlskb; + unsigned char *old_tail; + struct nlmsghdr *nlh; +- struct ipt_ulog_info *loginfo = (struct ipt_ulog_info *)targinfo; ++ struct ipt_ulog_info *loginfo = (struct ipt_ulog_info *) targinfo; + + /* calculate the size of the skb needed */ +- +- size = NLMSG_SPACE(sizeof(*pm) + (*pskb)->len); ++ if ((loginfo->copy_range == 0) || ++ (loginfo->copy_range > (*pskb)->len)) { ++ copy_len = (*pskb)->len; ++ } else { ++ copy_len = loginfo->copy_range; ++ } ++ size = NLMSG_SPACE(sizeof(*pm) + copy_len); + nlskb = alloc_skb(size, GFP_ATOMIC); + if (!nlskb) + goto nlmsg_failure; +- ++ + old_tail = nlskb->tail; + nlh = NLMSG_PUT(nlskb, 0, 0, ULOG_NL_EVENT, size - sizeof(*nlh)); + pm = NLMSG_DATA(nlh); +- ++ + /* copy hook, prefix, timestamp, payload, etc. */ + +- pm->data_len = (*pskb)->len; ++ pm->data_len = copy_len; + pm->timestamp_sec = (*pskb)->stamp.tv_sec; + pm->timestamp_usec = (*pskb)->stamp.tv_usec; + pm->mark = (*pskb)->nfmark; +@@ -70,52 +77,57 @@ + strcpy(pm->prefix, loginfo->prefix); + + if (in && in->hard_header_len > 0 +- && (*pskb)->mac.raw != (*pskb)->nh.iph ++ && (*pskb)->mac.raw != (void *) (*pskb)->nh.iph + && in->hard_header_len <= ULOG_MAC_LEN) { + memcpy(pm->mac, (*pskb)->mac.raw, in->hard_header_len); + pm->mac_len = in->hard_header_len; + } + +- if (in) strcpy(pm->indev_name, in->name); +- else pm->indev_name[0] = '\0'; ++ if (in) ++ strcpy(pm->indev_name, in->name); ++ else ++ pm->indev_name[0] = '\0'; ++ ++ if (out) ++ strcpy(pm->outdev_name, out->name); ++ else ++ pm->outdev_name[0] = '\0'; + +- if (out) strcpy(pm->outdev_name, out->name); +- else pm->outdev_name[0] = '\0'; +- +- if ((*pskb)->len) +- memcpy(pm->payload, (*pskb)->data, (*pskb)->len); ++ if (copy_len) ++ memcpy(pm->payload, (*pskb)->data, copy_len); + nlh->nlmsg_len = nlskb->tail - old_tail; + NETLINK_CB(nlskb).dst_groups = loginfo->nl_group; +- DEBUGP("ipt_ULOG: going to throw a packet to netlink groupmask %u\n", +- loginfo->nl_group); +- netlink_broadcast(nflognl, nlskb, 0, loginfo->nl_group, GFP_ATOMIC); ++ DEBUGP ++ ("ipt_ULOG: going to throw a packet to netlink groupmask %u\n", ++ loginfo->nl_group); ++ netlink_broadcast(nflognl, nlskb, 0, loginfo->nl_group, ++ GFP_ATOMIC); + + return IPT_CONTINUE; + +-nlmsg_failure: ++ nlmsg_failure: + if (nlskb) +- kfree(nlskb); ++ kfree(nlskb); + printk("ipt_ULOG: Error building netlink message\n"); + return IPT_CONTINUE; + } + +-static int ipt_ulog_checkentry( +- const char *tablename, +- const struct ipt_entry *e, +- void *targinfo, +- unsigned int targinfosize, +- unsigned int hookmask) ++static int ipt_ulog_checkentry(const char *tablename, ++ const struct ipt_entry *e, ++ void *targinfo, ++ unsigned int targinfosize, ++ unsigned int hookmask) + { +- struct ipt_ulog_info *loginfo = (struct ipt_ulog_info *)targinfo; ++ struct ipt_ulog_info *loginfo = (struct ipt_ulog_info *) targinfo; + +- if (targinfosize != IPT_ALIGN(sizeof(struct ipt_ulog_info))) { +- DEBUGP("ULOG: targinfosize %u != 0\n", targinfosize); +- return 0; +- } ++ if (targinfosize != IPT_ALIGN(sizeof(struct ipt_ulog_info))) { ++ DEBUGP("ULOG: targinfosize %u != 0\n", targinfosize); ++ return 0; ++ } + +- if (loginfo->prefix[sizeof(loginfo->prefix)-1] != '\0') { ++ if (loginfo->prefix[sizeof(loginfo->prefix) - 1] != '\0') { + DEBUGP("ULOG: prefix term %i\n", +- loginfo->prefix[sizeof(loginfo->prefix)-1]); ++ loginfo->prefix[sizeof(loginfo->prefix) - 1]); + return 0; + } + +@@ -123,8 +135,9 @@ + } + + static struct ipt_target ipt_ulog_reg = +- { { NULL, NULL }, "ULOG", ipt_ulog_target, ipt_ulog_checkentry, NULL, +- THIS_MODULE }; ++ { {NULL, NULL}, "ULOG", ipt_ulog_target, ipt_ulog_checkentry, NULL, ++THIS_MODULE ++}; + + static int __init init(void) + { +@@ -134,7 +147,7 @@ + return -ENOMEM; + + if (ipt_register_target(&ipt_ulog_reg) != 0) { +- sock_release(nflognl->socket); ++ sock_release(nflognl->socket); + return -EINVAL; + } + +@@ -144,7 +157,7 @@ + static void __exit fini(void) + { + DEBUGP("ipt_ULOG: cleanup_module\n"); +- ++ + ipt_unregister_target(&ipt_ulog_reg); + sock_release(nflognl->socket); + } -- cgit v1.2.3