summaryrefslogtreecommitdiffstats
path: root/ospf6d/ospf6_abr.c
diff options
context:
space:
mode:
authorRenato Westphal <renato@opensourcerouting.org>2023-03-02 23:39:17 +0100
committerRenato Westphal <renato@opensourcerouting.org>2023-03-02 23:38:03 +0100
commita7276f01028a73569a7a8c6fb844f191534270e4 (patch)
tree5094d39840929ce0ec96eaf226c910f549ed1e8d /ospf6d/ospf6_abr.c
parentMerge pull request #12760 from opensourcerouting/fix/switch_to_pr_for_commitlint (diff)
downloadfrr-a7276f01028a73569a7a8c6fb844f191534270e4.tar.xz
frr-a7276f01028a73569a7a8c6fb844f191534270e4.zip
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 <renato@opensourcerouting.org>
Diffstat (limited to 'ospf6d/ospf6_abr.c')
-rw-r--r--ospf6d/ospf6_abr.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/ospf6d/ospf6_abr.c b/ospf6d/ospf6_abr.c
index 0575f5abe..4def3c738 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);