In your previous mail you wrote:

   I believe that your comments are based on a host model that does not
   entirely cover reality.

=> but this model has many implementations, including routers or
multi-homed hosts.

   An IP address, v4 or v6, designates an
   interface, not a host. A host can have many IP addresses; it can be
   multi-homes to several interfaces, and it can be "artificially divided"
   into several "sub-host", e.g. when the host is the platform for several
   "sites", each with its own servers for HTTP, FTP, telnet and SMTP.
   
   In a multi-homed host, processes must obviously be able to bind to a
   specific address. For example, if a host supports www.example1.com and
   www.example2.com, you definitely expect that two different mail server
   processes will bind to www.example1.com:25 and www.example2.com:25.
   Another reason to do so may be to insist that a specific service is only
   reachable through a specific interface. You expect to achieve the
   address or interface selection by binding the socket to a specific
   address+port combination, not just a port number. Indeed, you want to be
   able to support this function for IPv4 and IPv6 addresses.
   
=> I agree but problems are not there:
 - some implementations have a non-BSD SO_REUSEADDR option
 - some implementations have bad interference between :: and 0.0.0.0
The second point was solved by V6ONLY, the first point is more political
but SO_REUSEADDR has a clear behavior for every BSD systems
(the documentation is *poor* but to fix it is not the job of the IPv6 WG).

   In a multi-homed host that uses IPv4 and IPv6, you get quite a number of
   combinations. I may want a socket to all interfaces and all protocols,
   to a specific interface and a specific protocol. I could also imagine to
   "all protocols on a specific interface, but there is a slippery slope
   here. As we start taking advantage of the large IPv6 address space, we
   introduce new concepts such as privacy addresses, so we loose the
   restriction of "one address per interface", and the correspondence
   between "the IPv4 address of the interface" and "the IPv6 address of the
   interface" becomes fuzzy. Then, there are interfaces such as 6to4 that
   are IPv6 only. Pretty soon, you realize that the easiest way to select
   an interface is to bind to a port on a fully specified address, and that
   such sockets will by definition be single protocol.
   
=> I disagree (about the bind on fully specified addresses). This makes
the code more complex (several sockets when one can be enough) and
more important this relies on good routines to get and track all
addresses. The SIOCGIFCONF is a nightmare, everybody fixed it but
in different ways. And to follow emergence of new addresses is even more
difficult. What you need is a *standard* way to get the destination
address of incoming queries over UDP and to bind a socket per possible
address is not a good solution, cf. sendmail, bind, etc.

Regards

[EMAIL PROTECTED]

PS: security filtering is different. The common close TCP connection
when one doesn't like the peer is a very bad way to do it but the issue
is more in a lack of denial in the application protocol (more polite)
or a denial (TCP RST) in the kernel like it is done for TP4. To summarize
this issue is simply that "accept" is a wrong name for the accept system call.
--------------------------------------------------------------------
IETF IPng Working Group Mailing List
IPng Home Page:                      http://playground.sun.com/ipng
FTP archive:                      ftp://playground.sun.com/pub/ipng
Direct all administrative requests to [EMAIL PROTECTED]
--------------------------------------------------------------------

Reply via email to