summaryrefslogtreecommitdiffstats
path: root/lib/ipv6.h
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>1998-04-23 16:01:15 +0200
committerMartin Mares <mj@ucw.cz>1998-04-23 16:01:15 +0200
commitc40e05a0dffa33a8724e56121a2b6dcdfa9183e0 (patch)
tree4c4322c6900ae4788006d72195028ac71ecb11c1 /lib/ipv6.h
parent481f69854a788bd2bea5c6938e038ec6e21c491b (diff)
downloadbird-c40e05a0dffa33a8724e56121a2b6dcdfa9183e0.tar
bird-c40e05a0dffa33a8724e56121a2b6dcdfa9183e0.zip
Added IP address manipulation macros, interface declarations and logging.
Diffstat (limited to 'lib/ipv6.h')
-rw-r--r--lib/ipv6.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/ipv6.h b/lib/ipv6.h
new file mode 100644
index 0000000..98d7811
--- /dev/null
+++ b/lib/ipv6.h
@@ -0,0 +1,44 @@
+/*
+ * BIRD -- IP Addresses et Cetera for IPv6
+ *
+ * (c) 1998 Martin Mares <mj@ucw.cz>
+ *
+ * Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#ifndef _BIRD_IPV4_H_
+#define _BIRD_IPV4_H_
+
+#include <netinet/in.h>
+#include <string.h>
+
+typedef struct ipv4_addr {
+ u32 addr[4];
+} ip_addr;
+
+#define _MI(a,b,c,d) ((struct ip_addr) { a, b, c, d })
+#define _I0(a) ((a).addr[0])
+#define _I1(a) ((a).addr[1])
+#define _I2(a) ((a).addr[2])
+#define _I3(a) ((a).addr[3])
+
+#define IPA_NONE _MI(0,0,0,0)
+
+#define ipa_equal(x,y) (!memcmp(&(x),&(y),sizeof(ip_addr)))
+#define ipa_and(a,b) _MI(_I0(a) & _I0(b), \
+ _I1(a) & _I1(b), \
+ _I2(a) & _I2(b), \
+ _I3(a) & _I3(b))
+#define ipa_or(a,b) _MI(_I0(a) | _I0(b), \
+ _I1(a) | _I1(b), \
+ _I2(a) | _I2(b), \
+ _I3(a) | _I3(b))
+#define ipa_not(a) _MI(~_I0(a),~_I1(a),~_I2(a),~_I3(a))
+
+#define ipa_mkmask(x) ipv6_mkmask(x)
+#define ipa_mklen(x) ipv6_mklen(x)
+
+ip_addr ipv6_mkmask(unsigned);
+unsigned ipv6_mklen(ip_addr);
+
+#endif