summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhenning <henning@openbsd.org>2004-01-05 16:17:22 +0000
committerhenning <henning@openbsd.org>2004-01-05 16:17:22 +0000
commit2103a8742ff47595a31fec48e18f346b5c2fd4ca (patch)
tree54ea27fa0c7594e0ca6951f8f88ae8c7abd31010
parentlibstdc++-v3 -> libstdc++ (diff)
downloadwireguard-openbsd-2103a8742ff47595a31fec48e18f346b5c2fd4ca.tar.xz
wireguard-openbsd-2103a8742ff47595a31fec48e18f346b5c2fd4ca.zip
protect against trying to couple when we're already coupled to the fib,
and log the coupling. same for decouple.
-rw-r--r--usr.sbin/bgpd/kroute.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/usr.sbin/bgpd/kroute.c b/usr.sbin/bgpd/kroute.c
index f5cf8589607..5f95eb43748 100644
--- a/usr.sbin/bgpd/kroute.c
+++ b/usr.sbin/bgpd/kroute.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kroute.c,v 1.45 2004/01/02 01:46:20 deraadt Exp $ */
+/* $OpenBSD: kroute.c,v 1.46 2004/01/05 16:17:22 henning Exp $ */
/*
* Copyright (c) 2003 Henning Brauer <henning@openbsd.org>
@@ -318,11 +318,16 @@ kroute_fib_couple(void)
{
struct kroute_node *kr;
+ if (kr_state.fib_sync == 1) /* already coupled */
+ return;
+
kr_state.fib_sync = 1;
RB_FOREACH(kr, kroute_tree, &krt)
if ((kr->flags & F_BGPD_INSERTED))
kroute_msg(kr_state.fd, RTM_ADD, &kr->r);
+
+ logit(LOG_INFO, "kernel routing table coupled");
}
void
@@ -330,11 +335,16 @@ kroute_fib_decouple(void)
{
struct kroute_node *kr;
+ if (kr_state.fib_sync == 0) /* already decoupled */
+ return;
+
RB_FOREACH(kr, kroute_tree, &krt)
if ((kr->flags & F_BGPD_INSERTED))
kroute_msg(kr_state.fd, RTM_DELETE, &kr->r);
kr_state.fib_sync = 0;
+
+ logit(LOG_INFO, "kernel routing table decoupled");
}
#define ROUNDUP(a, size) \