From a7276f01028a73569a7a8c6fb844f191534270e4 Mon Sep 17 00:00:00 2001 From: Renato Westphal Date: Thu, 2 Mar 2023 19:39:17 -0300 Subject: [PATCH] ospf6d: fix processing of inter-area-prefix-LSAs with the LA-bit set RFC 5340, Section 4.8.3 says: "Prefixes having the NU-bit set in their PrefixOptions field should be ignored by the inter-area route calculation". Fix a bug where, in addition to the NU-bit, ospf6d was also ignoring prefixes having the LA-bit set when computing inter-area routes. In practice, this fixes interoperability issues with vendors that set the LA-bit in loopback prefixes (among other cases). While here, fix a copy-and-paste error where a log message wasn't showing accurate information about what happened. Signed-off-by: Renato Westphal --- ospf6d/ospf6_abr.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/ospf6d/ospf6_abr.c b/ospf6d/ospf6_abr.c index 0575f5abe1..4def3c7386 100644 --- a/ospf6d/ospf6_abr.c +++ b/ospf6d/ospf6_abr.c @@ -1136,11 +1136,9 @@ void ospf6_abr_examin_summary(struct ospf6_lsa *lsa, struct ospf6_area *oa) } if (CHECK_FLAG(prefix_lsa->prefix.prefix_options, - OSPF6_PREFIX_OPTION_NU) - || CHECK_FLAG(prefix_lsa->prefix.prefix_options, - OSPF6_PREFIX_OPTION_LA)) { + OSPF6_PREFIX_OPTION_NU)) { if (is_debug) - zlog_debug("Prefix has NU/LA bit set, ignore"); + zlog_debug("Prefix has the NU bit set, ignore"); if (old) ospf6_route_remove(old, table); return; @@ -1153,7 +1151,8 @@ void ospf6_abr_examin_summary(struct ospf6_lsa *lsa, struct ospf6_area *oa) if (!OSPF6_OPT_ISSET(router_lsa->options, OSPF6_OPT_R) || !OSPF6_OPT_ISSET(router_lsa->options, OSPF6_OPT_V6)) { if (is_debug) - zlog_debug("Prefix has NU/LA bit set, ignore"); + zlog_debug( + "Router-LSA has the V6-bit or R-bit unset, ignore"); if (old) ospf6_route_remove(old, table);