summaryrefslogtreecommitdiff
path: root/ospfd/ospfd.c
diff options
context:
space:
mode:
authorpaul <paul>2005-11-20 14:50:45 +0000
committerpaul <paul>2005-11-20 14:50:45 +0000
commitb29800a676b7c3cf00d8a4086b7783ccb7e2f29f (patch)
tree98afc20c5aae1909e34b1b86f1d6d18f36391c89 /ospfd/ospfd.c
parent77b1cffe3b71c886152534b8507f00c7fcbd12c9 (diff)
2005-11-20 Paul Jakma <paul.jakma@sun.com>
* ospfd.h: remove the OSPF_ROUTER_ID_UPDATE_DELAY define (struct ospf) remove the router_id timer thread. remove export of ospf_router_id_update_timer. * ospfd.c: (ospf_router_id_update) call ospf_if_update to poke interfaces into action after ID has been configured. (ospf_router_id_update_timer) removed. (ospf_finish_final) t_router_id_update timer is gone. (ospf_network_run) router-id update timer gone. call ospf_router_id_update directly if ID not configured. In the per-iface loop, don't ospf_if_up interfaces if ID is still not configured. The update function will call ospf_if_update anyway. (ospf_if_update) ID update timer is gone. Just return if no ID is set. * ospf_vty.c: (ospf_router_id) call ospf_router_id_update, no timer needed. * ospf_zebra.c: (ospf_router_id_update_zebra) call ospf_router_id_update directly, not via timer.
Diffstat (limited to 'ospfd/ospfd.c')
-rw-r--r--ospfd/ospfd.c47
1 files changed, 16 insertions, 31 deletions
diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c
index 3cc02020..7c9fb8f0 100644
--- a/ospfd/ospfd.c
+++ b/ospfd/ospfd.c
@@ -119,22 +119,11 @@ ospf_router_id_update (struct ospf *ospf)
OSPF_TIMER_ON (ospf->t_router_lsa_update,
ospf_router_lsa_update_timer, OSPF_LSA_UPDATE_DELAY);
+
+ /* update ospf_interface's */
+ ospf_if_update (ospf);
}
}
-
-int
-ospf_router_id_update_timer (struct thread *thread)
-{
- struct ospf *ospf = THREAD_ARG (thread);
-
- if (IS_DEBUG_OSPF_EVENT)
- zlog_debug ("Router-ID: Update timer fired!");
-
- ospf->t_router_id_update = NULL;
- ospf_router_id_update (ospf);
-
- return 0;
-}
/* For OSPF area sort by area id. */
static int
@@ -454,7 +443,6 @@ ospf_finish_final (struct ospf *ospf)
/* Cancel all timers. */
OSPF_TIMER_OFF (ospf->t_external_lsa);
- OSPF_TIMER_OFF (ospf->t_router_id_update);
OSPF_TIMER_OFF (ospf->t_router_lsa_update);
OSPF_TIMER_OFF (ospf->t_spf_calc);
OSPF_TIMER_OFF (ospf->t_ase_calc);
@@ -834,12 +822,8 @@ ospf_network_run (struct ospf *ospf, struct prefix *p, struct ospf_area *area)
/* Schedule Router ID Update. */
if (ospf->router_id_static.s_addr == 0)
- if (ospf->t_router_id_update == NULL)
- {
- OSPF_TIMER_ON (ospf->t_router_id_update, ospf_router_id_update_timer,
- OSPF_ROUTER_ID_UPDATE_DELAY);
- }
-
+ ospf_router_id_update (ospf);
+
/* Get target interface. */
for (ALL_LIST_ELEMENTS_RO (om->iflist, node, ifp))
{
@@ -913,8 +897,14 @@ ospf_network_run (struct ospf *ospf, struct prefix *p, struct ospf_area *area)
}
ospf_area_add_if (oi->area, oi);
-
- if (if_is_operative (ifp))
+
+ /* if router_id is not configured, dont bring up
+ * interfaces.
+ * ospf_router_id_update() will call ospf_if_update
+ * whenever r-id is configured instead.
+ */
+ if ((ospf->router_id_static.s_addr != 0)
+ && if_is_operative (ifp))
ospf_if_up (oi);
break;
@@ -961,15 +951,10 @@ ospf_if_update (struct ospf *ospf)
if (ospf != NULL)
{
- /* Update Router ID scheduled. */
+ /* Router-ID must be configured. */
if (ospf->router_id_static.s_addr == 0)
- if (ospf->t_router_id_update == NULL)
- {
- OSPF_TIMER_ON (ospf->t_router_id_update,
- ospf_router_id_update_timer,
- OSPF_ROUTER_ID_UPDATE_DELAY);
- }
-
+ return;
+
/* Find interfaces that not configured already. */
for (ALL_LIST_ELEMENTS (ospf->oiflist, node, nnode, oi))
{