summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Zajicek <santiago@crfreenet.org>2009-12-20 22:57:44 +0100
committerOndrej Zajicek <santiago@crfreenet.org>2009-12-20 22:57:44 +0100
commitba9a122142a3d42137c129fabaef097702d44801 (patch)
treee4187414fecde67fba0f3fd6adb6114a30fbf7f6
parent0225ea4eddb44bd9dd4f112e512325cbf80134d3 (diff)
parentc4199e30313c88c0911060a5b5f3cc181ceedb37 (diff)
Merge branch 'ospf3' into new
-rw-r--r--NEWS9
-rw-r--r--doc/bird.sgml4
-rw-r--r--misc/bird.spec2
-rw-r--r--proto/pipe/pipe.c26
-rw-r--r--sysdep/config.h2
5 files changed, 37 insertions, 6 deletions
diff --git a/NEWS b/NEWS
index e348c496..06c921fe 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,12 @@
+Version 1.1.7 (2009-12-21)
+ o Implements BGP Route Refresh (RFC 2918).
+ o Implements route reload feature.
+ o Deep changes and bugfixes in pipe protocol.
+ o Bugfix in OSPF premature aging of LSA.
+ o Bugfix in OSPF next hop calculation.
+ o Bugfix in core related to route withdraws.
+ o Several minor bugfixes.
+
Version 1.1.6 (2009-11-19)
o Implements RFC 5004 - prefer older external routes.
o There is a change how route servers handle missing IPv6 link
diff --git a/doc/bird.sgml b/doc/bird.sgml
index 806b0e6d..81ef79b2 100644
--- a/doc/bird.sgml
+++ b/doc/bird.sgml
@@ -512,7 +512,9 @@ This argument can be omitted if there exists only a single instance.
Re-export always succeeds, but re-import is protocol-dependent
and might fail (for example, if BGP neighbor does not support
route-refresh extension). In that case, re-export is also
- skipped.
+ skipped. Note that for the pipe protocol, both directions are
+ always reloaded together (<cf/in/ or <cf/out/ options are
+ ignored in that case).
<tag/down/
Shut BIRD down.
diff --git a/misc/bird.spec b/misc/bird.spec
index 8c8b04fc..7a15a0a5 100644
--- a/misc/bird.spec
+++ b/misc/bird.spec
@@ -1,6 +1,6 @@
Summary: BIRD Internet Routing Daemon
Name: bird
-Version: 1.1.6
+Version: 1.1.7
Release: 1
Copyright: GPL
Group: Networking/Daemons
diff --git a/proto/pipe/pipe.c b/proto/pipe/pipe.c
index c117f3b4..aa76a152 100644
--- a/proto/pipe/pipe.c
+++ b/proto/pipe/pipe.c
@@ -114,6 +114,19 @@ pipe_import_control(struct proto *P, rte **ee, ea_list **ea UNUSED, struct linpo
}
static int
+pipe_reload_routes(struct proto *P)
+{
+ /*
+ * Because the pipe protocol feeds routes from both routing tables
+ * together, both directions are reloaded during refeed and 'reload
+ * out' command works like 'reload' command. For symmetry, we also
+ * request refeed when 'reload in' command is used.
+ */
+ proto_request_feeding(P);
+ return 1;
+}
+
+static int
pipe_start(struct proto *P)
{
struct pipe_proto *p = (struct pipe_proto *) P;
@@ -183,6 +196,7 @@ pipe_init(struct proto_config *C)
P->accept_ra_types = (p->mode == PIPE_OPAQUE) ? RA_OPTIMAL : RA_ANY;
P->rt_notify = pipe_rt_notify_pri;
P->import_control = pipe_import_control;
+ P->reload_routes = pipe_reload_routes;
return P;
}
@@ -206,12 +220,18 @@ pipe_get_status(struct proto *P, byte *buf)
}
static int
-pipe_reconfigure(struct proto *p, struct proto_config *new)
+pipe_reconfigure(struct proto *P, struct proto_config *new)
{
- struct pipe_config *o = (struct pipe_config *) p->cf;
+ struct pipe_proto *p = (struct pipe_proto *) P;
+ struct pipe_config *o = (struct pipe_config *) P->cf;
struct pipe_config *n = (struct pipe_config *) new;
- return (o->peer == n->peer) && (o->mode == n->mode);
+ if ((o->peer->table != n->peer->table) || (o->mode != n->mode))
+ return 0;
+
+ /* Update also the filter in the phantom protocol */
+ p->phantom->p.out_filter = new->in_filter;
+ return 1;
}
struct protocol proto_pipe = {
diff --git a/sysdep/config.h b/sysdep/config.h
index 11ade63e..0e92a212 100644
--- a/sysdep/config.h
+++ b/sysdep/config.h
@@ -7,7 +7,7 @@
#define _BIRD_CONFIG_H_
/* BIRD version */
-#define BIRD_VERSION "1.1.6"
+#define BIRD_VERSION "1.1.7"
/* Include parameters determined by configure script */
#include "sysdep/autoconf.h"