]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Added IP address manipulation macros, interface declarations and logging.
authorMartin Mares <mj@ucw.cz>
Thu, 23 Apr 1998 14:01:15 +0000 (14:01 +0000)
committerMartin Mares <mj@ucw.cz>
Thu, 23 Apr 1998 14:01:15 +0000 (14:01 +0000)
lib/birdlib.h
lib/ip.h [new file with mode: 0644]
lib/ipv4.h [new file with mode: 0644]
lib/ipv6.h [new file with mode: 0644]
nest/bird.h
nest/iface.h
nest/ipv4.h [deleted file]
nest/ipv6.h [deleted file]

index fb4814f9b168ee0e9e760cd560371e4ae2c4227c..eb95585fc09031b3ce6c063d095794f6880b5bd1 100644 (file)
 #define OFFSETOF(s, i) ((unsigned int)&((s *)0)->i)
 #define SKIP_BACK(s, i, p) ((s *)((char *)p - OFFSETOF(s, i)))
 
+/* Logging and dying */
+
+void log(char *msg, ...);
+void die(char *msg, ...);
+
+#define L_DEBUG "\001"                 /* Debugging messages */
+#define L_INFO "\002"                  /* Informational messages */
+#define L_WARN "\003"                  /* Warnings */
+#define L_ERR "\004"                   /* Errors */
+#define L_AUTH "\005"                  /* Authorization failed etc. */
+
+/* Debugging */
+
+#ifdef LOCAL_DEBUG
+#define DBG(x, y...) log(L_DEBUG x, ##y)
+#else
+#define DBG(x, y...)
+#endif
+
 #endif
diff --git a/lib/ip.h b/lib/ip.h
new file mode 100644 (file)
index 0000000..cd12ded
--- /dev/null
+++ b/lib/ip.h
@@ -0,0 +1,18 @@
+/*
+ *     BIRD Internet Routing Daemon -- The Internet Protocol
+ *
+ *     (c) 1998 Martin Mares <mj@ucw.cz>
+ *
+ *     Can be freely distributed and used under the terms of the GNU GPL.
+ */
+
+#ifndef _BIRD_IP_H_
+#define _BIRD_IP_H_
+
+#ifndef IPV6
+#include <lib/ipv4.h>
+#else
+#include <lib/ipv6.h>
+#endif
+
+#endif
diff --git a/lib/ipv4.h b/lib/ipv4.h
new file mode 100644 (file)
index 0000000..e5c1e8c
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ *     BIRD -- IP Addresses et Cetera for IPv4
+ *
+ *     (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>
+
+typedef struct ipv4_addr {
+  u32 addr;
+} ip_addr;
+
+#define _I(x) (x).addr
+#define _MI(x) ((struct ip_addr) { x })
+
+#define IPA_NONE(_MI(0))
+
+#define ipa_equal(x,y) (_I(x) == _I(y))
+#define ipa_and(x,y) _MI(_I(x) & _I(y))
+#define ipa_or(x,y) _MI(_I(x) | _I(y))
+#define ipa_not(x) _MI(~_I(x))
+#define ipa_mkmask(x) _MI(ipv4_mkmask(x))
+#define ipa_mklen(x) ipv4_mklen(_I(x))
+
+unsigned ipv4_mklen(u32);
+u32 ipv4_mkmask(unsigned);
+
+/* ??? htonl and ntohl ??? */
+
+#endif
diff --git a/lib/ipv6.h b/lib/ipv6.h
new file mode 100644 (file)
index 0000000..98d7811
--- /dev/null
@@ -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
index e8c331898981c365601af3d2fcb7e338854618a6..062e5fd14e83c670f5364c54f4a41115953d3975 100644 (file)
 
 #include <sysdep/config.h>
 #include <lib/birdlib.h>
-
-#ifndef IPV6
-#include <nest/ipv4.h>
-#else
-#include <nest/ipv6.h>
-#endif
+#include <lib/ip.h>
 
 extern u32 router_id;                  /* Our Router ID */
 extern u16 this_as;                    /* Our Autonomous System Number */
index 2d0d757349a2c8f701581fe83122c44728d6f9eb..7b85ece046c6398abd32e102fbdfe69c81984887 100644 (file)
@@ -9,4 +9,30 @@
 #ifndef _BIRD_IFACE_H_
 #define _BIRD_IFACE_H_
 
+#include <lib/lists.h>
+
+struct iface {
+  node n;
+  char *name;
+  unsigned flags;
+  struct ifa *ifa;                     /* First address is primary */
+};
+
+#define IF_UP 1
+#define IF_MULTIACCESS 2
+#define IF_UNNUMBERED 4
+#define IF_BROADCAST 8
+#define IF_MULTICAST 16
+#define IF_TUNNEL 32
+
+/* Interface address */
+
+struct ifa {
+  struct ifa *next;
+  ip_addr ip;                          /* IP address of this host */
+  ip_addr prefix;                      /* Network prefix */
+  unsigned pxlen;                      /* Prefix length */
+  ip_addr brd;                         /* Broadcast address */
+};
+
 #endif
diff --git a/nest/ipv4.h b/nest/ipv4.h
deleted file mode 100644 (file)
index 7524229..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- *     BIRD -- IP Addresses et Cetera for IPv4
- *
- *     (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>
-
-typedef struct ipv4_addr {
-  u32 addr;
-} ip_addr;
-
-#define ipa_equal(x,y) ((x).addr == (y).addr)
-
-#endif
diff --git a/nest/ipv6.h b/nest/ipv6.h
deleted file mode 100644 (file)
index 5d5e354..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- *     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 ipa_equal(x,y) (!memcmp(&(x),&(y),sizeof(ip_addr)))
-
-#endif