You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.8 KiB
88 lines
2.8 KiB
From aed8229c0bec5c56deaf1ea2047ca0263732477f Mon Sep 17 00:00:00 2001 |
|
From: Phil Sutter <psutter@redhat.com> |
|
Date: Fri, 11 Aug 2017 11:11:32 +0200 |
|
Subject: [PATCH] Really fix get_addr() and get_prefix() error messages |
|
|
|
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1477206 |
|
Upstream Status: iproute2.git commit 34705c807a389 |
|
|
|
commit 34705c807a38909247d1bb29ccdffe42e5c1dab3 |
|
Author: Phil Sutter <phil@nwl.cc> |
|
Date: Tue Aug 1 18:36:11 2017 +0200 |
|
|
|
Really fix get_addr() and get_prefix() error messages |
|
|
|
Both functions take the desired address family as a parameter. So using |
|
that to notify the user what address family was expected is correct, |
|
unlike using dst->family which will tell the user only what address |
|
family was specified. |
|
|
|
The situation which commit 334af76143368 tried to fix was when 'ip' |
|
would accept addresses from multiple families. In that case, the family |
|
parameter is set to AF_UNSPEC so that get_addr_1() may accept any valid |
|
address. |
|
|
|
This patch introduces a wrapper around family_name() which returns the |
|
string "any valid" for AF_UNSPEC instead of the three question marks |
|
unsuitable for use in error messages. |
|
|
|
Tests for AF_UNSPEC: |
|
|
|
| # ip a a 256.10.166.1/24 dev d0 |
|
| Error: any valid prefix is expected rather than "256.10.166.1/24". |
|
|
|
| # ip neighbor add proxy 2001:db8::g dev d0 |
|
| Error: any valid address is expected rather than "2001:db8::g". |
|
|
|
Tests for explicit address family: |
|
|
|
| # ip -6 addrlabel add prefix 1.1.1.1/24 label 123 |
|
| Error: inet6 prefix is expected rather than "1.1.1.1/24". |
|
|
|
| # ip -4 addrlabel add prefix dead:beef::1/24 label 123 |
|
| Error: inet prefix is expected rather than "dead:beef::1/24". |
|
|
|
Reported-by: Jaroslav Aster <jaster@redhat.com> |
|
Fixes: 334af76143368 ("fix get_addr() and get_prefix() error messages") |
|
Signed-off-by: Phil Sutter <phil@nwl.cc> |
|
--- |
|
lib/utils.c | 11 +++++++++-- |
|
1 file changed, 9 insertions(+), 2 deletions(-) |
|
|
|
diff --git a/lib/utils.c b/lib/utils.c |
|
index 6d5642f..7d6ee53 100644 |
|
--- a/lib/utils.c |
|
+++ b/lib/utils.c |
|
@@ -613,12 +613,19 @@ done: |
|
return err; |
|
} |
|
|
|
+static const char *family_name_verbose(int family) |
|
+{ |
|
+ if (family == AF_UNSPEC) |
|
+ return "any valid"; |
|
+ return family_name(family); |
|
+} |
|
+ |
|
int get_addr(inet_prefix *dst, const char *arg, int family) |
|
{ |
|
if (get_addr_1(dst, arg, family)) { |
|
fprintf(stderr, |
|
"Error: %s address is expected rather than \"%s\".\n", |
|
- family_name(dst->family), arg); |
|
+ family_name_verbose(family), arg); |
|
exit(1); |
|
} |
|
return 0; |
|
@@ -636,7 +643,7 @@ int get_prefix(inet_prefix *dst, char *arg, int family) |
|
if (get_prefix_1(dst, arg, family)) { |
|
fprintf(stderr, |
|
"Error: %s prefix is expected rather than \"%s\".\n", |
|
- family_name(dst->family), arg); |
|
+ family_name_verbose(family), arg); |
|
exit(1); |
|
} |
|
return 0; |
|
-- |
|
1.8.3.1 |
|
|
|
|