-
-
Notifications
You must be signed in to change notification settings - Fork 5.6k
Description
I would have expected the new getipaddrs()
function (#30349) to show on my dual-stack Linux machine both the global scope IP addresses listed by hostname -I
, but currently (as of 1.2.0-DEV.100) it only outputs its IPv4 address:
julia> using Sockets
julia> getipaddr()
ip"128.232.65.23"
julia> getipaddrs()
1-element Array{IPv4,1}:
ip"128.232.65.23"
shell> hostname -I
128.232.65.23 2001:630:212:238:ea40:f2ff:fe0b:d1eb
The current docstring does not point out that getipaddrs()
only returns IPv4 addresses. The returned type does not even have any provisions for IPv6 addresses.
I don't think Julia should add in 2019 new API functions that only support IPv4. Instead, the Julia API should encourage a network programming style that works equally well on machines with IPv4-only, IPv6-only and IPv4+IPv6 interfaces. Many people have dual-stack IPv4/IPv6 network interfaces configured these days, for many home users IPv4 is now only provided by carrier-grade NAT (i.e., the less preferred protocol), and big data centers increasingly use IPv6-only subnets internally (as IPv4 addresses trade for nearly $20 these days).
There are also more types of addresses to distinguish in the filter parameters than just lo
, e.g. a server who sends out invitations for reverse connections might want to avoid listing RFC 4149 temporary addresses.