chiark / gitweb /
server/{admin,peer}.c: Fix build failures when tracing is disabled.
[tripe] / server / admin.c
index 0fb57cd8645e6061f02bf8624ed1c8af6d2e0b41..16ab8a35ac520319343aebbb3da13af602cfb1d5 100644 (file)
@@ -51,7 +51,9 @@ unsigned tr_flags = 0;
 #endif
 
 static const trace_opt w_opts[] = {
+#ifndef NTRACE
   { 't',       AF_TRACE,       "trace messages" },
+#endif
   { 'n',       AF_NOTE,        "asynchronous notifications" },
   { 'w',       AF_WARN,        "warnings" },
   { 'A',       AF_ALLMSGS,     "all of the above" },
@@ -1250,6 +1252,7 @@ static void acmd_add(admin *a, unsigned ac, char *av[])
   add = xmalloc(sizeof(*add));
   add->peer.name = 0;
   add->peer.tag = 0;
+  add->peer.privtag = 0;
   add->peer.t_ka = 0;
   add->peer.tops = tun_default;
   add->peer.f = 0;
@@ -1279,6 +1282,11 @@ static void acmd_add(admin *a, unsigned ac, char *av[])
       add->peer.tag = xstrdup(arg);
     })
     OPT("-mobile", { add->peer.f |= PSF_MOBILE; })
+    OPTARG("-priv", arg, {
+      if (add->peer.privtag)
+       xfree(add->peer.privtag);
+      add->peer.privtag = xstrdup(arg);
+    })
   });
 
   /* --- Make sure someone's not got there already --- */
@@ -1304,6 +1312,7 @@ bad_syntax:
 fail:
   if (add->peer.name) xfree(add->peer.name);
   if (add->peer.tag) xfree(add->peer.tag);
+  if (add->peer.privtag) xfree(add->peer.privtag);
   xfree(add);
   return;
 }
@@ -1824,11 +1833,16 @@ static void acmd_peerinfo(admin *a, unsigned ac, char *av[])
 {
   peer *p;
   const peerspec *ps;
+  const char *ptag;
 
   if ((p = a_findpeer(a, av[0])) != 0) {
     ps = p_spec(p);
     a_info(a, "tunnel=%s", ps->tops->name, A_END);
-    a_info(a, "key=%s", p_tag(p), A_END);
+    a_info(a, "key=%s", p_tag(p),
+          "current-key=%s", p->kx.kpub->tag, A_END);
+    if ((ptag = p_privtag(p)) == 0) ptag = "(default)";
+    a_info(a, "private-key=%s", ptag,
+          "current-private-key=%s", p->kx.kpriv->tag, A_END);
     a_info(a, "keepalive=%lu", ps->t_ka, A_END);
     a_ok(a);
   }