summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-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 */