We abandon the wasteful strategy of gradual changes and simply change to applog-style API wholesale, to put the whole issue behind. Applications need to be rebuilt after new cld-devel is installed.
Signed-off-by: Pete Zaitcev <[email protected]> diff --git a/include/cldc.h b/include/cldc.h index 712e7c7..8c2bde5 100644 --- a/include/cldc.h +++ b/include/cldc.h @@ -78,7 +78,6 @@ struct cldc_ops { const void *buf, size_t buflen); void (*event)(void *private, struct cldc_session *, struct cldc_fh *, uint32_t); - void (*printf)(const char *fmt, ...); void (*errlog)(int prio, const char *fmt, ...); }; @@ -89,8 +88,7 @@ struct cldc_session { bool verbose; const struct cldc_ops *ops; - void (*act_log)(struct cldc_session *, - int prio, const char *fmt, ...); + void (*act_log)(int prio, const char *fmt, ...); void *private; uint8_t addr[64]; /* server address */ @@ -211,13 +209,13 @@ extern bool cldc_levent_timer(void *private, bool add, /* cldc-dns */ extern int cldc_getaddr(GList **host_list, const char *thishost, bool verbose, - void (*act_log)(const char *fmt, ...)); + void (*act_log)(int prio, const char *fmt, ...)); extern int cldc_saveaddr(struct cldc_host *hp, unsigned int priority, unsigned int weight, unsigned int port, unsigned int nlen, const char *name, bool verbose, - void (*act_log)(const char *fmt, ...)); + void (*act_log)(int prio, const char *fmt, ...)); static inline bool seqid_after_eq(uint64_t a_, uint64_t b_) { diff --git a/lib/cldc-dns.c b/lib/cldc-dns.c index 8f8984b..bc915e6 100644 --- a/lib/cldc-dns.c +++ b/lib/cldc-dns.c @@ -8,6 +8,7 @@ #include <arpa/nameser.h> #include <netdb.h> #include <resolv.h> +#include <syslog.h> #include "cldc.h" #define ADDRSIZE 24 /* Enough for IPv6, including port. */ @@ -21,7 +22,7 @@ int cldc_saveaddr(struct cldc_host *hp, unsigned int weight, unsigned int port, unsigned int nlen, const char *name, bool verbose, - void (*act_log)(const char *fmt, ...)) + void (*act_log)(int prio, const char *fmt, ...)) { char portstr[11]; char *hostname; @@ -46,7 +47,7 @@ int cldc_saveaddr(struct cldc_host *hp, rc = getaddrinfo(hostname, portstr, &hints, &res0); if (rc) { - act_log("getaddrinfo(%s,%s) failed: %s", + act_log(LOG_INFO, "getaddrinfo(%s,%s) failed: %s", hostname, portstr, gai_strerror(rc)); rc = -EINVAL; goto err_addr; @@ -65,7 +66,7 @@ int cldc_saveaddr(struct cldc_host *hp, } if (!something_suitable) { - act_log("Host %s port %u has no addresses", + act_log(LOG_INFO, "Host %s port %u has no addresses", hostname, port); rc = -EINVAL; goto err_suitable; @@ -77,7 +78,7 @@ int cldc_saveaddr(struct cldc_host *hp, hp->weight = weight; if (verbose) { - act_log( + act_log(LOG_DEBUG, "Found CLD host %s prio %d weight %d", hostname, priority, weight); } @@ -100,7 +101,7 @@ err_name: */ static int cldc_make_fqdn(char *buf, int size, const char *srvname, const char *thishost, - void (*act_log)(const char *fmt, ...)) + void (*act_log)(int prio, const char *fmt, ...)) { char *s; int nlen; @@ -108,18 +109,19 @@ static int cldc_make_fqdn(char *buf, int size, const char *srvname, nlen = strlen(srvname); if (nlen >= size-20) { - act_log( + act_log(LOG_INFO, "cldc_getaddr: internal error (nlen %d size %d)", nlen, size); return -1; } if (thishost == NULL) { - act_log("cldc_getaddr: internal error (null hostname)"); + act_log(LOG_INFO, + "cldc_getaddr: internal error (null hostname)"); return -1; } if ((s = strchr(thishost, '.')) == NULL) { - act_log( + act_log(LOG_INFO, "cldc_getaddr: hostname is not FQDN: \"%s\"", thishost); return -1; @@ -128,7 +130,7 @@ static int cldc_make_fqdn(char *buf, int size, const char *srvname, dlen = strlen(s); if (nlen + 1 + dlen + 1 > size) { - act_log( + act_log(LOG_INFO, "cldc_getaddr: domain is too long: \"%s\"", s); return -1; } @@ -160,7 +162,7 @@ static void push_host(GList **host_list, struct cldc_host *hp_in) * are started. */ int cldc_getaddr(GList **host_list, const char *thishost, bool verbose, - void (*act_log)(const char *fmt, ...)) + void (*act_log)(int prio, const char *fmt, ...)) { enum { hostsz = 64 }; char cldb[hostsz]; @@ -189,10 +191,12 @@ do_try_again: if (rc < 0) { switch (h_errno) { case HOST_NOT_FOUND: - act_log("No _cld._udp SRV record"); + act_log(LOG_INFO, + "cldc_getaddr: No _cld._udp SRV record"); return -1; case NO_DATA: - act_log("Cannot find _cld._udp SRV record"); + act_log(LOG_INFO, + "cldc_getaddr: Cannot find _cld._udp SRV record"); return -1; case TRY_AGAIN: if (search_retries-- > 0) @@ -200,23 +204,22 @@ do_try_again: /* fall through */ case NO_RECOVERY: default: - act_log( - "cldc_getaddr: res_search error (%d): %s", - h_errno, hstrerror(h_errno)); + act_log(LOG_INFO, + "cldc_getaddr: res_search error (%d): %s", + h_errno, hstrerror(h_errno)); return -1; } } rlen = rc; if (rlen == 0) { - act_log( - "cldc_getaddr: res_search returned empty reply"); + act_log(LOG_INFO, + "cldc_getaddr: res_search returned empty reply"); return -1; } if (ns_initparse(resp, rlen, &nsb) < 0) { - act_log( - "cldc_getaddr: ns_initparse error"); + act_log(LOG_INFO, "cldc_getaddr: ns_initparse error"); return -1; } @@ -235,9 +238,9 @@ do_try_again: rrlen = ns_rr_rdlen(rrb); if (rrlen < 8) { /* 2+2+2 and 2 for host */ if (verbose) { - act_log( - "cldc_getaddr: SRV len %d", - rrlen); + act_log(LOG_DEBUG, + "cldc_getaddr: SRV len %d", + rrlen); } break; } @@ -245,14 +248,14 @@ do_try_again: rc = dn_expand(resp, resp+rlen, p+6, hostb, hostsz); if (rc < 0) { if (verbose) { - act_log("cldc_getaddr: " + act_log(LOG_DEBUG, "cldc_getaddr: " "dn_expand error %d", rc); } break; } if (rc < 2) { if (verbose) { - act_log("cldc_getaddr: " + act_log(LOG_DEBUG, "cldc_getaddr: " "dn_expand short %d", rc); } break; @@ -267,8 +270,8 @@ do_try_again: break; case ns_t_cname: /* impossible, but */ if (verbose) { - act_log( - "CNAME in SRV request, ignored"); + act_log(LOG_DEBUG, + "CNAME in SRV request, ignored"); } break; default: diff --git a/lib/cldc.c b/lib/cldc.c index 90139cf..7ac6442 100644 --- a/lib/cldc.c +++ b/lib/cldc.c @@ -83,7 +83,7 @@ static size_t strnlen(const char *s, size_t maxlen) #define EBADE 52 #endif -static void cldc_stdlog(struct cldc_session *sess, int prio, const char *fmt, ...) +static void cldc_errlog(int prio, const char *fmt, ...) { char buf[200]; va_list ap; @@ -94,30 +94,6 @@ static void cldc_stdlog(struct cldc_session *sess, int prio, const char *fmt, .. va_end(ap); } -static void cldc_oldlog(struct cldc_session *sess, - int prio, const char *fmt, ...) -{ - char buf[200]; - va_list ap; - - va_start(ap, fmt); - vsnprintf(buf, 200, fmt, ap); - sess->ops->printf("%s\n", buf); - va_end(ap); -} - -static void cldc_applog(struct cldc_session *sess, - int prio, const char *fmt, ...) -{ - char buf[200]; - va_list ap; - - va_start(ap, fmt); - vsnprintf(buf, 200, fmt, ap); - sess->ops->errlog(prio, "%s", buf); - va_end(ap); -} - static int ack_seqid(struct cldc_session *sess, uint64_t seqid_le) { struct cld_packet *pkt; @@ -138,7 +114,7 @@ static int ack_seqid(struct cldc_session *sess, uint64_t seqid_le) memcpy(resp, &def_msg_ack, sizeof(*resp)); if (!authsign(sess, pkt, pkt_len)) { - sess->act_log(sess, LOG_INFO, "authsign failed 2"); + sess->act_log(LOG_INFO, "authsign failed 2"); return -1; } @@ -163,11 +139,11 @@ static int cldc_rx_generic(struct cldc_session *sess, req = tmp->data; if (sess->verbose) - sess->act_log(sess, LOG_DEBUG, "rx_gen: comparing req->xid (%llu) with resp->xid_in (%llu)", - (unsigned long long) - le64_to_cpu(req->xid), - (unsigned long long) - le64_to_cpu(resp->xid_in)); + sess->act_log(LOG_DEBUG, + "rx_gen: comparing req->xid (%llu) " + "with resp->xid_in (%llu)", + (unsigned long long) le64_to_cpu(req->xid), + (unsigned long long) le64_to_cpu(resp->xid_in)); if (req->xid == resp->xid_in) break; @@ -178,10 +154,11 @@ static int cldc_rx_generic(struct cldc_session *sess, if (req->done) { if (sess->verbose) - sess->act_log(sess, LOG_DEBUG, "rx_gen: re-acking"); + sess->act_log(LOG_DEBUG, "rx_gen: re-acking"); } else { if (sess->verbose) - sess->act_log(sess, LOG_DEBUG, "rx_gen: issuing completion, acking"); + sess->act_log(LOG_DEBUG, + "rx_gen: issuing completion, acking"); req->done = true; @@ -208,7 +185,7 @@ static int cldc_rx_ack_frag(struct cldc_session *sess, return -1008; if (sess->verbose) - sess->act_log(sess, LOG_DEBUG, "ack-frag: seqid %llu, want to ack", + sess->act_log(LOG_DEBUG, "ack-frag: seqid %llu, want to ack", ack_msg->seqid); tmp = sess->out_msg; @@ -228,7 +205,7 @@ static int cldc_rx_ack_frag(struct cldc_session *sess, continue; if (sess->verbose) - sess->act_log(sess, LOG_DEBUG, + sess->act_log(LOG_DEBUG, "ack-frag: seqid %llu, expiring", ack_msg->seqid); @@ -274,7 +251,7 @@ static int cldc_rx_not_master(struct cldc_session *sess, const void *msgbuf, size_t buflen) { - sess->act_log(sess, LOG_INFO, "FIXME: not-master message received"); + sess->act_log(LOG_INFO, "FIXME: not-master message received"); return -1055; /* FIXME */ } @@ -341,7 +318,7 @@ static bool authcheck(struct cldc_session *sess, const struct cld_packet *pkt, md, &md_len); if (md_len != SHA_DIGEST_LENGTH) - sess->act_log(sess, LOG_INFO, + sess->act_log(LOG_INFO, "authsign BUG: md_len != SHA_DIGEST_LENGTH"); if (memcmp(buf + buflen - SHA_DIGEST_LENGTH, md, SHA_DIGEST_LENGTH)) @@ -366,7 +343,7 @@ static bool authsign(struct cldc_session *sess, struct cld_packet *pkt, md, &md_len); if (md_len != SHA_DIGEST_LENGTH) - sess->act_log(sess, LOG_INFO, + sess->act_log(LOG_INFO, "authsign BUG: md_len != SHA_DIGEST_LENGTH"); memcpy(buf + (buflen - SHA_DIGEST_LENGTH), md, SHA_DIGEST_LENGTH); @@ -452,7 +429,7 @@ int cldc_receive_pkt(struct cldc_session *sess, if (pkt_len < (sizeof(*pkt) + SHA_DIGEST_LENGTH)) { if (sess->verbose) - sess->act_log(sess, LOG_DEBUG, "receive_pkt: msg too short"); + sess->act_log(LOG_DEBUG, "receive_pkt: msg too short"); return -EPROTO; } @@ -462,8 +439,8 @@ int cldc_receive_pkt(struct cldc_session *sess, if (msg->op == cmo_get) { struct cld_msg_get_resp *dp; dp = (struct cld_msg_get_resp *) msg; - sess->act_log(sess, LOG_DEBUG, "receive pkt: len %u, op %s" - ", seqid %llu, user %s, size %u", + sess->act_log(LOG_DEBUG, "receive pkt: len %u, op %s" + ", seqid %llu, user %s, size %u", (unsigned int) pkt_len, opstr(msg->op), (unsigned long long) le64_to_cpu(pkt->seqid), @@ -472,16 +449,16 @@ int cldc_receive_pkt(struct cldc_session *sess, } else if (msg->op == cmo_new_sess) { struct cld_msg_resp *dp; dp = (struct cld_msg_resp *) msg; - sess->act_log(sess, LOG_DEBUG, "receive pkt: len %u, op %s" - ", seqid %llu, user %s, xid_in %llu", + sess->act_log(LOG_DEBUG, "receive pkt: len %u, op %s" + ", seqid %llu, user %s, xid_in %llu", (unsigned int) pkt_len, opstr(msg->op), (unsigned long long) le64_to_cpu(pkt->seqid), pkt->user, (unsigned long long) le64_to_cpu(dp->xid_in)); } else { - sess->act_log(sess, LOG_DEBUG, "receive pkt: len %u, op %s" - ", seqid %llu, user %s", + sess->act_log(LOG_DEBUG, "receive pkt: len %u, op %s" + ", seqid %llu, user %s", (unsigned int) pkt_len, opstr(msg->op), (unsigned long long) le64_to_cpu(pkt->seqid), @@ -491,14 +468,14 @@ int cldc_receive_pkt(struct cldc_session *sess, if (memcmp(pkt->magic, CLD_PKT_MAGIC, sizeof(pkt->magic))) { if (sess->verbose) - sess->act_log(sess, LOG_DEBUG, "receive_pkt: bad pkt magic"); + sess->act_log(LOG_DEBUG, "receive_pkt: bad pkt magic"); return -EPROTO; } /* check HMAC signature */ if (!authcheck(sess, pkt, pkt_len)) { if (sess->verbose) - sess->act_log(sess, LOG_DEBUG, "receive_pkt: invalid auth"); + sess->act_log(LOG_DEBUG, "receive_pkt: invalid auth"); return -EACCES; } @@ -506,7 +483,7 @@ int cldc_receive_pkt(struct cldc_session *sess, if (((sess->addr_len != net_addrlen) || memcmp(sess->addr, net_addr, net_addrlen))) { if (sess->verbose) - sess->act_log(sess, LOG_DEBUG, + sess->act_log(LOG_DEBUG, "receive_pkt: server address mismatch"); return -EBADE; } @@ -527,7 +504,7 @@ int cldc_receive_pkt(struct cldc_session *sess, if ((sess->msg_buf_len + msglen) > CLD_MAX_MSG_SZ) { if (sess->verbose) - sess->act_log(sess, LOG_DEBUG, "receive_pkt: bad pkt length"); + sess->act_log(LOG_DEBUG, "receive_pkt: bad pkt length"); return -EPROTO; } @@ -536,7 +513,7 @@ int cldc_receive_pkt(struct cldc_session *sess, if (memcmp(msg->magic, CLD_MSG_MAGIC, sizeof(msg->magic))) { if (sess->verbose) - sess->act_log(sess, LOG_DEBUG, "receive_pkt: bad msg magic"); + sess->act_log(LOG_DEBUG, "receive_pkt: bad msg magic"); return -EPROTO; } @@ -548,9 +525,9 @@ int cldc_receive_pkt(struct cldc_session *sess, sess->next_seqid_in - CLDC_MSG_REMEMBER; if (sess->verbose) - sess->act_log(sess, LOG_DEBUG, "receive_pkt: " - "setting next_seqid_in to %llu", - (unsigned long long) seqid); + sess->act_log(LOG_DEBUG, "receive_pkt: " + "setting next_seqid_in to %llu", + (unsigned long long) seqid); } else if (!no_seqid) { if (seqid != sess->next_seqid_in) { if (seqid_in_range(seqid, @@ -559,7 +536,7 @@ int cldc_receive_pkt(struct cldc_session *sess, return ack_seqid(sess, pkt->seqid); if (sess->verbose) - sess->act_log(sess, LOG_DEBUG, + sess->act_log(LOG_DEBUG, "receive_pkt: bad seqid %llu", (unsigned long long) seqid); return -EBADSLT; @@ -901,13 +878,7 @@ int cldc_new_sess(const struct cldc_ops *ops, sess->private = private; sess->ops = ops; - if (ops->printf) { /* obsolete API in use XXX */ - sess->act_log = cldc_oldlog; - } else if (ops->errlog) { - sess->act_log = cldc_applog; - } else { - sess->act_log = cldc_stdlog; - } + sess->act_log = ops->errlog ? ops->errlog : cldc_errlog; sess->fh = g_array_sized_new(FALSE, TRUE, sizeof(struct cldc_fh), 16); strcpy(sess->user, user); strcpy(sess->secret_key, secret_key); diff --git a/tools/cldcli.c b/tools/cldcli.c index b2a0c02..2375ef4 100644 --- a/tools/cldcli.c +++ b/tools/cldcli.c @@ -144,12 +144,14 @@ static void errc_msg(struct cresp *cresp, enum cle_err_codes errc) strcpy(cresp->msg, names_cle_err[errc]); } -static void app_log(const char *fmt, ...) +static void applog(int prio, const char *fmt, ...) { + char buf[200]; va_list ap; va_start(ap, fmt); - vfprintf(stderr, fmt, ap); + vsnprintf(buf, 200, fmt, ap); + fprintf(stderr, "%s\n", buf); va_end(ap); } @@ -780,20 +782,11 @@ static void cld_p_event(void *private, struct cldc_session *sess, fprintf(stderr, "FIXME: event\n"); } -static void cld_p_log(const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - vfprintf(stderr, fmt, ap); - va_end(ap); -} - static struct cldc_ops cld_ops = { .timer_ctl = cld_p_timer_ctl, .pkt_send = cld_p_pkt_send, .event = cld_p_event, - .printf = cld_p_log, + .errlog = applog, }; static gpointer cld_thread(gpointer dummy) @@ -1307,7 +1300,7 @@ int main (int argc, char *argv[]) return 1; } hostb[hostsz-1] = 0; - if (cldc_getaddr(&host_list, hostb, debugging, app_log)) { + if (cldc_getaddr(&host_list, hostb, debugging, applog)) { fprintf(stderr, "Unable to find a CLD host\n"); return 1; } -- To unsubscribe from this list: send the line "unsubscribe hail-devel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
