From: Jiri Pirko Date: Thu, 15 Jun 2017 12:10:51 +0000 (+0200) Subject: tc: don't print error message on miss when parsing action with default X-Git-Tag: v4.13.0~119 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c794b7b17902627b19ddc00699d89ea7b6b1edf7;p=thirdparty%2Fiproute2.git tc: don't print error message on miss when parsing action with default In case default control action parsing takes place, it is ok to miss. So don't print error message. Fixes: e67aba559581 ("tc: actions: add helpers to parse and print control actions") Reported-by: Jiri Benc Signed-off-by: Jiri Pirko Tested-by: Jiri Benc --- diff --git a/tc/tc_util.c b/tc/tc_util.c index 5a0f96aa5..371046839 100644 --- a/tc/tc_util.c +++ b/tc/tc_util.c @@ -481,18 +481,8 @@ static int action_a2n(char *arg, int *result, bool allow_num) return 0; } -/* Parse action control including possible options. - * - * Parameters: - * @argc_p - pointer to argc to parse - * @argv_p - pointer to argv to parse - * @result_p - pointer to output variable - * @allow_num - whether action may be in numeric format already - * - * In error case, returns -1 and does not touch @result_1p. Otherwise returns 0. - */ -int parse_action_control(int *argc_p, char ***argv_p, - int *result_p, bool allow_num) +static int __parse_action_control(int *argc_p, char ***argv_p, int *result_p, + bool allow_num, bool ignore_a2n_miss) { int argc = *argc_p; char **argv = *argv_p; @@ -501,7 +491,8 @@ int parse_action_control(int *argc_p, char ***argv_p, if (!argc) return -1; if (action_a2n(*argv, &result, allow_num) == -1) { - fprintf(stderr, "Bad action type %s\n", *argv); + if (!ignore_a2n_miss) + fprintf(stderr, "Bad action type %s\n", *argv); return -1; } if (result == TC_ACT_GOTO_CHAIN) { @@ -527,6 +518,23 @@ int parse_action_control(int *argc_p, char ***argv_p, return 0; } +/* Parse action control including possible options. + * + * Parameters: + * @argc_p - pointer to argc to parse + * @argv_p - pointer to argv to parse + * @result_p - pointer to output variable + * @allow_num - whether action may be in numeric format already + * + * In error case, returns -1 and does not touch @result_1p. Otherwise returns 0. + */ +int parse_action_control(int *argc_p, char ***argv_p, + int *result_p, bool allow_num) +{ + return __parse_action_control(argc_p, argv_p, result_p, + allow_num, false); +} + /* Parse action control including possible options. * * Parameters: @@ -542,7 +550,7 @@ void parse_action_control_dflt(int *argc_p, char ***argv_p, int *result_p, bool allow_num, int default_result) { - if (parse_action_control(argc_p, argv_p, result_p, allow_num)) + if (__parse_action_control(argc_p, argv_p, result_p, allow_num, true)) *result_p = default_result; }