diff options
author | Christian Poessinger <christian@poessinger.com> | 2019-09-01 19:48:09 +0200 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2019-09-01 19:48:09 +0200 |
commit | 736b3eca504bf9f57f12166bef7f3bfb347cf522 (patch) | |
tree | 12ada917a87cba647af8fcf37f54748b0c38e9d8 | |
parent | e7711bf0693e8463731cdbc955b18311738f42a5 (diff) | |
download | vyos-1x-736b3eca504bf9f57f12166bef7f3bfb347cf522.tar.gz vyos-1x-736b3eca504bf9f57f12166bef7f3bfb347cf522.zip |
Python/ifconfig: T1557: bonding: add xmit_hash_policy
-rw-r--r-- | python/vyos/ifconfig.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/python/vyos/ifconfig.py b/python/vyos/ifconfig.py index 71d608511..b03550626 100644 --- a/python/vyos/ifconfig.py +++ b/python/vyos/ifconfig.py @@ -954,3 +954,47 @@ class BridgeIf(Interface): """ return self._write_sysfs('/sys/class/net/{}/brif/{}/priority' .format(self._ifname, interface), priority) + + +class BondIf(Interface): + def __init__(self, ifname): + super().__init__(ifname, type='bond') + + @property + def xmit_hash_policy(self): + """ + Selects the transmit hash policy to use for slave selection in + balance-xor, 802.3ad, and tlb modes. Possible values are: layer2, + layer2+3, layer3+4, encap2+3, encap3+4. + + The default value is layer2 + + Example: + >>> from vyos.ifconfig import BondIf + >>> BondIf('bond0').xmit_hash_policy + 'layer3+4' + """ + # Linux Kernel appends has policy value to string, e.g. 'layer3+4 1', + # so remove the later part and only return the mode as string. + return self._read_sysfs('/sys/class/net/{}/bonding/xmit_hash_policy' + .format(self._ifname)).split(' ')[0] + + @xmit_hash_policy.setter + def xmit_hash_policy(self, mode): + """ + Selects the transmit hash policy to use for slave selection in + balance-xor, 802.3ad, and tlb modes. Possible values are: layer2, + layer2+3, layer3+4, encap2+3, encap3+4. + + The default value is layer2 + + Example: + >>> from vyos.ifconfig import Interface + >>> BondIf('bond0').xmit_hash_policy = 'layer2+3' + >>> BondIf('bond0').proxy_arp + '1' + """ + if not mode in ['layer2', 'layer2+3', 'layer3+4', 'encap2+3', 'encap3+4']: + raise ValueError() + return self._write_sysfs('/sys/class/net/{}/bonding/xmit_hash_policy' + .format(self._ifname), mode) |