Skip to content

Commit

Permalink
Fix incorrect separator for networkd with ARP IP targets (LP: #1829264)
Browse files Browse the repository at this point in the history
Signed-off-by: Mathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com>
  • Loading branch information
Mathieu Trudel-Lapierre authored and cyphermox committed May 21, 2019
1 parent ea47bd4 commit ee94ec1
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/networkd.c
Expand Up @@ -205,7 +205,7 @@ write_bond_parameters(net_definition* def, GString* s)
g_string_append_printf(params, "\nARPIPTargets=");
for (unsigned i = 0; i < def->bond_params.arp_ip_targets->len; ++i) {
if (i > 0)
g_string_append_printf(params, ",");
g_string_append_printf(params, " ");
g_string_append_printf(params, "%s", g_array_index(def->bond_params.arp_ip_targets, char*, i));
}
}
Expand Down
2 changes: 1 addition & 1 deletion tests/generator/test_bonds.py
Expand Up @@ -195,7 +195,7 @@ def test_bond_with_parameters(self):
'AdSelect=none\n'
'AllSlavesActive=1\n'
'ARPIntervalSec=15ms\n'
'ARPIPTargets=10.10.10.10,20.20.20.20\n'
'ARPIPTargets=10.10.10.10 20.20.20.20\n'
'ARPValidate=all\n'
'ARPAllTargets=all\n'
'UpDelaySec=20ms\n'
Expand Down
31 changes: 31 additions & 0 deletions tests/integration/bonds.py
Expand Up @@ -486,6 +486,37 @@ def test_bond_arp_targets(self):
with open('/sys/class/net/mybond/bonding/arp_ip_target') as f:
self.assertEqual(f.read().strip(), '192.168.5.1')

def test_bond_arp_targets_many_lp1829264(self):
self.setup_eth(None)
self.start_dnsmasq(None, self.dev_e2_ap)
self.addCleanup(subprocess.call, ['ip', 'link', 'delete', 'mybond'], stderr=subprocess.DEVNULL)
with open(self.config, 'w') as f:
f.write('''network:
renderer: %(r)s
ethernets:
ethbn:
match: {name: %(ec)s}
%(e2c)s: {}
bonds:
mybond:
interfaces: [ethbn]
parameters:
mode: balance-xor
arp-interval: 50000
arp-ip-targets: [ 192.168.5.1, 192.168.5.34 ]
dhcp4: yes''' % {'r': self.backend, 'ec': self.dev_e_client, 'e2c': self.dev_e2_client})
self.generate_and_settle()
self.assert_iface_up(self.dev_e_client,
['master mybond'],
['inet '])
self.assert_iface_up('mybond',
['inet 192.168.5.[0-9]+/24'])
with open('/sys/class/net/mybond/bonding/slaves') as f:
self.assertEqual(f.read().strip(), self.dev_e_client)
with open('/sys/class/net/mybond/bonding/arp_ip_target') as f:
self.assertIn(f.read().strip(), '192.168.5.1')
self.assertIn(f.read().strip(), '192.168.5.34')

def test_bond_arp_all_targets(self):
self.setup_eth(None)
self.start_dnsmasq(None, self.dev_e2_ap)
Expand Down

0 comments on commit ee94ec1

Please sign in to comment.