mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-10-26 10:02:06 +00:00
bgpd: allow for vpn->vrf imports
ignore nexthop checks for RFAPI imported routes (as is self)
note: NHT is still updated
Signed-off-by: Lou Berger <lberger@labn.net>
This commit is contained in:
parent
d477c01df7
commit
02a82b47b3
@ -2788,7 +2788,8 @@ int bgp_update(struct peer *peer, struct prefix *p, u_int32_t addpath_id,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* next hop check. */
|
/* next hop check. */
|
||||||
if (bgp_update_martian_nexthop(bgp, afi, safi, &new_attr)) {
|
if (!CHECK_FLAG(peer->flags, PEER_FLAG_IS_RFAPI_HD) && /* allow vpn->vrf import */
|
||||||
|
bgp_update_martian_nexthop(bgp, afi, safi, &new_attr)) {
|
||||||
reason = "martian or self next-hop;";
|
reason = "martian or self next-hop;";
|
||||||
bgp_attr_flush(&new_attr);
|
bgp_attr_flush(&new_attr);
|
||||||
goto filtered;
|
goto filtered;
|
||||||
@ -3031,7 +3032,8 @@ int bgp_update(struct peer *peer, struct prefix *p, u_int32_t addpath_id,
|
|||||||
connected = 0;
|
connected = 0;
|
||||||
|
|
||||||
if (bgp_find_or_add_nexthop(bgp, afi, ri, NULL,
|
if (bgp_find_or_add_nexthop(bgp, afi, ri, NULL,
|
||||||
connected))
|
connected) ||
|
||||||
|
CHECK_FLAG(peer->flags, PEER_FLAG_IS_RFAPI_HD))
|
||||||
bgp_info_set_flag(rn, ri, BGP_INFO_VALID);
|
bgp_info_set_flag(rn, ri, BGP_INFO_VALID);
|
||||||
else {
|
else {
|
||||||
if (BGP_DEBUG(nht, NHT)) {
|
if (BGP_DEBUG(nht, NHT)) {
|
||||||
@ -3143,7 +3145,8 @@ int bgp_update(struct peer *peer, struct prefix *p, u_int32_t addpath_id,
|
|||||||
else
|
else
|
||||||
connected = 0;
|
connected = 0;
|
||||||
|
|
||||||
if (bgp_find_or_add_nexthop(bgp, afi, new, NULL, connected))
|
if (bgp_find_or_add_nexthop(bgp, afi, new, NULL, connected) ||
|
||||||
|
CHECK_FLAG(peer->flags, PEER_FLAG_IS_RFAPI_HD))
|
||||||
bgp_info_set_flag(rn, new, BGP_INFO_VALID);
|
bgp_info_set_flag(rn, new, BGP_INFO_VALID);
|
||||||
else {
|
else {
|
||||||
if (BGP_DEBUG(nht, NHT)) {
|
if (BGP_DEBUG(nht, NHT)) {
|
||||||
|
|||||||
@ -699,9 +699,8 @@ struct peer {
|
|||||||
#define PEER_FLAG_DYNAMIC_NEIGHBOR (1 << 12) /* dynamic neighbor */
|
#define PEER_FLAG_DYNAMIC_NEIGHBOR (1 << 12) /* dynamic neighbor */
|
||||||
#define PEER_FLAG_CAPABILITY_ENHE (1 << 13) /* Extended next-hop (rfc 5549)*/
|
#define PEER_FLAG_CAPABILITY_ENHE (1 << 13) /* Extended next-hop (rfc 5549)*/
|
||||||
#define PEER_FLAG_IFPEER_V6ONLY (1 << 14) /* if-based peer is v6 only */
|
#define PEER_FLAG_IFPEER_V6ONLY (1 << 14) /* if-based peer is v6 only */
|
||||||
#if ENABLE_BGP_VNC
|
|
||||||
#define PEER_FLAG_IS_RFAPI_HD (1 << 15) /* attached to rfapi HD */
|
#define PEER_FLAG_IS_RFAPI_HD (1 << 15) /* attached to rfapi HD */
|
||||||
#endif
|
|
||||||
/* outgoing message sent in CEASE_ADMIN_SHUTDOWN notify */
|
/* outgoing message sent in CEASE_ADMIN_SHUTDOWN notify */
|
||||||
char *tx_shutdown_message;
|
char *tx_shutdown_message;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user