int anvil_clnt_lookup(ANVIL_CLNT *anvil_clnt, const char *service, const char *addr, int *count, int *rate, int *msgs, int *rcpts, int *newtls, int *auths) { char *ident = ANVIL_IDENT(service, addr); int status; if (attr_clnt_request((ATTR_CLNT *) anvil_clnt, ATTR_FLAG_NONE, /* Query attributes. */ SEND_ATTR_STR(ANVIL_ATTR_REQ, ANVIL_REQ_LOOKUP), SEND_ATTR_STR(ANVIL_ATTR_IDENT, ident), ATTR_TYPE_END, ATTR_FLAG_MISSING, /* Reply attributes. */ RECV_ATTR_INT(ANVIL_ATTR_STATUS, &status), RECV_ATTR_INT(ANVIL_ATTR_COUNT, count), RECV_ATTR_INT(ANVIL_ATTR_RATE, rate), RECV_ATTR_INT(ANVIL_ATTR_MAIL, msgs), RECV_ATTR_INT(ANVIL_ATTR_RCPT, rcpts), RECV_ATTR_INT(ANVIL_ATTR_NTLS, newtls), RECV_ATTR_INT(ANVIL_ATTR_AUTH, auths), ATTR_TYPE_END) != 7) status = ANVIL_STAT_FAIL; else if (status != ANVIL_STAT_OK) status = ANVIL_STAT_FAIL; myfree(ident); return (status); }
int anvil_clnt_disconnect(ANVIL_CLNT *anvil_clnt, const char *service, const char *addr) { char *ident = ANVIL_IDENT(service, addr); int status; if (attr_clnt_request((ATTR_CLNT *) anvil_clnt, ATTR_FLAG_NONE, /* Query attributes. */ SEND_ATTR_STR(ANVIL_ATTR_REQ, ANVIL_REQ_DISC), SEND_ATTR_STR(ANVIL_ATTR_IDENT, ident), ATTR_TYPE_END, ATTR_FLAG_MISSING, /* Reply attributes. */ RECV_ATTR_INT(ANVIL_ATTR_STATUS, &status), ATTR_TYPE_END) != 1) status = ANVIL_STAT_FAIL; else if (status != ANVIL_STAT_OK) status = ANVIL_STAT_FAIL; myfree(ident); return (status); }
int anvil_clnt_newtls_stat(ANVIL_CLNT *anvil_clnt, const char *service, const char *addr, int *newtls) { char *ident = ANVIL_IDENT(service, addr); int status; if (attr_clnt_request((ATTR_CLNT *) anvil_clnt, ATTR_FLAG_NONE, /* Query attributes. */ ATTR_TYPE_STR, ANVIL_ATTR_REQ, ANVIL_REQ_NTLS_STAT, ATTR_TYPE_STR, ANVIL_ATTR_IDENT, ident, ATTR_TYPE_END, ATTR_FLAG_MISSING, /* Reply attributes. */ ATTR_TYPE_INT, ANVIL_ATTR_STATUS, &status, ATTR_TYPE_INT, ANVIL_ATTR_RATE, newtls, ATTR_TYPE_END) != 2) status = ANVIL_STAT_FAIL; else if (status != ANVIL_STAT_OK) status = ANVIL_STAT_FAIL; myfree(ident); return (status); }