On Mon, 2009-02-16 at 11:24 -0500, Chuck Lever wrote: > On Feb 15, 2009, at 10:32 AM, Ian Dall wrote: > > > I believe this includes all comments so far. I have also swatted up on > > Documentation/CodingStyle, and modified the comments somewhat to > > conform. > > There is also a Perl script called scripts/checkpatch.pl that you > should run against your patch before submitting. It can identify and > report many common style problems. Thanks for that, it threw up a few white space issues which I have fixed. > I've thought more about this. I think we don't want the scope ID > comparison here at all. The scope ID is not really part of an IPv6 > address. A unique host address is contained only in the sin6_addr > field; the scope ID is simply local routing information. I can't > think of a case where two unique remotes would have identical link- > local addresses. Isn't that exactly what makes link local addresses, well, link local? They only have to be unique to the link (which seems to be in practice a lan or vlan - a bunch of hosts connected without any routing at the ip level). They don't have to be globally unique. A single host can be on multiple lans or vlans. Finding anything authoritative on this is difficult. The RFC's are vague. However, following discussion on ietf mail archives, and other reasonably reputable sources like documentation from IBM, Sun and FreeBSD makes me think that my interpretation is correct. Indeed, the way the BSD crowd seem to do it is to embed the scope_id in the link local address (internally to the kernel) and thence forth just compare the address. So they treat it *exactly* like part of the address. See for example: http://www.freebsd.org/doc/en/books/developers-handbook/ipv6.html section 8.1.1.3. http://msdn.microsoft.com/en-us/library/ms739166(VS.85).aspx http://books.google.com/books?id=6nNjcItz6H4C&pg=PA53&lpg=PA53&dq=sin6_scope_id+%22link+local%22&source=bl&ots=MFyiwYwO5I&sig=hZDvlVcJ8hLOwt7EXoL4lEzT4V4&hl=en&ei=eqCaSdiGD8PDkAWskMmZCw&sa=X&oi=book_result&resnum=7&ct=result Note especially, section 1.8.1 "Since link local addresses may not be unique on different links ..." The only reasons I can see which would justify omitting the check are: * For some reason you could never have a nfs server on a link local address. * Linux already embeds the scope index in the address for link local addresses, internally in the kernel a la BSD. Which I can find no evidence for either in the code or in documentation. There is also the issue that sin6_scope_id == 0 is interpreted as "unspecified" rather than a specific id. However, as far as I can tell, the scope_id is only ever unspecified (for link_local addresses) before a socket is bound. Once a connection is established, the scope id for link local addresses should always be specified. So by the time this function is called, the scope_id should be set. -- Ian Dall <ian@xxxxxxxxxxxxxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html