VirtualBox

Ignore:
Timestamp:
Sep 19, 2013 3:17:43 PM (11 years ago)
Author:
vboxsync
Message:

Main/NetworkAdapter+Machine+Appliance+SystemProperties+Medium+Console+Settings+IDL: make NAT networking a separate network attachment type which improves the user experience, store the necessary settings, plus changing the design of the methods which will move images and entire VMs, they lacked a progress object
Frontends/VirtualBox: adapted fully, can configure NAT networks with proper drop down list support
Frontends/VBoxManage: also supports NAT networks completely, and adds the long missing code to list intnets

Location:
trunk/src/VBox/Frontends/VBoxManage
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp

    r48406 r48538  
    761761                        CHECK_ERROR_RET(adapter, COMSETTER(AttachmentType)(NetworkAttachmentType_Generic), 1);
    762762                    }
     763                    else if (!strcmp(a->argv[2], "natnetwork"))
     764                    {
     765                        if (a->argc <= 3)
     766                        {
     767                            errorArgument("Missing argument to '%s'", a->argv[2]);
     768                            rc = E_FAIL;
     769                            break;
     770                        }
     771                        CHECK_ERROR_RET(adapter, COMSETTER(Enabled)(TRUE), 1);
     772                        CHECK_ERROR_RET(adapter, COMSETTER(NATNetwork)(Bstr(a->argv[3]).raw()), 1);
     773                        CHECK_ERROR_RET(adapter, COMSETTER(AttachmentType)(NetworkAttachmentType_NATNetwork), 1);
     774                    }
    763775                    /** @todo obsolete, remove eventually */
    764776                    else if (!strcmp(a->argv[2], "vde"))
     
    14581470                break;
    14591471            }
    1460            
     1472
    14611473        }
    14621474        else
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp

    r48429 r48538  
    123123                           "%s list [--long|-l]%s vms|runningvms|ostypes|hostdvds|hostfloppies|\n"
    124124#if defined(VBOX_WITH_NETFLT)
    125                      "                            bridgedifs|hostonlyifs|dhcpservers|hostinfo|\n"
     125                     "                            intnets|bridgedifs|hostonlyifs|natnets|dhcpservers|\n"
    126126#else
    127                      "                            bridgedifs|dhcpservers|hostinfo|\n"
    128 #endif
    129                      "                            hostcpuids|hddbackends|hdds|dvds|floppies|\n"
     127                     "                            intnets|bridgedifs|natnets|dhcpservers|hostinfo|\n"
     128#endif
     129                     "                            hostinfo|hostcpuids|hddbackends|hdds|dvds|floppies|\n"
    130130                     "                            usbhost|usbfilters|systemproperties|extpacks|\n"
    131131                     "                            groups\n"
     
    217217#endif
    218218                     "|\n"
    219                      "                                        generic"
     219                     "                                        generic|natnetwork"
    220220                     "]\n"
    221221                     "                            [--nictype<1-N> Am79C970A|Am79C973"
     
    240240#endif
    241241                     "                            [--intnet<1-N> <network name>]\n"
     242                     "                            [--nat-network<1-N> <network name>]\n"
     243                     "                            [--nicgenericdrv<1-N> <driver>\n"
    242244                     "                            [--natnet<1-N> <network>|default]\n"
    243                      "                            [--nicgenericdrv<1-N> <driver>\n"
    244245                     "                            [--natsettings<1-N> [<mtu>],[<socksnd>],\n"
    245246                     "                                                [<sockrcv>],[<tcpsnd>],\n"
     
    440441                     "                            setlinkstate<1-N> on|off |\n"
    441442#if defined(VBOX_WITH_NETFLT)
    442                      "                            nic<1-N> null|nat|bridged|intnet|hostonly|generic"
    443                      "\n"
    444                      "                                     [<devicename>] |\n"
     443                     "                            nic<1-N> null|nat|bridged|intnet|hostonly|generic|\n"
     444                     "                                     natnetwork [<devicename>] |\n"
    445445#else /* !VBOX_WITH_NETFLT */
    446                      "                            nic<1-N> null|nat|bridged|intnet|generic\n"
     446                     "                            nic<1-N> null|nat|bridged|intnet|generic|natnetwork\n"
    447447                     "                                     [<devicename>] |\n"
    448448#endif /* !VBOX_WITH_NETFLT */
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp

    r47991 r48538  
    10731073                        break;
    10741074                    }
     1075
    10751076                    case NetworkAttachmentType_Generic:
    10761077                    {
     
    11031104                        break;
    11041105                    }
     1106
     1107                    case NetworkAttachmentType_NATNetwork:
     1108                    {
     1109                        Bstr strNetwork;
     1110                        nic->COMGETTER(NATNetwork)(strNetwork.asOutParam());
     1111                        if (details == VMINFO_MACHINEREADABLE)
     1112                        {
     1113                            RTPrintf("nat-network%d=\"%ls\"\n", currentNIC + 1, strNetwork.raw());
     1114                            strAttachment = "natnetwork";
     1115                        }
     1116                        else
     1117                            strAttachment = Utf8StrFmt("NAT Network '%s'", Utf8Str(strNetwork).c_str());
     1118                        break;
     1119                    }
     1120
    11051121                    default:
    11061122                        strAttachment = "unknown";
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageList.cpp

    r48097 r48538  
    7676
    7777/**
     78 * List internal networks.
     79 *
     80 * @returns See produceList.
     81 * @param   pVirtualBox         Reference to the IVirtualBox smart pointer.
     82 */
     83static HRESULT listInternalNetworks(const ComPtr<IVirtualBox> pVirtualBox)
     84{
     85    HRESULT rc;
     86    com::SafeArray<BSTR> internalNetworks;
     87    CHECK_ERROR(pVirtualBox, COMGETTER(InternalNetworks)(ComSafeArrayAsOutParam(internalNetworks)));
     88    for (size_t i = 0; i < internalNetworks.size(); ++i)
     89    {
     90        RTPrintf("Name:        %ls\n", internalNetworks[i]);
     91    }
     92    return rc;
     93}
     94
     95
     96/**
    7897 * List network interfaces information (bridged/host only).
    7998 *
    8099 * @returns See produceList.
    81100 * @param   pVirtualBox         Reference to the IVirtualBox smart pointer.
     101 * @param   fIsBridged          Selects between listing host interfaces (for
     102 *                              use with bridging) or host only interfaces.
    82103 */
    83104static HRESULT listNetworkInterfaces(const ComPtr<IVirtualBox> pVirtualBox,
     
    283304
    284305        /* File extensions */
    285         com::SafeArray <BSTR> fileExtensions;
    286         com::SafeArray <DeviceType_T> deviceTypes;
     306        com::SafeArray<BSTR> fileExtensions;
     307        com::SafeArray<DeviceType_T> deviceTypes;
    287308        CHECK_ERROR(mediumFormats[i],
    288309                    DescribeFileExtensions(ComSafeArrayAsOutParam(fileExtensions), ComSafeArrayAsOutParam(deviceTypes)));
     
    296317
    297318        /* Configuration keys */
    298         com::SafeArray <BSTR> propertyNames;
    299         com::SafeArray <BSTR> propertyDescriptions;
    300         com::SafeArray <DataType_T> propertyTypes;
    301         com::SafeArray <ULONG> propertyFlags;
    302         com::SafeArray <BSTR> propertyDefaults;
     319        com::SafeArray<BSTR> propertyNames;
     320        com::SafeArray<BSTR> propertyDescriptions;
     321        com::SafeArray<DataType_T> propertyTypes;
     322        com::SafeArray<ULONG> propertyFlags;
     323        com::SafeArray<BSTR> propertyDefaults;
    303324        CHECK_ERROR(mediumFormats[i],
    304325                    DescribeProperties(ComSafeArrayAsOutParam(propertyNames),
     
    722743    kListHostDvds,
    723744    kListHostFloppies,
     745    kListInternalNetworks,
    724746    kListBridgedInterfaces,
    725747#if defined(VBOX_WITH_NETFLT)
     
    894916        }
    895917
     918        case kListInternalNetworks:
     919            rc = listInternalNetworks(pVirtualBox);
     920            break;
     921
    896922        case kListBridgedInterfaces:
    897923#if defined(VBOX_WITH_NETFLT)
     
    10381064                net->COMGETTER(Enabled)(&fEnabled);
    10391065                RTPrintf("Enabled:        %s\n", fEnabled ? "Yes" : "No");
    1040                
     1066
    10411067#define PRINT_STRING_ARRAY(title) \
    10421068                if (strs.size() > 0)    \
     
    10461072                    for (;j < strs.size(); ++j) \
    10471073                        RTPrintf("        %s\n", Utf8Str(strs[j]).c_str()); \
    1048                 } 
     1074                }
    10491075
    10501076                com::SafeArray<BSTR> strs;
     
    10961122        { "hostdvds",           kListHostDvds,           RTGETOPT_REQ_NOTHING },
    10971123        { "hostfloppies",       kListHostFloppies,       RTGETOPT_REQ_NOTHING },
     1124        { "intnets",            kListInternalNetworks,   RTGETOPT_REQ_NOTHING },
    10981125        { "hostifs",            kListBridgedInterfaces,  RTGETOPT_REQ_NOTHING }, /* backward compatibility */
    10991126        { "bridgedifs",         kListBridgedInterfaces,  RTGETOPT_REQ_NOTHING },
     
    11011128        { "hostonlyifs",        kListHostOnlyInterfaces, RTGETOPT_REQ_NOTHING },
    11021129#endif
     1130        { "natnetworks",        kListNatNetworks,        RTGETOPT_REQ_NOTHING },
     1131        { "natnets",            kListNatNetworks,        RTGETOPT_REQ_NOTHING },
    11031132        { "hostinfo",           kListHostInfo,           RTGETOPT_REQ_NOTHING },
    11041133        { "hostcpuids",         kListHostCpuIDs,         RTGETOPT_REQ_NOTHING },
     
    11131142        { "extpacks",           kListExtPacks,           RTGETOPT_REQ_NOTHING },
    11141143        { "groups",             kListGroups,             RTGETOPT_REQ_NOTHING },
    1115         { "natnetworks",        kListNatNetworks,        RTGETOPT_REQ_NOTHING },
    11161144    };
    11171145
     
    11411169            case kListHostDvds:
    11421170            case kListHostFloppies:
     1171            case kListInternalNetworks:
    11431172            case kListBridgedInterfaces:
    11441173#if defined(VBOX_WITH_NETFLT)
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp

    r48406 r48538  
    113113    MODIFYVM_HOSTONLYADAPTER,
    114114    MODIFYVM_INTNET,
     115    MODIFYVM_GENERICDRV,
     116    MODIFYVM_NATNETWORKNAME,
    115117    MODIFYVM_NATNET,
    116     MODIFYVM_GENERICDRV,
    117118    MODIFYVM_NATBINDIP,
    118119    MODIFYVM_NATSETTINGS,
     
    273274    { "--hostonlyadapter",          MODIFYVM_HOSTONLYADAPTER,           RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX },
    274275    { "--intnet",                   MODIFYVM_INTNET,                    RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX },
     276    { "--nicgenericdrv",            MODIFYVM_GENERICDRV,                RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX },
     277    { "--nat-network",              MODIFYVM_NATNETWORKNAME,            RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX },
     278    { "--natnetwork",               MODIFYVM_NATNETWORKNAME,            RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX },
    275279    { "--natnet",                   MODIFYVM_NATNET,                    RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX },
    276     { "--nicgenericdrv",            MODIFYVM_GENERICDRV,                RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX },
    277280    { "--natbindip",                MODIFYVM_NATBINDIP,                 RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX },
    278281    { "--natsettings",              MODIFYVM_NATSETTINGS,               RTGETOPT_REQ_STRING | RTGETOPT_FLAG_INDEX },
     
    14091412                    CHECK_ERROR(nic, COMSETTER(AttachmentType)(NetworkAttachmentType_Generic));
    14101413                }
     1414                else if (!RTStrICmp(ValueUnion.psz, "natnetwork"))
     1415                {
     1416
     1417                    CHECK_ERROR(nic, COMSETTER(Enabled)(TRUE));
     1418                    CHECK_ERROR(nic, COMSETTER(AttachmentType)(NetworkAttachmentType_NATNetwork));
     1419                }
    14111420                else
    14121421                {
     
    14931502
    14941503                CHECK_ERROR(nic, COMSETTER(GenericDriver)(Bstr(ValueUnion.psz).raw()));
     1504                break;
     1505            }
     1506
     1507            case MODIFYVM_NATNETWORKNAME:
     1508            {
     1509                ComPtr<INetworkAdapter> nic;
     1510
     1511                CHECK_ERROR_BREAK(machine, GetNetworkAdapter(GetOptState.uIndex - 1, nic.asOutParam()));
     1512                ASSERT(nic);
     1513
     1514                CHECK_ERROR(nic, COMSETTER(NATNetwork)(Bstr(ValueUnion.psz).raw()));
    14951515                break;
    14961516            }
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette