diff options
| author | Renato Westphal <renato@opensourcerouting.org> | 2023-03-02 19:39:17 -0300 | 
|---|---|---|
| committer | Renato Westphal <renato@opensourcerouting.org> | 2023-03-02 19:38:03 -0300 | 
| commit | a7276f01028a73569a7a8c6fb844f191534270e4 (patch) | |
| tree | 5094d39840929ce0ec96eaf226c910f549ed1e8d | |
| parent | 48cdfc16dd34e1bbfaf23c386605d44a6dcb01fb (diff) | |
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>
| -rw-r--r-- | ospf6d/ospf6_abr.c | 9 | 
1 files 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);  | 
