diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2011-10-29 01:15:34 +0100 |
---|---|---|
committer | Ben Hutchings <bhutchings@solarflare.com> | 2011-11-03 19:13:04 +0000 |
commit | 127f80691f96b573db633c7dfe9fc36006dd6979 (patch) | |
tree | 5268575dc5c0e369c6aa1021453d570ff61e6f73 /rxclass.c | |
parent | 75300bbbcb20650297d0c29b945167a1e3347471 (diff) | |
download | ethtool-127f80691f96b573db633c7dfe9fc36006dd6979.tar.gz |
Move argument parsing to sub-command functions
Instead of doing most of the argument parsing in parse_cmdline(),
find the sub-command and (if required) the device name in main()
and do the rest in the sub-command handler function. Pass argc
and argp around in struct cmd_context.
This also tightens up argument parsing slightly: extraneous or missing
arguments will now result in an error in a few cases where they were
previously ignored. All test cases now pass.
Replace sub-command dispatch in doit() with a function pointer
in struct option.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Diffstat (limited to 'rxclass.c')
-rw-r--r-- | rxclass.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -950,7 +950,7 @@ static int rxclass_get_mask(char *str, unsigned char *p, return 0; } -int rxclass_parse_ruleopts(char **argp, int argc, +int rxclass_parse_ruleopts(struct cmd_context *ctx, struct ethtool_rx_flow_spec *fsp) { const struct rule_opts *options; @@ -958,6 +958,8 @@ int rxclass_parse_ruleopts(char **argp, int argc, int i = 0, n_opts, err; u32 flags = 0; int flow_type; + int argc = ctx->argc; + char **argp = ctx->argp; if (argc < 1) goto syntax_err; |