Hello Binkd team,
The bindaddr command is used to select the IP address for making outgoing calls
in case there is more than one IP address that the system can use. This is
usefull in case one has more binkd clients running on one and the same system
or when one wants to override the system default in order to present a
2001:DB8::f1d0:zone:net:node address instead of a SLAAC or random privacy
address.
The problem.
------------
bindaddr works fine in a single stack envionment (IPv4 or IPv6 only) but it
gives problems in a dual stack environment.
bindaddr accepts a literal address (IPv4 or IPv6) or a hostname. Specifying
multiple bindaddr statements in the config does not result in an error, but
only the last takes effect.
specifying:
bindaddr fido.vlist.eu
or
bindaddr [2001:1c02:1103:2a00:f1d0:2:280:5555]
in the windows version results in binkd using that address for outgoing IPv6
calls.
But it results in a warning when making outgoing IPv4 calls: "bind: {W32 API
error 10049} The requested address is not valid in its context" or ."bind --
getaddrinfo: Der angegebene Host ist unbekannt. (11001)"
In the Linux version, the literal address must be specified without the square
brackets and attempts to make outgoing IPv4 calls fail.
Proposed solution
-----------------
To remedie this situation I suggest to split up the bindaddr command in an IPv6
and an IPv4 part.
bindaddr6
This only affects the IPv6 address used for outpoing calls.
bindaddr4
This only affects the IPv4 address used for outgoing calls.
For backward compatibility bindaddr is an alias of bindaddr4
Or alternatively:
bindaddr -6
bindaddr -4
How about it?
Cheers, Michiel
--- Fmail, Binkd, Golded
* Origin: http://www.vlist.eu (2:280/5555)
|