chiark / gitweb /
site: New SIGKEYS log class, at level INFO, enabled by default
[secnet.git] / site.c
diff --git a/site.c b/site.c
index 8ca87690baf350f7c3fee99ddd595db34bb4ade8..67a3dbcc3815e27a2fc3c7bbdd70fcdafd4e9df5 100644 (file)
--- a/site.c
+++ b/site.c
@@ -142,6 +142,7 @@ static cstring_t state_name(uint32_t state)
 #define LOG_DUMP          0x00000100
 #define LOG_ERROR         0x00000400
 #define LOG_PEER_ADDRS    0x00000800
+#define LOG_SIGKEYS       0x00001000
 
 static struct flagstr log_event_table[]={
     { "unexpected", LOG_UNEXPECTED },
@@ -155,8 +156,9 @@ static struct flagstr log_event_table[]={
     { "dump-packets", LOG_DUMP },
     { "errors", LOG_ERROR },
     { "peer-addrs", LOG_PEER_ADDRS },
+    { "sigkeys", LOG_SIGKEYS },
     { "default", LOG_SETUP_INIT|LOG_SETUP_TIMEOUT|
-      LOG_ACTIVATE_KEY|LOG_TIMEOUT_KEY|LOG_SEC|LOG_ERROR },
+      LOG_ACTIVATE_KEY|LOG_TIMEOUT_KEY|LOG_SEC|LOG_ERROR|LOG_SIGKEYS },
     { "all", 0xffffffff },
     { NULL, 0 }
 };
@@ -392,6 +394,7 @@ static uint32_t event_log_priority(struct site *st, uint32_t event)
     case LOG_DUMP:          return M_DEBUG;
     case LOG_ERROR:         return M_ERR;
     case LOG_PEER_ADDRS:    return M_DEBUG;
+    case LOG_SIGKEYS:       return M_INFO;
     default:                return M_ERR;
     }
 }
@@ -1830,11 +1833,16 @@ static bool_t named_for_us(struct site *st, const struct buffer_if *buf_in,
     buffer_readonly_clone(buf,buf_in);
 
     if (!unpick_msg(st,type,buf,m)) {
+       priomsg_update_fixed(whynot, comm_notify_whynot_unpick, "malformed");
        return False;
     }
-#define NAME_MATCHES(lr)                       \
-    if (!name_matches(&m->lr, st->lr##name)) { \
-        return False;                          \
+#define NAME_MATCHES(lr)                                               \
+    if (!name_matches(&m->lr, st->lr##name)) {                         \
+       if (priomsg_update_fixed(whynot, comm_notify_whynot_name_##lr,  \
+                                 "unknown " #lr " name: ")) {          \
+            truncmsg_add_packet_string(&whynot->m, m->lr.len, m->lr.name); \
+        }                                                              \
+        return False;                                                  \
     }
     NAME_MATCHES(remote);
     NAME_MATCHES(local );
@@ -2084,9 +2092,8 @@ static bool_t site_incoming(void *sst, struct buffer_if *buf,
        return True;
     }
 
-    if (priomsg_update_p(whynot, comm_notify_whynot_general))
-       truncmsg_add_string(&whynot->m,
-                           "not MSG1 or PROD; unknown dest index");
+    priomsg_update_fixed(whynot, comm_notify_whynot_general,
+                        "not MSG1 or PROD; unknown dest index");
     return False;
 }