* 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
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;
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",
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);
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:
/* Fall through. */
case BGP_OPT_NO_FIB:
case BGP_OPT_CONFIG_CISCO:
+ case BGP_OPT_ALWAYS_OPEN:
UNSET_FLAG (bm->options, flag);
break;
default:
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))
{
#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. */