From: Donatas Abraitis Date: Mon, 23 Oct 2023 08:24:12 +0000 (+0300) Subject: ospf6d: Set loopback interface cost to 0 X-Git-Tag: base_10.0~330^2~2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=80dfa9e012ebdb3e88cbd6de3101ae6dd9109ad2;p=matthieu%2Ffrr.git ospf6d: Set loopback interface cost to 0 https://www.rfc-editor.org/rfc/rfc5340.html#page-37 states: 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. Signed-off-by: Donatas Abraitis --- diff --git a/ospf6d/ospf6_interface.c b/ospf6d/ospf6_interface.c index a20ddf6c10..2a6b816844 100644 --- a/ospf6d/ospf6_interface.c +++ b/ospf6d/ospf6_interface.c @@ -128,9 +128,19 @@ 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; + uint32_t cost = 0; 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.