]> git.proxmox.com Git - mirror_ifupdown2.git/commitdiff
Move clag_enable setting to ifupdown2 ifenslave.
authoranuradhak <anuradhak@cumulusnetworks.com>
Mon, 2 Feb 2015 17:54:53 +0000 (09:54 -0800)
committeranuradhak <anuradhak@cumulusnetworks.com>
Mon, 2 Feb 2015 20:53:14 +0000 (12:53 -0800)
Ticket: CM-4802
Reviewed By:
Testing Done: yes

1. clag_enable needs to be set before slaves are added to the bond. Otherwise
bonding driver will bring the slaves up independent of clagd.
2. also added post_down clagd addon to cleanup the clag-id on ifdown.

addons/ifenslave.py
config/addons.conf
ifupdownaddons/ifenslaveutil.py

index 95fed790aa89f0e88980bddbae60cbfef3a27837..8e4c9ef0d7d026037036c74ce9e7841f4358c2e8 100644 (file)
@@ -246,6 +246,11 @@ class ifenslave(moduleBase):
                      ifaceobj.link_type != ifaceLinkType.LINK_NA):
                rtnetlink_api.rtnl_api.link_set(slave, "up")
 
+    def _set_clag_enable(self, ifaceobj):
+        attrval = ifaceobj.get_attr_value_first('clag-id')
+        attrval = attrval if attrval else '0'
+        self.ifenslavecmd.set_clag_enable(ifaceobj.name, attrval)
+
     def _apply_slaves_lacp_bypass_prio(self, ifaceobj):
         slaves = self.ifenslavecmd.get_slaves(ifaceobj.name)
         if not slaves:
@@ -285,6 +290,8 @@ class ifenslave(moduleBase):
             if not self.ipcmd.link_exists(ifaceobj.name):
                 self.ifenslavecmd.create_bond(ifaceobj.name)
             self._apply_master_settings(ifaceobj)
+            # clag_enable has to happen before the slaves are added to the bond
+            self._set_clag_enable(ifaceobj)
             self._add_slaves(ifaceobj)
             self._apply_slaves_lacp_bypass_prio(ifaceobj)
             if ifaceobj.addr_method == 'manual':
index 97f0f3d89feff9eed8cc00a6975299723c4eb984..e9aa4879f0c64bc0343abbd0ed679a67ac0c3090 100644 (file)
@@ -18,6 +18,7 @@ down,dhcp
 down,addressvirtual
 down,address
 down,usercmds
+post-down,clagd
 post-down,mstpctl
 post-down,bridgevlan
 post-down,bridge
index 6b4e2282ba92c348d8aaac6f0e593cd99abb8658..c7e0d421b28a1af29ce87f585404bf40372a2137 100644 (file)
@@ -53,7 +53,8 @@ class ifenslaveutil(utilsBase):
                    self.read_file_oneline('/sys/class/net/%s/bonding/%s'
                         %(bondname, x))),
                        ['use_carrier', 'miimon', 'min_links', 'num_unsol_na',
-                        'num_grat_arp', 'lacp_bypass_allow', 'lacp_bypass_period'])
+                        'num_grat_arp', 'lacp_bypass_allow', 'lacp_bypass_period', 
+                        'clag_enable'])
         except Exception, e:
             pass
 
@@ -191,6 +192,18 @@ class ifenslaveutil(utilsBase):
     def get_miimon(self, bondname):
         return self._cache_get([bondname, 'linkinfo', 'miimon'])
 
+    def set_clag_enable(self, bondname, clag_id):
+        clag_enable = '0' if clag_id == '0' else '1'
+        if self._cache_check([bondname, 'linkinfo', 'clag_enable'], 
+                        clag_enable) == False:
+            self.write_file('/sys/class/net/%s' %bondname +
+                        '/bonding/clag_enable', clag_enable)
+            self._cache_update([bondname, 'linkinfo', 'clag_enable'], 
+                        clag_enable)
+
+    def get_clag_enable(self, bondname):
+        return self._cache_get([bondname, 'linkinfo', 'clag_enable'])
+
     def set_mode(self, bondname, mode, prehook=None):
         valid_modes = ['balance-rr', 'active-backup', 'balance-xor',
                        'broadcast', '802.3ad', 'balance-tlb', 'balance-alb']