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