summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2014-08-25 12:59:49 +0200
committerThomas Haller <thaller@redhat.com>2014-09-23 18:20:24 +0200
commitd497015763760e9143a57b86fd9186fa017704cc (patch)
treead5ad47d1e61da570f7a30270abe38461963204a
parenta65d53c13bb83a0a757d3b4c722b340a1a11966b (diff)
downloadNetworkManager-th/rh1061702_bond_options.tar.gz
cli: support new bond option 'lacp_rate'th/rh1061702_bond_options
Signed-off-by: Thomas Haller <thaller@redhat.com>
-rw-r--r--clients/cli/connections.c32
-rw-r--r--clients/cli/nmcli-completion8
2 files changed, 36 insertions, 4 deletions
diff --git a/clients/cli/connections.c b/clients/cli/connections.c
index 28fa8f778a..bdc9a60e40 100644
--- a/clients/cli/connections.c
+++ b/clients/cli/connections.c
@@ -373,7 +373,8 @@ usage_connection_add (void)
" [downdelay <num>]\n"
" [updelay <num>]\n"
" [arp-interval <num>]\n"
- " [arp-ip-target <num>]\n\n"
+ " [arp-ip-target <num>]\n"
+ " [lacp-rate slow (0) | fast (1)]\n"
" bond-slave: master <master (ifname, or connection UUID or name)>\n\n"
" team: [config <file>|<raw JSON data>]\n\n"
" team-slave: master <master (ifname, or connection UUID or name)>\n"
@@ -3118,7 +3119,8 @@ do_questionnaire_vlan (char **mtu, char **flags, char **ingress, char **egress)
static void
do_questionnaire_bond (char **mode, char **primary, char **miimon,
char **downdelay, char **updelay,
- char **arpinterval, char **arpiptarget)
+ char **arpinterval, char **arpiptarget,
+ char **lacp_rate)
{
char *monitor_mode;
unsigned long tmp;
@@ -3223,6 +3225,22 @@ do_questionnaire_bond (char **mode, char **primary, char **miimon,
}
}
+ if ( !*lacp_rate
+ && (g_strcmp0 (*mode, "802.3ad") == 0 || g_strcmp0 (*mode, "4") == 0)) {
+ do {
+ *lacp_rate = nmc_readline (_("LACP rate ('slow' or 'fast') [slow]: "));
+ once_more = *lacp_rate && (strcmp (*lacp_rate, "slow") &&
+ strcmp (*lacp_rate, "0") &&
+ strcmp (*lacp_rate, "fast") &&
+ strcmp (*lacp_rate, "1"));
+ if (once_more) {
+ printf (_("Error: 'lacp_rate': '%s' is invalid ('slow' or 'fast').\n"),
+ *lacp_rate);
+ g_free (*lacp_rate);
+ }
+ } while (once_more);
+ }
+
g_free (monitor_mode);
}
@@ -4184,6 +4202,8 @@ cleanup_vlan:
char *bond_arpinterval = NULL;
const char *bond_arpiptarget_c = NULL;
char *bond_arpiptarget = NULL;
+ const char *bond_lacp_rate_c = NULL;
+ char *bond_lacp_rate = NULL;
nmc_arg_t exp_args[] = { {"mode", TRUE, &bond_mode_c, FALSE},
{"primary", TRUE, &bond_primary_c, FALSE},
{"miimon", TRUE, &bond_miimon_c, FALSE},
@@ -4191,6 +4211,7 @@ cleanup_vlan:
{"updelay", TRUE, &bond_updelay_c, FALSE},
{"arp-interval", TRUE, &bond_arpinterval_c, FALSE},
{"arp-ip-target", TRUE, &bond_arpiptarget_c, FALSE},
+ {"lacp-rate", TRUE, &bond_lacp_rate_c, FALSE},
{NULL} };
if (!nmc_parse_args (exp_args, FALSE, &argc, &argv, error))
@@ -4204,10 +4225,12 @@ cleanup_vlan:
bond_updelay = bond_updelay_c ? g_strdup (bond_updelay_c) : NULL;
bond_arpinterval = bond_arpinterval_c ? g_strdup (bond_arpinterval_c) : NULL;
bond_arpiptarget = bond_arpiptarget_c ? g_strdup (bond_arpiptarget_c) : NULL;
+ bond_lacp_rate = g_strdup (bond_lacp_rate_c);
if (ask)
do_questionnaire_bond (&bond_mode, &bond_primary, &bond_miimon,
&bond_downdelay, &bond_updelay,
- &bond_arpinterval, &bond_arpiptarget);
+ &bond_arpinterval, &bond_arpiptarget,
+ &bond_lacp_rate);
/* Generate ifname if connection doesn't have one */
ifname = nm_setting_connection_get_interface_name (s_con);
@@ -4255,6 +4278,8 @@ cleanup_vlan:
nm_setting_bond_add_option (s_bond, NM_SETTING_BOND_OPTION_ARP_INTERVAL, bond_arpinterval);
if (bond_arpiptarget)
nm_setting_bond_add_option (s_bond, NM_SETTING_BOND_OPTION_ARP_IP_TARGET, bond_arpiptarget);
+ if (bond_lacp_rate)
+ nm_setting_bond_add_option (s_bond, NM_SETTING_BOND_OPTION_LACP_RATE, bond_lacp_rate);
success = TRUE;
cleanup_bond:
@@ -4265,6 +4290,7 @@ cleanup_bond:
g_free (bond_updelay);
g_free (bond_arpinterval);
g_free (bond_arpiptarget);
+ g_free (bond_lacp_rate);
if (!success)
return FALSE;
diff --git a/clients/cli/nmcli-completion b/clients/cli/nmcli-completion
index e6dc5b5d2d..0b3af2fc84 100644
--- a/clients/cli/nmcli-completion
+++ b/clients/cli/nmcli-completion
@@ -423,6 +423,12 @@ _nmcli_compl_ARGS()
return 0
fi
;;
+ lacp-rate)
+ if [[ "${#words[@]}" -eq 2 ]]; then
+ _nmcli_list "slow fast"
+ return 0
+ fi
+ ;;
bt-type)
if [[ "${#words[@]}" -eq 2 ]]; then
_nmcli_list "panu dun-gsm dun-cdma"
@@ -931,7 +937,7 @@ _nmcli()
OPTIONS_MANDATORY=(dev)
;;
bond)
- OPTIONS_TYPED=(mode miimon downdelay updelay arp-interval arp-ip-target primary)
+ OPTIONS_TYPED=(mode miimon downdelay updelay arp-interval arp-ip-target primary lacp-rate)
;;
bond-|bond-s|bond-sl|bond-sla|bond-slav|bond-slave)
OPTIONS_TYPED=(master)