diff options
| -rw-r--r-- | ospfd/ospf_interface.c | 3 | ||||
| -rw-r--r-- | ospfd/ospf_lsa.c | 3 |
2 files changed, 5 insertions, 1 deletions
diff --git a/ospfd/ospf_interface.c b/ospfd/ospf_interface.c index 61497cdb9c..f71d222e98 100644 --- a/ospfd/ospf_interface.c +++ b/ospfd/ospf_interface.c @@ -115,6 +115,9 @@ int ospf_if_get_output_cost(struct ospf_interface *oi) cost = 1; else if (cost > 65535) cost = 65535; + + if (if_is_loopback(oi->ifp)) + cost = 0; } return cost; diff --git a/ospfd/ospf_lsa.c b/ospfd/ospf_lsa.c index 109229f909..3ca8427d88 100644 --- a/ospfd/ospf_lsa.c +++ b/ospfd/ospf_lsa.c @@ -603,7 +603,8 @@ static int lsa_link_loopback_set(struct stream **s, struct ospf_interface *oi) mask.s_addr = 0xffffffff; id.s_addr = oi->address->u.prefix4.s_addr; - return link_info_set(s, id, mask, LSA_LINK_TYPE_STUB, 0, 0); + return link_info_set(s, id, mask, LSA_LINK_TYPE_STUB, 0, + oi->output_cost); } /* Describe Virtual Link. */ |
