Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(369)

Unified Diff: webrtc/base/network.h

Issue 1411253008: WebRTC should generate default private address even when adapter enumeration is disabled. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: change the signature of GetDefaultPrivateAddress Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/base/network.h
diff --git a/webrtc/base/network.h b/webrtc/base/network.h
index ab3a88dc7dc0c4dd511d5da7aee4b7c035975657..a2753a51755bd6305a9f11c5406fe53219f7342e 100644
--- a/webrtc/base/network.h
+++ b/webrtc/base/network.h
@@ -28,6 +28,9 @@ struct ifaddrs;
namespace rtc {
+extern char kPublicIPv4Host[];
juberti 2015/10/28 23:57:40 Do these need to be exported? They seem like imple
guoweis_webrtc 2015/10/29 03:41:00 I made them exported so chrome could use the same
+extern char kPublicIPv6Host[];
+
class Network;
class NetworkMonitorInterface;
class Thread;
@@ -51,9 +54,16 @@ const int kDefaultNetworkIgnoreMask = ADAPTER_TYPE_LOOPBACK;
std::string MakeNetworkKey(const std::string& name, const IPAddress& prefix,
int prefix_length);
+class DefaultAddressProvider {
+ public:
+ virtual ~DefaultAddressProvider() = default;
+ virtual bool GetDefaultPrivateAddress(int family,
juberti 2015/10/28 23:57:40 The address may not be private. Perhaps GetDefault
guoweis_webrtc 2015/10/29 03:41:00 Done.
+ IPAddress* ipaddr) const = 0;
+};
+
// Generic network manager interface. It provides list of local
// networks.
-class NetworkManager {
+class NetworkManager : public DefaultAddressProvider {
public:
typedef std::vector<Network*> NetworkList;
@@ -67,7 +77,7 @@ class NetworkManager {
};
NetworkManager();
- virtual ~NetworkManager();
+ ~NetworkManager() override;
// Called when network list is updated.
sigslot::signal0<> SignalNetworksChanged;
@@ -99,6 +109,8 @@ class NetworkManager {
// TODO(guoweis): remove this body when chromium implements this.
virtual void GetAnyAddressNetworks(NetworkList* networks) {}
+ bool GetDefaultPrivateAddress(int family, IPAddress* ipaddr) const override;
+
// Dumps a list of networks available to LS_INFO.
virtual void DumpNetworks(bool include_ignored) {}
@@ -128,6 +140,8 @@ class NetworkManagerBase : public NetworkManager {
EnumerationPermission enumeration_permission() const override;
+ bool GetDefaultPrivateAddress(int family, IPAddress* ipaddr) const override;
+
protected:
typedef std::map<std::string, Network*> NetworkMap;
// Updates |networks_| with the networks listed in |list|. If
@@ -146,6 +160,8 @@ class NetworkManagerBase : public NetworkManager {
enumeration_permission_ = state;
}
+ void set_default_private_address(const IPAddress& ip);
+
private:
friend class NetworkTest;
@@ -159,6 +175,9 @@ class NetworkManagerBase : public NetworkManager {
rtc::scoped_ptr<rtc::Network> ipv4_any_address_network_;
rtc::scoped_ptr<rtc::Network> ipv6_any_address_network_;
+
+ IPAddress default_ipv4_address_;
+ IPAddress default_ipv6_address_;
};
// Basic implementation of the NetworkManager interface that gets list
@@ -220,6 +239,8 @@ class BasicNetworkManager : public NetworkManagerBase,
// based on the network's property instead of any individual IP.
bool IsIgnoredNetwork(const Network& network) const;
+ IPAddress UpdateDefaultPrivateAddress(int family);
+
private:
friend class NetworkTest;
@@ -247,13 +268,23 @@ class BasicNetworkManager : public NetworkManagerBase,
// Represents a Unix-type network interface, with a name and single address.
class Network {
public:
- Network(const std::string& name, const std::string& description,
- const IPAddress& prefix, int prefix_length);
-
- Network(const std::string& name, const std::string& description,
- const IPAddress& prefix, int prefix_length, AdapterType type);
+ Network(const std::string& name,
+ const std::string& description,
+ const IPAddress& prefix,
+ int prefix_length);
+
+ Network(const std::string& name,
+ const std::string& description,
+ const IPAddress& prefix,
+ int prefix_length,
+ AdapterType type);
~Network();
+ const DefaultAddressProvider* default_address_provider() { return provider_; }
+ void set_default_address_provider(const DefaultAddressProvider* provider) {
+ provider_ = provider;
+ }
+
// Returns the name of the interface this network is associated wtih.
const std::string& name() const { return name_; }
@@ -323,6 +354,7 @@ class Network {
std::string ToString() const;
private:
+ const DefaultAddressProvider* provider_ = nullptr;
std::string name_;
std::string description_;
IPAddress prefix_;

Powered by Google App Engine
This is Rietveld 408576698