summaryrefslogtreecommitdiffstats
path: root/ospfd/ospf_lsa.c
diff options
context:
space:
mode:
authorpaul <paul>2003-02-03 16:31:14 +0000
committerpaul <paul>2003-02-03 16:31:14 +0000
commit87e7bd70819e712e26f60c430627b7b04cdd7949 (patch)
treee17d32024d0c50264f4997297b7db7a821bb377e /ospfd/ospf_lsa.c
parentf2298cf6e89f2f2958282f45a523fe47a6fac369 (diff)
downloadquagga-87e7bd70819e712e26f60c430627b7b04cdd7949.tar.bz2
quagga-87e7bd70819e712e26f60c430627b7b04cdd7949.tar.xz
Import of Zebra CVS 20030203-16:30zebra_org_20030203
Diffstat (limited to 'ospfd/ospf_lsa.c')
-rw-r--r--ospfd/ospf_lsa.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/ospfd/ospf_lsa.c b/ospfd/ospf_lsa.c
index 5b63a76d..56c1e990 100644
--- a/ospfd/ospf_lsa.c
+++ b/ospfd/ospf_lsa.c
@@ -2306,6 +2306,11 @@ ospf_lsa_install (struct ospf_interface *oi, struct ospf_lsa *lsa)
break;
#ifdef HAVE_OPAQUE_LSA
case OSPF_OPAQUE_LINK_LSA:
+ if (IS_LSA_SELF (lsa))
+ lsa->oi = oi; /* Specify outgoing ospf-interface for this LSA. */
+ else
+ ; /* Incoming "oi" for this LSA has set at LSUpd reception. */
+ /* Fallthrough */
case OSPF_OPAQUE_AREA_LSA:
case OSPF_OPAQUE_AS_LSA:
new = ospf_opaque_lsa_install (lsa, rt_recalc);
@@ -2537,10 +2542,21 @@ ospf_lsa_maxage_walker_remover (struct ospf_lsa *lsa, void *p_arg, int int_arg)
switch (lsa->data->type)
{
- case OSPF_AS_EXTERNAL_LSA:
#ifdef HAVE_OPAQUE_LSA
+ case OSPF_OPAQUE_LINK_LSA:
+ case OSPF_OPAQUE_AREA_LSA:
case OSPF_OPAQUE_AS_LSA:
+ /*
+ * As a general rule, whenever network topology has changed
+ * (due to an LSA removal in this case), routing recalculation
+ * should be triggered. However, this is not true for opaque
+ * LSAs. Even if an opaque LSA instance is going to be removed
+ * from the routing domain, it does not mean a change in network
+ * topology, and thus, routing recalculation is not needed here.
+ */
+ break;
#endif /* HAVE_OPAQUE_LSA */
+ case OSPF_AS_EXTERNAL_LSA:
ospf_ase_incremental_update (lsa, ospf_top);
break;
default: