The bond 'arp_ip_target' option contains a list of comma-separated IP
addresses; but comma is also used to separate options and so at the
moment it is not possible to specify multiple IPs as the command
$ nmcli c m b1 bond.options \
mode=0,arp_interval=1,arp_ip_target=1.1.1.1,2.2.2.2
interprets 2.2.2.2 as the next option.
Allows spaces to be used as separators for the IPs of the
'arp_ip_target':
$ nmcli c m b1 bond.options \
"mode=0,arp_interval=1,arp_ip_target=1.1.1.1 2.2.2.2"
bond_options_s = g_string_new (NULL);
for (i = 0; i < nm_setting_bond_get_num_options (s_bond); i++) {
const char *key, *value;
bond_options_s = g_string_new (NULL);
for (i = 0; i < nm_setting_bond_get_num_options (s_bond); i++) {
const char *key, *value;
+ gs_free char *tmp_value = NULL;
+ char *p;
nm_setting_bond_get_option (s_bond, i, &key, &value);
nm_setting_bond_get_option (s_bond, i, &key, &value);
+
+ if (nm_streq0 (key, NM_SETTING_BOND_OPTION_ARP_IP_TARGET)) {
+ value = tmp_value = g_strdup (value);
+ for (p = tmp_value; p && *p; p++) {
+ if (*p == ',')
+ *p = ' ';
+ }
+ }
+
g_string_append_printf (bond_options_s, "%s=%s,", key, value);
}
g_string_truncate (bond_options_s, bond_options_s->len-1); /* chop off trailing ',' */
g_string_append_printf (bond_options_s, "%s=%s,", key, value);
}
g_string_truncate (bond_options_s, bond_options_s->len-1); /* chop off trailing ',' */
+static gboolean
+_bond_add_option (NMSettingBond *setting,
+ const char *name,
+ const char *value)
+{
+ gs_free char *tmp_value = NULL;
+ char *p;
+
+ if (nm_streq0 (name, NM_SETTING_BOND_OPTION_ARP_IP_TARGET)) {
+ value = tmp_value = g_strdup (value);
+ for (p = tmp_value; p && *p; p++)
+ if (*p == ' ')
+ *p = ',';
+ }
+
+ return nm_setting_bond_add_option (setting, name, value);
+}
+
DEFINE_SETTER_OPTIONS (nmc_property_bond_set_options,
NM_SETTING_BOND,
NMSettingBond,
DEFINE_SETTER_OPTIONS (nmc_property_bond_set_options,
NM_SETTING_BOND,
NMSettingBond,
- nm_setting_bond_add_option,
nm_setting_bond_get_valid_options,
_validate_bond_option_value)
DEFINE_REMOVER_OPTION (nmc_property_bond_remove_option_options,
nm_setting_bond_get_valid_options,
_validate_bond_option_value)
DEFINE_REMOVER_OPTION (nmc_property_bond_remove_option_options,