]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Implemented a Table-to-Table protocol a.k.a The Pipe.
authorMartin Mares <mj@ucw.cz>
Tue, 3 Aug 1999 19:34:26 +0000 (19:34 +0000)
committerMartin Mares <mj@ucw.cz>
Tue, 3 Aug 1999 19:34:26 +0000 (19:34 +0000)
configure.in
doc/bird.conf.example
nest/protocol.h
nest/route.h

index 4aaddf79bd29433d731a6c46dc110761167abd1b..6419e1272904941524394a2f5f740d87d48daa18 100644 (file)
@@ -8,7 +8,7 @@ AC_CONFIG_AUX_DIR(tools)
 
 AC_ARG_ENABLE(debug,[  --enable-debug          enable internal debugging routines (default: enabled)],,enable_debug=yes)
 AC_ARG_WITH(sysconfig,[  --with-sysconfig=FILE   use specified BIRD system configuration file])
-AC_ARG_WITH(protocols,[  --with-protocols=LIST   include specified routing protocols (default: rip,static)],,[with_protocols="rip,static"])
+AC_ARG_WITH(protocols,[  --with-protocols=LIST   include specified routing protocols (default: rip,static,pipe)],,[with_protocols="rip,static,pipe"])
 AC_ARG_WITH(sysinclude,[  --with-sysinclude=PATH  search for system includes on specified place])
 
 if test "$srcdir" = . ; then
index 0624efa08eadd9c90272c066be07e96d5e21c4d1..791ce0415b28d17e8bf785a484d6a1f40fb0428a 100644 (file)
@@ -50,3 +50,9 @@ protocol static {
 #      route 10.1.3.0:255.255.255.0 via 62.168.0.4;
 #      route 10.2.0.0/24 via "arc0";
 }
+
+#protocol pipe {
+#      peer table testable;
+#      import all;
+#      export all;
+#}
index 8d2f8cfa3c2b549b99f1112bcecf67d4d31d4150..a2c0eb93703ee718a646aa3ec818a0b0e1334fbf 100644 (file)
@@ -64,6 +64,7 @@ extern struct protocol proto_device;
 extern struct protocol proto_rip;
 extern struct protocol proto_static;
 extern struct protocol proto_ospf;
+extern struct protocol proto_pipe;
 
 /*
  *     Routing Protocol Instance
index 577142ae8dc72b736a94086016e566dc7967e221..c11d771b47e929dbd43c8e70ac503f155ef99236 100644 (file)
@@ -117,6 +117,7 @@ typedef struct rtable {
   struct fib fib;
   char *name;                          /* Name of this table */
   list hooks;                          /* List of announcement hooks */
+  int pipe_busy;                       /* Pipe loop detection */
 } rtable;
 
 typedef struct network {
@@ -223,6 +224,7 @@ typedef struct rta {
 #define RTS_OSPF_IA 10                 /* OSPF inter-area route */
 #define RTS_OSPF_BOUNDARY 11           /* OSPF route to boundary router (???) */
 #define RTS_BGP 12                     /* BGP route */
+#define RTS_PIPE 13                    /* Inter-table wormhole */
 
 #define RTC_UNICAST 0
 #define RTC_BROADCAST 1
@@ -316,6 +318,7 @@ static inline eattr * rta_find(rta *a, unsigned ea) { return ea_find(a->attrs, e
 #define DEF_PREF_BGP           100     /* BGP */
 #define DEF_PREF_OSPF_EXTERNAL 80      /* OSPF external routes */
 #define DEF_PREF_RIP_EXTERNAL  70      /* RIP external routes */
+#define DEF_PREF_PIPE          60      /* Routes piped from other tables */
 #define DEF_PREF_UKR           50      /* Unidentified Kernel Route */
 #define DEF_PREF_SINK          10      /* Sink route */