Skip to content

agnosticdev/CheaperIPv6Address: Provide cheap(er) IPv6Address init#6

Merged
agnosticdev merged 1 commit into
mainfrom
agnosticdev/CheaperIPv6Address
Jun 10, 2026
Merged

agnosticdev/CheaperIPv6Address: Provide cheap(er) IPv6Address init#6
agnosticdev merged 1 commit into
mainfrom
agnosticdev/CheaperIPv6Address

Conversation

@agnosticdev

Copy link
Copy Markdown
Collaborator

Provide an interface to create a IPv6Address without taking a heap hit from using an array.
This change exposes the a tuple of UInt32 that can be used to extract a IPv6Address value from the C-struct value sockaddr_in6.
For example:

extension IPv6Address
    static func getAddressTuple(_ sockaddr_in6: sockaddr_in6) -> (UInt32, UInt32, UInt32, UInt32) {
        #if os(Linux)
        return (
            sockaddr_in6.sin6_addr.__in6_u.__u6_addr32.0,
            sockaddr_in6.sin6_addr.__in6_u.__u6_addr32.1,
            sockaddr_in6.sin6_addr.__in6_u.__u6_addr32.2,
            sockaddr_in6.sin6_addr.__in6_u.__u6_addr32.3
        )
        #elseif canImport(Darwin)
        return (
            sa.sin6_addr.__u6_addr.__u6_addr32.0,
            sa.sin6_addr.__u6_addr.__u6_addr32.1,
            sa.sin6_addr.__u6_addr.__u6_addr32.2,
            sa.sin6_addr.__u6_addr.__u6_addr32.3
        )
        #endif
    }
}

@agnosticdev agnosticdev self-assigned this Jun 10, 2026
@agnosticdev agnosticdev merged commit db00dca into main Jun 10, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants