summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Swiften/FileTransfer/ConnectivityManager.cpp5
-rw-r--r--Swiften/Network/NATPMPNATTraversalRemovePortForwardingRequest.cpp15
-rw-r--r--Swiften/Network/NATPMPNATTraversalRemovePortForwardingRequest.h3
-rw-r--r--Swiften/Network/NetworkEnvironment.cpp32
-rw-r--r--Swiften/Network/NetworkEnvironment.h13
-rw-r--r--Swiften/Network/NetworkInterface.h55
-rw-r--r--Swiften/Network/SConscript1
-rw-r--r--Swiften/Network/UPnPNATTraversalForwardPortRequest.cpp17
-rw-r--r--Swiften/Network/UPnPNATTraversalForwardPortRequest.h3
-rw-r--r--Swiften/Network/UPnPNATTraversalRemovePortForwardingRequest.cpp17
-rw-r--r--Swiften/Network/UPnPNATTraversalRemovePortForwardingRequest.h3
-rw-r--r--Swiften/Network/UnixNetworkEnvironment.cpp52
-rw-r--r--Swiften/Network/UnixNetworkEnvironment.h38
-rw-r--r--Swiften/Network/WindowsNetworkEnvironment.cpp12
-rw-r--r--Swiften/Network/WindowsNetworkEnvironment.h43
15 files changed, 108 insertions, 201 deletions
diff --git a/Swiften/FileTransfer/ConnectivityManager.cpp b/Swiften/FileTransfer/ConnectivityManager.cpp
index cfb0729..1002b45 100644
--- a/Swiften/FileTransfer/ConnectivityManager.cpp
+++ b/Swiften/FileTransfer/ConnectivityManager.cpp
@@ -53,20 +53,21 @@ void ConnectivityManager::removeListeningPort(int port) {
}
}
std::vector<HostAddressPort> ConnectivityManager::getHostAddressPorts() const {
PlatformNetworkEnvironment env;
std::vector<HostAddressPort> results;
std::vector<HostAddress> addresses;
- foreach (NetworkInterface::ref iface, env.getNetworkInterfaces()) {
- foreach (HostAddress address, iface->getAddresses()) {
+ std::vector<NetworkInterface> networkInterfaces;
+ foreach (const NetworkInterface& iface, networkInterfaces) {
+ foreach (const HostAddress& address, iface.getAddresses()) {
foreach (int port, ports) {
results.push_back(HostAddressPort(address, port));
}
}
}
return results;
}
diff --git a/Swiften/Network/NATPMPNATTraversalRemovePortForwardingRequest.cpp b/Swiften/Network/NATPMPNATTraversalRemovePortForwardingRequest.cpp
index a21383c..8ba20a6 100644
--- a/Swiften/Network/NATPMPNATTraversalRemovePortForwardingRequest.cpp
+++ b/Swiften/Network/NATPMPNATTraversalRemovePortForwardingRequest.cpp
@@ -61,25 +61,10 @@ void NATPMPNATTraversalRemovePortForwardingRequest::runBlocking() {
result = boost::optional<bool>(false);
SWIFT_LOG(debug) << "Inavlid NAT-PMP response." << std::endl;
}
} while(false);
closenatpmp(&natpmp);
onResult(result);
}
-HostAddress NATPMPNATTraversalRemovePortForwardingRequest::getLocalClient() {
- PlatformNetworkEnvironment env;
-
- foreach (NetworkInterface::ref iface, env.getNetworkInterfaces()) {
- if (!iface->isLoopback()) {
- foreach (HostAddress address, iface->getAddresses()) {
- if (address.getRawAddress().is_v4()) {
- return address;
- }
- }
- }
- }
- return HostAddress();
-}
-
}
diff --git a/Swiften/Network/NATPMPNATTraversalRemovePortForwardingRequest.h b/Swiften/Network/NATPMPNATTraversalRemovePortForwardingRequest.h
index 3eb2b15..aefbdc0 100644
--- a/Swiften/Network/NATPMPNATTraversalRemovePortForwardingRequest.h
+++ b/Swiften/Network/NATPMPNATTraversalRemovePortForwardingRequest.h
@@ -17,16 +17,13 @@ public:
virtual ~NATPMPNATTraversalRemovePortForwardingRequest();
virtual void runBlocking();
virtual void run() {
doRun();
}
private:
- HostAddress getLocalClient();
-
-private:
PortMapping mapping;
};
}
diff --git a/Swiften/Network/NetworkEnvironment.cpp b/Swiften/Network/NetworkEnvironment.cpp
new file mode 100644
index 0000000..52ceb01
--- /dev/null
+++ b/Swiften/Network/NetworkEnvironment.cpp
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2011 Remko Tronçon
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#include <Swiften/Network/NetworkEnvironment.h>
+
+#include <Swiften/Network/NetworkInterface.h>
+#include <Swiften/Network/HostAddress.h>
+#include <Swiften/Base/foreach.h>
+
+namespace Swift {
+
+NetworkEnvironment::~NetworkEnvironment() {
+}
+
+HostAddress NetworkEnvironment::getLocalAddress() const {
+ std::vector<NetworkInterface> networkInterfaces = getNetworkInterfaces();
+ foreach (const NetworkInterface& iface, networkInterfaces) {
+ if (!iface.isLoopback()) {
+ foreach (const HostAddress& address, iface.getAddresses()) {
+ if (address.getRawAddress().is_v4()) {
+ return address;
+ }
+ }
+ }
+ }
+ return HostAddress();
+}
+
+}
diff --git a/Swiften/Network/NetworkEnvironment.h b/Swiften/Network/NetworkEnvironment.h
index 348bdb9..fbff0cb 100644
--- a/Swiften/Network/NetworkEnvironment.h
+++ b/Swiften/Network/NetworkEnvironment.h
@@ -6,19 +6,18 @@
#pragma once
#include <vector>
#include <Swiften/Base/boost_bsignals.h>
#include <Swiften/Network/NetworkInterface.h>
namespace Swift {
+ class NetworkEnvironment {
+ public:
+ virtual ~NetworkEnvironment();
-class NetworkEnvironment {
-public:
- virtual ~NetworkEnvironment() {};
- virtual std::vector<NetworkInterface::ref> getNetworkInterfaces() = 0;
-
- boost::signal <void (NetworkInterface::ref)> onNetworkInterfaceChange;
-};
+ virtual std::vector<NetworkInterface> getNetworkInterfaces() const = 0;
+ HostAddress getLocalAddress() const;
+ };
}
diff --git a/Swiften/Network/NetworkInterface.h b/Swiften/Network/NetworkInterface.h
index 062e1f9..6395758 100644
--- a/Swiften/Network/NetworkInterface.h
+++ b/Swiften/Network/NetworkInterface.h
@@ -1,35 +1,50 @@
/*
* Copyright (c) 2011 Tobias Markmann
* Licensed under the simplified BSD license.
* See Documentation/Licenses/BSD-simplified.txt for more information.
*/
#pragma once
#include <vector>
-#include <boost/shared_ptr.hpp>
#include <Swiften/Network/HostAddress.h>
namespace Swift {
-
-class NetworkInterface {
-public:
- typedef boost::shared_ptr<NetworkInterface> ref;
-
-public:
- enum InterfaceType {
- WLAN,
- Ethernet,
- Mobile,
- VPN,
+ class NetworkInterface {
+ public:
+ enum Type {
+ Unknown,
+ WLAN,
+ Ethernet,
+ Mobile,
+ VPN,
+ };
+
+ public:
+ NetworkInterface(const std::string& name, bool loopback, Type type = Unknown) : name(name), loopback(loopback), type(type) {
+ }
+
+ void addAddress(const HostAddress& address) {
+ addresses.push_back(address);
+ }
+
+ const std::vector<HostAddress>& getAddresses() const {
+ return addresses;
+ }
+
+ const std::string& getName() const {
+ return name;
+ }
+
+ bool isLoopback() const {
+ return loopback;
+ }
+
+ private:
+ std::string name;
+ bool loopback;
+ Type type;
+ std::vector<HostAddress> addresses;
};
-
-public:
- virtual ~NetworkInterface() {};
- virtual std::vector<HostAddress> getAddresses() = 0;
- virtual std::string getName() = 0;
- virtual bool isLoopback() = 0;
-};
-
}
diff --git a/Swiften/Network/SConscript b/Swiften/Network/SConscript
index 66dd974..e44f868 100644
--- a/Swiften/Network/SConscript
+++ b/Swiften/Network/SConscript
@@ -31,18 +31,19 @@ sourceList = [
"DomainNameServiceQuery.cpp",
"PlatformDomainNameResolver.cpp",
"PlatformDomainNameServiceQuery.cpp",
"PlatformDomainNameAddressQuery.cpp",
"StaticDomainNameResolver.cpp",
"HostAddress.cpp",
"HostAddressPort.cpp",
"NetworkFactories.cpp",
"BoostNetworkFactories.cpp",
+ "NetworkEnvironment.cpp",
"Timer.cpp",
"BoostTimer.cpp",
"ProxyProvider.cpp",
"NullProxyProvider.cpp",
"NATTraverser.cpp",
"NullNATTraverser.cpp",
"NATTraversalGetPublicIPRequest.cpp",
"NATTraversalForwardPortRequest.cpp",
"NATTraversalRemovePortForwardingRequest.cpp",
diff --git a/Swiften/Network/UPnPNATTraversalForwardPortRequest.cpp b/Swiften/Network/UPnPNATTraversalForwardPortRequest.cpp
index 065efbc..6fcc01a 100644
--- a/Swiften/Network/UPnPNATTraversalForwardPortRequest.cpp
+++ b/Swiften/Network/UPnPNATTraversalForwardPortRequest.cpp
@@ -29,19 +29,19 @@ UPnPNATTraversalForwardPortRequest::~UPnPNATTraversalForwardPortRequest() {
void UPnPNATTraversalForwardPortRequest::runBlocking() {
boost::optional<PortMapping> result;
UPNPDev* deviceList = 0;
int error = 0;
char lanAddrress[64];
std::string publicPort = str(boost::format("%d") % mapping.publicPort);
std::string localPort = str(boost::format("%d") % mapping.localPort);
- std::string internalClient = getLocalClient().toString();
+ std::string internalClient = PlatformNetworkEnvironment().getLocalAddress().toString();
std::string leaseSeconds = str(boost::format("%d") % mapping.leaseInSeconds);
UPNPUrls urls;
IGDdatas data;
do {
// find valid IGD
deviceList = upnpDiscover(1500 /* timeout in ms */, 0, 0, 0, 0 /* do IPv6? */, &error);
if (!deviceList) {
break;
@@ -62,25 +62,10 @@ void UPnPNATTraversalForwardPortRequest::runBlocking() {
result = boost::optional<NATTraversalForwardPortRequest::PortMapping>(mapping);
}
} while(false);
freeUPNPDevlist(deviceList); deviceList = 0;
onResult(result);
}
-HostAddress UPnPNATTraversalForwardPortRequest::getLocalClient() {
- PlatformNetworkEnvironment env;
-
- foreach (NetworkInterface::ref iface, env.getNetworkInterfaces()) {
- if (!iface->isLoopback()) {
- foreach (HostAddress address, iface->getAddresses()) {
- if (address.getRawAddress().is_v4()) {
- return address;
- }
- }
- }
- }
- return HostAddress();
-}
-
}
diff --git a/Swiften/Network/UPnPNATTraversalForwardPortRequest.h b/Swiften/Network/UPnPNATTraversalForwardPortRequest.h
index ae63a80..777ab26 100644
--- a/Swiften/Network/UPnPNATTraversalForwardPortRequest.h
+++ b/Swiften/Network/UPnPNATTraversalForwardPortRequest.h
@@ -17,16 +17,13 @@ public:
virtual ~UPnPNATTraversalForwardPortRequest();
virtual void runBlocking();
virtual void run() {
doRun();
}
private:
- HostAddress getLocalClient();
-
-private:
NATTraversalForwardPortRequest::PortMapping mapping;
};
}
diff --git a/Swiften/Network/UPnPNATTraversalRemovePortForwardingRequest.cpp b/Swiften/Network/UPnPNATTraversalRemovePortForwardingRequest.cpp
index 6e4d0eb..9b83173 100644
--- a/Swiften/Network/UPnPNATTraversalRemovePortForwardingRequest.cpp
+++ b/Swiften/Network/UPnPNATTraversalRemovePortForwardingRequest.cpp
@@ -30,19 +30,19 @@ UPnPNATTraversalRemovePortForwardingRequest::~UPnPNATTraversalRemovePortForwardi
void UPnPNATTraversalRemovePortForwardingRequest::runBlocking() {
boost::optional<bool> result;
UPNPDev* deviceList = 0;
int error = 0;
char lanAddrress[64];
std::string publicPort = str(boost::format("%d") % mapping.publicPort);
std::string localPort = str(boost::format("%d") % mapping.localPort);
- std::string internalClient = getLocalClient().toString();
+ std::string internalClient = PlatformNetworkEnvironment().getLocalAddress().toString();
std::string leaseSeconds = str(boost::format("%d") % mapping.leaseInSeconds);
UPNPUrls urls;
IGDdatas data;
do {
// find valid IGD
deviceList = upnpDiscover(1500 /* timeout in ms */, 0, 0, 0, 0 /* do IPv6? */, &error);
if (!deviceList) {
break;
@@ -68,25 +68,10 @@ void UPnPNATTraversalRemovePortForwardingRequest::runBlocking() {
result = false;
}
} while(false);
freeUPNPDevlist(deviceList); deviceList = 0;
onResult(result);
}
-HostAddress UPnPNATTraversalRemovePortForwardingRequest::getLocalClient() {
- PlatformNetworkEnvironment env;
-
- foreach (NetworkInterface::ref iface, env.getNetworkInterfaces()) {
- if (!iface->isLoopback()) {
- foreach (HostAddress address, iface->getAddresses()) {
- if (address.getRawAddress().is_v4()) {
- return address;
- }
- }
- }
- }
- return HostAddress();
-}
-
}
diff --git a/Swiften/Network/UPnPNATTraversalRemovePortForwardingRequest.h b/Swiften/Network/UPnPNATTraversalRemovePortForwardingRequest.h
index af6d3b0..644eae7 100644
--- a/Swiften/Network/UPnPNATTraversalRemovePortForwardingRequest.h
+++ b/Swiften/Network/UPnPNATTraversalRemovePortForwardingRequest.h
@@ -17,16 +17,13 @@ public:
virtual ~UPnPNATTraversalRemovePortForwardingRequest();
virtual void runBlocking();
virtual void run() {
doRun();
}
private:
- HostAddress getLocalClient();
-
-private:
NATTraversalRemovePortForwardingRequest::PortMapping mapping;
};
}
diff --git a/Swiften/Network/UnixNetworkEnvironment.cpp b/Swiften/Network/UnixNetworkEnvironment.cpp
index 649855d..52c5cbe 100644
--- a/Swiften/Network/UnixNetworkEnvironment.cpp
+++ b/Swiften/Network/UnixNetworkEnvironment.cpp
@@ -1,74 +1,60 @@
/*
* Copyright (c) 2011 Tobias Markmann
* Licensed under the simplified BSD license.
* See Documentation/Licenses/BSD-simplified.txt for more information.
*/
-#include "UnixNetworkEnvironment.h"
+#include <Swiften/Network/UnixNetworkEnvironment.h>
#include <string>
#include <vector>
#include <map>
-
-#include <boost/shared_ptr.hpp>
-#include <boost/smart_ptr/make_shared.hpp>
-#include <Swiften/Base/boost_bsignals.h>
-#include <Swiften/Network/HostAddress.h>
-#include <Swiften/Network/NetworkInterface.h>
-
+#include <boost/optional.hpp>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <net/if.h>
#include <ifaddrs.h>
+#include <Swiften/Base/boost_bsignals.h>
+#include <Swiften/Network/HostAddress.h>
+#include <Swiften/Network/NetworkInterface.h>
+
namespace Swift {
-std::vector<NetworkInterface::ref> UnixNetworkEnvironment::getNetworkInterfaces() {
- std::map<std::string, UnixNetworkInterface::ref> interfaces;
- std::vector<NetworkInterface::ref> result;
+std::vector<NetworkInterface> UnixNetworkEnvironment::getNetworkInterfaces() const {
+ std::map<std::string, NetworkInterface> interfaces;
- ifaddrs *addrs = 0;
+ ifaddrs* addrs = 0;
int ret = getifaddrs(&addrs);
if (ret != 0) {
- return result;
+ return std::vector<NetworkInterface>();
}
- for (ifaddrs *a = addrs; a != 0; a = a->ifa_next) {
+ for (ifaddrs* a = addrs; a != 0; a = a->ifa_next) {
std::string name(a->ifa_name);
- std::string ip;
+ boost::optional<HostAddress> address;
if (a->ifa_addr->sa_family == PF_INET) {
sockaddr_in* sa = reinterpret_cast<sockaddr_in*>(a->ifa_addr);
- char str[INET_ADDRSTRLEN];
- inet_ntop(AF_INET, &(sa->sin_addr), str, INET_ADDRSTRLEN);
- ip.assign(str);
+ address = HostAddress(reinterpret_cast<const unsigned char*>(&(sa->sin_addr)), 4);
}
else if (a->ifa_addr->sa_family == PF_INET6) {
sockaddr_in6* sa = reinterpret_cast<sockaddr_in6*>(a->ifa_addr);
- char str[INET6_ADDRSTRLEN];
- /*if (IN6_IS_ADDR_LINKLOCAL(sa)) {
- continue;
- }*/
- inet_ntop(AF_INET6, &(sa->sin6_addr), str, INET6_ADDRSTRLEN);
- ip.assign(str);
+ address = HostAddress(reinterpret_cast<const unsigned char*>(&(sa->sin6_addr)), 16);
}
- if (!ip.empty()) {
- if (interfaces.find(name) == interfaces.end()) {
- interfaces[name] = boost::make_shared<UnixNetworkInterface>(name);
- if (a->ifa_flags & IFF_LOOPBACK) {
- interfaces[name]->setLoopback(true);
- }
- }
- interfaces[name]->addHostAddress(HostAddress(ip));
+ if (address) {
+ std::map<std::string, NetworkInterface>::iterator i = interfaces.insert(std::make_pair(name, NetworkInterface(name, a->ifa_flags & IFF_LOOPBACK))).first;
+ i->second.addAddress(*address);
}
}
freeifaddrs(addrs);
- for(std::map<std::string, UnixNetworkInterface::ref>::iterator i = interfaces.begin(); i != interfaces.end(); ++i) {
+ std::vector<NetworkInterface> result;
+ for (std::map<std::string,NetworkInterface>::const_iterator i = interfaces.begin(); i != interfaces.end(); ++i) {
result.push_back(i->second);
}
return result;
}
}
diff --git a/Swiften/Network/UnixNetworkEnvironment.h b/Swiften/Network/UnixNetworkEnvironment.h
index e4b2f37..8b51cae 100644
--- a/Swiften/Network/UnixNetworkEnvironment.h
+++ b/Swiften/Network/UnixNetworkEnvironment.h
@@ -10,50 +10,14 @@
#include <Swiften/Base/boost_bsignals.h>
#include <Swiften/Network/NetworkEnvironment.h>
#include <Swiften/Network/NetworkInterface.h>
namespace Swift {
class UnixNetworkEnvironment : public NetworkEnvironment {
- class UnixNetworkInterface : public NetworkInterface {
public:
- typedef boost::shared_ptr<UnixNetworkInterface> ref;
-
- public:
- UnixNetworkInterface(std::string name) : name(name), loopback(false) { }
-
- std::vector<HostAddress> getAddresses() {
- return addresses;
- }
-
- std::string getName() {
- return name;
- }
-
- bool isLoopback() {
- return loopback;
- }
-
- private:
- void addHostAddress(HostAddress address) {
- addresses.push_back(address);
- }
-
- void setLoopback(bool loopback) {
- this->loopback = loopback;
- }
-
- private:
- friend class UnixNetworkEnvironment;
- std::vector<HostAddress> addresses;
- std::string name;
- InterfaceType type;
- bool loopback;
- };
-
-public:
- std::vector<NetworkInterface::ref> getNetworkInterfaces();
+ std::vector<NetworkInterface> getNetworkInterfaces() const;
};
}
diff --git a/Swiften/Network/WindowsNetworkEnvironment.cpp b/Swiften/Network/WindowsNetworkEnvironment.cpp
index 5163f43..0eedea0 100644
--- a/Swiften/Network/WindowsNetworkEnvironment.cpp
+++ b/Swiften/Network/WindowsNetworkEnvironment.cpp
@@ -1,16 +1,16 @@
/*
* Copyright (c) 2011 Tobias Markmann
* Licensed under the simplified BSD license.
* See Documentation/Licenses/BSD-simplified.txt for more information.
*/
-#include "WindowsNetworkEnvironment.h"
+#include <Swiften/Network/WindowsNetworkEnvironment.h>
#include <string>
#include <vector>
#include <map>
#include <boost/shared_ptr.hpp>
#include <boost/smart_ptr/make_shared.hpp>
#include <Swiften/Base/boost_bsignals.h>
#include <Swiften/Network/HostAddress.h>
@@ -27,21 +27,21 @@ std::string winSocketAddressToStdString(const SOCKET_ADDRESS& socketAddress) {
std::string result;
int ret = WSAAddressToString(socketAddress.lpSockaddr, socketAddress.iSockaddrLength, NULL, text, &bufferSize);
if (ret == 0) {
result.assign(text, sizeof(text));
}
return result;
}
-std::vector<NetworkInterface::ref> WindowsNetworkEnvironment::getNetworkInterfaces() {
- std::map<std::string, WindowsNetworkInterface::ref> interfaces;
- std::vector<NetworkInterface::ref> result;
+std::vector<NetworkInterface> WindowsNetworkEnvironment::getNetworkInterfaces() {
+ std::vector<NetworkInterface> result;
+ std::map<std::string, WindowsNetworkInterface> interfaces;
IP_ADAPTER_ADDRESSES preBuffer[5];
PIP_ADAPTER_ADDRESSES adapterStart = preBuffer;
ULONG bufferSize = sizeof(preBuffer);
ULONG flags = GAA_FLAG_INCLUDE_ALL_INTERFACES | GAA_FLAG_INCLUDE_PREFIX | GAA_FLAG_SKIP_MULTICAST | GAA_FLAG_SKIP_DNS_SERVER;
ULONG ret = GetAdaptersAddresses( AF_UNSPEC, flags, NULL, adapterStart, &bufferSize);
@@ -72,26 +72,26 @@ std::vector<NetworkInterface::ref> WindowsNetworkEnvironment::getNetworkInterfac
if (address->Address.lpSockaddr->sa_family == PF_INET ||
address->Address.lpSockaddr->sa_family == PF_INET6) {
ip = winSocketAddressToStdString(address->Address);
if (!ip.empty()) {
if (interfaces.find(name) == interfaces.end()) {
interfaces[name] = boost::make_shared<WindowsNetworkInterface>();
interfaces[name]->setName(name);
}
- interfaces[name]->addHostAddress(HostAddress(ip));
+ interfaces[name]->addAddress(HostAddress(ip));
}
}
}
}
if (adapterStart != preBuffer) {
//delete adapterStart;
}
- for(std::map<std::string, WindowsNetworkInterface::ref>::iterator i = interfaces.begin(); i != interfaces.end(); ++i) {
+ for (std::map<std::string, WindowsNetworkInterface>::const_iterator i = interfaces.begin(); i != interfaces.end(); ++i) {
result.push_back(i->second);
}
return result;
}
}
diff --git a/Swiften/Network/WindowsNetworkEnvironment.h b/Swiften/Network/WindowsNetworkEnvironment.h
index 2b79504..f43b951 100644
--- a/Swiften/Network/WindowsNetworkEnvironment.h
+++ b/Swiften/Network/WindowsNetworkEnvironment.h
@@ -1,56 +1,19 @@
/*
* Copyright (c) 2011 Tobias Markmann
* Licensed under the simplified BSD license.
* See Documentation/Licenses/BSD-simplified.txt for more information.
*/
#pragma once
#include <vector>
-
#include <Swiften/Base/boost_bsignals.h>
#include <Swiften/Network/NetworkEnvironment.h>
-#include <Swiften/Network/NetworkInterface.h>
namespace Swift {
-
-class WindowsNetworkEnvironment : public NetworkEnvironment {
- class WindowsNetworkInterface : public NetworkInterface {
- public:
- typedef boost::shared_ptr<WindowsNetworkInterface> ref;
-
- public:
- virtual ~WindowsNetworkInterface() { }
- virtual std::vector<HostAddress> getAddresses() {
- return addresses;
- }
-
- virtual std::string getName() {
- return name;
- }
-
- virtual bool isLoopback() {
- return false;
- }
-
- public:
- void addHostAddress(HostAddress address) {
- addresses.push_back(address);
- }
-
- void setName(const std::string& name) {
- this->name = name;
- }
-
- private:
- std::vector<HostAddress> addresses;
- InterfaceType type;
- std::string name;
+ class WindowsNetworkEnvironment : public NetworkEnvironment {
+ public:
+ std::vector<NetworkInterface> getNetworkInterfaces() const;
};
-
-public:
- std::vector<NetworkInterface::ref> getNetworkInterfaces();
-};
-
}