sgsnemu: Make use of "dependon" feature in gengetopt
The gengetopt syntax can specify that a particular command line argument
depends on some other argument/option present. We can use this to
provide useful feedback to the user at the command line parsing state,
like --pingrate making no sense without --pinghost being specified.
Change-Id: Ief27275e90e6bce23aed1e83874dbac98dd0926b
diff --git a/sgsnemu/cmdline.c b/sgsnemu/cmdline.c
index 441322b..1c02baa 100644
--- a/sgsnemu/cmdline.c
+++ b/sgsnemu/cmdline.c
@@ -676,12 +676,60 @@
/* checks for required options */
/* checks for dependences among options */
+ if (args_info->net_given && !args_info->createif_given) {
+ fprintf(stderr,
+ "%s: '--net' ('-n') option depends on option 'createif'%s\n",
+ prog_name, (additional_error ? additional_error : ""));
+ error_occurred = 1;
+ }
+ if (args_info->defaultroute_given && !args_info->createif_given) {
+ fprintf(stderr,
+ "%s: '--defaultroute' option depends on option 'createif'%s\n",
+ prog_name, (additional_error ? additional_error : ""));
+ error_occurred = 1;
+ }
+ if (args_info->ipup_given && !args_info->createif_given) {
+ fprintf(stderr,
+ "%s: '--ipup' option depends on option 'createif'%s\n",
+ prog_name, (additional_error ? additional_error : ""));
+ error_occurred = 1;
+ }
+ if (args_info->ipdown_given && !args_info->createif_given) {
+ fprintf(stderr,
+ "%s: '--ipdown' option depends on option 'createif'%s\n",
+ prog_name, (additional_error ? additional_error : ""));
+ error_occurred = 1;
+ }
if (args_info->tun_device_given && !args_info->createif_given) {
fprintf(stderr,
"%s: '--tun-device' option depends on option 'createif'%s\n",
prog_name, (additional_error ? additional_error : ""));
error_occurred = 1;
}
+ if (args_info->pingrate_given && !args_info->pinghost_given) {
+ fprintf(stderr,
+ "%s: '--pingrate' option depends on option 'pinghost'%s\n",
+ prog_name, (additional_error ? additional_error : ""));
+ error_occurred = 1;
+ }
+ if (args_info->pingsize_given && !args_info->pinghost_given) {
+ fprintf(stderr,
+ "%s: '--pingsize' option depends on option 'pinghost'%s\n",
+ prog_name, (additional_error ? additional_error : ""));
+ error_occurred = 1;
+ }
+ if (args_info->pingcount_given && !args_info->pinghost_given) {
+ fprintf(stderr,
+ "%s: '--pingcount' option depends on option 'pinghost'%s\n",
+ prog_name, (additional_error ? additional_error : ""));
+ error_occurred = 1;
+ }
+ if (args_info->pingquiet_given && !args_info->pinghost_given) {
+ fprintf(stderr,
+ "%s: '--pingquiet' option depends on option 'pinghost'%s\n",
+ prog_name, (additional_error ? additional_error : ""));
+ error_occurred = 1;
+ }
return error_occurred;
}