int keep_alive_tmo;
int reconnect_delay;
int ctrl_loss_tmo;
+ int tos;
char *raw;
char *device;
int duplicate_connect;
}
static int
-add_int_argument(char **argstr, int *max_len, char *arg_str, int arg)
+add_int_argument(char **argstr, int *max_len, char *arg_str, int arg,
+ bool allow_zero)
{
int len;
- if (arg) {
+ if ((arg && !allow_zero) || (arg != -1 && allow_zero)) {
len = snprintf(*argstr, *max_len, ",%s=%d", arg_str, arg);
if (len < 0)
return -EINVAL;
add_argument(&argstr, &max_len, "hostid", cfg.hostid)) ||
(!discover &&
add_int_argument(&argstr, &max_len, "nr_io_queues",
- cfg.nr_io_queues)) ||
+ cfg.nr_io_queues, false)) ||
add_int_argument(&argstr, &max_len, "nr_write_queues",
- cfg.nr_write_queues) ||
+ cfg.nr_write_queues, false) ||
add_int_argument(&argstr, &max_len, "nr_poll_queues",
- cfg.nr_poll_queues) ||
+ cfg.nr_poll_queues, false) ||
(!discover &&
add_int_argument(&argstr, &max_len, "queue_size",
- cfg.queue_size)) ||
+ cfg.queue_size, false)) ||
(!discover &&
add_int_argument(&argstr, &max_len, "keep_alive_tmo",
- cfg.keep_alive_tmo)) ||
+ cfg.keep_alive_tmo, false)) ||
add_int_argument(&argstr, &max_len, "reconnect_delay",
- cfg.reconnect_delay) ||
+ cfg.reconnect_delay, false) ||
add_int_argument(&argstr, &max_len, "ctrl_loss_tmo",
- cfg.ctrl_loss_tmo) ||
+ cfg.ctrl_loss_tmo, false) ||
+ add_int_argument(&argstr, &max_len, "tos",
+ cfg.tos, true) ||
add_bool_argument(&argstr, &max_len, "duplicate_connect",
cfg.duplicate_connect) ||
add_bool_argument(&argstr, &max_len, "disable_sqflow",
p += len;
}
+ if (cfg.tos != -1) {
+ len = sprintf(p, ",tos=%d", cfg.tos);
+ if (len < 0)
+ return -EINVAL;
+ p += len;
+ }
+
if (cfg.keep_alive_tmo && !discover) {
len = sprintf(p, ",keep_alive_tmo=%d", cfg.keep_alive_tmo);
if (len < 0)
OPT_INT("keep-alive-tmo", 'k', &cfg.keep_alive_tmo, "keep alive timeout period in seconds"),
OPT_INT("reconnect-delay", 'c', &cfg.reconnect_delay, "reconnect timeout period in seconds"),
OPT_INT("ctrl-loss-tmo", 'l', &cfg.ctrl_loss_tmo, "controller loss timeout period in seconds"),
+ OPT_INT("tos", 'T', &cfg.tos, "type of service"),
OPT_FLAG("hdr_digest", 'g', &cfg.hdr_digest, "enable transport protocol header digest (TCP transport)"),
OPT_FLAG("data_digest", 'G', &cfg.data_digest, "enable transport protocol data digest (TCP transport)"),
OPT_INT("nr-io-queues", 'i', &cfg.nr_io_queues, "number of io queues to use (default is core count)"),
OPT_END()
};
+ cfg.tos = -1;
ret = argconfig_parse(argc, argv, desc, opts, &cfg, sizeof(cfg));
if (ret)
goto out;
OPT_INT("keep-alive-tmo", 'k', &cfg.keep_alive_tmo, "keep alive timeout period in seconds"),
OPT_INT("reconnect-delay", 'c', &cfg.reconnect_delay, "reconnect timeout period in seconds"),
OPT_INT("ctrl-loss-tmo", 'l', &cfg.ctrl_loss_tmo, "controller loss timeout period in seconds"),
+ OPT_INT("tos", 'T', &cfg.tos, "type of service"),
OPT_FLAG("duplicate-connect", 'D', &cfg.duplicate_connect, "allow duplicate connections between same transport host and subsystem port"),
OPT_FLAG("disable-sqflow", 'd', &cfg.disable_sqflow, "disable controller sq flow control (default false)"),
OPT_FLAG("hdr-digest", 'g', &cfg.hdr_digest, "enable transport protocol header digest (TCP transport)"),
OPT_END()
};
+ cfg.tos = -1;
ret = argconfig_parse(argc, argv, desc, opts, &cfg, sizeof(cfg));
if (ret)
goto out;