return NULL;
}
-static bool vpn_leak_to_vrf_update_onevrf(struct bgp *to_bgp, /* to */
+static void vpn_leak_to_vrf_update_onevrf(struct bgp *to_bgp, /* to */
struct bgp *from_bgp, /* from */
struct bgp_path_info *path_vpn,
struct prefix_rd *prd)
"%s: from vpn (%s) to vrf (%s), skipping: %s",
__func__, from_bgp->name_pretty,
to_bgp->name_pretty, debugmsg);
- return false;
+ return;
}
/*
zlog_debug(
"from vpn (%s) to vrf (%s), skipping after no intersection of route targets",
from_bgp->name_pretty, to_bgp->name_pretty);
- return false;
+ return;
}
rd_buf[0] = '\0';
zlog_debug(
"%s: skipping import, match RD (%s) of src VRF (%s) and the prefix (%pFX)",
__func__, rd_buf, to_bgp->name_pretty, p);
- return false;
+ return;
}
if (debug)
to_bgp->vpn_policy[afi]
.rmap[BGP_VPN_POLICY_DIR_FROMVPN]
->name);
- return false;
+ return;
}
/*
* if route-map changed nexthop, don't nexthop-self on output
num_labels, src_vrf, &nexthop_orig, nexthop_self_flag,
debug))
bgp_dest_unlock_node(bn);
-
- return true;
}
-bool vpn_leak_to_vrf_update(struct bgp *from_bgp,
+void vpn_leak_to_vrf_update(struct bgp *from_bgp,
struct bgp_path_info *path_vpn,
struct prefix_rd *prd)
{
struct listnode *mnode, *mnnode;
struct bgp *bgp;
- bool leak_success = false;
int debug = BGP_DEBUG(vpn, VPN_LEAK_TO_VRF);
if (!path_vpn->extra
|| path_vpn->extra->bgp_orig != bgp) { /* no loop */
- leak_success |= vpn_leak_to_vrf_update_onevrf(
- bgp, from_bgp, path_vpn, prd);
+ vpn_leak_to_vrf_update_onevrf(bgp, from_bgp, path_vpn,
+ prd);
}
}
- return leak_success;
}
void vpn_leak_to_vrf_withdraw(struct bgp_path_info *path_vpn)
afi_t nh_afi;
bool force_evpn_import = false;
safi_t orig_safi = safi;
- bool leak_success = true;
int allowas_in = 0;
if (frrtrace_enabled(frr_bgp, process_update)) {
}
if ((SAFI_MPLS_VPN == safi)
&& (bgp->inst_type == BGP_INSTANCE_TYPE_DEFAULT)) {
- leak_success = vpn_leak_to_vrf_update(bgp, pi, prd);
+ vpn_leak_to_vrf_update(bgp, pi, prd);
}
#ifdef ENABLE_BGP_VNC
type, sub_type, NULL);
}
#endif
- if ((safi == SAFI_MPLS_VPN) &&
- !CHECK_FLAG(bgp->af_flags[afi][safi],
- BGP_VPNVX_RETAIN_ROUTE_TARGET_ALL) &&
- !leak_success) {
- bgp_unlink_nexthop(pi);
- bgp_path_info_delete(dest, pi);
- }
return;
} // End of implicit withdraw
}
if ((SAFI_MPLS_VPN == safi)
&& (bgp->inst_type == BGP_INSTANCE_TYPE_DEFAULT)) {
- leak_success = vpn_leak_to_vrf_update(bgp, new, prd);
+ vpn_leak_to_vrf_update(bgp, new, prd);
}
#ifdef ENABLE_BGP_VNC
if (SAFI_MPLS_VPN == safi) {
sub_type, NULL);
}
#endif
- if ((safi == SAFI_MPLS_VPN) &&
- !CHECK_FLAG(bgp->af_flags[afi][safi],
- BGP_VPNVX_RETAIN_ROUTE_TARGET_ALL) &&
- !leak_success) {
- bgp_unlink_nexthop(new);
- bgp_path_info_delete(dest, new);
- }
return;