]> git.proxmox.com Git - mirror_ifupdown2.git/commitdiff
addons: addressvirtual: create VRRP macvlans in bridge mode
authorJulien Fortin <julien@cumulusnetworks.com>
Tue, 26 Feb 2019 17:58:22 +0000 (18:58 +0100)
committerJulien Fortin <julien@cumulusnetworks.com>
Mon, 22 Apr 2019 02:49:44 +0000 (10:49 +0800)
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
ifupdown2/addons/addressvirtual.py
ifupdown2/ifupdownaddons/LinkUtils.py

index 4fa042e927027b98b3780312034fcce862c51d75..7a2eb0049303d07da53d551a2a204ef1e5704195 100644 (file)
@@ -402,10 +402,11 @@ class addressvirtual(moduleBase):
             link_created = False
             macvlan_ifname = intf_config_dict.get("ifname")
             macvlan_hwaddr = intf_config_dict.get("hwaddress")
+            macvlan_mode = intf_config_dict.get("mode")
             ips = intf_config_dict.get("ips")
 
             if not self.ipcmd.link_exists(macvlan_ifname):
-                self.ipcmd.link_add_macvlan(ifname, macvlan_ifname)
+                self.ipcmd.link_add_macvlan(ifname, macvlan_ifname, macvlan_mode)
                 link_created = True
 
             # first thing we need to handle vrf enslavement
@@ -546,6 +547,7 @@ class addressvirtual(moduleBase):
         #   {
         #        "ifname": "macvlan_ifname",
         #        "hwaddress": "macvlan_hwaddress",
+        #        "mode": "macvlan_mode",
         #        "ips": [str(IPNetwork), ]
         #    },
         # ]
@@ -595,6 +597,7 @@ class addressvirtual(moduleBase):
                     "ifname": macvlan_ip4_ifname,
                     "hwaddress": macvlan_ip4_mac,
                     "hwaddress_int": self.mac_str_to_int(macvlan_ip4_mac),
+                    "mode": "bridge",
                     "ips": ip4,
                     "id": vrrp_id
                 })
@@ -606,6 +609,7 @@ class addressvirtual(moduleBase):
                     "ifname": macvlan_ip6_ifname,
                     "hwaddress": macvlan_ip6_mac,
                     "hwaddress_int": self.mac_str_to_int(macvlan_ip6_mac),
+                    "mode": "bridge",
                     "ips": ip6,
                     "id": vrrp_id
                 })
@@ -648,7 +652,10 @@ class addressvirtual(moduleBase):
             if not self.check_mac_address(ifaceobj, mac):
                 continue
 
-            config = {"ifname": "%s%d" % (macvlan_prefix, index)}
+            config = {
+                "ifname": "%s%d" % (macvlan_prefix, index),
+                "mode": "private"
+            }
 
             if mac != "none":
                 config["hwaddress"] = mac
index 7abc1df50632ac17a87315fb93b4e5774b264cd3..69ffd9ea25e2223606b87545d4999c06b303431e 100644 (file)
@@ -1373,8 +1373,8 @@ class LinkUtils(utilsBase):
         return False
 
     @staticmethod
-    def link_add_macvlan(ifname, macvlan_ifacename):
-        utils.exec_commandl(['ip', 'link', 'add',  'link', ifname, 'name', macvlan_ifacename, 'type', 'macvlan', 'mode', 'private'])
+    def link_add_macvlan(ifname, macvlan_ifacename, mode):
+        utils.exec_commandl(['ip', 'link', 'add',  'link', ifname, 'name', macvlan_ifacename, 'type', 'macvlan', 'mode', mode])
 
     @staticmethod
     def route_add(route):