summaryrefslogtreecommitdiff
path: root/src/VBox/Main/include/DHCPServerImpl.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2014-03-26 19:21:20 +0000
committer <>2014-05-08 15:03:54 +0000
commitfb123f93f9f5ce42c8e5785d2f8e0edaf951740e (patch)
treec2103d76aec5f1f10892cd1d3a38e24f665ae5db /src/VBox/Main/include/DHCPServerImpl.h
parent58ed4748338f9466599adfc8a9171280ed99e23f (diff)
downloadVirtualBox-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.h69
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