123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #+build darwin, linux, freebsd, openbsd, netbsd, haiku
- package posix
- import "core:c"
- when ODIN_OS == .Darwin {
- foreign import lib "system:System"
- } else when ODIN_OS == .Haiku {
- foreign import lib "system:network"
- } else {
- foreign import lib "system:c"
- }
- // arpa/inet.h - definitions for internet operations
- foreign lib {
- // Use Odin's native big endian types `u32be` and `u16be` instead.
- // htonl :: proc(c.uint32_t) -> c.uint32_t ---
- // htons :: proc(c.uint16_t) -> c.uint16_t ---
- // ntohl :: proc(c.uint32_t) -> c.uint32_t ---
- // ntohs :: proc(c.uint16_t) -> c.uint16_t ---
- // Use of this function is problematic because -1 is a valid address (255.255.255.255).
- // Avoid its use in favor of inet_aton(), inet_pton(3), or getaddrinfo(3) which provide a cleaner way to indicate error return.
- // inet_addr :: proc(cstring) -> in_addr_t ---
- // Convert the Internet host address specified by in to a string in the Internet standard dot notation.
- //
- // NOTE: returns a static string overwritten by further calls.
- //
- // [[ More; https://pubs.opengroup.org/onlinepubs/9699919799/functions/inet_ntoa.html ]]
- inet_ntoa :: proc(in_addr) -> cstring ---
- // Convert a numeric address into a text string suitable for presentation.
- //
- // Returns `nil` and sets `errno` on failure.
- //
- // [[ More; https://pubs.opengroup.org/onlinepubs/9699919799/functions/inet_ntop.html ]]
- inet_ntop :: proc(
- af: AF, // INET or INET6
- src: rawptr, // either ^in_addr or ^in_addr6
- dst: [^]byte, // use `INET_ADDRSTRLEN` or `INET6_ADDRSTRLEN` for minimum lengths
- size: socklen_t,
- ) -> cstring ---
- // Convert an address in its standard text presentation form into its numeric binary form.
- //
- // [[ More; https://pubs.opengroup.org/onlinepubs/9699919799/functions/inet_ntop.html ]]
- inet_pton :: proc(
- af: AF, // INET or INET6
- src: cstring,
- dst: rawptr, // either ^in_addr or ^in_addr6
- ) -> pton_result ---
- }
- pton_result :: enum c.int {
- AFNOSUPPORT = -1,
- INVALID = 0,
- SUCCESS = 1,
- }
|