aboutsummaryrefslogtreecommitdiff
path: root/core/sys/posix
diff options
context:
space:
mode:
authorIsaac Andrade <andradei@proton.me>2024-09-02 14:25:32 -0600
committerIsaac Andrade <andradei@proton.me>2024-09-02 14:25:32 -0600
commit35f961d80f11fca6c0d1f8c6cb7d8d149f3e71f2 (patch)
tree018f0249fb126e5c3378ec0a2e50abcc6ad8bcd8 /core/sys/posix
parenta248d49f349479e3a74b7c2fe8f9a173b512efe1 (diff)
Add POSIX Linux support for net_if and netdb.
Diffstat (limited to 'core/sys/posix')
-rw-r--r--core/sys/posix/net_if.odin2
-rw-r--r--core/sys/posix/netdb.odin38
2 files changed, 37 insertions, 3 deletions
diff --git a/core/sys/posix/net_if.odin b/core/sys/posix/net_if.odin
index aaeb5088a..75c1a863e 100644
--- a/core/sys/posix/net_if.odin
+++ b/core/sys/posix/net_if.odin
@@ -44,7 +44,7 @@ foreign lib {
if_freenameindex :: proc(ptr: ^if_nameindex_t) ---
}
-when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD {
+when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD || ODIN_OS == .Linux {
// NOTE: `_t` suffix added due to name conflict.
diff --git a/core/sys/posix/netdb.odin b/core/sys/posix/netdb.odin
index 7570f9a22..b8259b60c 100644
--- a/core/sys/posix/netdb.odin
+++ b/core/sys/posix/netdb.odin
@@ -318,7 +318,7 @@ Info_Errno :: enum c.int {
OVERFLOW = EAI_OVERFLOW,
}
-when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD {
+when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD || ODIN_OS == .OpenBSD {
hostent :: struct {
h_name: cstring, /* [PSX] official name of host */
@@ -412,9 +412,28 @@ when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS
NI_NUMERICSERV :: 2
NI_NUMERICSCOPE :: 32
NI_DGRAM :: 16
+
+ } else when ODIN_OS == .Linux {
+
+ AI_PASSIVE :: 0x001
+ AI_CANONNAME :: 0x002
+ AI_NUMERICHOST :: 0x004
+ AI_NUMERICSERV :: 0x400
+ AI_V4MAPPED :: 0x008
+ AI_ALL :: 0x010
+ AI_ADDRCONFIG :: 0x020
+
+ NI_NOFQDN :: 4
+ NI_NUMERICHOST :: 1
+ NI_NAMEREQD :: 8
+ NI_NUMERICSERV :: 2
+ NI_NUMERICSCOPE :: 0 // NOTE: not implemented
+ NI_DGRAM :: 16
+
}
when ODIN_OS == .OpenBSD {
+
EAI_AGAIN :: -3
EAI_BADFLAGS :: -1
EAI_FAIL :: -4
@@ -425,7 +444,22 @@ when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS
EAI_SOCKTYPE :: -7
EAI_SYSTEM :: -11
EAI_OVERFLOW :: -14
+
+ } else when ODIN_OS == .Linux {
+
+ EAI_AGAIN :: -3
+ EAI_BADFLAGS :: -1
+ EAI_FAIL :: -4
+ EAI_FAMILY :: -6
+ EAI_MEMORY :: -10
+ EAI_NONAME :: -2
+ EAI_SERVICE :: -8
+ EAI_SOCKTYPE :: -7
+ EAI_SYSTEM :: -11
+ EAI_OVERFLOW :: -12
+
} else {
+
EAI_AGAIN :: 2
EAI_BADFLAGS :: 3
EAI_FAIL :: 4
@@ -438,6 +472,6 @@ when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS
EAI_OVERFLOW :: 14
}
-}else {
+} else {
#panic("posix is unimplemented for the current target")
}