summaryrefslogtreecommitdiff
path: root/usr.sbin/ospfd
diff options
context:
space:
mode:
authorClaudio Jeker <claudio@cvs.openbsd.org>2007-09-18 16:59:09 +0000
committerClaudio Jeker <claudio@cvs.openbsd.org>2007-09-18 16:59:09 +0000
commitadfa140c76ddd1a8482fdac866bac8ddc3da9eb5 (patch)
tree32a237b56168ba5943fc28369d06411c81cb0835 /usr.sbin/ospfd
parent5f0c1b2f45d21d034729dd4dde40605d92657d58 (diff)
Correctly track the E-bit of router LSA on config reloads. If redistribution
is turned on or off the E-bit needs to be toggled accordingly else the AS-external LSA are ignored by the other OSPF routers. OK norby@
Diffstat (limited to 'usr.sbin/ospfd')
-rw-r--r--usr.sbin/ospfd/ospfd.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/usr.sbin/ospfd/ospfd.c b/usr.sbin/ospfd/ospfd.c
index 4f3bf3d274f..38e1efbd6bf 100644
--- a/usr.sbin/ospfd/ospfd.c
+++ b/usr.sbin/ospfd/ospfd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ospfd.c,v 1.48 2007/07/25 19:11:27 claudio Exp $ */
+/* $OpenBSD: ospfd.c,v 1.49 2007/09/18 16:59:08 claudio Exp $ */
/*
* Copyright (c) 2005 Claudio Jeker <claudio@openbsd.org>
@@ -652,11 +652,15 @@ merge_config(struct ospfd_conf *conf, struct ospfd_conf *xconf)
struct area *a, *xa, *na;
struct iface *iface;
struct redistribute *r;
+ int rchange = 0;
/* change of rtr_id needs a restart */
conf->flags = xconf->flags;
conf->spf_delay = xconf->spf_delay;
conf->spf_hold_time = xconf->spf_hold_time;
+ if ((conf->redistribute & REDISTRIBUTE_ON) !=
+ (xconf->redistribute & REDISTRIBUTE_ON))
+ rchange = 1;
conf->redistribute = xconf->redistribute;
conf->rfc1583compat = xconf->rfc1583compat;
@@ -735,7 +739,7 @@ merge_config(struct ospfd_conf *conf, struct ospfd_conf *xconf)
}
}
}
- if (a->dirty) {
+ if (a->dirty || rchange) {
a->dirty = 0;
orig_rtr_lsa(a);
}