summaryrefslogtreecommitdiff
path: root/include/uint_t.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/uint_t.h')
-rw-r--r--include/uint_t.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/include/uint_t.h b/include/uint_t.h
new file mode 100644
index 0000000..84eb06e
--- /dev/null
+++ b/include/uint_t.h
@@ -0,0 +1,76 @@
+#include <stdint.h>
+
+/**
+ @file uint_t.h
+ @author djb, kp, feh
+ @source qmail, djbdns6
+ @brief additional types and pack routines
+ @brief define basic integer types and size through <stdint.h>
+*/
+
+#ifndef UINT8_H
+#define UINT8_H
+
+#ifdef HAS_UINT8_H
+typedef uint8_t uint8;
+#else
+typedef unsigned char uint8;
+#endif
+
+#endif
+
+#ifndef UINT16_H
+#define UINT16_H
+
+typedef uint16_t uint16;
+
+extern void uint16_pack(char *,uint16);
+extern void uint16_pack_big(char *,uint16);
+extern void uint16_unpack(char *,uint16 *);
+extern void uint16_unpack_big(char *,uint16 *);
+#endif
+
+#ifndef UINT32_H
+#define UINT32_H
+
+typedef uint32_t uint32;
+
+extern void uint32_pack(char *,uint32);
+extern void uint32_pack_big(char *,uint32);
+extern void uint32_unpack(char *,uint32 *);
+extern void uint32_unpack_big(char *,uint32 *);
+#endif
+
+#ifndef UINT64_H
+#define UINT64_H
+
+#ifdef HAS_UINT64_H
+typedef uint64_t uint64;
+#else
+typedef unsigned long long uint64;
+#endif
+
+extern void uint64_pack(char *,uint64);
+extern void uint64_pack_big(char *,uint64);
+extern void uint64_unpack(char *,uint64 *);
+extern void uint64_unpack_big(char *,uint64 *);
+#endif
+
+#ifndef UINT128_H
+#define UINT128_H
+
+/* uint128 used for native IPv6 address presentation */
+
+struct uint128_t
+{
+ uint64_t hi; /* routing area */
+ uint64_t lo; /* local area */
+};
+
+typedef struct uint128_t uint128;
+
+extern void uint128_pack(char *,uint128);
+extern void uint128_pack_big(char *,uint128);
+extern void uint128_unpack(char *,uint128 *);
+extern void uint128_unpack_big(char *,uint128 *);
+#endif