Index: /trunk/src/VBox/HostDrivers/VBoxNetFlt/VBoxNetFlt.c
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxNetFlt/VBoxNetFlt.c	(revision 29463)
+++ /trunk/src/VBox/HostDrivers/VBoxNetFlt/VBoxNetFlt.c	(revision 29464)
@@ -870,14 +870,8 @@
 #ifdef VBOXNETFLT_STATIC_CONFIG
     Assert(vboxNetFltGetState(pThis) == kVBoxNetFltInsState_Unconnected);
-    /* INTNETTRUNKIFSTATE_DISCONNECTING means "not connected" here
-     * we use the INTNETTRUNKIFSTATE_DISCONNECTING state for consistency of cases when trunk
-     * was never connected and was connected and disconnected.
-     * In the latter case we end up with INTNETTRUNKIFSTATE_DICONNECTING,
-     * so use the same state for the former */
-    Assert(pThis->enmTrunkState == INTNETTRUNKIFSTATE_DISCONNECTING);
 #else
     Assert(vboxNetFltGetState(pThis) == kVBoxNetFltInsState_Initializing);
+#endif
     Assert(pThis->enmTrunkState == INTNETTRUNKIFSTATE_INACTIVE);
-#endif
 
     /*
@@ -895,14 +889,5 @@
         pThis->pSwitchPort = NULL;
 
-#ifdef VBOXNETFLT_STATIC_CONFIG
-    /* INTNETTRUNKIFSTATE_DISCONNECTING means "not connected" here
-     * we use the INTNETTRUNKIFSTATE_DISCONNECTING state for consistency of cases when trunk
-     * was never connected and was connected and disconnected.
-     * In the latter case we end up with INTNETTRUNKIFSTATE_DISCONNECTING,
-     * so use the same state for the former */
-    Assert(pThis->enmTrunkState == INTNETTRUNKIFSTATE_DISCONNECTING);
-#else
     Assert(pThis->enmTrunkState == INTNETTRUNKIFSTATE_INACTIVE);
-#endif
     return rc;
 }
@@ -930,4 +915,8 @@
     /*
      * Allocate and initialize a new instance before requesting the mutex.
+     * Note! That in a static config we'll initialize the trunk state to
+     *       disconnecting and flip it in vboxNetFltFactoryCreateAndConnect
+     *       later on.  This better reflext the state and it works better with
+     *       assertions in the destruction path.
      */
     int             rc;
@@ -950,7 +939,4 @@
     pNew->enmState                      = kVBoxNetFltInsState_Initializing;
 #ifdef VBOXNETFLT_STATIC_CONFIG
-    /* for consistency of cases when trunk was never connected and was connected and disconnected.
-     * In the latter case we end up with INTNETTRUNKIFSTATE_DISCONNECTING,
-     * so use the same state for the former */
     pNew->enmTrunkState                 = INTNETTRUNKIFSTATE_DISCONNECTING;
 #else
@@ -1205,8 +1191,11 @@
             if (vboxNetFltGetState(pCur) == kVBoxNetFltInsState_Unconnected)
             {
+                pCur->enmTrunkState = INTNETTRUNKIFSTATE_INACTIVE; /** @todo protect me? */
                 pCur->fDisablePromiscuous = !!(fFlags & INTNETTRUNKFACTORY_FLAG_NO_PROMISC);
                 rc = vboxNetFltConnectIt(pCur, pSwitchPort, ppIfPort);
                 if (RT_SUCCESS(rc))
                     pCur = NULL; /* Don't release it, reference given to the caller. */
+                else
+                    pCur->enmTrunkState = INTNETTRUNKIFSTATE_DISCONNECTING;
             }
             else
Index: /trunk/src/VBox/HostDrivers/VBoxNetFlt/win/VBoxNetFlt-win.c
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxNetFlt/win/VBoxNetFlt-win.c	(revision 29463)
+++ /trunk/src/VBox/HostDrivers/VBoxNetFlt/win/VBoxNetFlt-win.c	(revision 29464)
@@ -3217,4 +3217,30 @@
 }
 
+
+/**
+ * Report the MAC address, promiscuous mode setting, GSO capabilities and
+ * no-preempt destinations to the internal network.
+ *
+ * Does nothing if we're not currently connected to an internal network.
+ *
+ * @param   pThis           The instance data.
+ */
+static void vboxNetFltWinReportStuff(PVBOXNETFLTINS pThis)
+{
+    /** @todo Keep these up to date, esp. the promiscuous mode bit. */
+    if (   pThis->pSwitchPort
+        && vboxNetFltTryRetainBusyNotDisconnected(pThis))
+    {
+        pThis->pSwitchPort->pfnReportMacAddress(pThis->pSwitchPort, &pThis->u.s.MacAddr);
+        pThis->pSwitchPort->pfnReportPromiscuousMode(pThis->pSwitchPort,
+                                                     vboxNetFltWinIsPromiscuous2(pThis));
+        pThis->pSwitchPort->pfnReportGsoCapabilities(pThis->pSwitchPort, 0,
+                                                     INTNETTRUNKDIR_WIRE | INTNETTRUNKDIR_HOST);
+        /** @todo We should be able to do pfnXmit at DISPATCH_LEVEL... */
+        pThis->pSwitchPort->pfnReportNoPreemptDsts(pThis->pSwitchPort, 0 /* none */);
+        vboxNetFltRelease(pThis, true /*fBusy*/);
+    }
+}
+
 /**
  * Worker for vboxNetFltWinAttachToInterface.
@@ -3306,17 +3332,6 @@
 
                             /* 5. Report MAC address, promiscuousness and GSO capabilities. */
-                            /** @todo Keep these up to date, esp. the promiscuous mode bit. */
-                            if (   pThis->pSwitchPort
-                                && vboxNetFltTryRetainBusyNotDisconnected(pThis))
-                            {
-                                pThis->pSwitchPort->pfnReportMacAddress(pThis->pSwitchPort, &pThis->u.s.MacAddr);
-                                pThis->pSwitchPort->pfnReportPromiscuousMode(pThis->pSwitchPort,
-                                                                             vboxNetFltWinIsPromiscuous2(pThis));
-                                pThis->pSwitchPort->pfnReportGsoCapabilities(pThis->pSwitchPort, 0,
-                                                                             INTNETTRUNKDIR_WIRE | INTNETTRUNKDIR_HOST);
-                                /** @todo We should be able to do pfnXmit at DISPATCH_LEVEL... */
-                                pThis->pSwitchPort->pfnReportNoPreemptDsts(pThis->pSwitchPort, 0 /* none */);
-                                vboxNetFltRelease(pThis, true /*fBusy*/);
-                            }
+                            vboxNetFltWinReportStuff(pThis);
+
                             return;
                         }
@@ -3718,4 +3733,7 @@
     vboxNetFltWinJobSynchExecAtPassive(vboxNetFltWinConnectItWorker, &Info);
 
+    if (RT_SUCCESS(Info.Status))
+        vboxNetFltWinReportStuff(pThis);
+
     return Info.Status;
 }
