]> git.puffer.fish Git - matthieu/frr.git/commitdiff
ospf6d: Set loopback interface cost to 0
authorDonatas Abraitis <donatas@opensourcerouting.org>
Mon, 23 Oct 2023 08:24:12 +0000 (11:24 +0300)
committerDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 26 Oct 2023 04:39:28 +0000 (07:39 +0300)
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 <donatas@opensourcerouting.org>
ospf6d/ospf6_interface.c

index a20ddf6c10968caf703bfb545bdd96c9c42479e8..2a6b816844120fb4e5d077d56901a027b52b4877 100644 (file)
@@ -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.