diff options
| author | Donatas Abraitis <donatas@opensourcerouting.org> | 2023-10-23 11:24:12 +0300 | 
|---|---|---|
| committer | Mergify <37929162+mergify[bot]@users.noreply.github.com> | 2023-10-30 04:20:36 +0000 | 
| commit | 2172fb9f67730e78100a4723246b246cebf4cdf0 (patch) | |
| tree | 5f9751377bbfb1195fd76b05614104ced762c56a /ospf6d | |
| parent | 0653c10c20edec90a5333b03d58e38872df6c635 (diff) | |
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 <donatas@opensourcerouting.org>
(cherry picked from commit 80dfa9e012ebdb3e88cbd6de3101ae6dd9109ad2)
Diffstat (limited to 'ospf6d')
| -rw-r--r-- | ospf6d/ospf6_interface.c | 12 | 
1 files changed, 11 insertions, 1 deletions
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.  | 
