server/keymgmt.c: Capture copies of the keyring and tag strings.
[tripe] / server / tripe.h
index bd70bb8..bf75b45 100644 (file)
@@ -819,7 +819,7 @@ extern const tunnel_ops *tunnels[]; /* Table of tunnels (0-term) */
 extern const tunnel_ops *tun_default;  /* Default tunnel to use */
 extern udpsocket udpsock[NADDRFAM];    /* The master UDP sockets */
 extern kdata *master;                  /* Default private key */
-extern const char *tag_priv;           /* Default private key tag */
+extern char *tag_priv;                 /* Default private key tag */
 
 #ifndef NTRACE
 extern const trace_opt tr_opts[];      /* Trace options array */
@@ -859,6 +859,20 @@ extern void km_init(const char */*privkr*/, const char */*pubkr*/,
 
 extern int km_reload(void);
 
+/* --- @km_clear@ --- *
+ *
+ * Arguments:  ---
+ *
+ * Returns:    ---
+ *
+ * Use:                Forget the currently loaded keyrings.  The @master@ key will
+ *             be cleared, but other keys already loaded will continue to
+ *             exist until their reference count drops to zero.  Call
+ *             @km_init@ to make everything work again.
+ */
+
+extern void km_clear(void);
+
 /* --- @km_findpub@, @km_findpriv@ --- *
  *
  * Arguments:  @const char *tag@ = key tag to load
@@ -1307,17 +1321,6 @@ extern void EXECL_LIKE(0) a_notify(const char */*fmt*/, ...);
 
 extern void a_create(int /*fd_in*/, int /*fd_out*/, unsigned /*f*/);
 
-/* --- @a_quit@ --- *
- *
- * Arguments:  ---
- *
- * Returns:    ---
- *
- * Use:                Shuts things down nicely.
- */
-
-extern void a_quit(void);
-
 /* --- @a_preselect@ --- *
  *
  * Arguments:  ---
@@ -1357,6 +1360,17 @@ extern void a_daemon(void);
 extern void a_listen(const char */*sock*/,
                     uid_t /*u*/, gid_t /*g*/, mode_t /*m*/);
 
+/* --- @a_unlisten@ --- *
+ *
+ * Arguments:  ---
+ *
+ * Returns:    ---
+ *
+ * Use:                Stops listening to the administration socket and removes it.
+ */
+
+extern void a_unlisten(void);
+
 /* --- @a_switcherr@ --- *
  *
  * Arguments:  ---
@@ -1698,6 +1712,18 @@ extern const addr *p_addr(peer */*p*/);
 
 extern void p_bind(struct addrinfo */*ailist*/);
 
+/* --- @p_unbind@ --- *
+ *
+ * Arguments:  ---
+ *
+ * Returns:    ---
+ *
+ * Use:                Unbinds the UDP sockets.  There must not be any active peers,
+ *             and none can be created until the sockets are rebound.
+ */
+
+extern void p_unbind(void);
+
 /* --- @p_init@ --- *
  *
  * Arguments:  ---
@@ -1793,6 +1819,17 @@ extern peer *p_find(const char */*name*/);
 
 extern void p_destroy(peer */*p*/, int /*bye*/);
 
+/* --- @p_destroyall@ --- *
+ *
+ * Arguments:  ---
+ *
+ * Returns:    ---
+ *
+ * Use:                Destroys all of the peers, saying goodbye.
+ */
+
+extern void p_destroyall(void);
+
 /* --- @FOREACH_PEER@ --- *
  *
  * Arguments:  @p@ = name to bind to each peer
@@ -1869,6 +1906,17 @@ extern void iv_rmreason(void);
 
 extern void lp_init(void);
 
+/* --- @lp_end@ --- *
+ *
+ * Arguments:  ---
+ *
+ * Returns:    ---
+ *
+ * Use:                Requests an exit from the main loop.
+ */
+
+extern void lp_end(void);
+
 /* --- @lp_run@ --- *
  *
  * Arguments:  ---