summaryrefslogtreecommitdiffstats
path: root/ospfd/ospfd.c
diff options
context:
space:
mode:
authorAndrew J. Schorr <ajschorr@alumni.princeton.edu>2006-07-27 22:29:06 +0000
committerAndrew J. Schorr <ajschorr@alumni.princeton.edu>2006-07-27 22:29:06 +0000
commit1670008b5401eca13456f914bba7331c3b7b2893 (patch)
treea0a57a0bf58b904602a10b9812f27745e8861927 /ospfd/ospfd.c
parent6d691129594f87958ecaf4169b2e1f62f90d3616 (diff)
downloadquagga-1670008b5401eca13456f914bba7331c3b7b2893.tar.bz2
quagga-1670008b5401eca13456f914bba7331c3b7b2893.tar.xz
[ospfd] Bug #288: do not change router ID unless forced by manual configuration
2006-07-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu> * ospfd.c: (ospf_router_id_update) Fix and document the algorithm for selecting the router ID: if there is not a statically configured ID, then stick to the most recent value to avoid disruptive changes. This should fix bug #288.
Diffstat (limited to 'ospfd/ospfd.c')
-rw-r--r--ospfd/ospfd.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c
index ef8272b0..95615e4a 100644
--- a/ospfd/ospfd.c
+++ b/ospfd/ospfd.c
@@ -84,8 +84,17 @@ ospf_router_id_update (struct ospf *ospf)
router_id_old = ospf->router_id;
+ /* Select the router ID based on these priorities:
+ 1. Statically assigned router ID is always the first choice.
+ 2. If there is no statically assigned router ID, then try to stick
+ with the most recent value, since changing router ID's is very
+ disruptive.
+ 3. Last choice: just go with whatever the zebra daemon recommends.
+ */
if (ospf->router_id_static.s_addr != 0)
router_id = ospf->router_id_static;
+ else if (ospf->router_id.s_addr != 0)
+ router_id = ospf->router_id;
else
router_id = router_id_zebra;