[Swan-dev] libswan/ttoaddress.c: use getaddrinfo(3) instead of gethostbyname2(3)
D. Hugh Redelmeier
hugh at mimosa.com
Mon May 3 19:42:09 UTC 2021
| From: Andrew Cagney <andrew.cagney at gmail.com>
| On Mon, 3 May 2021 at 13:54, D. Hugh Redelmeier <hugh at vault.libreswan.fi>
| wrote:
|
| > commit 379929c054bbe6022abbc456f5c1fd9bd453470d
| > We always accept the first result from getaddrinfo(3). This may
| > change prioritization of IPv4 vs IPv6, but at least it matches RFC
| > 3484 (according to the man page).
| I'm not sure how much we want to trust getaddrinfo() to Do_The_Right_Thing
| here.
Yeah.
getaddrinfo(3) says:
Normally, the application should try using the addresses in
the order in which they are returned. The sorting function
used within getaddrinfo() is defined in RFC 3484; the order
can be tweaked for a particular system by editing
/etc/gai.conf (available since glibc 2.5).
The RFC itself is obsoleted by rfc 6724 but I don't know if anyone told
getaddrinfo.
I haven't understood 3484's ordering so I don't know if it does what
we want. But it does conform to a standard!
| For instance, given a choice between IPv4 and IPv6 which will it return
| first? The documentation I'm reading states:
| By default IPv6 address entries are ordered before IPv4 ones, but the
| order of the entries in the list can be controlled using ip6addrctl(8).
Which documention? It's not in getaddrinfo(3) on my system
| yet Pluto, at least for now, wants IPv4 to trump IPv6. This so that
| existing configs don't magically switch protocols and wanders into into the
| suspect IPv6 tunneling IPv4 code path.
|
| (my best guess at RFC 3484 is that it should prefer IPv4 because
| ::ffff:N.N.N.N will sort earlier, but I'm guessing and no documentation for
| getaddrinfo() even hits at it complying with that RFC?)
I hope that works out. I'm too lazy to test until we see a problem.
This seems like something the ipcheck unit testing should check.
I don't even know how often pluto resolves without specifyig an AF.
We actually want both hosts of a connection to use the same AF and both
subnets too. I don't know how to say "any AF, but the same for these two
domain names".
As you say, we also want "same as last time we resolved this". I
would guess that getaddrinfo has a stable ordering so that this is not
a worse problem than we had.
This topic may deserve more thought.
More information about the Swan-dev
mailing list