mirror of
https://github.com/CumulusNetworks/ifupdown2.git
synced 2024-05-06 15:54:50 +00:00
netlink: add tunnel device support in ipcmd cache
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
This commit is contained in:
@@ -145,7 +145,9 @@ class tunnel(moduleBase):
|
|||||||
ifaceobjcurr.update_config_with_status(attrname, running_attrval, 1)
|
ifaceobjcurr.update_config_with_status(attrname, running_attrval, 1)
|
||||||
|
|
||||||
def _query_check(self, ifaceobj, ifaceobjcurr):
|
def _query_check(self, ifaceobj, ifaceobjcurr):
|
||||||
if not self.ipcmd.link_exists(ifaceobj.name):
|
ifname = ifaceobj.name
|
||||||
|
|
||||||
|
if not self.ipcmd.link_exists(ifname):
|
||||||
return
|
return
|
||||||
|
|
||||||
tunattrs = self.ipcmd.link_get_linkinfo_attrs(ifaceobj.name)
|
tunattrs = self.ipcmd.link_get_linkinfo_attrs(ifaceobj.name)
|
||||||
@@ -153,6 +155,12 @@ class tunnel(moduleBase):
|
|||||||
ifaceobjcurr.check_n_update_config_with_status_many(ifaceobj, self.get_mod_attrs(), -1)
|
ifaceobjcurr.check_n_update_config_with_status_many(ifaceobj, self.get_mod_attrs(), -1)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
tunattrs["mode"] = self.ipcmd.link_get_kind(ifname)
|
||||||
|
|
||||||
|
user_config_mode = ifaceobj.get_attr_value_first("mode")
|
||||||
|
if user_config_mode in ('ipip6', 'ip6ip6'):
|
||||||
|
ifaceobj.replace_config("mode", "ip6tnl")
|
||||||
|
|
||||||
for attr in self.get_mod_attrs():
|
for attr in self.get_mod_attrs():
|
||||||
if not ifaceobj.get_attr_value_first(attr):
|
if not ifaceobj.get_attr_value_first(attr):
|
||||||
continue
|
continue
|
||||||
|
|||||||
@@ -54,7 +54,17 @@ class Netlink(utilsBase):
|
|||||||
'vrf': self._link_dump_info_data_vrf,
|
'vrf': self._link_dump_info_data_vrf,
|
||||||
'vxlan': self._link_dump_info_data_vxlan,
|
'vxlan': self._link_dump_info_data_vxlan,
|
||||||
'bond': self._link_dump_info_data_bond,
|
'bond': self._link_dump_info_data_bond,
|
||||||
'bridge': self._link_dump_info_data_bridge
|
'bridge': self._link_dump_info_data_bridge,
|
||||||
|
'gre': self._link_dump_info_data_gre_tunnel,
|
||||||
|
'gretap': self._link_dump_info_data_gre_tunnel,
|
||||||
|
"ip6gre": self._link_dump_info_data_gre_tunnel,
|
||||||
|
"ip6gretap": self._link_dump_info_data_gre_tunnel,
|
||||||
|
"ip6erspan": self._link_dump_info_data_gre_tunnel,
|
||||||
|
'ipip': self._link_dump_info_data_iptun_tunnel,
|
||||||
|
'sit': self._link_dump_info_data_iptun_tunnel,
|
||||||
|
'ip6tnl': self._link_dump_info_data_iptun_tunnel,
|
||||||
|
'vti': self._link_dump_info_data_vti_tunnel,
|
||||||
|
'vti6': self._link_dump_info_data_vti_tunnel
|
||||||
}
|
}
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -500,6 +510,36 @@ class Netlink(utilsBase):
|
|||||||
def _link_dump_info_slave_data_bridge(self, ifname, info_slave_data):
|
def _link_dump_info_slave_data_bridge(self, ifname, info_slave_data):
|
||||||
return info_slave_data
|
return info_slave_data
|
||||||
|
|
||||||
|
def _link_dump_info_data_gre_tunnel(self, ifname, info_slave_data):
|
||||||
|
tunnel_link_ifindex = info_slave_data.get(Link.IFLA_GRE_LINK)
|
||||||
|
|
||||||
|
return {
|
||||||
|
"endpoint": str(info_slave_data.get(Link.IFLA_GRE_REMOTE)),
|
||||||
|
"local": str(info_slave_data.get(Link.IFLA_GRE_LOCAL)),
|
||||||
|
"ttl": str(info_slave_data.get(Link.IFLA_GRE_TTL)),
|
||||||
|
"physdev": self.get_iface_name(tunnel_link_ifindex) if tunnel_link_ifindex else ""
|
||||||
|
}
|
||||||
|
|
||||||
|
def _link_dump_info_data_iptun_tunnel(self, ifname, info_slave_data):
|
||||||
|
tunnel_link_ifindex = info_slave_data.get(Link.IFLA_IPTUN_LINK)
|
||||||
|
|
||||||
|
return {
|
||||||
|
"endpoint": str(info_slave_data.get(Link.IFLA_IPTUN_REMOTE)),
|
||||||
|
"local": str(info_slave_data.get(Link.IFLA_IPTUN_LOCAL)),
|
||||||
|
"ttl": str(info_slave_data.get(Link.IFLA_IPTUN_TTL)),
|
||||||
|
"physdev": self.get_iface_name(tunnel_link_ifindex) if tunnel_link_ifindex else ""
|
||||||
|
}
|
||||||
|
|
||||||
|
def _link_dump_info_data_vti_tunnel(self, ifname, info_slave_data):
|
||||||
|
tunnel_link_ifindex = info_slave_data.get(Link.IFLA_VTI_LINK)
|
||||||
|
|
||||||
|
return {
|
||||||
|
"endpoint": str(info_slave_data.get(Link.IFLA_VTI_REMOTE)),
|
||||||
|
"local": str(info_slave_data.get(Link.IFLA_VTI_LOCAL)),
|
||||||
|
"ttl": "None",
|
||||||
|
"physdev": self.get_iface_name(tunnel_link_ifindex) if tunnel_link_ifindex else ""
|
||||||
|
}
|
||||||
|
|
||||||
def _link_dump_linkinfo(self, link, dump):
|
def _link_dump_linkinfo(self, link, dump):
|
||||||
linkinfo = link.attributes[Link.IFLA_LINKINFO].get_pretty_value(dict)
|
linkinfo = link.attributes[Link.IFLA_LINKINFO].get_pretty_value(dict)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user