summaryrefslogtreecommitdiff
path: root/lib/libc/arpa
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/arpa')
-rw-r--r--lib/libc/arpa/Kbuild8
-rw-r--r--lib/libc/arpa/htonl.c12
-rw-r--r--lib/libc/arpa/htons.c12
-rw-r--r--lib/libc/arpa/inet_addr.c8
-rw-r--r--lib/libc/arpa/inet_ntoa.c8
-rw-r--r--lib/libc/arpa/inet_ntop.c0
-rw-r--r--lib/libc/arpa/inet_pton.c10
-rw-r--r--lib/libc/arpa/ntohl.c12
-rw-r--r--lib/libc/arpa/ntohs.c12
9 files changed, 82 insertions, 0 deletions
diff --git a/lib/libc/arpa/Kbuild b/lib/libc/arpa/Kbuild
new file mode 100644
index 00000000..3714bea3
--- /dev/null
+++ b/lib/libc/arpa/Kbuild
@@ -0,0 +1,8 @@
+obj-y += htonl.o
+obj-y += htons.o
+obj-y += inet_addr.o
+obj-y += inet_ntoa.o
+obj-y += inet_ntop.o
+obj-y += inet_pton.o
+obj-y += ntohl.o
+obj-y += ntohs.o
diff --git a/lib/libc/arpa/htonl.c b/lib/libc/arpa/htonl.c
new file mode 100644
index 00000000..96f3ba4e
--- /dev/null
+++ b/lib/libc/arpa/htonl.c
@@ -0,0 +1,12 @@
+#include <arpa/inet.h>
+#include <byteswap.h>
+
+uint32_t htonl(uint32_t hostlong)
+{
+ union {
+ int i;
+ char c;
+ } u = { 1 };
+
+ return u.c ? bswap32(hostlong) : hostlong;
+}
diff --git a/lib/libc/arpa/htons.c b/lib/libc/arpa/htons.c
new file mode 100644
index 00000000..7c8dcc51
--- /dev/null
+++ b/lib/libc/arpa/htons.c
@@ -0,0 +1,12 @@
+#include <arpa/inet.h>
+#include <byteswap.h>
+
+uint16_t htons(uint16_t hostshort)
+{
+ union {
+ int i;
+ char c;
+ } u = { 1 };
+
+ return u.c ? bswap16(hostshort) : hostshort;
+}
diff --git a/lib/libc/arpa/inet_addr.c b/lib/libc/arpa/inet_addr.c
new file mode 100644
index 00000000..5514e966
--- /dev/null
+++ b/lib/libc/arpa/inet_addr.c
@@ -0,0 +1,8 @@
+#include <arpa/inet.h>
+
+in_addr_t inet_addr(const char *cp)
+{
+ (void)cp;
+ // TODO
+ return 0;
+}
diff --git a/lib/libc/arpa/inet_ntoa.c b/lib/libc/arpa/inet_ntoa.c
new file mode 100644
index 00000000..9d4f9b23
--- /dev/null
+++ b/lib/libc/arpa/inet_ntoa.c
@@ -0,0 +1,8 @@
+#include <arpa/inet.h>
+
+char *inet_ntoa(struct in_addr in)
+{
+ (void)in;
+ // TODO
+ return 0;
+}
diff --git a/lib/libc/arpa/inet_ntop.c b/lib/libc/arpa/inet_ntop.c
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/libc/arpa/inet_ntop.c
diff --git a/lib/libc/arpa/inet_pton.c b/lib/libc/arpa/inet_pton.c
new file mode 100644
index 00000000..7cbb37da
--- /dev/null
+++ b/lib/libc/arpa/inet_pton.c
@@ -0,0 +1,10 @@
+#include <arpa/inet.h>
+
+int inet_pton(int af, const char *restrict src, void *restrict dst)
+{
+ (void)af;
+ (void)src;
+ (void)dst;
+ // TODO
+ return 0;
+}
diff --git a/lib/libc/arpa/ntohl.c b/lib/libc/arpa/ntohl.c
new file mode 100644
index 00000000..0adcbc5f
--- /dev/null
+++ b/lib/libc/arpa/ntohl.c
@@ -0,0 +1,12 @@
+#include <arpa/inet.h>
+#include <byteswap.h>
+
+uint32_t ntohl(uint32_t netlong)
+{
+ union {
+ int i;
+ char c;
+ } u = { 1 };
+
+ return u.c ? bswap32(netlong) : netlong;
+}
diff --git a/lib/libc/arpa/ntohs.c b/lib/libc/arpa/ntohs.c
new file mode 100644
index 00000000..c0f868bc
--- /dev/null
+++ b/lib/libc/arpa/ntohs.c
@@ -0,0 +1,12 @@
+#include <arpa/inet.h>
+#include <byteswap.h>
+
+uint16_t ntohs(uint16_t netshort)
+{
+ union {
+ int i;
+ char c;
+ } u = { 1 };
+
+ return u.c ? bswap16(netshort) : netshort;
+}