VirtualBox

Changeset 17759 in vbox


Ignore:
Timestamp:
Mar 12, 2009 3:57:18 PM (16 years ago)
Author:
vboxsync
Message:

Main/NetIf: IPv4 properties changed from ULONG to wstring, VBoxManage fixes

Location:
trunk/src/VBox
Files:
6 edited

Legend:

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

    r17680 r17759  
    488488    if (u64Cmd & USAGE_HOSTONLYIFS)
    489489    {
    490         RTPrintf("VBoxManage hostonlyif       ipconfig <name> [-dhcp| -ip<ipv4> -netmask<ipv4> | -ipv6<ipv6> -netmasklengthv6<length>]"
     490        RTPrintf("VBoxManage hostonlyif       ipconfig <name> [-dhcp| -ip<ipv4> [-netmask<ipv4> (default is 255.255.255.0)]| -ipv6<ipv6> [-netmasklengthv6<length> (default is 64)]]"
    491491# if defined(RT_OS_WINDOWS)
    492492                 "|\n"
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHostonly.cpp

    r17679 r17759  
    153153    = {
    154154        { "-dhcp",              DHCP, RTGETOPT_REQ_NOTHING },
    155         { "-ip",                IP, RTGETOPT_REQ_IPV4ADDR },
    156         { "-netmask",           NETMASK, RTGETOPT_REQ_IPV4ADDR },
     155        { "-ip",                IP, RTGETOPT_REQ_STRING },
     156        { "-netmask",           NETMASK, RTGETOPT_REQ_STRING },
    157157        { "-ipv6",              IPV6, RTGETOPT_REQ_STRING },
    158158        { "-netmasklengthv6",   NETMASKLENGTHV6, RTGETOPT_REQ_UINT8 }
     
    172172    bool bDhcp = false;
    173173    bool bNetmasklengthv6 = false;
    174     uint8_t uNetmasklengthv6 = 0;
     174    uint32_t uNetmasklengthv6 = -1;
    175175    const char *pIpv6 = NULL;
    176     bool bIp = false;
    177     RTNETADDRIPV4 ip;
    178     bool bNetmask = false;
    179     RTNETADDRIPV4 netmask;
     176    const char * pIp = NULL;
     177    const char * pNetmask = NULL;
    180178
    181179    int c;
     
    196194                if (bDhcp)
    197195                    return errorSyntax(USAGE_HOSTONLYIFS, "You can only specify -dhcp once.");
    198                 else if(bNetmasklengthv6 || pIpv6 || bIp || bNetmask)
     196                else if(bNetmasklengthv6 || pIpv6 || pIp || pNetmask)
    199197                    return errorSyntax(USAGE_HOSTONLYIFS, "You can not use -dhcp with static ip configuration parameters: -ip, -netmask, -ipv6 and -netmasklengthv6.");
    200198                else
     
    202200            break;
    203201            case IP:
    204                 if(bIp)
     202                if(pIp)
    205203                    return errorSyntax(USAGE_HOSTONLYIFS, "You can only specify -ip once.");
    206204                else if (bDhcp)
     
    210208                else
    211209                {
    212                     bIp = true;
    213                     ip = ValueUnion.IPv4Addr;
     210                    pIp = ValueUnion.psz;
    214211                }
    215212            break;
    216213            case NETMASK:
    217                 if(bNetmask)
     214                if(pNetmask)
    218215                    return errorSyntax(USAGE_HOSTONLYIFS, "You can only specify -netmask once.");
    219216                else if (bDhcp)
     
    223220                else
    224221                {
    225                     bNetmask = true;
    226                     netmask = ValueUnion.IPv4Addr;
     222                    pNetmask = ValueUnion.psz;
    227223                }
    228224            break;
     
    232228                else if (bDhcp)
    233229                    return errorSyntax(USAGE_HOSTONLYIFS, "You can not use -dhcp with static ip configuration parameters: -ip, -netmask, -ipv6 and -netmasklengthv6.");
    234                 else if(bIp || bNetmask)
     230                else if(pIp || pNetmask)
    235231                    return errorSyntax(USAGE_HOSTONLYIFS, "You can not use ipv4 configuration (-ip and -netmask) with ipv6 (-ipv6 and -netmasklengthv6) simultaneously.");
    236232                else
     
    242238                else if (bDhcp)
    243239                    return errorSyntax(USAGE_HOSTONLYIFS, "You can not use -dhcp with static ip configuration parameters: -ip, -netmask, -ipv6 and -netmasklengthv6.");
    244                 else if(bIp || bNetmask)
     240                else if(pIp || pNetmask)
    245241                    return errorSyntax(USAGE_HOSTONLYIFS, "You can not use ipv4 configuration (-ip and -netmask) with ipv6 (-ipv6 and -netmasklengthv6) simultaneously.");
    246242                else
     
    249245                    uNetmasklengthv6 = ValueUnion.u8;
    250246                }
     247            break;
     248            case VINF_GETOPT_NOT_OPTION:
     249            case VERR_GETOPT_UNKNOWN_OPTION:
     250                return errorSyntax(USAGE_HOSTONLYIFS, "Unknown option \"%s\".", ValueUnion.psz);
    251251            break;
    252252            default:
     
    266266    CHECK_ERROR(host, FindHostNetworkInterfaceByName(name, hif.asOutParam()));
    267267
     268    if(FAILED(rc))
     269        return errorArgument("could not find interface '%s'", a->argv[iStart]);
     270
    268271    if(bDhcp)
    269272    {
    270273        CHECK_ERROR(hif, EnableDynamicIpConfig ());
    271274    }
    272     else if(bIp)
    273     {
    274         if(!bNetmask)
    275         {
    276             netmask.u = 0;
    277         }
    278 
    279         CHECK_ERROR(hif, EnableStaticIpConfig (ip.u, netmask.u));
     275    else if(pIp)
     276    {
     277        if(!pNetmask)
     278            pNetmask = "255.255.255.0"; /* ?? */
     279
     280        CHECK_ERROR(hif, EnableStaticIpConfig (Bstr(pIp), Bstr(pNetmask)));
    280281    }
    281282    else if(pIpv6)
    282283    {
     284        if(uNetmasklengthv6 == -1)
     285            uNetmasklengthv6 = 64; /* ?? */
     286
     287        BOOL bIpV6Supported;
     288        CHECK_ERROR(hif, COMGETTER(IPV6Supported) (&bIpV6Supported));
     289        if(!bIpV6Supported)
     290        {
     291            RTPrintf("IPv6 setting is not supported for this adapter\n");
     292            return 1;
     293        }
     294
     295
    283296        Bstr ipv6str(pIpv6);
    284297        CHECK_ERROR(hif, EnableStaticIpConfigV6 (ipv6str, (ULONG)uNetmasklengthv6));
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageList.cpp

    r17737 r17759  
    331331                RTPrintf("Dhcp:            %s\n", bDhcpEnabled ? "Enabled" : "Disabled");
    332332
    333                 ULONG IPAddress;
    334                 networkInterface->COMGETTER(IPAddress)(&IPAddress);
    335                 RTPrintf("IPAddress:       %d.%d.%d.%d\n",
    336                         ((uint8_t*)&IPAddress)[0],
    337                         ((uint8_t*)&IPAddress)[1],
    338                         ((uint8_t*)&IPAddress)[2],
    339                         ((uint8_t*)&IPAddress)[3]);
    340                 ULONG NetworkMask;
    341                 networkInterface->COMGETTER(NetworkMask)(&NetworkMask);
    342                 RTPrintf("NetworkMask:     %d.%d.%d.%d\n",
    343                         ((uint8_t*)&NetworkMask)[0],
    344                         ((uint8_t*)&NetworkMask)[1],
    345                         ((uint8_t*)&NetworkMask)[2],
    346                         ((uint8_t*)&NetworkMask)[3]);
     333                Bstr IPAddress;
     334                networkInterface->COMGETTER(IPAddress)(IPAddress.asOutParam());
     335                RTPrintf("IPAddress:       %lS\n", IPAddress.raw());
     336                Bstr NetworkMask;
     337                networkInterface->COMGETTER(NetworkMask)(NetworkMask.asOutParam());
     338                RTPrintf("NetworkMask:     %lS\n", NetworkMask.raw());
    347339                Bstr IPV6Address;
    348340                networkInterface->COMGETTER(IPV6Address)(IPV6Address.asOutParam());
  • trunk/src/VBox/Main/HostNetworkInterfaceImpl.cpp

    r17713 r17759  
    204204 * @param   aIPAddress address of result pointer
    205205 */
    206 STDMETHODIMP HostNetworkInterface::COMGETTER(IPAddress) (ULONG *aIPAddress)
     206STDMETHODIMP HostNetworkInterface::COMGETTER(IPAddress) (BSTR *aIPAddress)
    207207{
    208208    CheckComArgOutPointerValid(aIPAddress);
     
    211211    CheckComRCReturnRC (autoCaller.rc());
    212212
    213     *aIPAddress = m.IPAddress;
    214 
    215     return S_OK;
     213    in_addr tmp;
     214    tmp.S_un.S_addr = m.IPAddress;
     215    char *addr = inet_ntoa(tmp);
     216    if(addr)
     217    {
     218        Bstr(addr).detachTo(aIPAddress);
     219        return S_OK;
     220    }
     221
     222    return E_FAIL;
    216223}
    217224
     
    222229 * @param   aNetworkMask address of result pointer
    223230 */
    224 STDMETHODIMP HostNetworkInterface::COMGETTER(NetworkMask) (ULONG *aNetworkMask)
     231STDMETHODIMP HostNetworkInterface::COMGETTER(NetworkMask) (BSTR *aNetworkMask)
    225232{
    226233    CheckComArgOutPointerValid(aNetworkMask);
     
    229236    CheckComRCReturnRC (autoCaller.rc());
    230237
    231     *aNetworkMask = m.networkMask;
    232 
    233     return S_OK;
     238    in_addr tmp;
     239    tmp.S_un.S_addr = m.networkMask;
     240    char *addr = inet_ntoa(tmp);
     241    if(addr)
     242    {
     243        Bstr(addr).detachTo(aNetworkMask);
     244        return S_OK;
     245    }
     246
     247    return E_FAIL;
    234248}
    235249
     
    237251{
    238252    CheckComArgOutPointerValid(aIPV6Supported);
    239 
     253#if defined(RT_OS_WINDOWS)
     254    *aIPV6Supported = FALSE;
     255#else
    240256    *aIPV6Supported = TRUE;
     257#endif
    241258
    242259    return S_OK;
     
    352369}
    353370
    354 STDMETHODIMP HostNetworkInterface::EnableStaticIpConfig (ULONG aIPAddress, ULONG aNetworkMask)
     371STDMETHODIMP HostNetworkInterface::EnableStaticIpConfig (IN_BSTR aIPAddress, IN_BSTR aNetMask)
    355372{
    356373#ifndef VBOX_WITH_HOSTNETIF_API
     
    360377    CheckComRCReturnRC (autoCaller.rc());
    361378
    362     int rc = NetIfEnableStaticIpConfig(mVBox, this, aIPAddress, aNetworkMask);
    363     if (RT_FAILURE(rc))
    364     {
    365         LogRel(("Failed to EnableStaticIpConfigV6 with rc=%Vrc\n", rc));
    366         return rc == VERR_NOT_IMPLEMENTED ? E_NOTIMPL : E_FAIL;
    367     }
    368     return S_OK;
     379    ULONG ip, mask;
     380    ip = inet_addr(Utf8Str(aIPAddress).raw());
     381    if(ip != INADDR_NONE)
     382    {
     383        mask = inet_addr(Utf8Str(aNetMask).raw());
     384        if(mask != INADDR_NONE)
     385        {
     386            int rc = NetIfEnableStaticIpConfig(mVBox, this, ip, mask);
     387            if (RT_SUCCESS(rc))
     388            {
     389                return S_OK;
     390            }
     391            else
     392            {
     393                LogRel(("Failed to EnableStaticIpConfig with rc=%Vrc\n", rc));
     394                return rc == VERR_NOT_IMPLEMENTED ? E_NOTIMPL : E_FAIL;
     395            }
     396
     397        }
     398    }
     399    return E_FAIL;
    369400#endif
    370401}
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r17755 r17759  
    65346534  <interface
    65356535     name="IHostNetworkInterface" extends="$unknown"
    6536      uuid="63d66df2-e40b-4289-acc2-7e260fe6e51e"
     6536     uuid="09de36e8-2588-4050-a791-655240b556e0"
    65376537     wsmap="managed"
    65386538     >
     
    65556555    </attribute>
    65566556
    6557     <attribute name="IPAddress" type="unsigned long" readonly="yes">
     6557    <attribute name="IPAddress" type="wstring" readonly="yes">
    65586558      <desc>Returns the IP V4 address of the interface.</desc>
    65596559    </attribute>
    65606560
    6561     <attribute name="networkMask" type="unsigned long" readonly="yes">
     6561    <attribute name="networkMask" type="wstring" readonly="yes">
    65626562      <desc>Returns the network mask of the interface.</desc>
    65636563    </attribute>
     
    65936593    <method name="enableStaticIpConfig">
    65946594      <desc>sets and enables the static IP V4 configuration for the given interface.</desc>
    6595       <param name="IPAddress" type="unsigned long" dir="in">
     6595      <param name="IPAddress" type="wstring" dir="in">
    65966596        <desc>
    65976597          IP address.
    65986598        </desc>
    65996599      </param>
    6600       <param name="networkMask" type="unsigned long" dir="in">
     6600      <param name="networkMask" type="wstring" dir="in">
    66016601        <desc>
    66026602          network mask.
  • trunk/src/VBox/Main/include/HostNetworkInterfaceImpl.h

    r17710 r17759  
    7171    STDMETHOD(COMGETTER(Id)) (OUT_GUID aGuid);
    7272    STDMETHOD(COMGETTER(DhcpEnabled)) (BOOL *aDhcpEnabled);
    73     STDMETHOD(COMGETTER(IPAddress)) (ULONG *aIPAddress);
    74     STDMETHOD(COMGETTER(NetworkMask)) (ULONG *aNetworkMask);
     73    STDMETHOD(COMGETTER(IPAddress)) (BSTR *aIPAddress);
     74    STDMETHOD(COMGETTER(NetworkMask)) (BSTR *aNetworkMask);
    7575    STDMETHOD(COMGETTER(IPV6Supported)) (BOOL *aIPV6Supported);
    7676    STDMETHOD(COMGETTER(IPV6Address)) (BSTR *aIPV6Address);
     
    8181    STDMETHOD(COMGETTER(InterfaceType)) (HostNetworkInterfaceType_T *aType);
    8282
    83     STDMETHOD(EnableStaticIpConfig) (ULONG aIPAddress, ULONG aNetworkMask);
     83    STDMETHOD(EnableStaticIpConfig) (IN_BSTR aIPAddress, IN_BSTR aNetworkMask);
    8484    STDMETHOD(EnableStaticIpConfigV6) (IN_BSTR aIPV6Address, ULONG aIPV6MaskPrefixLength);
    8585    STDMETHOD(EnableDynamicIpConfig) ();
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