aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSUZUKI, Shinsuke <suz@kame.net>2006-03-08 05:43:11 +0000
committerSUZUKI, Shinsuke <suz@kame.net>2006-03-08 05:43:11 +0000
commitb17f5f39ced4e1543211a72177293e87bfd5d95a (patch)
treec0f64faed967fa6150f6b8349827074470b128c9
parent292dd28c72d9cea443c542bb2e26e72db437c22e (diff)
added some missing queue-management macros to make it compilable on linux
-rw-r--r--CHANGES3
-rw-r--r--common.h31
2 files changed, 34 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
index a18769d..ef6e1c2 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+2006-03-08 SUZUKI, Shinsuke <suz@kame.net>
+ * added some missing queue-management macros to make it compilable on linux
+
2006-01-26 SUZUKI, Shinsuke <suz@kame.net>
* supported IA-NA address-pool (contributed by: WIDE Project Secure6-WG)
ToDo: IA-PD prefix-pool, write a manual
diff --git a/common.h b/common.h
index 98488e8..03477cf 100644
--- a/common.h
+++ b/common.h
@@ -47,6 +47,30 @@
#ifndef TAILQ_EMPTY
#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL)
#endif
+#ifndef TAILQ_LAST
+#define TAILQ_LAST(head, headname) \
+ (*(((struct headname *)((head)->tqh_last))->tqh_last))
+#endif
+#ifndef TAILQ_NEXT
+#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
+#endif
+#ifndef TAILQ_PREV
+#define TAILQ_PREV(elm, headname, field) \
+ (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
+#endif
+#ifndef TAILQ_FOREACH
+#define TAILQ_FOREACH(var, head, field) \
+ for ((var) = TAILQ_FIRST((head)); \
+ (var); \
+ (var) = TAILQ_NEXT((var), field))
+#endif
+
+#ifndef TAILQ_FOREACH_REVERSE
+#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
+ for ((var) = TAILQ_LAST((head), headname); \
+ (var); \
+ (var) = TAILQ_PREV((var), headname, field))
+#endif
/* and linux *_FIRST and *_NEXT */
#ifndef LIST_FIRST
@@ -61,6 +85,13 @@
#ifndef TAILQ_NEXT
#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
#endif
+#ifndef LIST_FOREACH
+#define LIST_FOREACH(var, head, field) \
+ for ((var) = LIST_FIRST((head)); \
+ (var); \
+ (var) = LIST_NEXT((var), field))
+#endif
+
#ifndef SO_REUSEPORT
#define SO_REUSEPORT SO_REUSEADDR