diff options
| -rw-r--r-- | ospfd/ChangeLog | 7 | ||||
| -rw-r--r-- | ospfd/ospfd.c | 9 | 
2 files changed, 16 insertions, 0 deletions
diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog index 61ca5e0f..dfcbe899 100644 --- a/ospfd/ChangeLog +++ b/ospfd/ChangeLog @@ -1,3 +1,10 @@ +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. +  2006-07-26 Paul Jakma <paul.jakma@sun.com>  	* ospf_lsa.{c,h}: (ospf_lsa_unlock) Change to take a double pointer 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;  | 
