mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 10:09:17 +00:00
* bgp_route.c, bgp_vty.c, bgp_zebra.c, bgpd.[ch]: "enforce-multihop"
-> "disable-connected-check". [merge from GNU Zebra]
This commit is contained in:
parent
93406d87e6
commit
6ffd207959
@ -1,4 +1,9 @@
|
|||||||
2005-02-02 Akihiro Mizutani <mizutani@net-chef.net
|
2005-02-02 Akihiro Mizutani <mizutani@net-chef.net>
|
||||||
|
|
||||||
|
* bgp_route.c, bgp_vty.c, bgp_zebra.c, bgpd.[ch]: "enforce-multihop"
|
||||||
|
-> "disable-connected-check".
|
||||||
|
|
||||||
|
2005-02-02 Akihiro Mizutani <mizutani@net-chef.net>
|
||||||
|
|
||||||
* bgp_fsm.c, bgp_open.c, bgp_packet.c, bgp_route.[ch], bgp_vty.c,
|
* bgp_fsm.c, bgp_open.c, bgp_packet.c, bgp_route.[ch], bgp_vty.c,
|
||||||
bgpd.[ch]: Add BGP_INFO_STALE flag and end-of-rib support. "bgp
|
bgpd.[ch]: Add BGP_INFO_STALE flag and end-of-rib support. "bgp
|
||||||
|
@ -1726,7 +1726,7 @@ bgp_update_main (struct peer *peer, struct prefix *p, struct attr *attr,
|
|||||||
discard it. */
|
discard it. */
|
||||||
if (peer_sort (peer) == BGP_PEER_EBGP && peer->ttl == 1
|
if (peer_sort (peer) == BGP_PEER_EBGP && peer->ttl == 1
|
||||||
&& ! bgp_nexthop_check_ebgp (afi, &new_attr)
|
&& ! bgp_nexthop_check_ebgp (afi, &new_attr)
|
||||||
&& ! CHECK_FLAG (peer->flags, PEER_FLAG_ENFORCE_MULTIHOP))
|
&& ! CHECK_FLAG (peer->flags, PEER_FLAG_DISABLE_CONNECTED_CHECK))
|
||||||
{
|
{
|
||||||
reason = "non-connected next-hop;";
|
reason = "non-connected next-hop;";
|
||||||
goto filtered;
|
goto filtered;
|
||||||
@ -1852,7 +1852,7 @@ bgp_update_main (struct peer *peer, struct prefix *p, struct attr *attr,
|
|||||||
&& safi == SAFI_UNICAST
|
&& safi == SAFI_UNICAST
|
||||||
&& (peer_sort (peer) == BGP_PEER_IBGP
|
&& (peer_sort (peer) == BGP_PEER_IBGP
|
||||||
|| (peer_sort (peer) == BGP_PEER_EBGP && peer->ttl != 1)
|
|| (peer_sort (peer) == BGP_PEER_EBGP && peer->ttl != 1)
|
||||||
|| CHECK_FLAG (peer->flags, PEER_FLAG_ENFORCE_MULTIHOP)))
|
|| CHECK_FLAG (peer->flags, PEER_FLAG_DISABLE_CONNECTED_CHECK)))
|
||||||
{
|
{
|
||||||
if (bgp_nexthop_lookup (afi, peer, ri, NULL, NULL))
|
if (bgp_nexthop_lookup (afi, peer, ri, NULL, NULL))
|
||||||
SET_FLAG (ri->flags, BGP_INFO_VALID);
|
SET_FLAG (ri->flags, BGP_INFO_VALID);
|
||||||
@ -1899,7 +1899,7 @@ bgp_update_main (struct peer *peer, struct prefix *p, struct attr *attr,
|
|||||||
&& safi == SAFI_UNICAST
|
&& safi == SAFI_UNICAST
|
||||||
&& (peer_sort (peer) == BGP_PEER_IBGP
|
&& (peer_sort (peer) == BGP_PEER_IBGP
|
||||||
|| (peer_sort (peer) == BGP_PEER_EBGP && peer->ttl != 1)
|
|| (peer_sort (peer) == BGP_PEER_EBGP && peer->ttl != 1)
|
||||||
|| CHECK_FLAG (peer->flags, PEER_FLAG_ENFORCE_MULTIHOP)))
|
|| CHECK_FLAG (peer->flags, PEER_FLAG_DISABLE_CONNECTED_CHECK)))
|
||||||
{
|
{
|
||||||
if (bgp_nexthop_lookup (afi, peer, new, NULL, NULL))
|
if (bgp_nexthop_lookup (afi, peer, new, NULL, NULL))
|
||||||
SET_FLAG (new->flags, BGP_INFO_VALID);
|
SET_FLAG (new->flags, BGP_INFO_VALID);
|
||||||
|
@ -2604,27 +2604,44 @@ ALIAS (no_neighbor_ebgp_multihop,
|
|||||||
"Allow EBGP neighbors not on directly connected networks\n"
|
"Allow EBGP neighbors not on directly connected networks\n"
|
||||||
"maximum hop count\n")
|
"maximum hop count\n")
|
||||||
|
|
||||||
|
/* disable-connected-check */
|
||||||
|
DEFUN (neighbor_disable_connected_check,
|
||||||
|
neighbor_disable_connected_check_cmd,
|
||||||
|
NEIGHBOR_CMD2 "disable-connected-check",
|
||||||
|
NEIGHBOR_STR
|
||||||
|
NEIGHBOR_ADDR_STR2
|
||||||
|
"one-hop away EBGP peer using loopback address\n")
|
||||||
|
{
|
||||||
|
return peer_flag_set_vty (vty, argv[0], PEER_FLAG_DISABLE_CONNECTED_CHECK);
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFUN (no_neighbor_disable_connected_check,
|
||||||
|
no_neighbor_disable_connected_check_cmd,
|
||||||
|
NO_NEIGHBOR_CMD2 "disable-connected-check",
|
||||||
|
NO_STR
|
||||||
|
NEIGHBOR_STR
|
||||||
|
NEIGHBOR_ADDR_STR2
|
||||||
|
"one-hop away EBGP peer using loopback address\n")
|
||||||
|
{
|
||||||
|
return peer_flag_unset_vty (vty, argv[0], PEER_FLAG_DISABLE_CONNECTED_CHECK);
|
||||||
|
}
|
||||||
|
|
||||||
/* Enforce multihop. */
|
/* Enforce multihop. */
|
||||||
DEFUN (neighbor_enforce_multihop,
|
ALIAS (neighbor_disable_connected_check,
|
||||||
neighbor_enforce_multihop_cmd,
|
neighbor_enforce_multihop_cmd,
|
||||||
NEIGHBOR_CMD2 "enforce-multihop",
|
NEIGHBOR_CMD2 "enforce-multihop",
|
||||||
NEIGHBOR_STR
|
NEIGHBOR_STR
|
||||||
NEIGHBOR_ADDR_STR2
|
NEIGHBOR_ADDR_STR2
|
||||||
"Enforce EBGP neighbors perform multihop\n")
|
"Enforce EBGP neighbors perform multihop\n");
|
||||||
{
|
|
||||||
return peer_flag_set_vty (vty, argv[0], PEER_FLAG_ENFORCE_MULTIHOP);
|
|
||||||
}
|
|
||||||
|
|
||||||
DEFUN (no_neighbor_enforce_multihop,
|
/* Enforce multihop. */
|
||||||
|
ALIAS (no_neighbor_disable_connected_check,
|
||||||
no_neighbor_enforce_multihop_cmd,
|
no_neighbor_enforce_multihop_cmd,
|
||||||
NO_NEIGHBOR_CMD2 "enforce-multihop",
|
NO_NEIGHBOR_CMD2 "enforce-multihop",
|
||||||
NO_STR
|
NO_STR
|
||||||
NEIGHBOR_STR
|
NEIGHBOR_STR
|
||||||
NEIGHBOR_ADDR_STR2
|
NEIGHBOR_ADDR_STR2
|
||||||
"Enforce EBGP neighbors perform multihop\n")
|
"Enforce EBGP neighbors perform multihop\n");
|
||||||
{
|
|
||||||
return peer_flag_unset_vty (vty, argv[0], PEER_FLAG_ENFORCE_MULTIHOP);
|
|
||||||
}
|
|
||||||
|
|
||||||
DEFUN (neighbor_description,
|
DEFUN (neighbor_description,
|
||||||
neighbor_description_cmd,
|
neighbor_description_cmd,
|
||||||
@ -8918,7 +8935,9 @@ bgp_vty_init ()
|
|||||||
install_element (BGP_NODE, &no_neighbor_ebgp_multihop_cmd);
|
install_element (BGP_NODE, &no_neighbor_ebgp_multihop_cmd);
|
||||||
install_element (BGP_NODE, &no_neighbor_ebgp_multihop_ttl_cmd);
|
install_element (BGP_NODE, &no_neighbor_ebgp_multihop_ttl_cmd);
|
||||||
|
|
||||||
/* "neighbor enforce-multihop" commands. */
|
/* "neighbor disable-connected-check" commands. */
|
||||||
|
install_element (BGP_NODE, &neighbor_disable_connected_check_cmd);
|
||||||
|
install_element (BGP_NODE, &no_neighbor_disable_connected_check_cmd);
|
||||||
install_element (BGP_NODE, &neighbor_enforce_multihop_cmd);
|
install_element (BGP_NODE, &neighbor_enforce_multihop_cmd);
|
||||||
install_element (BGP_NODE, &no_neighbor_enforce_multihop_cmd);
|
install_element (BGP_NODE, &no_neighbor_enforce_multihop_cmd);
|
||||||
|
|
||||||
|
@ -635,7 +635,7 @@ bgp_zebra_announce (struct prefix *p, struct bgp_info *info, struct bgp *bgp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((peer_sort (peer) == BGP_PEER_EBGP && peer->ttl != 1)
|
if ((peer_sort (peer) == BGP_PEER_EBGP && peer->ttl != 1)
|
||||||
|| CHECK_FLAG (peer->flags, PEER_FLAG_ENFORCE_MULTIHOP))
|
|| CHECK_FLAG (peer->flags, PEER_FLAG_DISABLE_CONNECTED_CHECK))
|
||||||
SET_FLAG (flags, ZEBRA_FLAG_INTERNAL);
|
SET_FLAG (flags, ZEBRA_FLAG_INTERNAL);
|
||||||
|
|
||||||
if (p->family == AF_INET)
|
if (p->family == AF_INET)
|
||||||
@ -746,7 +746,7 @@ bgp_zebra_withdraw (struct prefix *p, struct bgp_info *info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((peer_sort (peer) == BGP_PEER_EBGP && peer->ttl != 1)
|
if ((peer_sort (peer) == BGP_PEER_EBGP && peer->ttl != 1)
|
||||||
|| CHECK_FLAG (peer->flags, PEER_FLAG_ENFORCE_MULTIHOP))
|
|| CHECK_FLAG (peer->flags, PEER_FLAG_DISABLE_CONNECTED_CHECK))
|
||||||
SET_FLAG (flags, ZEBRA_FLAG_INTERNAL);
|
SET_FLAG (flags, ZEBRA_FLAG_INTERNAL);
|
||||||
|
|
||||||
if (p->family == AF_INET)
|
if (p->family == AF_INET)
|
||||||
|
12
bgpd/bgpd.c
12
bgpd/bgpd.c
@ -2101,7 +2101,7 @@ struct peer_flag_action peer_flag_action_list[] =
|
|||||||
{ PEER_FLAG_OVERRIDE_CAPABILITY, 0, peer_change_none },
|
{ PEER_FLAG_OVERRIDE_CAPABILITY, 0, peer_change_none },
|
||||||
{ PEER_FLAG_STRICT_CAP_MATCH, 0, peer_change_none },
|
{ PEER_FLAG_STRICT_CAP_MATCH, 0, peer_change_none },
|
||||||
{ PEER_FLAG_DYNAMIC_CAPABILITY, 0, peer_change_reset },
|
{ PEER_FLAG_DYNAMIC_CAPABILITY, 0, peer_change_reset },
|
||||||
{ PEER_FLAG_ENFORCE_MULTIHOP, 0, peer_change_reset },
|
{ PEER_FLAG_DISABLE_CONNECTED_CHECK, 0, peer_change_reset },
|
||||||
{ 0, 0, 0 }
|
{ 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2214,7 +2214,7 @@ peer_flag_modify_action (struct peer *peer, u_int32_t flag)
|
|||||||
peer->last_reset = PEER_DOWN_CAPABILITY_CHANGE;
|
peer->last_reset = PEER_DOWN_CAPABILITY_CHANGE;
|
||||||
else if (flag == PEER_FLAG_PASSIVE)
|
else if (flag == PEER_FLAG_PASSIVE)
|
||||||
peer->last_reset = PEER_DOWN_PASSIVE_CHANGE;
|
peer->last_reset = PEER_DOWN_PASSIVE_CHANGE;
|
||||||
else if (flag == PEER_FLAG_ENFORCE_MULTIHOP)
|
else if (flag == PEER_FLAG_DISABLE_CONNECTED_CHECK)
|
||||||
peer->last_reset = PEER_DOWN_MULTIHOP_CHANGE;
|
peer->last_reset = PEER_DOWN_MULTIHOP_CHANGE;
|
||||||
|
|
||||||
bgp_notify_send (peer, BGP_NOTIFY_CEASE,
|
bgp_notify_send (peer, BGP_NOTIFY_CEASE,
|
||||||
@ -4331,11 +4331,11 @@ bgp_config_write_peer (struct vty *vty, struct bgp *bgp,
|
|||||||
vty_out (vty, " neighbor %s ebgp-multihop %d%s", addr, peer->ttl,
|
vty_out (vty, " neighbor %s ebgp-multihop %d%s", addr, peer->ttl,
|
||||||
VTY_NEWLINE);
|
VTY_NEWLINE);
|
||||||
|
|
||||||
/* Enforce multihop. */
|
/* disable-connected-check. */
|
||||||
if (CHECK_FLAG (peer->flags, PEER_FLAG_ENFORCE_MULTIHOP))
|
if (CHECK_FLAG (peer->flags, PEER_FLAG_DISABLE_CONNECTED_CHECK))
|
||||||
if (! peer_group_active (peer) ||
|
if (! peer_group_active (peer) ||
|
||||||
! CHECK_FLAG (g_peer->flags, PEER_FLAG_ENFORCE_MULTIHOP))
|
! CHECK_FLAG (g_peer->flags, PEER_FLAG_DISABLE_CONNECTED_CHECK))
|
||||||
vty_out (vty, " neighbor %s enforce-multihop%s", addr, VTY_NEWLINE);
|
vty_out (vty, " neighbor %s disable-connected-check%s", addr, VTY_NEWLINE);
|
||||||
|
|
||||||
/* Update-source. */
|
/* Update-source. */
|
||||||
if (peer->update_if)
|
if (peer->update_if)
|
||||||
|
@ -329,7 +329,7 @@ struct peer
|
|||||||
#define PEER_FLAG_OVERRIDE_CAPABILITY (1 << 3) /* override-capability */
|
#define PEER_FLAG_OVERRIDE_CAPABILITY (1 << 3) /* override-capability */
|
||||||
#define PEER_FLAG_STRICT_CAP_MATCH (1 << 4) /* strict-match */
|
#define PEER_FLAG_STRICT_CAP_MATCH (1 << 4) /* strict-match */
|
||||||
#define PEER_FLAG_DYNAMIC_CAPABILITY (1 << 5) /* dynamic capability */
|
#define PEER_FLAG_DYNAMIC_CAPABILITY (1 << 5) /* dynamic capability */
|
||||||
#define PEER_FLAG_ENFORCE_MULTIHOP (1 << 6) /* enforce-multihop */
|
#define PEER_FLAG_DISABLE_CONNECTED_CHECK (1 << 6) /* disable-connected-check */
|
||||||
#define PEER_FLAG_LOCAL_AS_NO_PREPEND (1 << 7) /* local-as no-prepend */
|
#define PEER_FLAG_LOCAL_AS_NO_PREPEND (1 << 7) /* local-as no-prepend */
|
||||||
|
|
||||||
/* NSF mode (graceful restart) */
|
/* NSF mode (graceful restart) */
|
||||||
|
Loading…
Reference in New Issue
Block a user