use IP(V6)_PKTINFO in KDC for UDP sockets
authorKen Raeburn <raeburn@mit.edu>
Sat, 7 Apr 2007 05:15:31 +0000 (05:15 +0000)
committerKen Raeburn <raeburn@mit.edu>
Sat, 7 Apr 2007 05:15:31 +0000 (05:15 +0000)
commitd3b3888e6fed956304a699653a9277e14dc85533
tree056307a79c91bfb93c5e416bbb4dd83c53c5368c
parent5ace55fd0e100506f4803ffebc9b1aeb8f252185
use IP(V6)_PKTINFO in KDC for UDP sockets

As Denis Vlasenko pointed out in ticket 3306, using IP(V6)_PKTINFO to
get or set the local address in UDP communications instead of
allocating one socket for each address seen at startup will behave
better in environments where the addresses may change while the KDC is
running, or in certain unusual network configurations.

The patch from Denis was specific to Linux (didn't do IPV6_PKTINFO if
IP_PKTINFO wasn't defined).  I've reworked it a fair amount, and
tested the results briefly on Mac OS X (which has IPV6_PKTINFO but not
IP_PKTINFO) and Linux (which has both).

With this change, on systems like Linux supporting both socket
options, the KDC should be able to use just two UDP sockets, one for
IPv4 and one for IPv6.  (And if we turned off IPV6_V6ONLY, we might do
with one.)

Filed as a separate ticket, because Denis's complaint and patch in
3306 cover the RPC code as well.

ticket: new

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@19408 dc483132-0cff-0310-8789-dd5450dbe970
src/kdc/network.c