---
If this fails we still want to be able to show the network interfaces
on the GUI, so return [] instead of die()-ing.

Also, note that while either address family seems to work even with
net.ipv6.conf.all.disable_ipv6=1 a reported error on the forum
indicates that the socket might not open under some circumstances
(perhaps a custom kernel with ipv6 not compiled in?), so just try the
other packet family, too, if opening the socket fails.

 src/PVE/Network.pm | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/PVE/Network.pm b/src/PVE/Network.pm
index 56af2ed..78529e1 100644
--- a/src/PVE/Network.pm
+++ b/src/PVE/Network.pm
@@ -532,8 +532,10 @@ sub get_active_interfaces {
     open my $fh, '<', '/proc/net/dev'
        or die "failed to open /proc/net/dev: $!\n";
     # And filter by IFF_UP flag fetched via a PF_INET6 socket ioctl:
-    socket my $sock, PF_INET6, SOCK_DGRAM, &IPPROTO_IP
-       or die "failed to open socket\n";
+    my $sock;
+    socket($sock, PF_INET6, SOCK_DGRAM, &IPPROTO_IP)
+    or socket($sock, PF_INET, SOCK_DGRAM, &IPPROTO_IP)
+    or return [];
 
     my $ifaces = [];
     while(defined(my $line = <$fh>)) {
-- 
2.1.4


_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to