VirtualBox

source: vbox/trunk/src/VBox/NetworkServices/NetLib/VBoxNetBaseService.h@ 45674

Last change on this file since 45674 was 45114, checked in by vboxsync, 12 years ago

NAT/service:LWIP: GSO, parameters parsing.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.5 KB
Line 
1/* $Id: VBoxNetBaseService.h 45114 2013-03-21 07:31:35Z vboxsync $ */
2/** @file
3 * VBoxNetUDP - IntNet Client Library.
4 */
5
6/*
7 * Copyright (C) 2009-2011 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
18#ifndef ___VBoxNetBaseService_h___
19#define ___VBoxNetBaseService_h___
20#include <iprt/critsect.h>
21class VBoxNetBaseService
22{
23public:
24 VBoxNetBaseService();
25 virtual ~VBoxNetBaseService();
26 int parseArgs(int argc, char **argv);
27 int tryGoOnline(void);
28 void shutdown(void);
29 int syncEnter() { return RTCritSectEnter(&this->m_csThis);}
30 int syncLeave() { return RTCritSectLeave(&this->m_csThis);}
31 int waitForIntNetEvent(int cMillis);
32 int sendBufferOnWire(PCINTNETSEG pSg, int cSg, size_t cbBuffer);
33 void flushWire();
34 virtual void usage(void) = 0;
35 virtual void run(void) = 0;
36 virtual int init(void);
37 virtual int parseOpt(int rc, const RTGETOPTUNION& getOptVal) = 0;
38
39 inline void debugPrint( int32_t iMinLevel, bool fMsg, const char *pszFmt, ...) const;
40 void debugPrintV(int32_t iMinLevel, bool fMsg, const char *pszFmt, va_list va) const;
41public:
42 /** @name The server configuration data members.
43 * @{ */
44 std::string m_Name;
45 std::string m_Network;
46 std::string m_TrunkName;
47 INTNETTRUNKTYPE m_enmTrunkType;
48 RTMAC m_MacAddress;
49 RTNETADDRIPV4 m_Ipv4Address;
50 RTNETADDRIPV4 m_Ipv4Netmask;
51 /* cs for syncing */
52 RTCRITSECT m_csThis;
53 /** @} */
54 /** @name The network interface
55 * @{ */
56 PSUPDRVSESSION m_pSession;
57 uint32_t m_cbSendBuf;
58 uint32_t m_cbRecvBuf;
59 INTNETIFHANDLE m_hIf; /**< The handle to the network interface. */
60 PINTNETBUF m_pIfBuf; /**< Interface buffer. */
61 std::vector<PRTGETOPTDEF> m_vecOptionDefs;
62 /** @} */
63 /** @name Debug stuff
64 * @{ */
65 int32_t m_cVerbosity;
66private:
67 PRTGETOPTDEF getOptionsPtr();
68 /** @} */
69};
70#endif
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