(rfc3484_sort): Implement rule 4, home addresses.
authordrepper <drepper>
Sun, 24 Sep 2006 16:51:50 +0000 (16:51 +0000)
committerdrepper <drepper>
Sun, 24 Sep 2006 16:51:50 +0000 (16:51 +0000)
sysdeps/posix/getaddrinfo.c

index 185957b..dd5a57d 100644 (file)
@@ -1390,8 +1390,16 @@ rfc3484_sort (const void *p1, const void *p2)
        return 1;
     }
 
-  /* Rule 4: Prefer home addresses.
-     Another thing only the kernel can decide.  */
+  /* Rule 4: Prefer home addresses.  */
+  if (a1->got_source_addr)
+    {
+      if (!(a1->source_addr_flags & in6ai_homeaddress)
+         && (a2->source_addr_flags & in6ai_homeaddress))
+       return -1;
+      if ((a1->source_addr_flags & in6ai_homeaddress)
+         && !(a2->source_addr_flags & in6ai_homeaddress))
+       return 1;
+    }
 
   /* Rule 5: Prefer matching label.  */
   if (a1->got_source_addr)