~ubuntu-branches/ubuntu/trusty/virtualbox/trusty-proposed

« back to all changes in this revision

Viewing changes to src/VBox/NetworkServices/NetLib/VBoxNetBaseService.cpp

  • Committer: Package Import Robot
  • Author(s): Felix Geyer
  • Date: 2013-03-07 16:38:36 UTC
  • mfrom: (1.1.13) (3.1.20 experimental)
  • Revision ID: package-import@ubuntu.com-20130307163836-p93jpbgx39tp3gb4
Tags: 4.2.8-dfsg-0ubuntu1
* New upstream release. (Closes: #691148)
  - Fixes compatibility with kernel 3.8. (Closes: #700823; LP: #1101867)
* Switch to my @debian.org email address.
* Move package to contrib as virtualbox 4.2 needs a non-free compiler to
  build the BIOS.
* Build-depend on libdevmapper-dev.
* Refresh patches.
  - Drop 36-fix-ftbfs-xserver-112.patch, cve-2012-3221.patch,
    CVE-2013-0420.patch 37-kcompat-3.6.patch and 38-kcompat-3.7.patch.
* Drop all virtualbox-ose transitional packages.
* Drop the virtualbox-fuse package as vdfuse fails to build with
  virtualbox 4.2.
* Update install files and VBox.sh.
* Bump required kbuild version to 0.1.9998svn2577.
* Fix path to VBoxCreateUSBNode.sh in virtualbox.postinst. (Closes: #700479)
* Add an init script to virtuabox-guest-x11 which loads the vboxvideo
  kernel module. The X Server 1.13 doesn't load it anymore. (Closes: #686994)
* Update man pages. (Closes: #680053)
* Add 36-python-multiarch.patch from Rico Tzschichholz to fix detection of
  python in multiarch paths using pkg-config.

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
/** @todo r=bird: Cut&Past rules... Please fix DHCP refs! */
6
6
 
7
7
/*
8
 
 * Copyright (C) 2009 Oracle Corporation
 
8
 * Copyright (C) 2009-2011 Oracle Corporation
9
9
 *
10
10
 * This file is part of VirtualBox Open Source Edition (OSE), as
11
11
 * available from http://www.virtualbox.org. This file is free software;
16
16
 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
17
17
 */
18
18
 
19
 
/** @page pg_net_dhcp       VBoxNetDHCP
20
 
 *
21
 
 * Write a few words...
22
 
 *
23
 
 */
24
 
 
25
19
/*******************************************************************************
26
20
*   Header Files                                                               *
27
21
*******************************************************************************/
38
32
#include <iprt/stream.h>
39
33
#include <iprt/string.h>
40
34
#include <iprt/time.h>
 
35
#include <iprt/mem.h>
41
36
 
42
37
#include <VBox/sup.h>
43
38
#include <VBox/intnet.h>
51
46
 
52
47
#include "VBoxNetLib.h"
53
48
#include "VBoxNetBaseService.h"
54
 
#include "VBoxNetLib.h"
55
 
#include "VBoxNetBaseService.h"
56
49
 
57
50
#ifdef RT_OS_WINDOWS /* WinMain */
58
51
# include <Windows.h>
63
56
/*******************************************************************************
64
57
*   Structures and Typedefs                                                    *
65
58
*******************************************************************************/
 
59
static RTGETOPTDEF g_aGetOptDef[] =
 
60
{
 
61
    { "--name",           'N',   RTGETOPT_REQ_STRING },
 
62
    { "--network",        'n',   RTGETOPT_REQ_STRING },
 
63
    { "--trunk-name",     't',   RTGETOPT_REQ_STRING },
 
64
    { "--trunk-type",     'T',   RTGETOPT_REQ_STRING },
 
65
    { "--mac-address",    'a',   RTGETOPT_REQ_MACADDR },
 
66
    { "--ip-address",     'i',   RTGETOPT_REQ_IPV4ADDR },
 
67
    { "--verbose",        'v',   RTGETOPT_REQ_NOTHING },
 
68
};
66
69
VBoxNetBaseService::VBoxNetBaseService()
67
70
{
68
 
    /* numbers from DrvIntNet */
69
 
    m_cbSendBuf             =  36 * _1K;
70
 
    m_cbRecvBuf             = 218 * _1K;
71
 
    m_hIf                   = INTNET_HANDLE_INVALID;
72
 
    m_pIfBuf                = NULL;
73
 
 
74
 
    m_cVerbosity            = 0;
75
 
    m_Name                  = "VBoxNetNAT";
76
 
    m_Network               = "intnet";
77
71
}
78
72
VBoxNetBaseService::~VBoxNetBaseService()
79
73
{
98
92
        m_pSession = NIL_RTR0PTR;
99
93
    }
100
94
}
 
95
 
 
96
int VBoxNetBaseService::init()
 
97
{
 
98
    /* numbers from DrvIntNet */
 
99
    m_cbSendBuf             =  36 * _1K;
 
100
    m_cbRecvBuf             = 218 * _1K;
 
101
    m_hIf                   = INTNET_HANDLE_INVALID;
 
102
    m_pIfBuf                = NULL;
 
103
 
 
104
    m_cVerbosity            = 0;
 
105
    m_Name                  = "VBoxNetNAT";
 
106
    m_Network               = "intnet";
 
107
    for(unsigned int i = 0; i < RT_ELEMENTS(g_aGetOptDef); ++i)
 
108
        m_vecOptionDefs.push_back(&g_aGetOptDef[i]);
 
109
    return VINF_SUCCESS;
 
110
}
101
111
/**
102
112
 * Parse the arguments.
103
113
 *
108
118
 */
109
119
int VBoxNetBaseService::parseArgs(int argc, char **argv)
110
120
{
111
 
    static const RTGETOPTDEF s_aOptionDefs[] =
112
 
    {
113
 
        { "--name",           'N',   RTGETOPT_REQ_STRING },
114
 
        { "--network",        'n',   RTGETOPT_REQ_STRING },
115
 
        { "--trunk-name",     't',   RTGETOPT_REQ_STRING },
116
 
        { "--trunk-type",     'T',   RTGETOPT_REQ_STRING },
117
 
        { "--mac-address",    'a',   RTGETOPT_REQ_MACADDR },
118
 
        { "--ip-address",     'i',   RTGETOPT_REQ_IPV4ADDR },
119
 
        { "--verbose",        'v',   RTGETOPT_REQ_NOTHING },
120
 
    };
121
121
 
122
122
    RTGETOPTSTATE State;
123
 
    int rc = RTGetOptInit(&State, argc, argv, &s_aOptionDefs[0], RT_ELEMENTS(s_aOptionDefs), 0, 0 /*fFlags*/);
 
123
    PRTGETOPTDEF paOptionArray = getOptionsPtr();
 
124
    int rc = RTGetOptInit(&State, argc, argv, paOptionArray, m_vecOptionDefs.size(), 0, 0 /*fFlags*/);
124
125
    AssertRCReturn(rc, 49);
125
126
    Log2(("BaseService: parseArgs enter\n"));
126
127
 
182
183
                         "\n"
183
184
                         "Options:\n",
184
185
                         RTBldCfgVersion());
185
 
                for (size_t i = 0; i < RT_ELEMENTS(s_aOptionDefs); i++)
186
 
                    RTPrintf("    -%c, %s\n", s_aOptionDefs[i].iShort, s_aOptionDefs[i].pszLong);
 
186
                for (unsigned int i = 0; i < m_vecOptionDefs.size(); i++)
 
187
                    RTPrintf("    -%c, %s\n", m_vecOptionDefs[i]->iShort, m_vecOptionDefs[i]->pszLong);
187
188
                usage(); /* to print Service Specific usage */
188
189
                return 1;
189
190
 
190
191
            default:
191
 
                rc = RTGetOptPrintError(rc, &Val);
192
 
                RTPrintf("Use --help for more information.\n");
193
 
                return rc;
 
192
                int rc1 = parseOpt(rc, Val);
 
193
                if (RT_FAILURE(rc1))
 
194
                {
 
195
                    rc = RTGetOptPrintError(rc, &Val);
 
196
                    RTPrintf("Use --help for more information.\n");
 
197
                    return rc;
 
198
                }
194
199
        }
195
200
    }
196
201
 
 
202
    RTMemFree(paOptionArray);
197
203
    return rc;
198
204
}
199
205
 
342
348
 
343
349
}
344
350
 
 
351
PRTGETOPTDEF VBoxNetBaseService::getOptionsPtr()
 
352
{
 
353
    PRTGETOPTDEF pOptArray = NULL;
 
354
    pOptArray = (PRTGETOPTDEF)RTMemAlloc(sizeof(RTGETOPTDEF) * m_vecOptionDefs.size());
 
355
    if (!pOptArray)
 
356
        return NULL;
 
357
    for (unsigned int i = 0; i < m_vecOptionDefs.size(); ++i)
 
358
    {
 
359
        PRTGETOPTDEF pOpt = m_vecOptionDefs[i];
 
360
        memcpy(&pOptArray[i], m_vecOptionDefs[i], sizeof(RTGETOPTDEF));
 
361
    }
 
362
    return pOptArray;
 
363
}