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: e67aba5595 ("tc: actions: add helpers to parse and print control actions")
Reported-by: Jiri Benc <jbenc@redhat.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Tested-by: Jiri Benc <jbenc@redhat.com>
This commit is contained in:
parent
39f3776b50
commit
c794b7b179
36
tc/tc_util.c
36
tc/tc_util.c
|
|
@ -481,18 +481,8 @@ static int action_a2n(char *arg, int *result, bool allow_num)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Parse action control including possible options.
|
static int __parse_action_control(int *argc_p, char ***argv_p, int *result_p,
|
||||||
*
|
bool allow_num, bool ignore_a2n_miss)
|
||||||
* 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)
|
|
||||||
{
|
{
|
||||||
int argc = *argc_p;
|
int argc = *argc_p;
|
||||||
char **argv = *argv_p;
|
char **argv = *argv_p;
|
||||||
|
|
@ -501,7 +491,8 @@ int parse_action_control(int *argc_p, char ***argv_p,
|
||||||
if (!argc)
|
if (!argc)
|
||||||
return -1;
|
return -1;
|
||||||
if (action_a2n(*argv, &result, allow_num) == -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;
|
return -1;
|
||||||
}
|
}
|
||||||
if (result == TC_ACT_GOTO_CHAIN) {
|
if (result == TC_ACT_GOTO_CHAIN) {
|
||||||
|
|
@ -527,6 +518,23 @@ int parse_action_control(int *argc_p, char ***argv_p,
|
||||||
return 0;
|
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.
|
/* Parse action control including possible options.
|
||||||
*
|
*
|
||||||
* Parameters:
|
* Parameters:
|
||||||
|
|
@ -542,7 +550,7 @@ void parse_action_control_dflt(int *argc_p, char ***argv_p,
|
||||||
int *result_p, bool allow_num,
|
int *result_p, bool allow_num,
|
||||||
int default_result)
|
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;
|
*result_p = default_result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue