On Fri, Aug 25, 2006 at 10:35:03AM +0900, JINMEI Tatuya / [EMAIL PROTECTED]@C#:H wrote: > >>>>> On Thu, 24 Aug 2006 13:42:29 -0500, > >>>>> Brooks Davis <[EMAIL PROTECTED]> said: > > >> Um...I'm not sure if this is even possible. Let's forget mDNS and > >> go back to basic IP. > >> Say a multi-homed host has two interfaces both configured with an > >> address in the rage 169.254/16, say 169.254.1.1 and 169.254.2.1 and > >> it wants to initiate a connection to 169.254.3.1, how on earth should > >> it be able to tell on which side 3.1 is located? There might even be > >> one 3.1 on both side that could be completely different hosts. > > > You probably would need an extension similiar to the one for IPv6 LLAs. > > i.e. the %bge0 in fe80::2e0:81ff:fe31:9f00%bge0. > > (I've not followed the discussion closely, so my apologize in advance > if this message reacts to an off-topic.) > > Note that the '%bge0' notation works well thanks to the sin6_scope_id > field of the sockaddr_in6{} structure. Since sockaddr_in{} doesn't > have such an additional member to solve the ambiguity, the extension > to the IPv4 addresses would not be that trivial.
Thanks for the response. That makes sense. I think due to the sin_zero member in sockaddr_in{} we could fix this without breaking ABI compatability if we shrunk sin_zero appropriatly (or for API compatability created a union and #defined sin_zero) and then added a reference to the interface index. That would have the advantage of also letting us clean up the abuse of sin_zero to store the interface name in ip_divert.c. -- Brooks
pgpfE9c3dXtn5.pgp
Description: PGP signature