extern struct doveadm_cmd doveadm_cmd_mailbox_mutf7;
extern struct doveadm_cmd doveadm_cmd_sis_deduplicate;
extern struct doveadm_cmd doveadm_cmd_sis_find;
-extern struct doveadm_cmd doveadm_cmd_zlibconnect;
void doveadm_register_cmd(const struct doveadm_cmd *cmd);
extern struct doveadm_cmd_ver2 doveadm_cmd_penalty_ver2;
extern struct doveadm_cmd_ver2 doveadm_cmd_kick_ver2;
extern struct doveadm_cmd_ver2 doveadm_cmd_who_ver2;
+extern struct doveadm_cmd_ver2 doveadm_cmd_zlibconnect;
#endif
i_stream_skip(client->input, size);
}
-static void cmd_zlibconnect(int argc ATTR_UNUSED, char *argv[])
+static void cmd_zlibconnect(struct doveadm_cmd_context *cctx)
{
struct client client;
+ const char *host;
struct ip_addr *ips;
unsigned int ips_count;
+ int64_t port_int64;
in_port_t port = 143;
int fd, ret;
- if (argv[1] == NULL ||
- (argv[2] != NULL && net_str2port(argv[2], &port) < 0))
- help(&doveadm_cmd_zlibconnect);
+ if (!doveadm_cmd_param_str(cctx, "host", &host))
+ help_ver2(&doveadm_cmd_zlibconnect);
+ if (doveadm_cmd_param_int64(cctx, "port", &port_int64)) {
+ if (port_int64 == 0 || port_int64 > 65535)
+ i_fatal("Invalid port: %"PRId64, port_int64);
+ port = (in_port_t)port_int64;
+ }
- ret = net_gethostbyname(argv[1], &ips, &ips_count);
+ ret = net_gethostbyname(host, &ips, &ips_count);
if (ret != 0) {
- i_fatal("Host %s lookup failed: %s", argv[1],
+ i_fatal("Host %s lookup failed: %s", host,
net_gethosterror(ret));
}
if ((fd = net_connect_ip(&ips[0], port, NULL)) == -1)
- i_fatal("connect(%s, %u) failed: %m", argv[1], port);
+ i_fatal("connect(%s, %u) failed: %m", host, port);
i_info("Connected to %s port %u.", net_ip2addr(&ips[0]), port);
i_fatal("Dovecot compiled without zlib support");
}
-static void cmd_zlibconnect(int argc ATTR_UNUSED, char *argv[] ATTR_UNUSED)
+static void cmd_zlibconnect(struct doveadm_cmd_context *cctx ATTR_UNUSED)
{
i_fatal("Dovecot compiled without zlib support");
}
cmd_dump_imapzlib
};
-struct doveadm_cmd doveadm_cmd_zlibconnect = {
- cmd_zlibconnect,
- "zlibconnect",
- "<host> [<port>]"
+struct doveadm_cmd_ver2 doveadm_cmd_zlibconnect = {
+ .name = "zlibconnect",
+ .cmd = cmd_zlibconnect,
+ .usage = "<host> [<port>]",
+DOVEADM_CMD_PARAMS_START
+DOVEADM_CMD_PARAM('\0', "host", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAM('\0', "port", CMD_PARAM_INT64, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAMS_END
};