From: hasso Date: Thu, 18 Mar 2004 19:18:33 +0000 (+0000) Subject: Amir's fix case where opaque capability is switched "ON -> OFF -> ON". X-Git-Tag: frr-2.0-rc1~3766 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=0d85b9958d6db05fb9d81afbee96332f142654bd;p=matthieu%2Ffrr.git Amir's fix case where opaque capability is switched "ON -> OFF -> ON". [quagga-dev 843] --- diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog index 3ec877f5b6..ca9dd04de5 100644 --- a/ospfd/ChangeLog +++ b/ospfd/ChangeLog @@ -1,3 +1,9 @@ +2004-03-18 Amir Guindehi + + * ospf_opaque.c: Attempt to correct the incorrect behavior of + Quagga's ospfd in the special situation that a node's opaque + capability has changed as "ON -> OFF -> ON". [quagga-dev 843]. + 2004-02-19 Sowmini Varadhan * ospf_abr.c: (ospf_abr_update_aggregate) UNH 3.12b,c, address range diff --git a/ospfd/ospf_opaque.c b/ospfd/ospf_opaque.c index f1fe783cce..636839c010 100644 --- a/ospfd/ospf_opaque.c +++ b/ospfd/ospf_opaque.c @@ -1385,10 +1385,15 @@ ospf_opaque_lsa_originate_schedule (struct ospf_interface *oi, int *delay0) { for (node = listhead (oi->opaque_lsa_self); node; nextnode (node)) { + /* + * removed the test for + * (! list_isempty (oipt->id_list)) * Handler is already active. * + * because opaque cababilities ON -> OFF -> ON result in list_isempty (oipt->id_list) + * not being empty. + */ if ((oipt = getdata (node)) == NULL /* Something wrong? */ || oipt->t_opaque_lsa_self != NULL /* Waiting for a thread call. */ - || oipt->status == PROC_SUSPEND /* Cannot originate now. */ - || ! list_isempty (oipt->id_list)) /* Handler is already active. */ + || oipt->status == PROC_SUSPEND) /* Cannot originate now. */ continue; ospf_opaque_lsa_reoriginate_schedule ((void *) oi, @@ -1401,10 +1406,15 @@ ospf_opaque_lsa_originate_schedule (struct ospf_interface *oi, int *delay0) { for (node = listhead (area->opaque_lsa_self); node; nextnode (node)) { + /* + * removed the test for + * (! list_isempty (oipt->id_list)) * Handler is already active. * + * because opaque cababilities ON -> OFF -> ON result in list_isempty (oipt->id_list) + * not being empty. + */ if ((oipt = getdata (node)) == NULL /* Something wrong? */ || oipt->t_opaque_lsa_self != NULL /* Waiting for a thread call. */ - || oipt->status == PROC_SUSPEND /* Cannot originate now. */ - || ! list_isempty (oipt->id_list)) /* Handler is already active. */ + || oipt->status == PROC_SUSPEND) /* Cannot originate now. */ continue; ospf_opaque_lsa_reoriginate_schedule ((void *) area, @@ -1417,10 +1427,15 @@ ospf_opaque_lsa_originate_schedule (struct ospf_interface *oi, int *delay0) { for (node = listhead (top->opaque_lsa_self); node; nextnode (node)) { + /* + * removed the test for + * (! list_isempty (oipt->id_list)) * Handler is already active. * + * because opaque cababilities ON -> OFF -> ON result in list_isempty (oipt->id_list) + * not being empty. + */ if ((oipt = getdata (node)) == NULL /* Something wrong? */ || oipt->t_opaque_lsa_self != NULL /* Waiting for a thread call. */ - || oipt->status == PROC_SUSPEND /* Cannot originate now. */ - || ! list_isempty (oipt->id_list)) /* Handler is already active. */ + || oipt->status == PROC_SUSPEND) /* Cannot originate now. */ continue; ospf_opaque_lsa_reoriginate_schedule ((void *) top,