summaryrefslogtreecommitdiffstats
path: root/ospfd/ospf_spf.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2015-05-20 02:24:44 +0200
committerDonald Sharp <sharpd@cumulusnetworks.com>2015-05-20 02:24:44 +0200
commita7acce6db38bbedbb331029d2066f6181ee96d91 (patch)
treedd1756a444d88e05caf4e34e2fb412c6dce18917 /ospfd/ospf_spf.c
parentenable autoreconf so that Makefile.in is regenerated in the cumulus build. (diff)
downloadfrr-a7acce6db38bbedbb331029d2066f6181ee96d91.tar.xz
frr-a7acce6db38bbedbb331029d2066f6181ee96d91.zip
Section 16.0 of rfc2328 (OSPF) specifies that the short-path
calculation to a node should be constructed with the sum of all path costs (metrics) to the node (pretty simple huh). There is a usage of metric typified by the "max-metric router-lsa" command in many networking stacks that allows a router to gracefully "remove" itself from a topology by advertising the maximum value of metric in it's router LSAs (16 bits of "1"). In this case, the router will continue to forward any traffic sent to it while these "max-metric" LSAs are propagated through the network; at which point, the router can be taken out of service. The correct handling of this in ospfd would use this metric as part of the calculation, disuading other routers from using it for transit traffic (assuming a better path exits). Unfortunately, the ospfd behavior is to remove these links from the SPF calculation. This patch changes the behavior to omit this exception handling. Signed-off-by: JR Rivers <jrrivers@cumulusnetworks.com>
Diffstat (limited to '')
-rw-r--r--ospfd/ospf_spf.c7
1 files changed, 0 insertions, 7 deletions
diff --git a/ospfd/ospf_spf.c b/ospfd/ospf_spf.c
index a7155bc64..014831629 100644
--- a/ospfd/ospf_spf.c
+++ b/ospfd/ospf_spf.c
@@ -838,13 +838,6 @@ ospf_spf_next (struct vertex *v, struct ospf_area *area,
if ((type = l->m[0].type) == LSA_LINK_TYPE_STUB)
continue;
- /* Infinite distance links shouldn't be followed, except
- * for local links (a stub-routed router still wants to
- * calculate tree, so must follow its own links).
- */
- if ((v != area->spf) && l->m[0].metric >= OSPF_OUTPUT_COST_INFINITE)
- continue;
-
/* (b) Otherwise, W is a transit vertex (router or transit
network). Look up the vertex W's LSA (router-LSA or
network-LSA) in Area A's link state database. */