Change in vdsm[master]: net: Network caps now reports IPv6 autoconf state

edwardh at redhat.com edwardh at redhat.com
Tue Mar 8 14:51:49 UTC 2016


Edward Haas has uploaded a new change for review.

Change subject: net: Network caps now reports IPv6 autoconf state
......................................................................

net: Network caps now reports IPv6 autoconf state

'ipv6autoconf' current status is reported through caps.

Change-Id: If91083ec3502a2679328e92aa63699d16c77df71
Signed-off-by: Edward Haas <edwardh at redhat.com>
---
M lib/vdsm/netinfo/addresses.py
M lib/vdsm/netinfo/cache.py
M lib/vdsm/sysctl.py
M vdsm_hooks/ovs/ovs_after_get_caps.py
4 files changed, 27 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/75/54475/1

diff --git a/lib/vdsm/netinfo/addresses.py b/lib/vdsm/netinfo/addresses.py
index 0b9741f..acd70a6 100644
--- a/lib/vdsm/netinfo/addresses.py
+++ b/lib/vdsm/netinfo/addresses.py
@@ -25,6 +25,7 @@
 import struct
 
 from ..netlink import addr as nl_addr
+from ..sysctl import is_ipv6_local_auto as sysctl_is_ipv6_local_auto
 
 
 def getIpInfo(dev, ipaddrs=None, ipv4_gateway=None):
@@ -123,3 +124,7 @@
 
 def is_dynamic(nladdr):
     return not nl_addr.is_permanent(nladdr)
+
+
+def is_ipv6_local_auto(iface):
+    return sysctl_is_ipv6_local_auto(iface)
\ No newline at end of file
diff --git a/lib/vdsm/netinfo/cache.py b/lib/vdsm/netinfo/cache.py
index 031551c..df53808 100644
--- a/lib/vdsm/netinfo/cache.py
+++ b/lib/vdsm/netinfo/cache.py
@@ -30,7 +30,7 @@
 from ..netlink import link as nl_link
 
 from vdsm import netinfo
-from .addresses import getIpAddrs, getIpInfo
+from .addresses import getIpAddrs, getIpInfo, is_ipv6_local_auto
 from . import bonding
 from . import bridges
 from .dhcp import (propose_updates_to_reported_dhcp,  update_reported_dhcp,
@@ -141,6 +141,7 @@
             'cfg': getIfaceCfg(link.name),
             'ipv4addrs': ipv4addrs,
             'ipv6addrs': ipv6addrs,
+            'ipv6autoconf': is_ipv6_local_auto(link.name),
             'gateway': gateway,
             'ipv6gateway': get_gateway(routes, link.name, family=6),
             'dhcpv4': is_dhcpv4,
diff --git a/lib/vdsm/sysctl.py b/lib/vdsm/sysctl.py
index 957e61f..63c3f76 100644
--- a/lib/vdsm/sysctl.py
+++ b/lib/vdsm/sysctl.py
@@ -20,6 +20,8 @@
 
 
 from __future__ import absolute_import
+import errno
+
 _RPFILTER_STRICT = '1'
 _RPFILTER_LOOSE = '2'
 
@@ -47,3 +49,20 @@
     with open('/proc/sys/net/ipv6/conf/default/disable_ipv6') as f:
         ipv6_enabled = f.read()
     return int(ipv6_enabled)
+
+
+def is_ipv6_local_auto(dev):
+    try:
+        with open('/proc/sys/net/ipv6/conf/%s/autoconf' % dev) as f:
+            is_autoconf = f.read()
+        with open('/proc/sys/net/ipv6/conf/%s/accept_ra' % dev) as f:
+            is_accept_ra = f.read()
+        with open('/proc/sys/net/ipv6/conf/%s/accept_redirects' % dev) as f:
+            is_accept_redirects = f.read()
+    except IOError as e:
+        if e.errno == errno.ENOENT:
+            return False
+        else:
+            raise
+
+    return bool(is_autoconf and is_accept_ra and is_accept_redirects)
\ No newline at end of file
diff --git a/vdsm_hooks/ovs/ovs_after_get_caps.py b/vdsm_hooks/ovs/ovs_after_get_caps.py
index 3855652..b7172f3 100755
--- a/vdsm_hooks/ovs/ovs_after_get_caps.py
+++ b/vdsm_hooks/ovs/ovs_after_get_caps.py
@@ -68,6 +68,7 @@
         'dhcpv4': dhcpv4,
         'ipv4addrs': ipv4addrs,
         'ipv6addrs': ipv6addrs,
+        'ipv6autoconf': addresses.is_ipv6_local_auto(interface),
         'ipv6gateway': ipv6gateway,
         'dhcpv6': dhcpv6,
         'cfg': {'BOOTPROTO': 'dhcp' if dhcpv4 else 'none'}}


-- 
To view, visit https://gerrit.ovirt.org/54475
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: If91083ec3502a2679328e92aa63699d16c77df71
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Edward Haas <edwardh at redhat.com>


More information about the vdsm-patches mailing list