VirtualBox

source: vbox/trunk/src/VBox/Main/include/netif.h@ 18719

Last change on this file since 18719 was 18014, checked in by vboxsync, 16 years ago

Host-only static IP persistency and defaults for all platforms except windows.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.3 KB
Line 
1/** @file
2 * Main - Network Interfaces.
3 */
4
5/*
6 * Copyright (C) 2008-2009 Sun Microsystems, Inc.
7 *
8 * This file is part of VirtualBox Open Source Edition (OSE), as
9 * available from http://www.virtualbox.org. This file is free software;
10 * you can redistribute it and/or modify it under the terms of the GNU
11 * General Public License (GPL) as published by the Free Software
12 * Foundation, in version 2 as it comes in the "COPYING" file of the
13 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
15 *
16 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
17 * Clara, CA 95054 USA or visit http://www.sun.com if you need
18 * additional information or have any questions.
19 */
20
21#ifndef ___netif_h
22#define ___netif_h
23
24#include <iprt/cdefs.h>
25#include <iprt/types.h>
26#include <iprt/net.h>
27#include <iprt/asm.h>
28
29#define VBOXNET_IPV4ADDR_DEFAULT "192.168.56.1"
30#define VBOXNET_IPV4MASK_DEFAULT "255.255.255.0"
31
32#if 1
33/**
34 * Encapsulation type.
35 */
36typedef enum NETIFTYPE
37{
38 NETIF_T_UNKNOWN,
39 NETIF_T_ETHERNET,
40 NETIF_T_PPP,
41 NETIF_T_SLIP
42} NETIFTYPE;
43
44/**
45 * Current state of the interface.
46 */
47typedef enum NETIFSTATUS
48{
49 NETIF_S_UNKNOWN,
50 NETIF_S_UP,
51 NETIF_S_DOWN
52} NETIFSTATUS;
53
54/**
55 * Host Network Interface Information.
56 */
57typedef struct NETIFINFO
58{
59 NETIFINFO *pNext;
60 RTNETADDRIPV4 IPAddress;
61 RTNETADDRIPV4 IPNetMask;
62 RTNETADDRIPV6 IPv6Address;
63 RTNETADDRIPV6 IPv6NetMask;
64 BOOL bDhcpEnabled;
65 RTMAC MACAddress;
66 NETIFTYPE enmMediumType;
67 NETIFSTATUS enmStatus;
68 RTUUID Uuid;
69 char szShortName[50];
70 char szName[1];
71} NETIFINFO;
72
73/** Pointer to a network interface info. */
74typedef NETIFINFO *PNETIFINFO;
75/** Pointer to a const network interface info. */
76typedef NETIFINFO const *PCNETIFINFO;
77#endif
78
79int NetIfList(std::list <ComObjPtr <HostNetworkInterface> > &list);
80int NetIfEnableStaticIpConfig(VirtualBox *pVbox, HostNetworkInterface * pIf, ULONG aOldIp, ULONG aNewIp, ULONG aMask);
81int NetIfEnableStaticIpConfigV6(VirtualBox *pVbox, HostNetworkInterface * pIf, IN_BSTR aOldIPV6Address, IN_BSTR aIPV6Address, ULONG aIPV6MaskPrefixLength);
82int NetIfEnableDynamicIpConfig(VirtualBox *pVbox, HostNetworkInterface * pIf);
83int NetIfCreateHostOnlyNetworkInterface (VirtualBox *pVbox, IHostNetworkInterface **aHostNetworkInterface, IProgress **aProgress);
84int NetIfRemoveHostOnlyNetworkInterface (VirtualBox *pVbox, IN_GUID aId, IHostNetworkInterface **aHostNetworkInterface, IProgress **aProgress);
85int NetIfGetConfig(HostNetworkInterface * pIf, NETIFINFO *);
86int NetIfDhcpRediscover(VirtualBox *pVbox, HostNetworkInterface * pIf);
87
88DECLINLINE(Bstr) composeIPv6Address(PRTNETADDRIPV6 aAddrPtr)
89{
90 char szTmp[8*5] = "";
91
92 if (aAddrPtr->s.Lo || aAddrPtr->s.Hi)
93 RTStrPrintf(szTmp, sizeof(szTmp),
94 "%02x%02x:%02x%02x:%02x%02x:%02x%02x:"
95 "%02x%02x:%02x%02x:%02x%02x:%02x%02x",
96 aAddrPtr->au8[0], aAddrPtr->au8[1],
97 aAddrPtr->au8[2], aAddrPtr->au8[3],
98 aAddrPtr->au8[4], aAddrPtr->au8[5],
99 aAddrPtr->au8[6], aAddrPtr->au8[7],
100 aAddrPtr->au8[8], aAddrPtr->au8[9],
101 aAddrPtr->au8[10], aAddrPtr->au8[11],
102 aAddrPtr->au8[12], aAddrPtr->au8[13],
103 aAddrPtr->au8[14], aAddrPtr->au8[15]);
104 return Bstr(szTmp);
105}
106
107DECLINLINE(ULONG) composeIPv6PrefixLenghFromAddress(PRTNETADDRIPV6 aAddrPtr)
108{
109 int res = ASMBitFirstClear(aAddrPtr, sizeof(RTNETADDRIPV6)*8);
110 return res != -1 ? res : 128;
111}
112
113DECLINLINE(int) prefixLength2IPv6Address(ULONG cPrefix, PRTNETADDRIPV6 aAddrPtr)
114{
115 if(cPrefix > 128)
116 return VERR_INVALID_PARAMETER;
117 if(!aAddrPtr)
118 return VERR_INVALID_PARAMETER;
119
120 memset(aAddrPtr, 0, sizeof(RTNETADDRIPV6));
121
122 ASMBitSetRange(aAddrPtr, 0, cPrefix);
123
124 return VINF_SUCCESS;
125}
126
127DECLINLINE(Bstr) composeHardwareAddress(PRTMAC aMacPtr)
128{
129 char szTmp[6*3];
130
131 RTStrPrintf(szTmp, sizeof(szTmp),
132 "%02x:%02x:%02x:%02x:%02x:%02x",
133 aMacPtr->au8[0], aMacPtr->au8[1],
134 aMacPtr->au8[2], aMacPtr->au8[3],
135 aMacPtr->au8[4], aMacPtr->au8[5]);
136 return Bstr(szTmp);
137}
138
139#endif /* ___netif_h */
140/* vi: set tabstop=4 shiftwidth=4 expandtab: */
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