diff options
| author | Donatas Abraitis <donatas@opensourcerouting.org> | 2023-11-13 21:06:20 +0200 |
|---|---|---|
| committer | Mergify <37929162+mergify[bot]@users.noreply.github.com> | 2023-11-14 13:57:10 +0000 |
| commit | e611ca65edb300cdf86d1145b44d56bde63c258c (patch) | |
| tree | af409aaa89ef1c27a95c7031ca152ff1f5c167c3 | |
| parent | de607853c874bf2f19a44bb6570538b83dcef6e9 (diff) | |
ospf6d: Let the user override interface cost for a loopback
Fixes: 80dfa9e012eb ("ospf6d: Set loopback interface cost to 0")
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
(cherry picked from commit d46c4e94022ae26eb69e5990b1254f8c24b29958)
| -rw-r--r-- | ospf6d/ospf6_interface.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/ospf6d/ospf6_interface.c b/ospf6d/ospf6_interface.c index 2a6b816844..a79f993473 100644 --- a/ospf6d/ospf6_interface.c +++ b/ospf6d/ospf6_interface.c @@ -128,19 +128,10 @@ static uint8_t ospf6_default_iftype(struct interface *ifp) static uint32_t ospf6_interface_get_cost(struct ospf6_interface *oi) { /* If all else fails, use default OSPF cost */ - uint32_t cost = 0; + uint32_t cost; uint32_t bw, refbw; struct ospf6 *ospf6; - /* If the interface type is point-to-multipoint or the interface - * is in the state Loopback, the global scope IPv6 addresses - * associated with the interface (if any) are copied into the - * intra-area-prefix-LSA with the PrefixOptions LA-bit set, the - * PrefixLength set to 128, and the metric set to 0. - */ - if (if_is_loopback(oi->interface)) - return cost; - /* interface speed and bw can be 0 in some platforms, * use ospf default bw. If bw is configured then it would * be used. @@ -162,6 +153,15 @@ static uint32_t ospf6_interface_get_cost(struct ospf6_interface *oi) cost = (uint32_t)((double)refbw / (double)bw + (double)0.5); if (cost < 1) cost = 1; + + /* If the interface type is point-to-multipoint or the interface + * is in the state Loopback, the global scope IPv6 addresses + * associated with the interface (if any) are copied into the + * intra-area-prefix-LSA with the PrefixOptions LA-bit set, the + * PrefixLength set to 128, and the metric set to 0. + */ + if (if_is_loopback(oi->interface)) + cost = 0; } return cost; |
