netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Some clarification regarding rfc3484 (6724) - Rule 8 Prefer smaller scope
@ 2014-05-23 13:21 sumanth
  2014-05-25 19:01 ` sumanth
  0 siblings, 1 reply; 2+ messages in thread
From: sumanth @ 2014-05-23 13:21 UTC (permalink / raw)
  To: netdev; +Cc: Srikar Dronamraju, Raghavendra K T

I had configured my local interface as follows :
ifconfig eth0 inet6 add fe80::1/64
ifconfig eth0 inet6 add fec0::1/10

And /etc/hosts contains :
fe80::2 server.org
fec0::2 server.org

The above two interfaces in /etc/hosts are not configured. Just to get
the result from getaddrinfo().

So according to rfc3484 , link-local has lower scope when compared to
site-local .
So i think fe80::2 should be returned first and then later fec0::2

In my fedora ( any kernel ), getaddrinfo() is preferring site-local
first instead of link-local.

So when looking into the getaddrinfo() glibc implementation ,  when two
or more addresses are available (code flow):
1) create a udp datagram socket
2) connect to the destination addresses returned from gaih_inet ( not
sorted yet ). This was done inorder to get the source address from the
kernel (using ipv6_get_saddr_eval() we get the preferred source for 
each destination). Actually doesnt need the destination to be reachable .
 #netstat | grep -i udp
udp        0      0 fec0::1:34236               server.org:http      
ESTABLISHED

3) getsockname to get the source address and store in result combo array.

So __connect() to site-local becomes successfull . But __connect() to
link-local is not successfull .

Hence rfc3484_sort() in glibc changes the order and prefers site-local
first .

i.e /* Rule 1: Avoid unusable destinations.
     We have the got_source_addr flag set if the destination is
reachable.  */
  if (a1->got_source_addr && ! a2->got_source_addr)

a1->got_source_addr is false because connect to link-local failed.

So my questions are :
1) Can this be a problem somewhere around ip6_datagram_connect() [
because connect fails ]
2) Can this be a problem with the parsing of glibc getaddrinfo ? [
something like sin6_scope_id being not set properly ]
3) Or this is the expected behaviour or am i missing out something ?


Any suggestions ?


Thank you,
Sumanth K

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-05-25 19:01 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-23 13:21 Some clarification regarding rfc3484 (6724) - Rule 8 Prefer smaller scope sumanth
2014-05-25 19:01 ` sumanth

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).