]> git.proxmox.com Git - mirror_frr.git/blobdiff - ospf6d/ospf6_top.c
ospf6d: assign zebra router-id to ospf6 instance
[mirror_frr.git] / ospf6d / ospf6_top.c
index 25d968fb689e575dc3c5ada7240769ea6f2a2710..28379458d24f585e754fdb7c709e641b44fe8574 100644 (file)
@@ -53,6 +53,8 @@ DEFINE_QOBJ_TYPE(ospf6)
 
 /* global ospf6d variable */
 struct ospf6 *ospf6;
+static struct ospf6_master ospf6_master;
+struct ospf6_master *om6;
 
 static void ospf6_disable(struct ospf6 *o);
 
@@ -230,6 +232,13 @@ static void ospf6_disable(struct ospf6 *o)
        }
 }
 
+void ospf6_master_init(void)
+{
+       memset(&ospf6_master, 0, sizeof(struct ospf6_master));
+
+       om6 = &ospf6_master;
+}
+
 static int ospf6_maxage_remover(struct thread *thread)
 {
        struct ospf6 *o = (struct ospf6 *)THREAD_ARG(thread);
@@ -285,6 +294,17 @@ void ospf6_maxage_remove(struct ospf6 *o)
                                 &o->maxage_remover);
 }
 
+void ospf6_router_id_update(void)
+{
+       if (!ospf6)
+               return;
+
+       if (ospf6->router_id_static != 0)
+               ospf6->router_id = ospf6->router_id_static;
+       else
+               ospf6->router_id = om6->zebra_router_id;
+}
+
 /* start ospf6 */
 DEFUN_NOSH (router_ospf6,
        router_ospf6_cmd,
@@ -292,9 +312,11 @@ DEFUN_NOSH (router_ospf6,
        ROUTER_STR
        OSPF6_STR)
 {
-       if (ospf6 == NULL)
+       if (ospf6 == NULL) {
                ospf6 = ospf6_create();
-
+               if (ospf6->router_id == 0)
+                       ospf6_router_id_update();
+       }
        /* set current ospf point. */
        VTY_PUSH_CONTEXT(OSPF6_NODE, ospf6);