mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-28 15:33:34 +00:00
[bgpd] Add 'bgp open-accept' option, to send OPEN immediately on accepted conns
2007-08-31 Paul Jakma <paul.jakma@sun.com> * (general) Add 'bgp open-accept' option, to allow bgpd to send OPEN on accepted connections, i.e. to not wait till after collision-detect to send OPEN, which appears to be allowed in RFC4271. This may help speed up establishing sessions, or help avoid FSM problems with sessions to certain peers. Not enabled by default though.
This commit is contained in:
parent
e30db00153
commit
d664ae1182
@ -292,6 +292,15 @@
|
||||
* bgp_debug.c: (community_str,community_com2str) Check com
|
||||
pointer before dereferencing.
|
||||
|
||||
2007-08-31 Paul Jakma <paul.jakma@sun.com>
|
||||
|
||||
* (general) Add 'bgp open-accept' option, to allow bgpd to send OPEN
|
||||
on accepted connections, i.e. to not wait till after
|
||||
collision-detect to send OPEN, which appears to be allowed in
|
||||
RFC4271. This may help speed up establishing sessions, or help
|
||||
avoid FSM problems with sessions to certain peers. Not enabled by
|
||||
default though.
|
||||
|
||||
2007-08-27 Paul Jakma <paul.jakma@sun.com>
|
||||
|
||||
* bgp_route.c: (bgp_announce_check) Fix bug #398, slight
|
||||
|
@ -616,7 +616,8 @@ bgp_connect_success (struct peer *peer)
|
||||
zlog_debug ("%s passive open", peer->host);
|
||||
}
|
||||
|
||||
if (! CHECK_FLAG (peer->sflags, PEER_STATUS_ACCEPT_PEER))
|
||||
if (!CHECK_FLAG (peer->sflags, PEER_STATUS_ACCEPT_PEER)
|
||||
|| bgp_option_check (BGP_OPT_ALWAYS_OPEN))
|
||||
bgp_open_send (peer);
|
||||
|
||||
return 0;
|
||||
|
@ -279,6 +279,28 @@ DEFUN (no_bgp_config_type,
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN_HIDDEN (bgp_open_accept,
|
||||
bgp_open_accept_cmd,
|
||||
"bgp open-accept",
|
||||
BGP_STR
|
||||
"Send OPEN immediately on accepted connections\n")
|
||||
{
|
||||
bgp_option_set (BGP_OPT_ALWAYS_OPEN);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN_HIDDEN (no_bgp_open_accept,
|
||||
no_bgp_open_accept_cmd,
|
||||
"no bgp open-accept",
|
||||
NO_STR
|
||||
BGP_STR
|
||||
"Send OPEN immediately on accepted connections\n")
|
||||
|
||||
{
|
||||
bgp_option_unset (BGP_OPT_ALWAYS_OPEN);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN (no_synchronization,
|
||||
no_synchronization_cmd,
|
||||
"no synchronization",
|
||||
@ -8820,6 +8842,10 @@ bgp_vty_init (void)
|
||||
install_element (CONFIG_NODE, &bgp_config_type_cmd);
|
||||
install_element (CONFIG_NODE, &no_bgp_config_type_cmd);
|
||||
|
||||
/* "bgp open-all" commands. */
|
||||
install_element (CONFIG_NODE, &bgp_open_accept_cmd);
|
||||
install_element (CONFIG_NODE, &no_bgp_open_accept_cmd);
|
||||
|
||||
/* Dummy commands (Currently not supported) */
|
||||
install_element (BGP_NODE, &no_synchronization_cmd);
|
||||
install_element (BGP_NODE, &no_auto_summary_cmd);
|
||||
|
@ -81,6 +81,7 @@ bgp_option_set (int flag)
|
||||
case BGP_OPT_NO_FIB:
|
||||
case BGP_OPT_MULTIPLE_INSTANCE:
|
||||
case BGP_OPT_CONFIG_CISCO:
|
||||
case BGP_OPT_ALWAYS_OPEN:
|
||||
SET_FLAG (bm->options, flag);
|
||||
break;
|
||||
default:
|
||||
@ -100,6 +101,7 @@ bgp_option_unset (int flag)
|
||||
/* Fall through. */
|
||||
case BGP_OPT_NO_FIB:
|
||||
case BGP_OPT_CONFIG_CISCO:
|
||||
case BGP_OPT_ALWAYS_OPEN:
|
||||
UNSET_FLAG (bm->options, flag);
|
||||
break;
|
||||
default:
|
||||
@ -4910,6 +4912,13 @@ bgp_config_write (struct vty *vty)
|
||||
write++;
|
||||
}
|
||||
|
||||
/* BGP Open-Always */
|
||||
if (bgp_option_check (BGP_OPT_ALWAYS_OPEN))
|
||||
{
|
||||
vty_out (vty, "bgp open-accept%s", VTY_NEWLINE);
|
||||
write++;
|
||||
}
|
||||
|
||||
/* BGP configuration. */
|
||||
for (ALL_LIST_ELEMENTS (bm->bgp, mnode, mnnode, bgp))
|
||||
{
|
||||
|
@ -59,6 +59,7 @@ struct bgp_master
|
||||
#define BGP_OPT_NO_FIB (1 << 0)
|
||||
#define BGP_OPT_MULTIPLE_INSTANCE (1 << 1)
|
||||
#define BGP_OPT_CONFIG_CISCO (1 << 2)
|
||||
#define BGP_OPT_ALWAYS_OPEN (1 << 3)
|
||||
};
|
||||
|
||||
/* BGP instance structure. */
|
||||
|
Loading…
Reference in New Issue
Block a user