@@ -62,10 +62,16 @@ struct vhost_crypto_options {
uint32_t guest_polling;
} options;
+enum {
#define CONFIG_KEYWORD "config"
+ CONFIG_KEYWORD_NUM = 256,
#define SOCKET_FILE_KEYWORD "socket-file"
+ SOCKET_FILE_KEYWORD_NUM,
#define ZERO_COPY_KEYWORD "zero-copy"
+ ZERO_COPY_KEYWORD_NUM,
#define POLLING_KEYWORD "guest-polling"
+ POLLING_KEYWORD_NUM,
+};
#define NB_SOCKET_FIELDS (2)
@@ -210,10 +216,14 @@ vhost_crypto_parse_args(int argc, char **argv)
char **argvopt;
int option_index;
struct option lgopts[] = {
- {SOCKET_FILE_KEYWORD, required_argument, 0, 0},
- {CONFIG_KEYWORD, required_argument, 0, 0},
- {ZERO_COPY_KEYWORD, no_argument, 0, 0},
- {POLLING_KEYWORD, no_argument, 0, 0},
+ {SOCKET_FILE_KEYWORD, required_argument,
+ NULL, SOCKET_FILE_KEYWORD_NUM},
+ {CONFIG_KEYWORD, required_argument,
+ NULL, CONFIG_KEYWORD_NUM},
+ {ZERO_COPY_KEYWORD, no_argument,
+ NULL, ZERO_COPY_KEYWORD_NUM},
+ {POLLING_KEYWORD, no_argument,
+ NULL, POLLING_KEYWORD_NUM},
{NULL, 0, 0, 0}
};
@@ -222,36 +232,46 @@ vhost_crypto_parse_args(int argc, char **argv)
while ((opt = getopt_long(argc, argvopt, "s:",
lgopts, &option_index)) != EOF) {
+ if (opt == '?') {
+ vhost_crypto_usage(prgname);
+ return -1;
+ }
+
switch (opt) {
- case 0:
- if (strcmp(lgopts[option_index].name,
- SOCKET_FILE_KEYWORD) == 0) {
- ret = parse_socket_arg(optarg);
- if (ret < 0) {
- vhost_crypto_usage(prgname);
- return ret;
- }
- } else if (strcmp(lgopts[option_index].name,
- CONFIG_KEYWORD) == 0) {
- ret = parse_config(optarg);
- if (ret < 0) {
- vhost_crypto_usage(prgname);
- return ret;
- }
- } else if (strcmp(lgopts[option_index].name,
- ZERO_COPY_KEYWORD) == 0) {
- options.zero_copy =
- RTE_VHOST_CRYPTO_ZERO_COPY_ENABLE;
- } else if (strcmp(lgopts[option_index].name,
- POLLING_KEYWORD) == 0) {
- options.guest_polling = 1;
- } else {
+ case SOCKET_FILE_KEYWORD_NUM:
+ {
+ ret = parse_socket_arg(optarg);
+ if (ret < 0) {
vhost_crypto_usage(prgname);
- return -EINVAL;
+ return ret;
}
break;
+ }
+ case CONFIG_KEYWORD_NUM:
+ {
+ ret = parse_config(optarg);
+ if (ret < 0) {
+ vhost_crypto_usage(prgname);
+ return ret;
+ }
+ break;
+ }
+ case ZERO_COPY_KEYWORD_NUM:
+ {
+ options.zero_copy =
+ RTE_VHOST_CRYPTO_ZERO_COPY_ENABLE;
+ break;
+ }
+ case POLLING_KEYWORD_NUM:
+ {
+ options.guest_polling = 1;
+ break;
+ }
default:
- return -1;
+ {
+ vhost_crypto_usage(prgname);
+ return -EINVAL;
+ }
}
}