From: Varun Chandramohan Date: Mon, 2 Jun 2008 08:25:56 +0000 (+0530) Subject: Display Correct Error For Addrlabel Info X-Git-Tag: v2.6.26~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6579feeac4ccc0f087fa402486b3b2fcbcabc77f;p=thirdparty%2Fiproute2.git Display Correct Error For Addrlabel Info The command "ip addrlabel add/del" displays incorrect error message when provided with insufficient inputs. This patch fixes it in par with "ip addr add/del". Currently: # ./ip addrlabel add RTNETLINK answers: Numerical result out of range # ./ip addr add Not enough information: "dev" argument is required. After patch: # ./ip addrlabel add Not enough information: "prefix" argument is required. Signed-off-by: Varun Chandramohan Signed-off-by: Stephen Hemminger --- diff --git a/ip/ipaddrlabel.c b/ip/ipaddrlabel.c index a4cdeceb0..cf438d639 100644 --- a/ip/ipaddrlabel.c +++ b/ip/ipaddrlabel.c @@ -139,6 +139,8 @@ static int ipaddrlabel_modify(int cmd, int argc, char **argv) inet_prefix prefix; uint32_t label = 0xffffffffUL; + char *p = NULL; + char *l = NULL; memset(&req, 0, sizeof(req)); memset(&prefix, 0, sizeof(prefix)); @@ -157,6 +159,7 @@ static int ipaddrlabel_modify(int cmd, int argc, char **argv) while (argc > 0) { if (strcmp(*argv, "prefix") == 0) { NEXT_ARG(); + p = *argv; get_prefix(&prefix, *argv, preferred_family); } else if (strcmp(*argv, "dev") == 0) { NEXT_ARG(); @@ -164,13 +167,21 @@ static int ipaddrlabel_modify(int cmd, int argc, char **argv) invarg("dev is invalid\n", *argv); } else if (strcmp(*argv, "label") == 0) { NEXT_ARG(); + l = *argv; if (get_u32(&label, *argv, 0) || label == 0xffffffffUL) invarg("label is invalid\n", *argv); } argc--; argv++; } - + if (p == NULL) { + fprintf(stderr, "Not enough information: \"prefix\" argument is required.\n"); + return -1; + } + if (l == NULL) { + fprintf(stderr, "Not enough information: \"label\" argument is required.\n"); + return -1; + } addattr32(&req.n, sizeof(req), IFAL_LABEL, label); addattr_l(&req.n, sizeof(req), IFAL_ADDRESS, &prefix.data, prefix.bytelen); req.ifal.ifal_prefixlen = prefix.bitlen;