diff options
author | Claudio Jeker <claudio@cvs.openbsd.org> | 2007-09-18 16:59:09 +0000 |
---|---|---|
committer | Claudio Jeker <claudio@cvs.openbsd.org> | 2007-09-18 16:59:09 +0000 |
commit | adfa140c76ddd1a8482fdac866bac8ddc3da9eb5 (patch) | |
tree | 32a237b56168ba5943fc28369d06411c81cb0835 /usr.sbin/ospfd | |
parent | 5f0c1b2f45d21d034729dd4dde40605d92657d58 (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.c | 8 |
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); } |