lldpad/lldpad-0.9.43-lldpad-802.1Qaz-make-ETS-CFG-willing-yes-no-values-v.patch
2011-09-08 08:34:30 +02:00

98 lines
2.9 KiB
Diff

From b2050baf30c4c1a9e6aa4142a340dd9e9f5b0d1b Mon Sep 17 00:00:00 2001
From: John Fastabend <john.r.fastabend@intel.com>
Date: Wed, 27 Jul 2011 15:07:11 -0700
Subject: [PATCH 12/29] lldpad: 802.1Qaz, make ETS-CFG willing {yes|no} values
valid
Currently, the willing option to ETS-CFG takes a 0 or 1 value
while all other attributes use "yes" or "no".
So make ETS-CFG willing follow the trend and use "yes" or "no"
as well.
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Signed-off-by: Petr Sabata <contyk@redhat.com>
---
docs/lldptool-ets.8 | 4 ++--
lldp_8021qaz_cmds.c | 28 ++++++++++++++++++++++++++--
2 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/docs/lldptool-ets.8 b/docs/lldptool-ets.8
index 2b76b9c..16fdba9 100644
--- a/docs/lldptool-ets.8
+++ b/docs/lldptool-ets.8
@@ -19,7 +19,7 @@ ETS-{CFG|REC} \- Show / manipulate ETS TLV configuration
.sp
.BR enableTx " = " {yes|no} " | "
.sp
-.BR willing " = " {0|1} " | "
+.BR willing " = " {yes|no} " | "
.sp
.BR tsa " = " tc:{ets|strict|vendor},... " | "
.sp
@@ -107,7 +107,7 @@ have support for specific protocols ie Fiber Channel over Ethernet (FCoE).
.SH EXAMPLE & USAGE
.TP
Configure willing bit for interface \fIeth2\fR
-.B lldptool -T -i eth2 -V ETS-CFG willing=1
+.B lldptool -T -i eth2 -V ETS-CFG willing=yes
.TP
Configure traffic classes for ETS and strict priority on \fIeth2\fR
.B lldptool -T -i eth2 -V ETS-CFG tsa=0:ets,1:ets,2:ets,3:ets,4:strict,5:strict
diff --git a/lldp_8021qaz_cmds.c b/lldp_8021qaz_cmds.c
index 1ee733e..4dd8042 100644
--- a/lldp_8021qaz_cmds.c
+++ b/lldp_8021qaz_cmds.c
@@ -142,7 +142,7 @@ static int get_arg_willing(struct cmd *cmd, char *args,
static int _set_arg_willing(struct cmd *cmd, char *args,
char *arg_value, char *obuf, int obuf_len, bool test)
{
- long willing = strtol(arg_value, NULL, 10);
+ long willing;
struct ieee8021qaz_tlvs *tlvs;
char arg_path[256];
@@ -153,6 +153,29 @@ static int _set_arg_willing(struct cmd *cmd, char *args,
if (!tlvs)
return cmd_device_not_found;
+
+
+ /* To remain backward compatible and make it easier
+ * for everyone use to {0|1} notation we still support
+ * this but also support english variants as well
+ */
+ if (!strcasecmp(arg_value, VAL_YES))
+ willing = 1;
+ else if (!strcasecmp(arg_value, VAL_NO))
+ willing = 0;
+ else {
+ char *end;
+
+ errno = 0;
+ willing = strtol(arg_value, &end, 10);
+
+ if (end == arg_value || *end != '\0')
+ return cmd_invalid;
+
+ if (errno || willing < 0)
+ return cmd_invalid;
+ }
+
switch (cmd->tlvid) {
case (OUI_IEEE_8021 << 8) | LLDP_8021QAZ_ETSCFG:
if (!test)
@@ -171,7 +194,8 @@ static int _set_arg_willing(struct cmd *cmd, char *args,
if (test)
return cmd_success;
- snprintf(obuf, obuf_len, "willing = %i\n", !!willing);
+ snprintf(obuf, obuf_len, "willing = %s\n",
+ !!willing ? VAL_YES : VAL_NO);
snprintf(arg_path, sizeof(arg_path), "%s%08x.%s", TLVID_PREFIX,
cmd->tlvid, args);
--
1.7.6