diff options
author | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-04-21 15:18:58 +0000 |
---|---|---|
committer | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-04-21 15:18:58 +0000 |
commit | 407157942b2a0d7e74a9223dfc2601eae33ce438 (patch) | |
tree | 0e367872a6fa6b1a5fbe15dba5a3f243dda26c6c /target/linux/generic/patches-2.6.31/120-netfilter_recent_reap.patch | |
parent | f480dd5941ebd6ea9622715f7b8d1e240d01c903 (diff) |
linux/2.6.31: R.I.P.
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31412 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic/patches-2.6.31/120-netfilter_recent_reap.patch')
-rw-r--r-- | target/linux/generic/patches-2.6.31/120-netfilter_recent_reap.patch | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/target/linux/generic/patches-2.6.31/120-netfilter_recent_reap.patch b/target/linux/generic/patches-2.6.31/120-netfilter_recent_reap.patch deleted file mode 100644 index 8ac395447..000000000 --- a/target/linux/generic/patches-2.6.31/120-netfilter_recent_reap.patch +++ /dev/null @@ -1,71 +0,0 @@ ---- a/include/linux/netfilter/xt_recent.h -+++ b/include/linux/netfilter/xt_recent.h -@@ -9,6 +9,7 @@ enum { - XT_RECENT_UPDATE = 1 << 2, - XT_RECENT_REMOVE = 1 << 3, - XT_RECENT_TTL = 1 << 4, -+ XT_RECENT_REAP = 1 << 5, - - XT_RECENT_SOURCE = 0, - XT_RECENT_DEST = 1, -@@ -16,6 +17,9 @@ enum { - XT_RECENT_NAME_LEN = 200, - }; - -+/* Only allowed with --rcheck and --update */ -+#define XT_RECENT_MODIFIERS (XT_RECENT_TTL|XT_RECENT_REAP) -+ - struct xt_recent_mtinfo { - __u32 seconds; - __u32 hit_count; ---- a/net/netfilter/xt_recent.c -+++ b/net/netfilter/xt_recent.c -@@ -142,6 +142,25 @@ static void recent_entry_remove(struct r - t->entries--; - } - -+/* -+ * Drop entries with timestamps older then 'time'. -+ */ -+static void recent_entry_reap(struct recent_table *t, unsigned long time) -+{ -+ struct recent_entry *e; -+ -+ /* -+ * The head of the LRU list is always the oldest entry. -+ */ -+ e = list_entry(t->lru_list.next, struct recent_entry, lru_list); -+ -+ /* -+ * The last time stamp is the most recent. -+ */ -+ if (time_after(time, e->stamps[e->index-1])) -+ recent_entry_remove(t, e); -+} -+ - static struct recent_entry * - recent_entry_init(struct recent_table *t, const union nf_inet_addr *addr, - u_int16_t family, u_int8_t ttl) -@@ -265,6 +284,10 @@ recent_mt(const struct sk_buff *skb, con - break; - } - } -+ -+ /* info->seconds must be non-zero */ -+ if (info->check_set & XT_RECENT_REAP) -+ recent_entry_reap(t, time); - } - - if (info->check_set & XT_RECENT_SET || -@@ -292,7 +315,10 @@ static bool recent_mt_check(const struct - XT_RECENT_CHECK | XT_RECENT_UPDATE)) != 1) - return false; - if ((info->check_set & (XT_RECENT_SET | XT_RECENT_REMOVE)) && -- (info->seconds || info->hit_count)) -+ (info->seconds || info->hit_count || -+ (info->check_set & XT_RECENT_MODIFIERS))) -+ return false; -+ if ((info->check_set & XT_RECENT_REAP) && !info->seconds) - return false; - if (info->hit_count > ip_pkt_list_tot) - return false; |