mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Haiku: more posix
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
#+build linux, darwin, netbsd, openbsd, freebsd
|
||||
#+build linux, darwin, netbsd, openbsd, freebsd, haiku
|
||||
package posix
|
||||
|
||||
import "core:c"
|
||||
@@ -31,20 +31,31 @@ Protocol :: enum c.int {
|
||||
UDP = IPPROTO_UDP,
|
||||
}
|
||||
|
||||
when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD || ODIN_OS == .Linux {
|
||||
when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS == .OpenBSD || ODIN_OS == .Linux || ODIN_OS == .Haiku {
|
||||
|
||||
in_addr :: struct {
|
||||
s_addr: in_addr_t, /* [PSX] big endian address */
|
||||
}
|
||||
|
||||
in6_addr :: struct {
|
||||
using _: struct #raw_union {
|
||||
s6_addr: [16]c.uint8_t, /* [PSX] big endian address */
|
||||
__u6_addr16: [8]c.uint16_t,
|
||||
__u6_addr32: [4]c.uint32_t,
|
||||
},
|
||||
when ODIN_OS == .Haiku {
|
||||
in6_addr :: struct #packed {
|
||||
using _: struct #raw_union {
|
||||
s6_addr: [16]c.uint8_t, /* [PSX] big endian address */
|
||||
__u6_addr16: [8]c.uint16_t,
|
||||
__u6_addr32: [4]c.uint32_t,
|
||||
},
|
||||
}
|
||||
} else {
|
||||
in6_addr :: struct {
|
||||
using _: struct #raw_union {
|
||||
s6_addr: [16]c.uint8_t, /* [PSX] big endian address */
|
||||
__u6_addr16: [8]c.uint16_t,
|
||||
__u6_addr32: [4]c.uint32_t,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
when ODIN_OS == .Linux {
|
||||
|
||||
sockaddr_in :: struct {
|
||||
@@ -77,12 +88,20 @@ when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS
|
||||
|
||||
} else {
|
||||
|
||||
when ODIN_OS == .Haiku {
|
||||
@(private)
|
||||
_SIN_ZEROSIZE :: 24
|
||||
} else {
|
||||
@(private)
|
||||
_SIN_ZEROSIZE :: 8
|
||||
}
|
||||
|
||||
sockaddr_in :: struct {
|
||||
sin_len: c.uint8_t,
|
||||
sin_family: sa_family_t, /* [PSX] AF_INET (but a smaller size) */
|
||||
sin_port: in_port_t, /* [PSX] port number */
|
||||
sin_addr: in_addr, /* [PSX] IP address */
|
||||
sin_zero: [8]c.char,
|
||||
sin_zero: [_SIN_ZEROSIZE]c.char,
|
||||
}
|
||||
|
||||
sockaddr_in6 :: struct {
|
||||
@@ -99,13 +118,23 @@ when ODIN_OS == .Darwin || ODIN_OS == .FreeBSD || ODIN_OS == .NetBSD || ODIN_OS
|
||||
ipv6mr_interface: c.uint, /* [PSX] interface index */
|
||||
}
|
||||
|
||||
IPV6_JOIN_GROUP :: 12
|
||||
IPV6_LEAVE_GROUP :: 13
|
||||
IPV6_MULTICAST_HOPS :: 10
|
||||
IPV6_MULTICAST_IF :: 9
|
||||
IPV6_MULTICAST_LOOP :: 11
|
||||
IPV6_UNICAST_HOPS :: 4
|
||||
IPV6_V6ONLY :: 27
|
||||
when ODIN_OS == .Haiku {
|
||||
IPV6_JOIN_GROUP :: 28
|
||||
IPV6_LEAVE_GROUP :: 29
|
||||
IPV6_MULTICAST_HOPS :: 25
|
||||
IPV6_MULTICAST_IF :: 24
|
||||
IPV6_MULTICAST_LOOP :: 26
|
||||
IPV6_UNICAST_HOPS :: 27
|
||||
IPV6_V6ONLY :: 30
|
||||
} else {
|
||||
IPV6_JOIN_GROUP :: 12
|
||||
IPV6_LEAVE_GROUP :: 13
|
||||
IPV6_MULTICAST_HOPS :: 10
|
||||
IPV6_MULTICAST_IF :: 9
|
||||
IPV6_MULTICAST_LOOP :: 11
|
||||
IPV6_UNICAST_HOPS :: 4
|
||||
IPV6_V6ONLY :: 27
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user