pi->sub_type == BGP_ROUTE_IMPORTED && pi->extra &&
pi->extra->num_labels && !bnc->is_evpn_gwip_nexthop)
return bgp_isvalid_nexthop_for_mpls(bnc, pi);
+ else if (safi == SAFI_MPLS_VPN)
+ /* avoid not redistributing mpls vpn routes */
+ return 1;
else
return (bgp_isvalid_nexthop(bnc));
}
bnc_is_valid_nexthop =
bgp_isvalid_nexthop_for_mpls(bnc, path) ? true
: false;
+ } else if (safi == SAFI_MPLS_VPN) {
+ /* avoid not redistributing mpls vpn routes */
+ bnc_is_valid_nexthop = true;
} else {
if (bgp_update_martian_nexthop(
bnc->bgp, afi, safi, path->type,
/* Nexthop reachability check - for unicast and
* labeled-unicast.. */
- if (((afi == AFI_IP || afi == AFI_IP6)
- && (safi == SAFI_UNICAST || safi == SAFI_LABELED_UNICAST))
- || (safi == SAFI_EVPN &&
- bgp_evpn_is_prefix_nht_supported(p))) {
+ if (((afi == AFI_IP || afi == AFI_IP6) &&
+ (safi == SAFI_UNICAST || safi == SAFI_LABELED_UNICAST ||
+ safi == SAFI_MPLS_VPN)) ||
+ (safi == SAFI_EVPN &&
+ bgp_evpn_is_prefix_nht_supported(p))) {
if (safi != SAFI_EVPN && peer->sort == BGP_PEER_EBGP
&& peer->ttl == BGP_DEFAULT_TTL
&& !CHECK_FLAG(peer->flags,
if (bgp_find_or_add_nexthop(bgp, bgp_nexthop, nh_afi,
safi, pi, NULL, connected,
bgp_nht_param_prefix) ||
- CHECK_FLAG(peer->flags, PEER_FLAG_IS_RFAPI_HD))
+ CHECK_FLAG(peer->flags, PEER_FLAG_IS_RFAPI_HD)) {
+ if (accept_own)
+ bgp_path_info_set_flag(
+ dest, pi, BGP_PATH_ACCEPT_OWN);
+
bgp_path_info_set_flag(dest, pi,
BGP_PATH_VALID);
- else {
+ } else {
if (BGP_DEBUG(nht, NHT)) {
zlog_debug("%s(%pI4): NH unresolved",
__func__,
BGP_PATH_VALID);
}
} else {
- if (accept_own)
- bgp_path_info_set_flag(dest, pi,
- BGP_PATH_ACCEPT_OWN);
-
bgp_path_info_set_flag(dest, pi, BGP_PATH_VALID);
}
}
/* Nexthop reachability check. */
- if (((afi == AFI_IP || afi == AFI_IP6)
- && (safi == SAFI_UNICAST || safi == SAFI_LABELED_UNICAST))
- || (safi == SAFI_EVPN && bgp_evpn_is_prefix_nht_supported(p))) {
+ if (((afi == AFI_IP || afi == AFI_IP6) &&
+ (safi == SAFI_UNICAST || safi == SAFI_LABELED_UNICAST ||
+ safi == SAFI_MPLS_VPN)) ||
+ (safi == SAFI_EVPN && bgp_evpn_is_prefix_nht_supported(p))) {
if (safi != SAFI_EVPN && peer->sort == BGP_PEER_EBGP
&& peer->ttl == BGP_DEFAULT_TTL
&& !CHECK_FLAG(peer->flags,
if (bgp_find_or_add_nexthop(bgp, bgp, nh_afi, safi, new, NULL,
connected, bgp_nht_param_prefix) ||
- CHECK_FLAG(peer->flags, PEER_FLAG_IS_RFAPI_HD))
+ CHECK_FLAG(peer->flags, PEER_FLAG_IS_RFAPI_HD)) {
+ if (accept_own)
+ bgp_path_info_set_flag(dest, new,
+ BGP_PATH_ACCEPT_OWN);
+
bgp_path_info_set_flag(dest, new, BGP_PATH_VALID);
- else {
+ } else {
if (BGP_DEBUG(nht, NHT))
zlog_debug("%s(%pI4): NH unresolved", __func__,
&attr_new->nexthop);
bgp_path_info_unset_flag(dest, new, BGP_PATH_VALID);
}
} else {
- if (accept_own)
- bgp_path_info_set_flag(dest, new, BGP_PATH_ACCEPT_OWN);
-
bgp_path_info_set_flag(dest, new, BGP_PATH_VALID);
}