diff options
| author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2014-03-26 19:21:20 +0000 |
|---|---|---|
| committer | <> | 2014-05-08 15:03:54 +0000 |
| commit | fb123f93f9f5ce42c8e5785d2f8e0edaf951740e (patch) | |
| tree | c2103d76aec5f1f10892cd1d3a38e24f665ae5db /src/VBox/Main/include/DHCPServerImpl.h | |
| parent | 58ed4748338f9466599adfc8a9171280ed99e23f (diff) | |
| download | VirtualBox-master.tar.gz | |
Imported from /home/lorry/working-area/delta_VirtualBox/VirtualBox-4.3.10.tar.bz2.HEADVirtualBox-4.3.10master
Diffstat (limited to 'src/VBox/Main/include/DHCPServerImpl.h')
| -rw-r--r-- | src/VBox/Main/include/DHCPServerImpl.h | 69 |
1 files changed, 54 insertions, 15 deletions
diff --git a/src/VBox/Main/include/DHCPServerImpl.h b/src/VBox/Main/include/DHCPServerImpl.h index 0773d7bf..f326405e 100644 --- a/src/VBox/Main/include/DHCPServerImpl.h +++ b/src/VBox/Main/include/DHCPServerImpl.h @@ -6,7 +6,7 @@ */ /* - * Copyright (C) 2006-2009 Oracle Corporation + * Copyright (C) 2006-2011 Oracle Corporation * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -29,7 +29,47 @@ struct NETIFINFO; namespace settings { struct DHCPServer; + struct VmNameSlotKey; } +#ifdef RT_OS_WINDOWS +# define DHCP_EXECUTABLE_NAME "VBoxNetDHCP.exe" +#else +# define DHCP_EXECUTABLE_NAME "VBoxNetDHCP" +#endif + +class DHCPServerRunner: public NetworkServiceRunner +{ +public: + DHCPServerRunner():NetworkServiceRunner(DHCP_EXECUTABLE_NAME){} + virtual ~DHCPServerRunner(){}; + + static const std::string kDsrKeyGateway; + static const std::string kDsrKeyLowerIp; + static const std::string kDsrKeyUpperIp; +}; + +/** + * for server configuration needs, it's perhaps better to use (VM,slot) pair + * (vm-name, slot) <----> (MAC) + * + * but for client configuration, when server will have MACs at hand, it'd be + * easier to requiest options by MAC. + * (MAC) <----> (option-list) + * + * Doubts: What should be done if MAC changed for (vm-name, slot), when syncing should? + * XML: serialization of dependecy (DHCP options) - (VM,slot) shouldn't be done via MAC in + * the middle. + */ + +typedef std::map<DhcpOpt_T, com::Utf8Str> DhcpOptionMap; +typedef DhcpOptionMap::value_type DhcpOptValuePair; +typedef DhcpOptionMap::const_iterator DhcpOptConstIterator; +typedef DhcpOptionMap::iterator DhcpOptIterator; + +typedef std::map<settings::VmNameSlotKey, DhcpOptionMap> VmSlot2OptionsMap; +typedef VmSlot2OptionsMap::value_type VmSlot2OptionsPair; +typedef VmSlot2OptionsMap::iterator VmSlot2OptionsIterator; + class ATL_NO_VTABLE DHCPServer : public VirtualBoxBase, @@ -69,30 +109,29 @@ public: STDMETHOD(COMGETTER(LowerIP))(BSTR *aIPAddress); STDMETHOD(COMGETTER(UpperIP))(BSTR *aIPAddress); + STDMETHOD(AddGlobalOption)(DhcpOpt_T aOption, IN_BSTR aValue); + STDMETHOD(COMGETTER(GlobalOptions))(ComSafeArrayOut(BSTR, aValue)); + STDMETHOD(COMGETTER(VmConfigs))(ComSafeArrayOut(BSTR, aValue)); + STDMETHOD(AddVmSlotOption)(IN_BSTR aVmName, LONG aSlot, DhcpOpt_T aOption, IN_BSTR aValue); + STDMETHOD(RemoveVmSlotOptions)(IN_BSTR aVmName, LONG aSlot); + STDMETHOD(GetVmSlotOptions)(IN_BSTR aVmName, LONG aSlot, ComSafeArrayOut(BSTR, aValues)); + STDMETHOD(GetMacOptions)(IN_BSTR aMAC, ComSafeArrayOut(BSTR, aValues)); + STDMETHOD(COMGETTER(EventSource))(IEventSource **aEventSource); + STDMETHOD(SetConfiguration)(IN_BSTR aIPAddress, IN_BSTR aNetworkMask, IN_BSTR aFromIPAddress, IN_BSTR aToIPAddress); STDMETHOD(Start)(IN_BSTR aNetworkName, IN_BSTR aTrunkName, IN_BSTR aTrunkType); STDMETHOD(Stop)(); private: + struct Data; + Data *m; /** weak VirtualBox parent */ VirtualBox * const mVirtualBox; - const Bstr mName; - struct Data - { - Data() : enabled(FALSE) {} - - Bstr IPAddress; - Bstr networkMask; - Bstr lowerIP; - Bstr upperIP; - BOOL enabled; - - DHCPServerRunner dhcp; - } m; - + DhcpOptionMap& findOptMapByVmNameSlot(const com::Utf8Str& aVmName, + LONG Slot); }; #endif // ____H_H_DHCPSERVERIMPL |
