summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>2000-05-16 15:36:38 +0200
committerMartin Mares <mj@ucw.cz>2000-05-16 15:36:38 +0200
commitf990fc61e0dd13ae90c9bbff811736dfd52988b0 (patch)
tree969f9f03d3e449ca62d8ec68d55b4838b4040208
parentc5a06f65ee20328b8d0f2276287e223e4fd4a595 (diff)
downloadbird-f990fc61e0dd13ae90c9bbff811736dfd52988b0.tar
bird-f990fc61e0dd13ae90c9bbff811736dfd52988b0.zip
When in persist mode, don't delete routes from kernel tables even if
they cease to exist in our routing tables due to protocols having shut down.
-rw-r--r--TODO10
-rw-r--r--sysdep/unix/krt.c2
2 files changed, 4 insertions, 8 deletions
diff --git a/TODO b/TODO
index 64a0628..c8fb0d1 100644
--- a/TODO
+++ b/TODO
@@ -1,15 +1,7 @@
Core
~~~~
-- configure: default CFLAGS?
-
-- filters: deletion of mandatory attributes?
-- filters: user defined attributes?
-- filters: arithmetics and define'd symbols
-
- kernel: persistent mode
-- cli: show tables?
-
- client: Ctrl-R eats one more enter
- client: paging?
- client: data losses on large dumps?
@@ -48,6 +40,7 @@ Various ideas
- netlink: realms
- netlink: import Linux route attributes to our rta's, so that they can be filtered?
- config: executable config files
+- filters: user defined attributes?
- client: access control
- io: use poll if available
- IPv6 router advertisements
@@ -59,6 +52,7 @@ Various ideas
- generate default route if any working BGP connection exists (aggregate engine again?)
- generate default route to IGP's (aggregate engine yet another time?)
- look at RFC 2386 (QoS-based routing)
+- cli: show tables?
OSPF
diff --git a/sysdep/unix/krt.c b/sysdep/unix/krt.c
index 74ab223..9bc2980 100644
--- a/sysdep/unix/krt.c
+++ b/sysdep/unix/krt.c
@@ -667,6 +667,8 @@ krt_notify(struct proto *P, net *net, rte *new, rte *old, struct ea_list *attrs)
{
struct krt_proto *p = (struct krt_proto *) P;
+ if (shutting_down && KRT_CF->persist)
+ return;
if (new && (!krt_capable(new) || new->attrs->source == RTS_INHERIT))
new = NULL;
if (!(net->n.flags & KRF_INSTALLED))