chiark / gitweb /
subdirmk: Change stub force target to `run-main.mk'
[secnet.git] / secnet.h
index cdeadad1d2cc8e171f3168d9baf53dc84da36696..7da7c2d5a9935a7cd6bbb8285c8921faa7506594 100644 (file)
--- a/secnet.h
+++ b/secnet.h
 #define MAX_PEER_ADDRS 5
 /* send at most this many copies; honour at most that many addresses */
 
+#define MAX_NAK_MSG 80
+
 struct hash_if;
 struct comm_if;
 struct comm_addr;
+struct priomsg;
 
 typedef char *string_t;
 typedef const char *cstring_t;
@@ -379,8 +382,8 @@ extern init_module log_module;
 struct buffer_if;
 
 struct alg_msg_data {
-    uint8_t *sigstart;
-    int32_t siglen;
+    uint8_t *start;
+    int32_t len;
 };
 
 /* PURE closure requires no interface */
@@ -462,10 +465,18 @@ typedef struct comm_clientinfo *comm_clientinfo_fn(void *state, dict_t*,
  * The semantics depend on the dict and defined by the comm, and
  * should be documented in README. */
 
+enum {
+    comm_notify_whynot_general,
+    comm_notify_whynot_unpick,
+    comm_notify_whynot_name_local,
+    comm_notify_whynot_name_remote,
+};
+
 /* Return True if the packet was processed, and shouldn't be passed to
    any other potential receivers. (buf is freed iff True returned.) */
 typedef bool_t comm_notify_fn(void *state, struct buffer_if *buf,
-                             const struct comm_addr *source);
+                             const struct comm_addr *source,
+                             struct priomsg *whynot);
 typedef void comm_request_notify_fn(void *commst, void *nst,
                                    comm_notify_fn *fn);
 typedef void comm_release_notify_fn(void *commst, void *nst,
@@ -643,11 +654,12 @@ struct dh_if {
 
 /* HASH interface */
 
-typedef void *hash_init_fn(void);
+typedef void hash_init_fn(void *st /* slen bytes alloc'd by caller */);
 typedef void hash_update_fn(void *st, const void *buf, int32_t len);
-typedef void hash_final_fn(void *st, uint8_t *digest);
+typedef void hash_final_fn(void *st, uint8_t *digest /* hlen bytes */);
 struct hash_if {
-    int32_t len; /* Hash output length in bytes */
+    int32_t slen; /* State length in bytes */
+    int32_t hlen; /* Hash output length in bytes */
     hash_init_fn *init;
     hash_update_fn *update;
     hash_final_fn *final;
@@ -658,7 +670,6 @@ struct hash_if {
 struct buffer_if {
     bool_t free;
     cstring_t owner; /* Set to constant string */
-    uint32_t flags; /* How paranoid should we be? */
     struct cloc loc; /* Where we were defined */
     uint8_t *base;
     uint8_t *start;
@@ -728,7 +739,7 @@ extern void log_from_fd(int fd, cstring_t prefix, struct log_if *log);
  * void COPY_OBJ(  OBJECT& dst, const OBJECT& src);
  * void COPY_ARRAY(OBJECT *dst, const OBJECT *src, INTEGER count);
  *   // Typesafe: we check that the type OBJECT is the same in both cases.
- *   // It is OK to use COPY_OBJ on an array object, provided it's
+ *   // It is OK to use COPY_OBJ on an array object, provided dst is
  *   // _actually_ the whole array object and not decayed into a
  *   // pointer (e.g. a formal parameter).
  */