X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=site.c;h=e8dba8734861280a200b71c0aeb5653ecc01dc96;hb=e5d8c16e9249b2f96931c74f3fddd2cbbcc04a2c;hp=f87328fda51fbb4cbf6482b30ac342e7fedd34a0;hpb=3ed1846a624d9428c48528d6464126b7459ad462;p=secnet.git diff --git a/site.c b/site.c index f87328f..e8dba87 100644 --- a/site.c +++ b/site.c @@ -299,36 +299,41 @@ struct site { struct transform_inst_if *new_transform; /* For key setup/verify */ }; +static uint32_t event_log_priority(struct site *st, uint32_t event) +{ + if (!(event&st->log_events)) + return 0; + switch(event) { + case LOG_UNEXPECTED: return M_INFO; + case LOG_SETUP_INIT: return M_INFO; + case LOG_SETUP_TIMEOUT: return M_NOTICE; + case LOG_ACTIVATE_KEY: return M_INFO; + case LOG_TIMEOUT_KEY: return M_INFO; + case LOG_SEC: return M_SECURITY; + case LOG_STATE: return M_DEBUG; + case LOG_DROP: return M_DEBUG; + case LOG_DUMP: return M_DEBUG; + case LOG_ERROR: return M_ERR; + case LOG_PEER_ADDRS: return M_DEBUG; + default: return M_ERR; + } +} + static void slog(struct site *st, uint32_t event, cstring_t msg, ...) FORMAT(printf,3,4); static void slog(struct site *st, uint32_t event, cstring_t msg, ...) { va_list ap; - char buf[240]; uint32_t class; - va_start(ap,msg); - - if (event&st->log_events) { - switch(event) { - case LOG_UNEXPECTED: class=M_INFO; break; - case LOG_SETUP_INIT: class=M_INFO; break; - case LOG_SETUP_TIMEOUT: class=M_NOTICE; break; - case LOG_ACTIVATE_KEY: class=M_INFO; break; - case LOG_TIMEOUT_KEY: class=M_INFO; break; - case LOG_SEC: class=M_SECURITY; break; - case LOG_STATE: class=M_DEBUG; break; - case LOG_DROP: class=M_DEBUG; break; - case LOG_DUMP: class=M_DEBUG; break; - case LOG_ERROR: class=M_ERR; break; - case LOG_PEER_ADDRS: class=M_DEBUG; break; - default: class=M_ERR; break; - } - - vsnprintf(buf,sizeof(buf),msg,ap); - slilog(st->log,class,"%s: %s",st->tunname,buf); + class=event_log_priority(st, event); + if (class) { + va_start(ap,msg); + slilog_part(st->log,class,"%s: ",st->tunname); + vslilog_part(st->log,class,msg,ap); + slilog_part(st->log,class,"\n"); + va_end(ap); } - va_end(ap); } static void set_link_quality(struct site *st); @@ -1955,7 +1960,7 @@ static void transport_record_peer(struct site *st, transport_peers *peers, changed=1; if (peers->npeers==st->transport_peers_max) - slot=st->transport_peers_max; + slot=st->transport_peers_max-1; else slot=peers->npeers++;