summaryrefslogtreecommitdiffstats
path: root/libiptc/linux_stddef.h
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2004-08-29 23:32:14 +0000
committerHarald Welte <laforge@gnumonks.org>2004-08-29 23:32:14 +0000
commitaae69bed019826ddec93f761514652a93d871e49 (patch)
tree50397ccff19cae81d8b3b9a6101c75eb1e35d522 /libiptc/linux_stddef.h
parent161b35f372c1612863f9ebd327e6c4a9f0959e2a (diff)
complete libiptc rewrite. Time to load 10k rules goes down from 2.20 minutes to 1.255 seconds (!). Might still contain bugs, use with caution.
Diffstat (limited to 'libiptc/linux_stddef.h')
-rw-r--r--libiptc/linux_stddef.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/libiptc/linux_stddef.h b/libiptc/linux_stddef.h
new file mode 100644
index 00000000..56416f10
--- /dev/null
+++ b/libiptc/linux_stddef.h
@@ -0,0 +1,39 @@
+#ifndef _LINUX_STDDEF_H
+#define _LINUX_STDDEF_H
+
+#undef NULL
+#if defined(__cplusplus)
+#define NULL 0
+#else
+#define NULL ((void *)0)
+#endif
+
+#undef offsetof
+#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+
+
+/**
+ * container_of - cast a member of a structure out to the containing structure
+ *
+ * @ptr: the pointer to the member.
+ * @type: the type of the container struct this is embedded in.
+ * @member: the name of the member within the struct.
+ *
+ */
+#define container_of(ptr, type, member) ({ \
+ const typeof( ((type *)0)->member ) *__mptr = (ptr); \
+ (type *)( (char *)__mptr - offsetof(type,member) );})
+
+/*
+ * Check at compile time that something is of a particular type.
+ * Always evaluates to 1 so you may use it easily in comparisons.
+ */
+#define typecheck(type,x) \
+({ type __dummy; \
+ typeof(x) __dummy2; \
+ (void)(&__dummy == &__dummy2); \
+ 1; \
+})
+
+
+#endif