summaryrefslogtreecommitdiff
path: root/userland/libc/arpa/inet
diff options
context:
space:
mode:
Diffstat (limited to 'userland/libc/arpa/inet')
-rw-r--r--userland/libc/arpa/inet/htonl.c11
-rw-r--r--userland/libc/arpa/inet/htons.c10
2 files changed, 21 insertions, 0 deletions
diff --git a/userland/libc/arpa/inet/htonl.c b/userland/libc/arpa/inet/htonl.c
new file mode 100644
index 0000000..4b66747
--- /dev/null
+++ b/userland/libc/arpa/inet/htonl.c
@@ -0,0 +1,11 @@
+#include <arpa/inet.h>
+#include <endian.h>
+#include <stdint.h>
+
+uint32_t htonl(uint32_t hostlong) {
+#if BYTE_ORDER == LITTLE_ENDIAN
+ hostlong = (uint32_t)(htons(hostlong >> 16)) |
+ (uint32_t)(htons(hostlong & 0xFFFF) << 16);
+#endif
+ return hostlong;
+}
diff --git a/userland/libc/arpa/inet/htons.c b/userland/libc/arpa/inet/htons.c
new file mode 100644
index 0000000..798a64a
--- /dev/null
+++ b/userland/libc/arpa/inet/htons.c
@@ -0,0 +1,10 @@
+#include <arpa/inet.h>
+#include <endian.h>
+#include <stdint.h>
+
+uint16_t htons(uint16_t hostlong) {
+#if BYTE_ORDER == LITTLE_ENDIAN
+ hostlong = ((hostlong & 0xFF00) >> 8) | ((hostlong & 0x00FF) << 8);
+#endif
+ return hostlong;
+}