mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-29 06:29:40 +00:00
Merge pull request #14787 from opensourcerouting/fix/ospf6d_cost_fixup
ospf6d: Let the user override interface cost for a loopback
This commit is contained in:
commit
aa521c6e64
@ -128,19 +128,10 @@ static uint8_t ospf6_default_iftype(struct interface *ifp)
|
|||||||
static uint32_t ospf6_interface_get_cost(struct ospf6_interface *oi)
|
static uint32_t ospf6_interface_get_cost(struct ospf6_interface *oi)
|
||||||
{
|
{
|
||||||
/* If all else fails, use default OSPF cost */
|
/* If all else fails, use default OSPF cost */
|
||||||
uint32_t cost = 0;
|
uint32_t cost;
|
||||||
uint32_t bw, refbw;
|
uint32_t bw, refbw;
|
||||||
struct ospf6 *ospf6;
|
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,
|
/* interface speed and bw can be 0 in some platforms,
|
||||||
* use ospf default bw. If bw is configured then it would
|
* use ospf default bw. If bw is configured then it would
|
||||||
* be used.
|
* 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);
|
cost = (uint32_t)((double)refbw / (double)bw + (double)0.5);
|
||||||
if (cost < 1)
|
if (cost < 1)
|
||||||
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;
|
return cost;
|
||||||
|
Loading…
Reference in New Issue
Block a user