chiark / gitweb /
udp, util: Break out send_nak function
[secnet.git] / util.c
diff --git a/util.c b/util.c
index 3d119874eb1c11c7d7b9e367a6bf1a2bef6c4b4b..1b46bc0df7422fe0bc6fdc2c3a91c0da51dba673 100644 (file)
--- a/util.c
+++ b/util.c
@@ -38,6 +38,7 @@
 #include <sys/wait.h>
 #include "util.h"
 #include "unaligned.h"
+#include "magic.h"
 
 #define MIN_BUFFER_SIZE 64
 #define DEFAULT_BUFFER_SIZE 4096
@@ -381,6 +382,22 @@ static list_t *buffer_apply(closure_t *self, struct cloc loc, dict_t *context,
     return new_closure(&st->cl);
 }
 
+void send_nak(const struct comm_addr *dest, uint32_t our_index,
+             uint32_t their_index, uint32_t msgtype,
+             struct buffer_if *buf, const char *logwhy)
+{
+    buffer_init(buf,dest->comm->min_start_pad);
+    buf_append_uint32(buf,their_index);
+    buf_append_uint32(buf,our_index);
+    buf_append_uint32(buf,LABEL_NAK);
+    if (logwhy)
+       Message(M_INFO,"%s: %08"PRIx32"<-%08"PRIx32": %08"PRIx32":"
+               " %s; sending NAK\n",
+               dest->comm->addr_to_string(dest->comm->st,dest),
+               our_index, their_index, msgtype, logwhy);
+    dest->comm->sendmsg(dest->comm->st, buf, dest);
+}
+
 int consttime_memeq(const void *s1in, const void *s2in, size_t n)
 {
     const uint8_t *s1=s1in, *s2=s2in;