netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Patrick McHardy <kaber@trash.net>
To: Harald Welte <laforge@netfilter.org>
Cc: Linux Netdev List <netdev@vger.kernel.org>,
	Netfilter Development Mailinglist
	<netfilter-devel@lists.netfilter.org>
Subject: Re: [PATCH] add new iptables ipt_connbytes match
Date: Sat, 13 Aug 2005 03:20:06 +0200	[thread overview]
Message-ID: <42FD4AC6.2020506@trash.net> (raw)
In-Reply-To: <20050812115622.GD16325@rama.de.gnumonks.org>

[-- Attachment #1: Type: text/plain, Size: 166 bytes --]

Harald Welte wrote:
> Just send two incremental patches to Dave.

Here they are. The first patch fixes the div64_64 function, the second
one renames some constants.


[-- Attachment #2: 01.diff --]
[-- Type: text/x-patch, Size: 1723 bytes --]

[NETFILTER]: Fix div64_64 in ipt_connbytes

Signded-off-by: Patrick McHardy <kaber@trash.net>

---
commit 62084bc1a04e2fbc492566fa30997bd0a7aa2d0a
tree 083c8042609e0da81f0be9e15583d5d31b54e685
parent 68e734a5864ba568058c3b8ea63fac3d7d567542
author Patrick McHardy <kaber@trash.net> Sat, 13 Aug 2005 03:16:32 +0200
committer Patrick McHardy <kaber@trash.net> Sat, 13 Aug 2005 03:16:32 +0200

 net/ipv4/netfilter/ipt_connbytes.c |   22 +++++++++-------------
 1 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/net/ipv4/netfilter/ipt_connbytes.c b/net/ipv4/netfilter/ipt_connbytes.c
--- a/net/ipv4/netfilter/ipt_connbytes.c
+++ b/net/ipv4/netfilter/ipt_connbytes.c
@@ -22,23 +22,19 @@ MODULE_AUTHOR("Harald Welte <laforge@net
 MODULE_DESCRIPTION("iptables match for matching number of pkts/bytes per connection");
 
 /* 64bit divisor, dividend and result. dynamic precision */
-static u_int64_t div64_64(u_int64_t divisor, u_int64_t dividend)
+static u_int64_t div64_64(u_int64_t dividend, u_int64_t divisor)
 {
-	u_int64_t result = divisor;
+	u_int32_t d = divisor;
 
-	if (dividend > 0xffffffff) {
-		int first_bit = find_first_bit((unsigned long *) &dividend, sizeof(dividend));
-		/* calculate number of bits to shift. shift exactly enough
-		 * bits to make dividend fit in 32bits. */
-		int num_shift = (64 - 32 - first_bit);
-		/* first bit has to be < 32, since dividend was > 0xffffffff */
-		result = result >> num_shift;
-		dividend = dividend >> num_shift;
-	}
+	if (divisor > 0xffffffffULL) {
+		unsigned int shift = fls(divisor >> 32);
 
-	do_div(divisor, dividend);
+		d = divisor >> shift;
+		dividend >>= shift;
+	}
 
-	return divisor;
+	do_div(dividend, d);
+	return dividend;
 }
 
 static int

[-- Attachment #3: 02.diff --]
[-- Type: text/x-patch, Size: 2507 bytes --]

[NETFILTER]: Nicer names for ipt_connbytes constants

Signed-off-by: Patrick McHardy <kaber@trash.net>

---
commit e0d3e09ba22a139cbee328bc2622e984b65ba53e
tree 83efbc8d53045825333db5f4e321e28b331f7e30
parent 8f48c662a6f9cd2cdaec9d9866cebf8b40155f70
author Patrick McHardy <kaber@trash.net> Sat, 13 Aug 2005 03:18:30 +0200
committer Patrick McHardy <kaber@trash.net> Sat, 13 Aug 2005 03:18:30 +0200

 include/linux/netfilter_ipv4/ipt_connbytes.h |    6 +++---
 net/ipv4/netfilter/ipt_connbytes.c           |   12 ++++++------
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/include/linux/netfilter_ipv4/ipt_connbytes.h b/include/linux/netfilter_ipv4/ipt_connbytes.h
--- a/include/linux/netfilter_ipv4/ipt_connbytes.h
+++ b/include/linux/netfilter_ipv4/ipt_connbytes.h
@@ -2,9 +2,9 @@
 #define _IPT_CONNBYTES_H
 
 enum ipt_connbytes_what {
-	IPT_CONNBYTES_WHAT_PKTS,
-	IPT_CONNBYTES_WHAT_BYTES,
-	IPT_CONNBYTES_WHAT_AVGPKT,
+	IPT_CONNBYTES_PKTS,
+	IPT_CONNBYTES_BYTES,
+	IPT_CONNBYTES_AVGPKT,
 };
 
 enum ipt_connbytes_direction {
diff --git a/net/ipv4/netfilter/ipt_connbytes.c b/net/ipv4/netfilter/ipt_connbytes.c
--- a/net/ipv4/netfilter/ipt_connbytes.c
+++ b/net/ipv4/netfilter/ipt_connbytes.c
@@ -54,7 +54,7 @@ match(const struct sk_buff *skb,
 		return 0; /* no match */
 
 	switch (sinfo->what) {
-	case IPT_CONNBYTES_WHAT_PKTS:
+	case IPT_CONNBYTES_PKTS:
 		switch (sinfo->direction) {
 		case IPT_CONNBYTES_DIR_ORIGINAL:
 			what = ct->counters[IP_CT_DIR_ORIGINAL].packets;
@@ -68,7 +68,7 @@ match(const struct sk_buff *skb,
 			break;
 		}
 		break;
-	case IPT_CONNBYTES_WHAT_BYTES:
+	case IPT_CONNBYTES_BYTES:
 		switch (sinfo->direction) {
 		case IPT_CONNBYTES_DIR_ORIGINAL:
 			what = ct->counters[IP_CT_DIR_ORIGINAL].bytes;
@@ -82,7 +82,7 @@ match(const struct sk_buff *skb,
 			break;
 		}
 		break;
-	case IPT_CONNBYTES_WHAT_AVGPKT:
+	case IPT_CONNBYTES_AVGPKT:
 		switch (sinfo->direction) {
 		case IPT_CONNBYTES_DIR_ORIGINAL:
 			what = div64_64(ct->counters[IP_CT_DIR_ORIGINAL].bytes,
@@ -128,9 +128,9 @@ static int check(const char *tablename,
 	if (matchsize != IPT_ALIGN(sizeof(struct ipt_connbytes_info)))
 		return 0;
 
-	if (sinfo->what != IPT_CONNBYTES_WHAT_PKTS &&
-	    sinfo->what != IPT_CONNBYTES_WHAT_BYTES &&
-	    sinfo->what != IPT_CONNBYTES_WHAT_AVGPKT)
+	if (sinfo->what != IPT_CONNBYTES_PKTS &&
+	    sinfo->what != IPT_CONNBYTES_BYTES &&
+	    sinfo->what != IPT_CONNBYTES_AVGPKT)
 		return 0;
 
 	if (sinfo->direction != IPT_CONNBYTES_DIR_ORIGINAL &&

  reply	other threads:[~2005-08-13  1:20 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-08-11 20:03 [PATCH] add new iptables ipt_connbytes match Harald Welte
2005-08-11 22:42 ` David S. Miller
2005-08-12 11:39   ` Andi Kleen
2005-08-12 11:57     ` Patrick McHardy
2005-08-12 12:03       ` Andi Kleen
2005-08-12 15:37         ` Harald Welte
2005-08-12 18:12           ` David S. Miller
2005-08-12 18:23           ` Andi Kleen
2005-08-12 19:03             ` Harald Welte
2005-08-12 19:08               ` Andi Kleen
2005-08-12 19:09               ` David S. Miller
2005-08-13 14:50                 ` Harald Welte
2005-08-13 20:54                   ` David S. Miller
2005-08-13 15:45                 ` [PATCH] introduce and use aligned_u64 in nfnetlink Harald Welte
2005-08-13 20:56                   ` David S. Miller
2005-08-13 15:46                 ` [PATCH] add new iptables ipt_connbytes match Harald Welte
2005-08-13 20:56                   ` David S. Miller
2005-08-12 11:46   ` Harald Welte
2005-08-12  2:52 ` Patrick McHardy
2005-08-12 11:56   ` Harald Welte
2005-08-13  1:20     ` Patrick McHardy [this message]
2005-08-13 14:51       ` Harald Welte
2005-08-13 20:59         ` David S. Miller
2005-08-13 20:58       ` David S. Miller
2005-08-16 11:18       ` Amin Azez
2005-08-17 10:29         ` Patrick McHardy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=42FD4AC6.2020506@trash.net \
    --to=kaber@trash.net \
    --cc=laforge@netfilter.org \
    --cc=netdev@vger.kernel.org \
    --cc=netfilter-devel@lists.netfilter.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).