]> git.proxmox.com Git - mirror_ifupdown2.git/commitdiff
addons: vrf: fix vrf slave link kind (fixes #39)
authorJulien Fortin <julien@cumulusnetworks.com>
Mon, 22 Jan 2018 11:09:07 +0000 (19:09 +0800)
committerJulien Fortin <julien@cumulusnetworks.com>
Tue, 13 Mar 2018 03:57:19 +0000 (14:57 +1100)
$ cat /etc/network/interfaces
auto v0
iface v0
      link-type veth
      vrf blue

auto blue
iface blue
      vrf-table auto

$ ifreload -a
$ echo $?
0
$ ifquery -a -c
auto v0
iface v0                         [pass]
      link-type veth             [pass]
      vrf blue                   [pass]

auto blue
iface blue                       [pass]
      vrf-table 1001             [pass]
$ echo $?
0

Reported-by: Maximilian Wilhelm <max@rfc2324.org>
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
addons/vrf.py
ifupdownaddons/iproute2.py

index 908b8c34f251969f4ece5ca447a33f853526b2b4..5e46aa3076e4781b2f71d6d1241ae0251f983e68 100644 (file)
@@ -974,7 +974,9 @@ class vrf(moduleBase):
                     if running_table:
                         ifaceobjrunning.update_config('vrf-table',
                                                       running_table)
-            elif kind == 'vrf_slave':
+                        return
+            slave_kind = self.ipcmd.link_get_slave_kind(ifaceobjrunning.name)
+            if slave_kind == 'vrf_slave':
                 vrf = self.ipcmd.link_get_master(ifaceobjrunning.name)
                 if vrf:
                     ifaceobjrunning.update_config('vrf', vrf)
index 2d14fa1667f59a0f8a933ab8c806e14fbc341ec1..d4b2b11bbd83cb3a617eafb09132c05bf0717f71 100644 (file)
@@ -160,8 +160,10 @@ class iproute2(utilsBase):
                         linkattrs['kind'] = 'vrf'
                         linkCache.vrfs[ifname] = vattrs
                         break
+                    elif citems[i] == 'veth':
+                        linkattrs['kind'] = 'veth'
                     elif citems[i] == 'vrf_slave':
-                        linkattrs['kind'] = 'vrf_slave'
+                        linkattrs['slave_kind'] = 'vrf_slave'
                         break
                     elif citems[i] == 'macvlan' and citems[i + 1] == 'mode':
                         linkattrs['kind'] = 'macvlan'
@@ -705,6 +707,9 @@ class iproute2(utilsBase):
     def link_get_kind(self, ifacename):
         return self._cache_get('link', [ifacename, 'kind'])
 
+    def link_get_slave_kind(self, ifacename):
+        return self._cache_get('link', [ifacename, 'slave_kind'])
+
     def link_get_hwaddress(self, ifacename):
         address = self._cache_get('link', [ifacename, 'hwaddress'])
         # newly created logical interface addresses dont end up in the cache