chiark / gitweb /
Import release 0.1.9
[secnet.git] / site.c
diff --git a/site.c b/site.c
index 989ad3ee28d925b36fd0ad9151631e962e321508..8223fb3f81d678e228cd606aeb5d65aa7c92a609 100644 (file)
--- a/site.c
+++ b/site.c
@@ -7,6 +7,7 @@
 
 #include <sys/mman.h>
 #include "util.h"
+#include "ipaddr.h"
 #include "unaligned.h"
 
 #define SETUP_BUFFER_LEN 2048
@@ -194,12 +195,27 @@ static void slog(struct site *st, uint32_t event, string_t msg, ...)
 {
     va_list ap;
     uint8_t 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_ERROR; break;
+       default: class=M_ERROR; break;
+       }
+
        vsnprintf(buf,240,msg,ap);
-       st->log->log(st->log->st,0,"%s: %s",st->tunname,buf);
+       st->log->log(st->log->st,class,"%s: %s",st->tunname,buf);
     }
     va_end(ap);
 }
@@ -613,7 +629,7 @@ static bool_t process_msg0(struct site *st, struct buffer_if *msg0,
                                       msg0,&transform_err)) {
        /* There's a problem */
        slog(st,LOG_SEC,"transform: %s",transform_err);
-       return False;
+       return initiate_key_setup(st);
     }
     CHECK_AVAIL(msg0,4);
     type=buf_unprepend_uint32(msg0);
@@ -638,7 +654,7 @@ static void dump_packet(struct site *st, struct buffer_if *buf,
     uint32_t msgtype=ntohl(*(uint32_t *)(buf->start+8));
 
     if (st->log_events & LOG_DUMP)
-       log(st->log,0,"%s: %s: %08x<-%08x: %08x:",
+       log(st->log,M_DEBUG,"%s: %s: %08x<-%08x: %08x:",
            st->tunname,incoming?"incoming":"outgoing",
            dest,source,msgtype);
 }
@@ -1150,7 +1166,7 @@ static list_t *site_apply(closure_t *self, struct cloc loc, dict_t *context,
        site() closures for all sites including our own): refuse to
        talk to ourselves */
     if (strcmp(st->localname,st->remotename)==0) {
-       Message(M_INFO,"site %s: local-name==name -> ignoring this site\n",
+       Message(M_DEBUG,"site %s: local-name==name -> ignoring this site\n",
                st->localname);
        free(st);
        return NULL;