diff options
author | Christian Poessinger <christian@poessinger.com> | 2021-06-25 18:31:57 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-25 18:31:57 +0200 |
commit | f33c6e856b2d4c0c7964d7b61d6aa7ccb9bc237b (patch) | |
tree | a2ecf9ee944c5e113f4003c6d32d17b6819edbad | |
parent | c8ef5e8bdce01bbf05297df39e6c6223d0b2a2ea (diff) | |
parent | 9431383abc926ca4513928c56924e942ea250cc8 (diff) | |
download | vyos-1x-f33c6e856b2d4c0c7964d7b61d6aa7ccb9bc237b.tar.gz vyos-1x-f33c6e856b2d4c0c7964d7b61d6aa7ccb9bc237b.zip |
Merge pull request #898 from DmitriyEshenko/1x25062021
T3649: bonding: Add additional hash policies
-rw-r--r-- | interface-definitions/interfaces-bonding.xml.in | 14 | ||||
-rwxr-xr-x | smoketest/scripts/cli/test_interfaces_bonding.py | 17 |
2 files changed, 28 insertions, 3 deletions
diff --git a/interface-definitions/interfaces-bonding.xml.in b/interface-definitions/interfaces-bonding.xml.in index 2efdaea3d..4bfc6e730 100644 --- a/interface-definitions/interfaces-bonding.xml.in +++ b/interface-definitions/interfaces-bonding.xml.in @@ -60,7 +60,7 @@ <properties> <help>Bonding transmit hash policy</help> <completionHelp> - <list>layer2 layer2+3 layer3+4</list> + <list>layer2 layer2+3 layer3+4 encap2+3 encap3+4</list> </completionHelp> <valueHelp> <format>layer2</format> @@ -74,10 +74,18 @@ <format>layer3+4</format> <description>combine IP address and port to make hash</description> </valueHelp> + <valueHelp> + <format>encap2+3</format> + <description>combine encapsulated MAC address and IP address to make hash</description> + </valueHelp> + <valueHelp> + <format>encap3+4</format> + <description>combine encapsulated IP address and port to make hash</description> + </valueHelp> <constraint> - <regex>^(layer2\+3|layer3\+4|layer2)$</regex> + <regex>^(layer2\+3|layer3\+4|layer2|encap2\+3|encap3\+4)$</regex> </constraint> - <constraintErrorMessage>hash-policy must be layer2 layer2+3 or layer3+4</constraintErrorMessage> + <constraintErrorMessage>hash-policy must be layer2 layer2+3 layer3+4 encap2+3 or encap3+4</constraintErrorMessage> </properties> <defaultValue>layer2</defaultValue> </leafNode> diff --git a/smoketest/scripts/cli/test_interfaces_bonding.py b/smoketest/scripts/cli/test_interfaces_bonding.py index cf147fe58..43f661f6b 100755 --- a/smoketest/scripts/cli/test_interfaces_bonding.py +++ b/smoketest/scripts/cli/test_interfaces_bonding.py @@ -133,5 +133,22 @@ class BondingInterfaceTest(BasicInterfaceTest.TestCase): self.assertEqual(0, tmp['linkinfo']['info_data']['min_links']) self.assertEqual(lacp_rate, tmp['linkinfo']['info_data']['ad_lacp_rate']) + def test_bonding_hast_policy(self): + # Define available bonding hash policies + hash_policies = ['layer2', 'layer2+3', 'layer2+3', 'encap2+3', 'encap3+4'] + for hash_policy in hash_policies: + for interface in self._interfaces: + for option in self._options.get(interface, []): + self.cli_set(self._base_path + [interface] + option.split()) + + self.cli_set(self._base_path + [interface, 'hash-policy', hash_policy]) + + self.cli_commit() + + # verify config + for interface in self._interfaces: + defined_policy = read_file(f'/sys/class/net/{interface}/bonding/xmit_hash_policy').split() + self.assertEqual(defined_policy[0], hash_policy) + if __name__ == '__main__': unittest.main(verbosity=2) |