| Index: net/base/network_interfaces_linux.cc | 
| diff --git a/net/base/network_interfaces_linux.cc b/net/base/network_interfaces_linux.cc | 
| index 3c460be2871952a2485326894123ad874d0d4c73..1e506df642566aad88c1f8962e741c75ce560d83 100644 | 
| --- a/net/base/network_interfaces_linux.cc | 
| +++ b/net/base/network_interfaces_linux.cc | 
| @@ -76,7 +76,7 @@ namespace internal { | 
| // or ethtool extensions. | 
| NetworkChangeNotifier::ConnectionType GetInterfaceConnectionType( | 
| const std::string& ifname) { | 
| -  base::ScopedFD s(socket(AF_INET, SOCK_STREAM, 0)); | 
| +  base::ScopedFD s = GetSocketForIoctl(); | 
| if (!s.is_valid()) | 
| return NetworkChangeNotifier::CONNECTION_UNKNOWN; | 
|  | 
| @@ -101,7 +101,7 @@ NetworkChangeNotifier::ConnectionType GetInterfaceConnectionType( | 
| } | 
|  | 
| std::string GetInterfaceSSID(const std::string& ifname) { | 
| -  base::ScopedFD ioctl_socket(socket(AF_INET, SOCK_DGRAM, 0)); | 
| +  base::ScopedFD ioctl_socket = GetSocketForIoctl(); | 
| if (!ioctl_socket.is_valid()) | 
| return ""; | 
| struct iwreq wreq = {}; | 
| @@ -201,6 +201,13 @@ std::string GetWifiSSIDFromInterfaceListInternal( | 
| return connected_ssid; | 
| } | 
|  | 
| +base::ScopedFD GetSocketForIoctl() { | 
| +  base::ScopedFD ioctl_socket(socket(AF_INET6, SOCK_DGRAM, 0)); | 
| +  if (ioctl_socket.is_valid()) | 
| +    return ioctl_socket; | 
| +  return base::ScopedFD(socket(AF_INET, SOCK_DGRAM, 0)); | 
| +} | 
| + | 
| }  // namespace internal | 
|  | 
| bool GetNetworkList(NetworkInterfaceList* networks, int policy) { | 
|  |