path: root/rxclass.c
diff options
authorBen Hutchings <>2011-10-29 01:15:34 +0100
committerBen Hutchings <>2011-11-03 19:13:04 +0000
commit127f80691f96b573db633c7dfe9fc36006dd6979 (patch)
tree5268575dc5c0e369c6aa1021453d570ff61e6f73 /rxclass.c
parent75300bbbcb20650297d0c29b945167a1e3347471 (diff)
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 <>
Diffstat (limited to 'rxclass.c')
1 files changed, 3 insertions, 1 deletions
diff --git a/rxclass.c b/rxclass.c
index dec9dd5..0c7b916 100644
--- a/rxclass.c
+++ b/rxclass.c
@@ -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;