> > RFC 3542 and RFC 3493 do use ifindex, but never to refer to a zone ID > > or anything that can appear with a %. It only uses it with APIs that > > want to explicitly reference an interface. RFC 3493 uses the term > > "scope id" (e.g., > > sin6_scope_id) to refer to a zone id. > > RFC 4007 is the primary RFC that explains the relationship between > > zone id, interface index, etc., and is the main one relevant to this > conversation. > > 3542 and 3493. For example, 3493 has "if_nametoindex" and 3542's struct > in6_pktinfo contains a member called ipi6_ifindex. > > It's also a sorry state that struct sockaddr_in6 has sin6_scope_id, which is > confusing with IPv6 scope levels.
Right, and unfortunately one cannot assume that a zone id in a URL can be passed to "if_nametoindex", so any code that resolves a zone id to either an ipi6_ifindex or to a sin6_scope_id must necessarily be platform specific. That's because platforms vary significantly in how they support RFC 4007. > Indeed 4007 tries to clarify it all, but for Unix systems I have access to, > one > interface = one link. Yes, most Unix systems are pretty limited in their RFC 4007 support. Windows has the most complete implementation of it as far as I know. Dave