Index: /trunk/src/VBox/Frontends/VBoxManage/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/Makefile.kmk	(revision 88078)
+++ /trunk/src/VBox/Frontends/VBoxManage/Makefile.kmk	(revision 88079)
@@ -78,4 +78,5 @@
  VBoxManage_SOURCES    = \
  	VBoxManage.cpp \
+	VBoxManageUtils.cpp \
  	VBoxInternalManage.cpp \
  	VBoxManageAppliance.cpp \
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp	(revision 88078)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp	(revision 88079)
@@ -38,4 +38,5 @@
 
 #include "VBoxManage.h"
+#include "VBoxManageUtils.h"
 
 #include <list>
@@ -1186,4 +1187,5 @@
                         }
                         CHECK_ERROR_RET(adapter, COMSETTER(BridgedInterface)(Bstr(a->argv[3]).raw()), RTEXITCODE_FAILURE);
+                        verifyHostNetworkInterfaceName(a->virtualBox, a->argv[3], HostNetworkInterfaceType_Bridged);
                         CHECK_ERROR_RET(adapter, COMSETTER(AttachmentType)(NetworkAttachmentType_Bridged), RTEXITCODE_FAILURE);
                     }
@@ -1209,4 +1211,5 @@
                         }
                         CHECK_ERROR_RET(adapter, COMSETTER(HostOnlyInterface)(Bstr(a->argv[3]).raw()), RTEXITCODE_FAILURE);
+                        verifyHostNetworkInterfaceName(a->virtualBox, a->argv[3], HostNetworkInterfaceType_HostOnly);
                         CHECK_ERROR_RET(adapter, COMSETTER(AttachmentType)(NetworkAttachmentType_HostOnly), RTEXITCODE_FAILURE);
                     }
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp	(revision 88078)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp	(revision 88079)
@@ -38,4 +38,5 @@
 #include <VBox/log.h>
 #include "VBoxManage.h"
+#include "VBoxManageUtils.h"
 
 #ifndef VBOX_ONLY_DOCS
@@ -1730,4 +1731,6 @@
                 {
                     CHECK_ERROR(nic, COMSETTER(BridgedInterface)(Bstr(ValueUnion.psz).raw()));
+                    verifyHostNetworkInterfaceName(a->virtualBox, ValueUnion.psz,
+                                                   HostNetworkInterfaceType_Bridged);
                 }
                 break;
@@ -1751,4 +1754,6 @@
                 {
                     CHECK_ERROR(nic, COMSETTER(HostOnlyInterface)(Bstr(ValueUnion.psz).raw()));
+                    verifyHostNetworkInterfaceName(a->virtualBox, ValueUnion.psz,
+                                                   HostNetworkInterfaceType_HostOnly);
                 }
                 break;
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageUtils.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageUtils.cpp	(revision 88079)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageUtils.cpp	(revision 88079)
@@ -0,0 +1,101 @@
+/* $Id$ */
+/** @file
+ * VBoxManageUtils.h - VBoxManage utility functions.
+ */
+
+/*
+ * Copyright (C) 2006-2021 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef VBOX_ONLY_DOCS
+#include "VBoxManageUtils.h"
+
+#include <iprt/message.h>
+#include <iprt/string.h>
+
+#include <VBox/com/array.h>
+#include <VBox/com/string.h>
+
+using namespace com;
+
+
+/**
+ * API does NOT verify that whether the interface name set as the
+ * bridged or host-only interface of a NIC is valid.  Warn the user if
+ * IHost doesn't seem to know about it (non-fatal).
+ */
+void verifyHostNetworkInterfaceName(const ComPtr<IVirtualBox> &pVirtualBox,
+                                    const char *pszTargetName,
+                                    HostNetworkInterfaceType_T enmTargetType)
+{
+    HRESULT hrc;
+
+    AssertReturnVoid(   enmTargetType == HostNetworkInterfaceType_Bridged
+                     || enmTargetType == HostNetworkInterfaceType_HostOnly);
+
+    ComPtr<IHost> host;
+    hrc = pVirtualBox->COMGETTER(Host)(host.asOutParam());
+    if (FAILED(hrc))
+        return;
+
+    SafeIfaceArray<IHostNetworkInterface> ifs;
+    hrc = host->COMGETTER(NetworkInterfaces)(ComSafeArrayAsOutParam(ifs));
+    if (FAILED(hrc))
+        return;
+
+    for (size_t i = 0; i < ifs.size(); ++i)
+    {
+        const ComPtr<IHostNetworkInterface> iface = ifs[i];
+
+        Bstr bstrName;
+        hrc = iface->COMGETTER(Name)(bstrName.asOutParam());
+        if (FAILED(hrc))
+            return;
+
+        if (!bstrName.equals(pszTargetName))
+            continue;
+
+        /* we found the interface but is it the right type? */
+        HostNetworkInterfaceType_T enmType;
+        hrc = iface->COMGETTER(InterfaceType)(&enmType);
+        if (FAILED(hrc))
+            return;
+
+        if (enmType == enmTargetType)
+            return;             /* seems ok */
+
+        const char *pszTypeName;
+        char a_szUnknownTypeBuf[32];
+        switch (enmType)
+        {
+            case HostNetworkInterfaceType_Bridged:
+                pszTypeName = "type bridged";
+                break;
+
+            case HostNetworkInterfaceType_HostOnly:
+                pszTypeName = "type host-only";
+                break;
+
+            default:
+                RTStrPrintf(a_szUnknownTypeBuf, sizeof(a_szUnknownTypeBuf),
+                            "unknown type %RU32", enmType);
+                pszTypeName = a_szUnknownTypeBuf;
+                break;
+        }
+
+        RTMsgWarning("Interface \"%s\" is of %s", pszTargetName, pszTypeName);
+        return;
+    }
+
+    RTMsgWarning("Interface \"%s\" doesn't seem to exist", pszTargetName);
+}
+
+#endif  /* !VBOX_ONLY_DOCS */
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageUtils.h
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageUtils.h	(revision 88079)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageUtils.h	(revision 88079)
@@ -0,0 +1,34 @@
+/* $Id$ */
+/** @file
+ * VBoxManageUtils.h - Declarations for VBoxManage utility functions.
+ */
+
+/*
+ * Copyright (C) 2006-2021 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef VBOX_INCLUDED_SRC_VBoxManage_VBoxManageUtils_h
+#define VBOX_INCLUDED_SRC_VBoxManage_VBoxManageUtils_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+#ifndef VBOX_ONLY_DOCS
+#include <VBox/com/com.h>
+#include <VBox/com/ptr.h>
+#include <VBox/com/VirtualBox.h>
+#endif
+
+void verifyHostNetworkInterfaceName(const ComPtr<IVirtualBox> &pVirtualBox,
+                                    const char *pszTargetName,
+                                    HostNetworkInterfaceType_T enmTargetType);
+
+#endif /* !VBOX_INCLUDED_SRC_VBoxManage_VBoxManageUtils_h */
