[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:
Paul Jakma 2007-08-31 14:27:37 +01:00 committed by Paul Jakma
parent e30db00153
commit d664ae1182
5 changed files with 47 additions and 1 deletions

View File

@ -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

View File

@ -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;

View File

@ -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);

View File

@ -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))
{

View File

@ -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. */