1
0
mirror of https://github.com/CumulusNetworks/ifupdown2.git synced 2024-05-06 15:54:50 +00:00

Merge pull request #101 from aderumier/fix-forwarding

don't change interface forwarding value if not defined
This commit is contained in:
Julien Fortin
2019-05-15 17:43:36 +08:00
committed by GitHub

View File

@@ -715,51 +715,57 @@ class address(moduleBase):
self.log_error('%s: \'ip6-forward\' is not supported for '
'bridge port' %ifaceobj.name)
return
setting_default_value = False
if not ipforward:
setting_default_value = True
ipforward = (self.ipforward or
self.get_mod_subattr('ip-forward', 'default'))
ipforward = utils.boolean_support_binary(ipforward)
# File read has been used for better performance
# instead of using sysctl command
running_ipforward = self.read_file_oneline(
'/proc/sys/net/ipv4/conf/%s/forwarding'
%ifaceobj.name)
if ipforward != running_ipforward:
try:
self.sysctl_set('net.ipv4.conf.%s.forwarding'
%('/'.join(ifaceobj.name.split("."))),
ipforward)
except Exception as e:
if not setting_default_value:
ifaceobj.status = ifaceStatus.ERROR
self.logger.error('%s: %s' %(ifaceobj.name, str(e)))
ipforward = self.ipforward
if ipforward:
ipforward = utils.boolean_support_binary(ipforward)
# File read has been used for better performance
# instead of using sysctl command
running_ipforward = self.read_file_oneline(
'/proc/sys/net/ipv4/conf/%s/forwarding'
%ifaceobj.name)
if ipforward != running_ipforward:
try:
self.sysctl_set('net.ipv4.conf.%s.forwarding'
%('/'.join(ifaceobj.name.split("."))),
ipforward)
except Exception as e:
if not setting_default_value:
ifaceobj.status = ifaceStatus.ERROR
self.logger.error('%s: %s' %(ifaceobj.name, str(e)))
setting_default_value = False
if not ip6forward:
setting_default_value = True
ip6forward = (self.ip6forward or
self.get_mod_subattr('ip6-forward', 'default'))
ip6forward = utils.boolean_support_binary(ip6forward)
# File read has been used for better performance
# instead of using sysctl command
running_ip6forward = self.read_file_oneline(
'/proc/sys/net/ipv6/conf/%s/forwarding'
%ifaceobj.name)
if ip6forward != running_ip6forward:
try:
self.sysctl_set('net.ipv6.conf.%s.forwarding'
%('/'.join(ifaceobj.name.split("."))),
ip6forward)
except Exception as e:
# There is chance of ipv6 being removed because of,
# for example, setting mtu < 1280
# In such cases, log error only if user has configured
# ip6-forward
if not setting_default_value:
ifaceobj.status = ifaceStatus.ERROR
self.logger.error('%s: %s' %(ifaceobj.name, str(e)))
ip6forward = self.ip6forward
if ip6forward:
ip6forward = utils.boolean_support_binary(ip6forward)
# File read has been used for better performance
# instead of using sysctl command
running_ip6forward = self.read_file_oneline(
'/proc/sys/net/ipv6/conf/%s/forwarding'
%ifaceobj.name)
if ip6forward != running_ip6forward:
try:
self.sysctl_set('net.ipv6.conf.%s.forwarding'
%('/'.join(ifaceobj.name.split("."))),
ip6forward)
except Exception as e:
# There is chance of ipv6 being removed because of,
# for example, setting mtu < 1280
# In such cases, log error only if user has configured
# ip6-forward
if not setting_default_value:
ifaceobj.status = ifaceStatus.ERROR
self.logger.error('%s: %s' %(ifaceobj.name, str(e)))
def process_mtu(self, ifaceobj, ifaceobj_getfunc):
mtu = ifaceobj.get_attr_value_first('mtu')