VirtualBox

source: vbox/trunk/src/VBox/Main/include/NetworkServiceRunner.h@ 47148

Last change on this file since 47148 was 47018, checked in by vboxsync, 11 years ago

Main: re-commit r86967
Main/Network: DHCP server has got the ear in Main, and we able create/describe more complex infrostructures. DHCP server together with Lwip NAT can handle per vm/slot configuration and store them in xml settings.
place-holder: Host interface nameserver list, domain name and search strings, I suppose that this functions should be used on initialization stage and then on host configuration change even or directly from event.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.1 KB
Line 
1/* $Id: NetworkServiceRunner.h 47018 2013-07-06 17:31:11Z vboxsync $ */
2/** @file
3 * VirtualBox Main - interface for VBox DHCP server
4 */
5
6/*
7 * Copyright (C) 2009-2010 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17#include <iprt/err.h>
18#include <iprt/types.h>
19#include <iprt/string.h>
20#include <iprt/mem.h>
21#include <VBox/com/string.h>
22
23typedef enum
24{
25 NETCFG_NAME = 1,
26 NETCFG_NETNAME,
27 NETCFG_TRUNKTYPE,
28 NETCFG_TRUNKNAME,
29 NETCFG_MACADDRESS,
30 NETCFG_IPADDRESS,
31 NETCFG_NETMASK,
32 NETCFG_VERBOSE,
33 NETCFG_NOTOPT_MAXVAL
34}NETCFG;
35
36#define TRUNKTYPE_WHATEVER "whatever"
37#define TRUNKTYPE_NETFLT "netflt"
38#define TRUNKTYPE_NETADP "netadp"
39#define TRUNKTYPE_SRVNAT "srvnat"
40
41class NetworkServiceRunner
42{
43public:
44 NetworkServiceRunner(const char *aProcName):
45 mProcName(aProcName),
46 mProcess(NIL_RTPROCESS)
47 {
48 memset(mOptionEnabled, 0, sizeof(mOptionEnabled));
49 };
50 ~NetworkServiceRunner() { stop(); /* don't leave abandoned servers */}
51
52 int setOption(NETCFG opt, const char *val, bool enabled)
53 {
54 if (opt == 0 || opt >= NETCFG_NOTOPT_MAXVAL)
55 return VERR_INVALID_PARAMETER;
56 if (isRunning())
57 return VERR_INVALID_STATE;
58
59 mOptions[opt] = val;
60 mOptionEnabled[opt] = enabled;
61 return VINF_SUCCESS;
62 }
63
64 int setOption(NETCFG opt, const com::Utf8Str &val, bool enabled)
65 {
66 return setOption(opt, val.c_str(), enabled);
67 }
68
69 int start();
70 int stop();
71 bool isRunning();
72
73 void detachFromServer();
74private:
75 com::Utf8Str mOptions[NETCFG_NOTOPT_MAXVAL];
76 bool mOptionEnabled[NETCFG_NOTOPT_MAXVAL];
77 const char *mProcName;
78 RTPROCESS mProcess;
79};
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette