VirtualBox

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

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

VBoxNetBaseService.h: G/c -line.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.5 KB
Line 
1/* $Id: VBoxNetBaseService.h 49832 2013-12-09 11:19:34Z 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
21#include <iprt/critsect.h>
22
23
24class VBoxNetHlpUDPService
25{
26public:
27virtual int hlpUDPBroadcast(unsigned uSrcPort, unsigned uDstPort,
28 void const *pvData, size_t cbData) const = 0;
29};
30
31
32# ifndef BASE_SERVICES_ONLY
33class VBoxNetBaseService: public VBoxNetHlpUDPService
34{
35public:
36 VBoxNetBaseService(const std::string& aName, const std::string& aNetworkName);
37 virtual ~VBoxNetBaseService();
38 int parseArgs(int argc, char **argv);
39 int tryGoOnline(void);
40 void shutdown(void);
41 int syncEnter();
42 int syncLeave();
43 int waitForIntNetEvent(int cMillis);
44 int sendBufferOnWire(PCINTNETSEG pSg, int cSg, size_t cbBuffer);
45 void flushWire();
46
47 virtual int hlpUDPBroadcast(unsigned uSrcPort, unsigned uDstPort,
48 void const *pvData, size_t cbData) const;
49 virtual void usage(void) = 0;
50 virtual int run(void) = 0;
51 virtual int parseOpt(int rc, const RTGETOPTUNION& getOptVal) = 0;
52 virtual int processFrame(void *, size_t) = 0;
53 virtual int processGSO(PCPDMNETWORKGSO, size_t) = 0;
54 virtual int processUDP(void *, size_t) = 0;
55
56
57 virtual int init(void);
58 virtual bool isMainNeeded() const;
59
60protected:
61 const std::string getName() const;
62 void setName(const std::string&);
63
64 const std::string getNetwork() const;
65 void setNetwork(const std::string&);
66
67 const RTMAC getMacAddress() const;
68 void setMacAddress(const RTMAC&);
69
70 const RTNETADDRIPV4 getIpv4Address() const;
71 void setIpv4Address(const RTNETADDRIPV4&);
72
73 const RTNETADDRIPV4 getIpv4Netmask() const;
74 void setIpv4Netmask(const RTNETADDRIPV4&);
75
76 uint32_t getSendBufSize() const;
77 void setSendBufSize(uint32_t);
78
79 uint32_t getRecvBufSize() const;
80 void setRecvBufSize(uint32_t);
81
82 int32_t getVerbosityLevel() const;
83 void setVerbosityLevel(int32_t);
84
85 void addCommandLineOption(const PRTGETOPTDEF);
86
87 /**
88 * Print debug message depending on the m_cVerbosity level.
89 *
90 * @param iMinLevel The minimum m_cVerbosity level for this message.
91 * @param fMsg Whether to dump parts for the current DHCP message.
92 * @param pszFmt The message format string.
93 * @param ... Optional arguments.
94 */
95 void debugPrint(int32_t iMinLevel, bool fMsg, const char *pszFmt, ...) const;
96 virtual void debugPrintV(int32_t iMinLevel, bool fMsg, const char *pszFmt, va_list va) const;
97
98 void doReceiveLoop();
99
100protected:
101 /* VirtualBox instance */
102 ComPtr<IVirtualBox> virtualbox;
103
104private:
105 struct Data;
106 Data *m;
107
108private:
109 PRTGETOPTDEF getOptionsPtr();
110};
111# endif
112#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