diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog
index 6fe2b0f..e92a72a 100644
--- a/bgpd/ChangeLog
+++ b/bgpd/ChangeLog
@@ -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
diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c
index 15bd8a6..df1cfb7 100644
--- a/bgpd/bgp_fsm.c
+++ b/bgpd/bgp_fsm.c
@@ -616,7 +616,8 @@
 	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;
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index 54f1170..9086737 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -279,6 +279,28 @@
   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 @@
   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);
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index 8eb0d2e..bda35ae 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -81,6 +81,7 @@
     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 @@
       /* 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 @@
       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))
     {
diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h
index afe0663..89dde8f 100644
--- a/bgpd/bgpd.h
+++ b/bgpd/bgpd.h
@@ -59,6 +59,7 @@
 #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.  */
