VBoxNetBaseService.h revision e2843ed205192b88e54eef60ad541d00bbbc932a
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync/* $Id$ */
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync/** @file
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync * VBoxNetUDP - IntNet Client Library.
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync */
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync/*
e64031e20c39650a7bc902a3e1aba613b9415deevboxsync * Copyright (C) 2009 Oracle Corporation
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync *
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync * available from http://www.virtualbox.org. This file is free software;
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync * you can redistribute it and/or modify it under the terms of the GNU
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync * General Public License (GPL) as published by the Free Software
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync */
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync#ifndef ___VBoxNetBaseService_h___
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync#define ___VBoxNetBaseService_h___
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsyncclass VBoxNetBaseService
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync{
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsyncpublic:
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync VBoxNetBaseService();
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync virtual ~VBoxNetBaseService();
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync int parseArgs(int argc, char **argv);
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync int tryGoOnline(void);
aa4bcf0a4b2db3ac352b56a291d49cb8d4b66d32vboxsync void shutdown(void);
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync virtual void usage(void) = 0;
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync virtual void run(void) = 0;
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync virtual int init(void);
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync virtual int parseOpt(int rc, const RTGETOPTUNION& getOptVal) = 0;
aa4bcf0a4b2db3ac352b56a291d49cb8d4b66d32vboxsync
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync inline void debugPrint( int32_t iMinLevel, bool fMsg, const char *pszFmt, ...) const;
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync void debugPrintV(int32_t iMinLevel, bool fMsg, const char *pszFmt, va_list va) const;
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsyncpublic:
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync /** @name The server configuration data members.
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync * @{ */
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync std::string m_Name;
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync std::string m_Network;
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync std::string m_TrunkName;
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync INTNETTRUNKTYPE m_enmTrunkType;
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync RTMAC m_MacAddress;
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync RTNETADDRIPV4 m_Ipv4Address;
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync /** @} */
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync /** @name The network interface
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync * @{ */
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync PSUPDRVSESSION m_pSession;
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync uint32_t m_cbSendBuf;
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync uint32_t m_cbRecvBuf;
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync INTNETIFHANDLE m_hIf; /**< The handle to the network interface. */
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync PINTNETBUF m_pIfBuf; /**< Interface buffer. */
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync std::vector<PRTGETOPTDEF> m_vecOptionDefs;
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync /** @} */
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync /** @name Debug stuff
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync * @{ */
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync int32_t m_cVerbosity;
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsyncprivate:
1dcfc3175560423a364f8b3b15edfe8587981a38vboxsync PRTGETOPTDEF getOptionsPtr();
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync /** @} */
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync};
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync#endif
315c82bf68ba7cdefb15240bcaff386e300ff1c1vboxsync