From: Pete Zaitcev <zaitcev@redhat.com>
To: Jeff Garzik <jeff@garzik.org>
Cc: Project Hail List <hail-devel@vger.kernel.org>
Subject: [Patch 1/3] CLD: Whole hog on applog
Date: Wed, 12 Aug 2009 14:55:59 -0600 [thread overview]
Message-ID: <20090812145559.06cc98d8@redhat.com> (raw)
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 <zaitcev@redhat.com>
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;
}
next reply other threads:[~2009-08-12 20:55 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-12 20:55 Pete Zaitcev [this message]
2009-08-12 21:22 ` [Patch 1/3] CLD: Whole hog on applog Jeff Garzik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090812145559.06cc98d8@redhat.com \
--to=zaitcev@redhat.com \
--cc=hail-devel@vger.kernel.org \
--cc=jeff@garzik.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.