VirtualBox

source: vbox/trunk/src/VBox/Main/include/CloudGateway.h

Last change on this file was 98103, checked in by vboxsync, 16 months ago

Copyright year updates by scm.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.3 KB
Line 
1/* $Id: CloudGateway.h 98103 2023-01-17 14:15:46Z vboxsync $ */
2/** @file
3 * Implementation of local and cloud gateway management.
4 */
5
6/*
7 * Copyright (C) 2019-2023 Oracle and/or its affiliates.
8 *
9 * This file is part of VirtualBox base platform packages, as
10 * available from https://www.virtualbox.org.
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation, in version 3 of the
15 * License.
16 *
17 * This program is distributed in the hope that it will be useful, but
18 * WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License
23 * along with this program; if not, see <https://www.gnu.org/licenses>.
24 *
25 * SPDX-License-Identifier: GPL-3.0-only
26 */
27
28#ifndef MAIN_INCLUDED_CloudGateway_h
29#define MAIN_INCLUDED_CloudGateway_h
30#ifndef RT_WITHOUT_PRAGMA_ONCE
31# pragma once
32#endif
33
34struct GatewayInfo
35{
36 Bstr mTargetVM;
37 Utf8Str mGatewayInstanceId;
38 Utf8Str mPublicSshKey;
39 Utf8Str mPrivateSshKey;
40 Bstr mCloudProvider;
41 Bstr mCloudProfile;
42 Utf8Str mCloudPublicIp;
43 Utf8Str mCloudSecondaryPublicIp;
44 RTMAC mCloudMacAddress;
45 RTMAC mLocalMacAddress;
46 int mAdapterSlot;
47
48 HRESULT setCloudMacAddress(const Utf8Str& mac);
49 HRESULT setLocalMacAddress(const Utf8Str& mac);
50
51 GatewayInfo() {}
52
53 GatewayInfo(const GatewayInfo& other)
54 : mGatewayInstanceId(other.mGatewayInstanceId),
55 mPublicSshKey(other.mPublicSshKey),
56 mPrivateSshKey(other.mPrivateSshKey),
57 mCloudProvider(other.mCloudProvider),
58 mCloudProfile(other.mCloudProfile),
59 mCloudPublicIp(other.mCloudPublicIp),
60 mCloudSecondaryPublicIp(other.mCloudSecondaryPublicIp),
61 mCloudMacAddress(other.mCloudMacAddress),
62 mLocalMacAddress(other.mLocalMacAddress),
63 mAdapterSlot(other.mAdapterSlot)
64 {}
65
66 GatewayInfo& operator=(const GatewayInfo& other)
67 {
68 mGatewayInstanceId = other.mGatewayInstanceId;
69 mPublicSshKey = other.mPublicSshKey;
70 mPrivateSshKey = other.mPrivateSshKey;
71 mCloudProvider = other.mCloudProvider;
72 mCloudProfile = other.mCloudProfile;
73 mCloudPublicIp = other.mCloudPublicIp;
74 mCloudSecondaryPublicIp = other.mCloudSecondaryPublicIp;
75 mCloudMacAddress = other.mCloudMacAddress;
76 mLocalMacAddress = other.mLocalMacAddress;
77 mAdapterSlot = other.mAdapterSlot;
78 return *this;
79 }
80
81 void setNull()
82 {
83 mGatewayInstanceId.setNull();
84 mPublicSshKey.setNull();
85 mPrivateSshKey.setNull();
86 mCloudProvider.setNull();
87 mCloudProfile.setNull();
88 mCloudPublicIp.setNull();
89 mCloudSecondaryPublicIp.setNull();
90 memset(&mCloudMacAddress, 0, sizeof(mCloudMacAddress));
91 memset(&mLocalMacAddress, 0, sizeof(mLocalMacAddress));
92 mAdapterSlot = -1;
93 }
94};
95
96class CloudNetwork;
97
98HRESULT startCloudGateway(ComPtr<IVirtualBox> virtualBox, ComPtr<ICloudNetwork> network, GatewayInfo& pGateways);
99HRESULT stopCloudGateway(ComPtr<IVirtualBox> virtualBox, GatewayInfo& gateways);
100HRESULT generateKeys(GatewayInfo& gateways);
101
102#endif /* !MAIN_INCLUDED_CloudGateway_h */
103
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use