summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2004-02-19 22:52:20 -0800
committerDavid Woodhouse <dwmw2@dwmw2.baythorne.internal>2004-02-19 22:52:20 -0800
commit2d5f5170998c77a476445bc889a7dca2dd294aa1 (patch)
tree31a3c58a848d6584f914a7aee8f01ca4b5375177 /include
parenteb5ade9620008172a2e4464f839467bd875bd59e (diff)
[NETFILTER]: Resync with 2.4.x
- Update listhelp.h to benefit from prefetching - More efficient selective_cleanup() impl. in conntrack - Export number of conntrack buckets via r/o sysctl.
Diffstat (limited to 'include')
-rw-r--r--include/linux/netfilter_ipv4/listhelp.h54
-rw-r--r--include/linux/sysctl.h1
2 files changed, 25 insertions, 30 deletions
diff --git a/include/linux/netfilter_ipv4/listhelp.h b/include/linux/netfilter_ipv4/listhelp.h
index f19f448889d1..f2ae7c5e57bb 100644
--- a/include/linux/netfilter_ipv4/listhelp.h
+++ b/include/linux/netfilter_ipv4/listhelp.h
@@ -11,48 +11,42 @@
required to allow inlining of cmpfn. */
#define LIST_FIND(head, cmpfn, type, args...) \
({ \
- const struct list_head *__i = (head); \
+ const struct list_head *__i, *__j = NULL; \
\
ASSERT_READ_LOCK(head); \
- do { \
- __i = __i->next; \
- if (__i == (head)) { \
- __i = NULL; \
+ list_for_each(__i, (head)) \
+ if (cmpfn((const type)__i , ## args)) { \
+ __j = __i; \
break; \
} \
- } while (!cmpfn((const type)__i , ## args)); \
- (type)__i; \
+ (type)__j; \
})
-#define LIST_FIND_W(head, cmpfn, type, args...) \
-({ \
- const struct list_head *__i = (head); \
- \
- ASSERT_WRITE_LOCK(head); \
- do { \
- __i = __i->next; \
- if (__i == (head)) { \
- __i = NULL; \
- break; \
- } \
- } while (!cmpfn((type)__i , ## args)); \
- (type)__i; \
+#define LIST_FIND_W(head, cmpfn, type, args...) \
+({ \
+ const struct list_head *__i, *__j = NULL; \
+ \
+ ASSERT_WRITE_LOCK(head); \
+ list_for_each(__i, (head)) \
+ if (cmpfn((type)__i , ## args)) { \
+ __j = __i; \
+ break; \
+ } \
+ (type)__j; \
})
/* Just like LIST_FIND but we search backwards */
#define LIST_FIND_B(head, cmpfn, type, args...) \
({ \
- const struct list_head *__i = (head); \
+ const struct list_head *__i, *__j = NULL; \
\
ASSERT_READ_LOCK(head); \
- do { \
- __i = __i->prev; \
- if (__i == (head)) { \
- __i = NULL; \
+ list_for_each_prev(__i, (head)) \
+ if (cmpfn((const type)__i , ## args)) { \
+ __j = __i; \
break; \
} \
- } while (!cmpfn((const type)__i , ## args)); \
- (type)__i; \
+ (type)__j; \
})
static inline int
@@ -100,9 +94,9 @@ list_prepend(struct list_head *head, void *new)
do { \
struct list_head *__i; \
ASSERT_WRITE_LOCK(head); \
- for (__i = (head)->next; \
- !cmpfn((new), (typeof (new))__i) && __i != (head); \
- __i = __i->next); \
+ list_for_each(__i, (head)) \
+ if ((new), (typeof (new))__i) \
+ break; \
list_add((struct list_head *)(new), __i->prev); \
} while(0)
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
index b192b7f018f5..f800e292d8a1 100644
--- a/include/linux/sysctl.h
+++ b/include/linux/sysctl.h
@@ -382,6 +382,7 @@ enum
NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT_STREAM=11,
NET_IPV4_NF_CONNTRACK_ICMP_TIMEOUT=12,
NET_IPV4_NF_CONNTRACK_GENERIC_TIMEOUT=13,
+ NET_IPV4_NF_CONNTRACK_BUCKETS=14,
};
/* /proc/sys/net/ipv6 */