VirtualBox

Changeset 45021 in vbox


Ignore:
Timestamp:
Mar 13, 2013 2:54:05 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
84258
Message:

VBoxManage: implemented 'controlvm nicpromisc'

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

Legend:

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

    r44528 r45021  
    621621            }
    622622        }
     623        else if (!strncmp(a->argv[1], "nicpromisc", 10))
     624        {
     625            /* Get the number of network adapters */
     626            ULONG NetworkAdapterCount = getMaxNics(a->virtualBox,sessionMachine) ;
     627            unsigned n = parseNum(&a->argv[1][10], NetworkAdapterCount, "NIC");
     628            if (!n)
     629            {
     630                rc = E_FAIL;
     631                break;
     632            }
     633            if (a->argc <= 2)
     634            {
     635                errorArgument("Missing argument to '%s'", a->argv[1]);
     636                rc = E_FAIL;
     637                break;
     638            }
     639
     640            /* get the corresponding network adapter */
     641            ComPtr<INetworkAdapter> adapter;
     642            CHECK_ERROR_BREAK(sessionMachine, GetNetworkAdapter(n - 1, adapter.asOutParam()));
     643            if (adapter)
     644            {
     645                BOOL fEnabled;
     646                adapter->COMGETTER(Enabled)(&fEnabled);
     647                if (fEnabled)
     648                {
     649                    NetworkAdapterPromiscModePolicy_T enmPromiscModePolicy;
     650                    if (!strcmp(a->argv[2], "deny"))
     651                        enmPromiscModePolicy = NetworkAdapterPromiscModePolicy_Deny;
     652                    else if (  !strcmp(a->argv[2], "allow-vms")
     653                            || !strcmp(a->argv[2], "allow-network"))
     654                        enmPromiscModePolicy = NetworkAdapterPromiscModePolicy_AllowNetwork;
     655                    else if (!strcmp(a->argv[2], "allow-all"))
     656                        enmPromiscModePolicy = NetworkAdapterPromiscModePolicy_AllowAll;
     657                    else
     658                    {
     659                        errorArgument("Unknown promiscuous mode policy '%s'", a->argv[2]);
     660                        rc = E_INVALIDARG;
     661                        break;
     662                    }
     663
     664                    CHECK_ERROR(adapter, COMSETTER(PromiscModePolicy)(enmPromiscModePolicy));
     665                }
     666                else
     667                    RTMsgError("The NIC %d is currently disabled and thus its promiscuous mode can't be changed", n);
     668            }
     669        }
    623670        else if (!strncmp(a->argv[1], "nic", 3))
    624671        {
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp

    r44948 r45021  
    441441                     "                            nictracefile<1-N> <filename>\n"
    442442                     "                            nicproperty<1-N> name=[value]\n"
     443                     "                            nicpromisc<1-N> deny|allow-vms|allow-all]\n"
    443444                     "                            natpf<1-N> [<rulename>],tcp|udp,[<hostip>],\n"
    444445                     "                                          <hostport>,[<guestip>],<guestport>\n"
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