-
-#define cli_count(cli) ((cli)->cli_connect->con_count)
-#define cli_fd(cli) ((cli)->cli_connect->con_fd)
-#define cli_freeflag(cli) ((cli)->cli_connect->con_freeflag)
-#define cli_error(cli) ((cli)->cli_connect->con_error)
-#define cli_snomask(cli) ((cli)->cli_connect->con_snomask)
-#define cli_nextnick(cli) ((cli)->cli_connect->con_nextnick)
-#define cli_nexttarget(cli) ((cli)->cli_connect->con_nexttarget)
-#define cli_cookie(cli) ((cli)->cli_connect->con_cookie)
-#define cli_sendQ(cli) ((cli)->cli_connect->con_sendQ)
-#define cli_recvQ(cli) ((cli)->cli_connect->con_recvQ)
-#define cli_sendM(cli) ((cli)->cli_connect->con_sendM)
-#define cli_sendK(cli) ((cli)->cli_connect->con_sendK)
-#define cli_receiveM(cli) ((cli)->cli_connect->con_receiveM)
-#define cli_receiveK(cli) ((cli)->cli_connect->con_receiveK)
-#define cli_sendB(cli) ((cli)->cli_connect->con_sendB)
-#define cli_receiveB(cli) ((cli)->cli_connect->con_receiveB)
-#define cli_listener(cli) ((cli)->cli_connect->con_listener)
-#define cli_confs(cli) ((cli)->cli_connect->con_confs)
-#define cli_handler(cli) ((cli)->cli_connect->con_handler)
-#define cli_dns_reply(cli) ((cli)->cli_connect->con_dns_reply)
-#define cli_listing(cli) ((cli)->cli_connect->con_listing)
-#define cli_max_sendq(cli) ((cli)->cli_connect->con_max_sendq)
-#define cli_ping_freq(cli) ((cli)->cli_connect->con_ping_freq)
-#define cli_lastsq(cli) ((cli)->cli_connect->con_lastsq)
-#define cli_port(cli) ((cli)->cli_connect->con_port)
-#define cli_targets(cli) ((cli)->cli_connect->con_targets)
-#define cli_sock_ip(cli) ((cli)->cli_connect->con_sock_ip)
-#define cli_sockhost(cli) ((cli)->cli_connect->con_sockhost)
-#define cli_passwd(cli) ((cli)->cli_connect->con_passwd)
-#define cli_buffer(cli) ((cli)->cli_connect->con_buffer)
-#define cli_socket(cli) ((cli)->cli_connect->con_socket)
-#define cli_proc(cli) ((cli)->cli_connect->con_proc)
-#define cli_auth(cli) ((cli)->cli_connect->con_auth)
-
+/** Get client account string. */
+#define cli_account(cli) (cli_user(cli) ? cli_user(cli)->account : "0")
+
+/** Get number of incoming bytes queued for client. */
+#define cli_count(cli) con_count(cli_connect(cli))
+/** Get file descriptor for sending in client's direction. */
+#define cli_fd(cli) con_fd(cli_connect(cli))
+/** Get free flags for the client's connection. */
+#define cli_freeflag(cli) con_freeflag(cli_connect(cli))
+/** Get last error code for the client's connection. */
+#define cli_error(cli) con_error(cli_connect(cli))
+/** Get server notice mask for the client. */
+#define cli_snomask(cli) con_snomask(cli_connect(cli))
+/** Get next time a nick change is allowed for the client. */
+#define cli_nextnick(cli) con_nextnick(cli_connect(cli))
+/** Get next time a target change is allowed for the client. */
+#define cli_nexttarget(cli) con_nexttarget(cli_connect(cli))
+/** Get SendQ for client. */
+#define cli_sendQ(cli) con_sendQ(cli_connect(cli))
+/** Get RecvQ for client. */
+#define cli_recvQ(cli) con_recvQ(cli_connect(cli))
+/** Get count of messages sent to client. */
+#define cli_sendM(cli) con_sendM(cli_connect(cli))
+/** Get number of messages received from client. */
+#define cli_receiveM(cli) con_receiveM(cli_connect(cli))
+/** Get number of bytes (modulo 1024) sent to client. */
+#define cli_sendB(cli) con_sendB(cli_connect(cli))
+/** Get number of bytes (modulo 1024) received from client. */
+#define cli_receiveB(cli) con_receiveB(cli_connect(cli))
+/** Get listener that accepted the client's connection. */
+#define cli_listener(cli) con_listener(cli_connect(cli))
+/** Get list of attached conf lines. */
+#define cli_confs(cli) con_confs(cli_connect(cli))
+/** Get handler type for client. */
+#define cli_handler(cli) con_handler(cli_connect(cli))
+/** Get LIST status for client. */
+#define cli_listing(cli) con_listing(cli_connect(cli))
+/** Get cached max SendQ for client. */
+#define cli_max_sendq(cli) con_max_sendq(cli_connect(cli))
+/** Get ping frequency for client. */
+#define cli_ping_freq(cli) con_ping_freq(cli_connect(cli))
+/** Get lastsq for client's connection. */
+#define cli_lastsq(cli) con_lastsq(cli_connect(cli))
+/** Get the array of current targets for the client. */
+#define cli_targets(cli) con_targets(cli_connect(cli))
+/** Get the string form of the client's IP address. */
+#define cli_sock_ip(cli) con_sock_ip(cli_connect(cli))
+/** Get the resolved hostname for the client. */
+#define cli_sockhost(cli) con_sockhost(cli_connect(cli))
+/** Get the client's password. */
+#define cli_passwd(cli) con_passwd(cli_connect(cli))
+/** Get the unprocessed input buffer for a client's connection. */
+#define cli_buffer(cli) con_buffer(cli_connect(cli))
+/** Get the Socket structure for sending to a client. */
+#define cli_socket(cli) con_socket(cli_connect(cli))
+/** Get Timer for processing waiting messages from the client. */
+#define cli_proc(cli) con_proc(cli_connect(cli))
+/** Get auth request for client. */
+#define cli_auth(cli) con_auth(cli_connect(cli))
+/** Get sentalong marker for client. */
+#define cli_sentalong(cli) con_sentalong(cli_connect(cli))
+
+/** Verify that a connection is valid. */