[quagga-dev 7383] [PATCH 6/7] ospfd: Self nbrs needs to be rebuilt when router ID changes.

Joakim Tjernlund Joakim.Tjernlund at transmode.se
Thu Nov 19 14:27:30 GMT 2009


Some self nbrs are identified by router_id, these needs
to be rebuilt instead of just resetting router ID.
Possibly one could optimize for !(virtual | ptop) links
by doing oi->nbr_self->router_id = router_id instead.

Router ID will change once after startup config has been
read and zebra reports router ID, unless router ID has
been configured in ospf.
---
 ospfd/ospfd.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c
index b86986b..d452b08 100644
--- a/ospfd/ospfd.c
+++ b/ospfd/ospfd.c
@@ -110,8 +110,15 @@ ospf_router_id_update (struct ospf *ospf)
   if (!IPV4_ADDR_SAME (&router_id_old, &router_id))
     {
       for (ALL_LIST_ELEMENTS_RO (ospf->oiflist, node, oi))
-        /* Update self-neighbor's router_id. */
-        oi->nbr_self->router_id = router_id;
+	{
+	  /* Some nbrs are identified by router_id, these needs
+	   * to be rebuilt. Possible optimization would be to do
+	   * oi->nbr_self->router_id = router_id for
+	   * !(virtual | ptop) links
+	   */
+	  ospf_nbr_delete(oi->nbr_self);
+	  ospf_nbr_add_self(oi);
+	}
 
       /* If AS-external-LSA is queued, then flush those LSAs. */
       if (router_id_old.s_addr == 0 && ospf->external_origin)
-- 
1.6.4.4




More information about the Quagga-dev mailing list