aboutgitcodebugslistschat
path: root/doc/platform-requirements/common.h
diff options
context:
space:
mode:
Diffstat (limited to 'doc/platform-requirements/common.h')
-rw-r--r--doc/platform-requirements/common.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/doc/platform-requirements/common.h b/doc/platform-requirements/common.h
new file mode 100644
index 0000000..8844b1e
--- /dev/null
+++ b/doc/platform-requirements/common.h
@@ -0,0 +1,47 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/* common.h
+ *
+ * Useful shared functions
+ *
+ * Copyright Red Hat
+ * Author: David Gibson <david@gibson.dropbear.id.au>
+ */
+#ifndef REUSEADDR_COMMON_H
+#define REUSEADDR_COMMON_H
+
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+static inline void die(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ (void)vfprintf(stderr, fmt, ap);
+ va_end(ap);
+ exit(EXIT_FAILURE);
+}
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define htons_constant(x) (x)
+#define htonl_constant(x) (x)
+#else
+#define htons_constant(x) (__bswap_constant_16(x))
+#define htonl_constant(x) (__bswap_constant_32(x))
+#endif
+
+#define SOCKADDR_INIT(addr, port) \
+ { \
+ .sin_family = AF_INET, \
+ .sin_addr = { .s_addr = htonl_constant(addr) }, \
+ .sin_port = htons_constant(port), \
+ }
+
+int sock_reuseaddr(void);
+void send_token(int s, long token);
+bool recv_token(int s, long token);
+
+#endif /* REUSEADDR_COMMON_H */