[PATCH] ipt_recent-0.2.2

Stephen Frost sfrost@snowman.net
Fri, 21 Jun 2002 14:26:50 -0400


--Rg893I9M3tK9A1lH
Content-Type: multipart/mixed; boundary="uMNE0C2is0k/ADx7"
Content-Disposition: inline


--uMNE0C2is0k/ADx7
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

* Harald Welte (laforge@gnumonks.org) wrote:
> On Tue, Jun 18, 2002 at 12:34:39AM -0400, Stephen Frost wrote:
> > Hey all,
> >=20
> >   Version 0.2.1 of my ipt_recent module has been up and running on my
>=20
> thanks. For future reference: please send patches as mime attachment,
> uncompressed. this way i can read them in the mailer and don't need to sa=
ve,
> unzip them before.

No problem, just thought it a little large to send uncompressed.
Hopefully this one is better; just a minor bugfix.

Changelog:
  - If not SET and not found, return immediately instead of flipping the
    hash entries first (in the event of a collision).

--uMNE0C2is0k/ADx7
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="ipt_recent-0.2.2.patch"

diff -uNr netfilter-old/userspace/patch-o-matic/extra/recent.patch netfilter/userspace/patch-o-matic/extra/recent.patch
--- netfilter-old/userspace/patch-o-matic/extra/recent.patch	Fri Jun 21 09:49:01 2002
+++ netfilter/userspace/patch-o-matic/extra/recent.patch	Fri Jun 21 10:10:13 2002
@@ -26,7 +26,7 @@
 +#endif /*_IPT_RECENT_H*/
 diff -uNr linux-2.4.18-clean/net/ipv4/netfilter/ipt_recent.c linux-2.4.18/net/ipv4/netfilter/ipt_recent.c
 --- linux-2.4.18-clean/net/ipv4/netfilter/ipt_recent.c	Wed Dec 31 19:00:00 1969
-+++ linux-2.4.18/net/ipv4/netfilter/ipt_recent.c	Mon Jun 17 20:13:00 2002
++++ linux-2.4.18/net/ipv4/netfilter/ipt_recent.c	Fri Jun 21 10:06:15 2002
 @@ -0,0 +1,786 @@
 +/* Kernel module to check if the source address has been seen recently. */
 +#include <linux/module.h>
@@ -51,7 +51,7 @@
 +static int debug = 0;
 +
 +#define RECENT_NAME	"ipt_recent"
-+#define RECENT_VER	"v0.2.1"
++#define RECENT_VER	"v0.2.2"
 +
 +static char version[] =
 +KERN_INFO RECENT_NAME " " RECENT_VER ": Stephen Frost <sfrost@snowman.net>.  http://snowman.net/projects/ipt_recent/\n";
@@ -394,6 +394,13 @@
 +			hash_result = (hash_result + 1) % ip_list_hash_size;
 +		}
 +	}
++
++	if(hash_table[hash_result] == -1 && !(info->check_set & IPT_RECENT_SET)) {
++		/* IP not in list and not asked to SET */
++		spin_unlock_bh(&curr_table->list_lock);
++		return ans;
++	}
++
 +	/* Check if we need to handle the collision, do not need to on REMOVE */
 +	if(orig_hash_result != hash_result && !(info->check_set & IPT_RECENT_REMOVE)) {
 +		if(debug) printk(KERN_INFO "ipt_recent: match(): Collision in hash table. (or: %d,hr: %d,oa: %u,ha: %u)\n",
@@ -431,13 +438,6 @@
 +	if(hash_table[hash_result] == -1) {
 +		if(debug) printk(KERN_INFO "ipt_recent: match(): New table entry. (hr: %d,ha: %u)\n",
 +				 hash_result, addr);
-+
-+		/* New item, find place to put it */
-+		if(!(info->check_set & IPT_RECENT_SET)) {
-+			/* IP not in list and not asked to SET */
-+			spin_unlock_bh(&curr_table->list_lock);
-+			return ans;
-+		}
 +
 +		/* New item found and IPT_RECENT_SET, so we need to add it */
 +		location = time_info[curr_table->time_pos].position;

--uMNE0C2is0k/ADx7--

--Rg893I9M3tK9A1lH
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE9E2/przgMPqB3kigRAtUcAJ94CmSos4RJRvKnjvuuOT8IvQwhMwCZAVCU
nySlCGKmSK1+l3/zWxoDAQQ=
=AF+A
-----END PGP SIGNATURE-----

--Rg893I9M3tK9A1lH--