DHCPServerImpl.cpp revision f8a1555b6a5fb52eb99ce29c255d3233b2179a93
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor * VirtualBox COM class implementation
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor * Copyright (C) 2006-2008 Sun Microsystems, Inc.
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor * This file is part of VirtualBox Open Source Edition (OSE), as
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor * available from http://www.virtualbox.org. This file is free software;
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor * you can redistribute it and/or modify it under the terms of the GNU
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor * General Public License (GPL) as published by the Free Software
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor * Foundation, in version 2 as it comes in the "COPYING" file of the
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor * Clara, CA 95054 USA or visit http://www.sun.com if you need
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor * additional information or have any questions.
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor// constructor / destructor
8c7a70cc3f10ec5402377663f1ab14828871670elgentis/////////////////////////////////////////////////////////////////////////////
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor /* Enclose the state transition Ready->InUninit->NotReady */
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor// /* we uninit children and reset mParent
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor// * and VirtualBox::removeDependentChild() needs a write lock */
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor// AutoMultiWriteLock2 alock (mVirtualBox->lockHandle(), this->treeLock());
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzorHRESULT DHCPServer::init(VirtualBox *aVirtualBox, IN_BSTR aName)
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor /* share VirtualBox weakly (parent remains NULL so far) */
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor /* register with VirtualBox early, since uninit() will
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor * unconditionally unregister on failure */
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor /* Confirm a successful initialization */
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzorHRESULT DHCPServer::init(VirtualBox *aVirtualBox, const settings::Key &aNode)
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor using namespace settings;
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor /* Enclose the state transition NotReady->InInit->Ready */
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor /* share VirtualBox weakly (parent remains NULL so far) */
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzorHRESULT DHCPServer::saveSettings (settings::Key &aParentNode)
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor using namespace settings;
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor /* required */
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor aNode.setValue <Bstr> ("networkMask", m.networkMask);
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzorSTDMETHODIMP DHCPServer::COMGETTER(NetworkName) (BSTR *aName)
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzorSTDMETHODIMP DHCPServer::COMGETTER(Enabled) (BOOL *aEnabled)
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzorSTDMETHODIMP DHCPServer::COMSETTER(Enabled) (BOOL aEnabled)
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor /* VirtualBox::saveSettings() needs a write lock */
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzorSTDMETHODIMP DHCPServer::COMGETTER(IPAddress) (BSTR *aIPAddress)
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzorSTDMETHODIMP DHCPServer::COMGETTER(NetworkMask) (BSTR *aNetworkMask)
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzorSTDMETHODIMP DHCPServer::COMGETTER(LowerIP) (BSTR *aIPAddress)
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzorSTDMETHODIMP DHCPServer::COMGETTER(UpperIP) (BSTR *aIPAddress)
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzorSTDMETHODIMP DHCPServer::SetConfiguration (IN_BSTR aIPAddress, IN_BSTR aNetworkMask, IN_BSTR aLowerIP, IN_BSTR aUpperIP)
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor /* VirtualBox::saveSettings() needs a write lock */
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzorSTDMETHODIMP DHCPServer::Start (IN_BSTR aNetworkName, IN_BSTR aTrunkName, IN_BSTR aTrunkType)
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor /* Silently ignore attepmts to run disabled servers. */
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor m.dhcp.setOption(DHCPCFG_NETNAME, Utf8Str(aNetworkName));
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor m.dhcp.setOption(DHCPCFG_TRUNKTYPE, Utf8Str(aTrunkType));
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor //temporary hack for testing
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor // DHCPCFG_NAME
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor RTStrPrintf (strMAC, sizeof(strMAC), "080027%02X%02X%02X",
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor guid.ptr()->au8[0], guid.ptr()->au8[1], guid.ptr()->au8[2]);
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor m.dhcp.setOption(DHCPCFG_IPADDRESS, Utf8Str(m.IPAddress));
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor // DHCPCFG_LEASEDB,
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor // DHCPCFG_VERBOSE,
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor // DHCPCFG_GATEWAY,
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor m.dhcp.setOption(DHCPCFG_LOWERIP, Utf8Str(m.lowerIP));
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor m.dhcp.setOption(DHCPCFG_UPPERIP, Utf8Str(m.upperIP));
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor m.dhcp.setOption(DHCPCFG_NETMASK, Utf8Str(m.networkMask));
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor // DHCPCFG_HELP,
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor // DHCPCFG_VERSION,
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor // DHCPCFG_NOTOPT_MAXVAL
293aa6caecb1db771e9baa2f79c92f1c381caee4gryzor //m.dhcp.detachFromServer(); /* need to do this to avoid server shutdown on runner destruction */