Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/apache2/mDNSResponder/dist Derive our primary inter...



details:   https://anonhg.NetBSD.org/src/rev/30f035aae079
branches:  trunk
changeset: 341044:30f035aae079
user:      roy <roy%NetBSD.org@localhost>
date:      Thu Oct 15 11:21:53 2015 +0000

description:
Derive our primary interface and address by trying to connect to an
address in the TEST-NET-2 network as noted in RFC5737 instead of using
the 1.1.1.1 address. Also, use port 7 (echo) for better style.
Fixes PR bin/46758 thanks to Lloyd Parkes.

While here, if we do fail to connect to the test address, don't spam
this to the console as it's a common case during the boot sequence.

diffstat:

 external/apache2/mDNSResponder/dist/mDNSPosix/PosixDaemon.c     |   3 +-
 external/apache2/mDNSResponder/dist/mDNSShared/PlatformCommon.c |  18 ++++++++-
 2 files changed, 17 insertions(+), 4 deletions(-)

diffs (54 lines):

diff -r 7a50916b4bbc -r 30f035aae079 external/apache2/mDNSResponder/dist/mDNSPosix/PosixDaemon.c
--- a/external/apache2/mDNSResponder/dist/mDNSPosix/PosixDaemon.c       Thu Oct 15 10:29:57 2015 +0000
+++ b/external/apache2/mDNSResponder/dist/mDNSPosix/PosixDaemon.c       Thu Oct 15 11:21:53 2015 +0000
@@ -92,7 +92,8 @@
 static void Reconfigure(mDNS *m)
        {
        mDNSAddr DynDNSIP;
-       const mDNSAddr dummy = { mDNSAddrType_IPv4, { { { 1, 1, 1, 1 } } } };;
+       // Use a random address from TEST-NET-2 in RFC5737
+       const mDNSAddr dummy = { mDNSAddrType_IPv4, { { { 198, 51, 100, 42 } } } };;
        mDNS_SetPrimaryInterfaceInfo(m, NULL, NULL, NULL);
         mDNS_Lock(m);
        if (ParseDNSServers(m, uDNS_SERVERS_FILE) < 0)
diff -r 7a50916b4bbc -r 30f035aae079 external/apache2/mDNSResponder/dist/mDNSShared/PlatformCommon.c
--- a/external/apache2/mDNSResponder/dist/mDNSShared/PlatformCommon.c   Thu Oct 15 10:29:57 2015 +0000
+++ b/external/apache2/mDNSResponder/dist/mDNSShared/PlatformCommon.c   Thu Oct 15 11:21:53 2015 +0000
@@ -47,7 +47,7 @@
                addr.a4.sin_len         = inner_len;
                #endif
                addr.a4.sin_family      = AF_INET;
-               addr.a4.sin_port        = 1;    // Not important, any port will do
+               addr.a4.sin_port        = 7;    // Not important, any port will do
                addr.a4.sin_addr.s_addr = dst->ip.v4.NotAnInteger;
                }
        else if (dst->type == mDNSAddrType_IPv6)
@@ -58,14 +58,26 @@
                #endif
                addr.a6.sin6_family   = AF_INET6;
                addr.a6.sin6_flowinfo = 0;
-               addr.a6.sin6_port     = 1;      // Not important, any port will do
+               addr.a6.sin6_port     = 7;      // Not important, any port will do
                addr.a6.sin6_addr     = *(struct in6_addr*)&dst->ip.v6;
                addr.a6.sin6_scope_id = 0;
                }
        else return;
 
        if ((connect(sock, &addr.s, inner_len)) < 0)
-               { LogMsg("mDNSPlatformSourceAddrForDest: connect %#a failed errno %d (%s)", dst, errno, strerror(errno)); goto exit; }
+               {
+               static mDNSv4Addr dummy = { 198, 51, 100, 42 };
+
+               // Don't spam if we can't connect to 198.51.100.42 to the console.
+               // That is our test address to out which interfaces/address should be primary and is also
+               // configured in mDNSPosix/PosixDaemon.c:Reconfigure()
+               // Failing to connect to it with EADDRNOTAVAIL is a common situation, especially on boot up.
+               if (dst->type == mDNSAddrType_IPv4 && dst->ip.v4.NotAnInteger == dummy.NotAnInteger && errno == EADDRNOTAVAIL)
+                   LogInfo("mDNSPlatformSourceAddrForDest: connect %#a failed errno %d (%s)", dst, errno, strerror(errno));
+               else
+                   LogMsg("mDNSPlatformSourceAddrForDest: connect %#a failed errno %d (%s)", dst, errno, strerror(errno));
+               goto exit;
+               }
 
        if ((getsockname(sock, &addr.s, &len)) < 0)
                { LogMsg("mDNSPlatformSourceAddrForDest: getsockname failed errno %d (%s)", errno, strerror(errno)); goto exit; }



Home | Main Index | Thread Index | Old Index