From 9c11ec9efca2fc75495cf8dcb28a959ba22b01fa Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Tue, 3 Aug 1999 19:34:26 +0000 Subject: [PATCH] Implemented a Table-to-Table protocol a.k.a The Pipe. --- configure.in | 2 +- doc/bird.conf.example | 6 ++++++ nest/protocol.h | 1 + nest/route.h | 3 +++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/configure.in b/configure.in index 4aaddf79..6419e127 100644 --- a/configure.in +++ b/configure.in @@ -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 diff --git a/doc/bird.conf.example b/doc/bird.conf.example index 0624efa0..791ce041 100644 --- a/doc/bird.conf.example +++ b/doc/bird.conf.example @@ -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; +#} diff --git a/nest/protocol.h b/nest/protocol.h index 8d2f8cfa..a2c0eb93 100644 --- a/nest/protocol.h +++ b/nest/protocol.h @@ -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 diff --git a/nest/route.h b/nest/route.h index 577142ae..c11d771b 100644 --- a/nest/route.h +++ b/nest/route.h @@ -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 */