Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/Android.bp b/Android.bp
- index b5ffd42..70f91af 100644
- --- a/Android.bp
- +++ b/Android.bp
- @@ -75,7 +75,9 @@ cc_binary {
- defaults: ["mdnsresponder_default_cflags"],
- host_supported: true,
- srcs: [
- + "mDNSCore/anonymous.c",
- "mDNSCore/mDNS.c",
- + "mDNSCore/CryptoAlg.c",
- "mDNSCore/DNSDigest.c",
- "mDNSCore/uDNS.c",
- "mDNSCore/DNSCommon.c",
- @@ -124,6 +126,7 @@ cc_binary {
- "-DUNICODE",
- "-D_UNICODE",
- "-D_LEGACY_NAT_TRAVERSAL",
- + "-D_CRT_RAND_S=",
- "-Wno-empty-body",
- ],
- @@ -136,6 +139,7 @@ cc_binary {
- ],
- srcs: [
- + "mDNSWindows/Poll.c",
- "mDNSWindows/SystemService/main.c",
- "mDNSWindows/SystemService/Service.c",
- "mDNSWindows/SystemService/EventLog.mc",
- @@ -180,7 +184,7 @@ cc_library {
- "-D_WINDOWS",
- "-D_USERDLL",
- "-D_MDNS_DEBUGMSGS=0",
- - "-D_SSIZE_T",
- + "-D_SSIZE_T=",
- "-DNOT_HAVE_SA_LENGTH",
- "-Wno-unknown-pragmas",
- "-Wno-overflow",
- diff --git a/Clients/dns-sd.c b/Clients/dns-sd.c
- index 5260b3f..aa5c367 100644
- --- a/Clients/dns-sd.c
- +++ b/Clients/dns-sd.c
- @@ -2279,9 +2279,11 @@ Fail:
- #define STRINGIFY_ARGUMENT_WITHOUT_EXPANSION(s) # s
- #define STRINGIFY(s) STRINGIFY_ARGUMENT_WITHOUT_EXPANSION(s)
- +#ifndef __ANDROID__
- // NOT static -- otherwise the compiler may optimize it out
- // The "@(#) " pattern is a special prefix the "what" command looks for
- const char VersionString_SCCS[] = "@(#) dns-sd " STRINGIFY(mDNSResponderVersion) " (" __DATE__ " " __TIME__ ")";
- +#endif
- #if _BUILDING_XCODE_PROJECT_
- // If the process crashes, then this string will be magically included in the automatically-generated crash log
- diff --git a/mDNSCore/DNSDigest.c b/mDNSCore/DNSDigest.c
- index 57a4012..383a32d 100644
- --- a/mDNSCore/DNSDigest.c
- +++ b/mDNSCore/DNSDigest.c
- @@ -182,6 +182,7 @@ mDNSlocal mDNSu32 NToH32(mDNSu8 * bytes)
- //from CommonDigest.h
- +#ifndef HAVE_MD5
- // from openssl/md5.h
- @@ -1120,6 +1121,7 @@ void md5_block_data_order (MD5_CTX *c, const void *data_, int num)
- }
- #endif
- +#endif // !HAVE_MD5
- // ***************************************************************************
- #if COMPILER_LIKES_PRAGMA_MARK
- diff --git a/mDNSCore/mDNS.c b/mDNSCore/mDNS.c
- old mode 100755
- new mode 100644
- index 8deada2..d887d08
- --- a/mDNSCore/mDNS.c
- +++ b/mDNSCore/mDNS.c
- @@ -5535,7 +5535,6 @@ mDNSexport mDNSs32 mDNS_Execute(mDNS *const m)
- }
- }
- m->NewLocalRecords = head;
- - debugf("mDNS_Execute: Setting NewLocalRecords to %s", (head ? ARDisplayString(m, head) : "NULL"));
- if (i >= 1000) LogMsg("mDNS_Execute: m->NewLocalRecords exceeded loop limit");
- @@ -15307,6 +15306,9 @@ mDNSexport void mDNS_StartExit(mDNS *const m)
- for (rr = m->DuplicateRecords; rr; rr = rr->next)
- LogMsg("mDNS_StartExit: Should not still have Duplicate Records remaining: %02X %s", rr->resrec.RecordType, ARDisplayString(m, rr));
- + // Send responses to flush any pending deregistrations
- + SendResponses(m);
- +
- // If any deregistering records remain, send their deregistration announcements before we exit
- if (m->mDNSPlatformStatus != mStatus_NoError) DiscardDeregistrations(m);
- diff --git a/mDNSCore/mDNSEmbeddedAPI.h b/mDNSCore/mDNSEmbeddedAPI.h
- old mode 100755
- new mode 100644
- index 511aa3b..4d0e42a
- --- a/mDNSCore/mDNSEmbeddedAPI.h
- +++ b/mDNSCore/mDNSEmbeddedAPI.h
- @@ -54,6 +54,17 @@
- #ifndef __mDNSEmbeddedAPI_h
- #define __mDNSEmbeddedAPI_h
- +/* MinGW thinks "#define interface struct" is a cute way to do ObjC
- + * compatibility. Everything is terrible.
- + */
- +#ifdef _WIN32
- +#ifndef interface
- +#warning "MinGW no longer does weird things with 'interface'. "\
- + "You can remove this code."
- +#endif /* ! interface */
- +#undef interface
- +#endif /* _WIN32 */
- +
- #if defined(EFI32) || defined(EFI64) || defined(EFIX64)
- // EFI doesn't have stdarg.h unless it's building with GCC.
- #include "Tiano.h"
- @@ -3153,9 +3164,9 @@ extern mStatus mDNSPlatformSendUDP(const mDNS *const m, const void *const msg,
- extern void mDNSPlatformLock (const mDNS *const m);
- extern void mDNSPlatformUnlock (const mDNS *const m);
- -extern void mDNSPlatformStrCopy ( void *dst, const void *src);
- -extern mDNSu32 mDNSPlatformStrLCopy ( void *dst, const void *src, mDNSu32 len);
- -extern mDNSu32 mDNSPlatformStrLen ( const void *src);
- +mDNSexport void mDNSPlatformStrCopy ( void *dst, const void *src);
- +mDNSexport mDNSu32 mDNSPlatformStrLCopy ( void *dst, const void *src, mDNSu32 len);
- +mDNSexport mDNSu32 mDNSPlatformStrLen ( const void *src);
- extern void mDNSPlatformMemCopy ( void *dst, const void *src, mDNSu32 len);
- extern mDNSBool mDNSPlatformMemSame (const void *dst, const void *src, mDNSu32 len);
- extern int mDNSPlatformMemCmp (const void *dst, const void *src, mDNSu32 len);
- diff --git a/mDNSPosix/PosixDaemon.c b/mDNSPosix/PosixDaemon.c
- index 295e842..46f0dff 100644
- --- a/mDNSPosix/PosixDaemon.c
- +++ b/mDNSPosix/PosixDaemon.c
- @@ -38,6 +38,10 @@
- #include <pwd.h>
- #include <sys/types.h>
- +#ifdef __ANDROID__
- +#include "cutils/sockets.h"
- +#endif
- +
- #if __APPLE__
- #undef daemon
- extern int daemon(int, int);
- @@ -49,6 +53,10 @@ extern int daemon(int, int);
- #include "uds_daemon.h"
- #include "PlatformCommon.h"
- +#ifndef MDNS_USERNAME
- +#define MDNS_USERNAME "nobody"
- +#endif
- +
- #define CONFIG_FILE "/etc/mdnsd.conf"
- static domainname DynDNSZone; // Default wide-area zone for service registration
- static domainname DynDNSHostname;
- @@ -107,6 +115,7 @@ mDNSlocal void ParseCmdLinArgs(int argc, char **argv)
- else printf("Usage: %s [-debug]\n", argv[0]);
- }
- +#ifndef __ANDROID__
- if (!mDNS_DebugMode)
- {
- int result = daemon(0, 0);
- @@ -116,6 +125,7 @@ mDNSlocal void ParseCmdLinArgs(int argc, char **argv)
- exit(-1);
- #endif
- }
- +#endif // !__ANDROID__
- }
- mDNSlocal void DumpStateLog()
- @@ -180,18 +190,33 @@ int main(int argc, char **argv)
- mDNS_StatusCallback, mDNS_Init_NoInitCallbackContext);
- if (mStatus_NoError == err)
- +#ifdef __ANDROID__
- + {
- + dnssd_sock_t s[1];
- + char *socketname = strrchr(MDNS_UDS_SERVERPATH, '/');
- + if (socketname)
- + {
- + socketname++; // skip '/'
- + s[0] = android_get_control_socket(socketname);
- + err = udsserver_init(s, 1);
- + } else {
- + err = udsserver_init(mDNSNULL, 0);
- + }
- + }
- +#else
- err = udsserver_init(mDNSNULL, 0);
- +#endif // __ANDROID__
- Reconfigure(&mDNSStorage);
- // Now that we're finished with anything privileged, switch over to running as "nobody"
- if (mStatus_NoError == err)
- {
- - const struct passwd *pw = getpwnam("nobody");
- + const struct passwd *pw = getpwnam(MDNS_USERNAME);
- if (pw != NULL)
- setuid(pw->pw_uid);
- else
- - LogMsg("WARNING: mdnsd continuing as root because user \"nobody\" does not exist");
- + LogMsg("WARNING: mdnsd continuing as root because user \"%s\" does not exist", MDNS_USERNAME);
- }
- if (mStatus_NoError == err)
- diff --git a/mDNSPosix/mDNSPosix.c b/mDNSPosix/mDNSPosix.c
- old mode 100755
- new mode 100644
- index 0e10bd5..94ee12a
- --- a/mDNSPosix/mDNSPosix.c
- +++ b/mDNSPosix/mDNSPosix.c
- @@ -29,7 +29,9 @@
- #include <errno.h>
- #include <string.h>
- #include <unistd.h>
- -#include <syslog.h>
- +#ifndef __ANDROID__
- + #include <syslog.h>
- +#endif
- #include <stdarg.h>
- #include <fcntl.h>
- #include <sys/types.h>
- @@ -54,6 +56,11 @@
- #include "GenLinkedList.h"
- #include "dnsproxy.h"
- +// Disallow SO_REUSEPORT on Android because we use >3.9 kernel headers to build binaries targeted to 3.4.x.
- +#ifdef __ANDROID__
- +#undef SO_REUSEPORT
- +#endif
- +
- // ***************************************************************************
- // Structures
- @@ -466,7 +473,12 @@ mDNSexport void mDNSPlatformDynDNSHostNameStatusChanged(const domainname *const
- mDNSlocal void GetUserSpecifiedRFC1034ComputerName(domainlabel *const namelabel)
- {
- int len = 0;
- +#ifndef __ANDROID__
- gethostname((char *)(&namelabel->c[1]), MAX_DOMAIN_LABEL);
- +#else
- + // use an appropriate default label rather than the linux default of 'localhost'
- + strncpy(&namelabel->c[1], "Android", MAX_DOMAIN_LABEL);
- +#endif
- while (len < MAX_DOMAIN_LABEL && namelabel->c[len+1] && namelabel->c[len+1] != '.') len++;
- namelabel->c[0] = len;
- }
- @@ -989,7 +1001,7 @@ mDNSlocal int SetupInterfaceList(mDNS *const m)
- if (firstLoopback == NULL)
- firstLoopback = i;
- }
- - else
- + else if (i->ifi_flags & (IFF_MULTICAST | IFF_BROADCAST)) // http://b/25669326
- {
- if (SetupOneInterface(m, i->ifi_addr, i->ifi_netmask, i->ifi_name, i->ifi_index) == 0)
- if (i->ifi_addr->sa_family == AF_INET)
- diff --git a/mDNSPosix/mDNSPosix.h b/mDNSPosix/mDNSPosix.h
- old mode 100755
- new mode 100644
- index ca60d80..bac6b88
- --- a/mDNSPosix/mDNSPosix.h
- +++ b/mDNSPosix/mDNSPosix.h
- @@ -20,6 +20,9 @@
- #include <signal.h>
- #include <sys/time.h>
- +#ifdef __ANDROID__
- +#include <sys/select.h>
- +#endif
- #ifdef __cplusplus
- extern "C" {
- diff --git a/mDNSPosix/mDNSUNP.c b/mDNSPosix/mDNSUNP.c
- old mode 100755
- new mode 100644
- index e00ddd6..8a575a6
- --- a/mDNSPosix/mDNSUNP.c
- +++ b/mDNSPosix/mDNSUNP.c
- @@ -131,7 +131,7 @@ struct ifi_info *get_ifi_info_linuxv6(int doaliases)
- if (doaliases == 0)
- continue; /* already processed this interface */
- }
- - memcpy(lastname, ifname, IFNAMSIZ);
- + strncpy(lastname, ifname, IFNAMSIZ);
- ifi = (struct ifi_info*)calloc(1, sizeof(struct ifi_info));
- if (ifi == NULL) {
- goto gotError;
- @@ -169,13 +169,13 @@ struct ifi_info *get_ifi_info_linuxv6(int doaliases)
- inet_pton(AF_INET6, ipv6addr, &((struct sockaddr_in6 *)ifi->ifi_netmask)->sin6_addr);
- /* Add interface name */
- - memcpy(ifi->ifi_name, ifname, IFI_NAME);
- + strncpy(ifi->ifi_name, ifname, IFI_NAME);
- /* Add interface index */
- ifi->ifi_index = index;
- /* Add interface flags*/
- - memcpy(ifr.ifr_name, ifname, IFNAMSIZ);
- + strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
- if (ioctl(sockfd, SIOCGIFFLAGS, &ifr) < 0) {
- if (errno == EADDRNOTAVAIL) {
- /*
- @@ -302,7 +302,7 @@ struct ifi_info *get_ifi_info(int family, int doaliases)
- continue; /* already processed this interface */
- myflags = IFI_ALIAS;
- }
- - memcpy(lastname, ifr->ifr_name, IFNAMSIZ);
- + strncpy(lastname, ifr->ifr_name, IFNAMSIZ);
- ifrcopy = *ifr;
- if (ioctl(sockfd, SIOCGIFFLAGS, &ifrcopy) < 0) {
- diff --git a/mDNSPosix/mDNSUNP.h b/mDNSPosix/mDNSUNP.h
- old mode 100755
- new mode 100644
- index 2b36ceb..41a2802
- --- a/mDNSPosix/mDNSUNP.h
- +++ b/mDNSPosix/mDNSUNP.h
- @@ -44,13 +44,13 @@ extern "C" {
- typedef unsigned int socklen_t;
- #endif
- -#if !defined(_SS_MAXSIZE)
- +#if !defined(_SS_MAXSIZE) && !defined(__ANDROID__)
- #if HAVE_IPV6
- #define sockaddr_storage sockaddr_in6
- #else
- #define sockaddr_storage sockaddr
- #endif // HAVE_IPV6
- -#endif // !defined(_SS_MAXSIZE)
- +#endif // !defined(_SS_MAXSIZE) && !defined(__ANDROID__)
- #ifndef NOT_HAVE_SA_LEN
- #define GET_SA_LEN(X) (sizeof(struct sockaddr) > ((struct sockaddr*)&(X))->sa_len ? \
- diff --git a/mDNSShared/PlatformCommon.c b/mDNSShared/PlatformCommon.c
- index 49c8fd1..58e4ff9 100644
- --- a/mDNSShared/PlatformCommon.c
- +++ b/mDNSShared/PlatformCommon.c
- @@ -31,6 +31,10 @@
- #include "DNSCommon.h"
- #include "PlatformCommon.h"
- +#ifdef __ANDROID__
- +#include <android/log.h>
- +#endif
- +
- #ifdef NOT_HAVE_SOCKLEN_T
- typedef unsigned int socklen_t;
- #endif
- @@ -147,8 +151,12 @@ badf:
- #if MDNS_DEBUGMSGS
- mDNSexport void mDNSPlatformWriteDebugMsg(const char *msg)
- {
- +#ifdef __ANDROID__
- + __android_log_print(ANDROID_LOG_DEBUG, "mdns", "%s", msg);
- +#else
- fprintf(stderr,"%s\n", msg);
- fflush(stderr);
- +#endif
- }
- #endif
- @@ -207,8 +215,24 @@ mDNSexport void mDNSPlatformWriteLogMsg(const char *ident, const char *buffer, m
- {
- #if APPLE_OSX_mDNSResponder
- mDNSPlatformLogToFile(syslog_level, buffer);
- +#else
- +#ifdef __ANDROID__
- + switch (loglevel)
- + {
- + case MDNS_LOG_DEBUG: syslog_level = ANDROID_LOG_DEBUG; break;
- +#if MDNS_DEBUGMSGS > 0
- + case MDNS_LOG_OPERATION: syslog_level = ANDROID_LOG_WARN; break;
- + case MDNS_LOG_SPS: syslog_level = ANDROID_LOG_DEBUG; break;
- + case MDNS_LOG_INFO: syslog_level = ANDROID_LOG_INFO; break;
- + default: syslog_level = ANDROID_LOG_ERROR; break;
- +#else
- + default: return;
- +#endif
- + }
- + __android_log_print(syslog_level, "mdns", "%s", buffer);
- #else
- syslog(syslog_level, "%s", buffer);
- +#endif
- #endif
- }
- }
- diff --git a/mDNSShared/dns_sd.h b/mDNSShared/dns_sd.h
- index a1f5a57..49d0905 100644
- --- a/mDNSShared/dns_sd.h
- +++ b/mDNSShared/dns_sd.h
- @@ -2051,6 +2051,25 @@ DNSServiceErrorType DNSSD_API DNSServiceReconfirmRecord
- );
- +typedef void (DNSSD_API *DNSHostnameChangedReply)
- +(
- + DNSServiceRef sdRef,
- + DNSServiceFlags flags,
- + DNSServiceErrorType errorCode,
- + const char *hostname,
- + void *context
- +);
- +
- +DNSSD_EXPORT
- +DNSServiceErrorType DNSSD_API DNSSetHostname
- +(
- + DNSServiceRef *sdRef,
- + DNSServiceFlags flags,
- + const char *hostname,
- + DNSHostnameChangedReply callBack,
- + void *context
- +);
- +
- /*********************************************************************************************
- *
- * NAT Port Mapping
- diff --git a/mDNSShared/dnssd_clientlib.c b/mDNSShared/dnssd_clientlib.c
- index 2a1f5ed..4ee24a6 100644
- --- a/mDNSShared/dnssd_clientlib.c
- +++ b/mDNSShared/dnssd_clientlib.c
- @@ -367,4 +367,6 @@ DNSServiceErrorType DNSSD_API TXTRecordGetItemAtIndex
- // NOT static -- otherwise the compiler may optimize it out
- // The "@(#) " pattern is a special prefix the "what" command looks for
- +#ifndef __ANDROID__
- const char VersionString_SCCS_libdnssd[] DNSSD_USED = "@(#) libdns_sd " STRINGIFY(mDNSResponderVersion) " (" __DATE__ " " __TIME__ ")";
- +#endif
- diff --git a/mDNSShared/dnssd_clientshim.c b/mDNSShared/dnssd_clientshim.c
- index c0a309d..2c3b4a9 100644
- --- a/mDNSShared/dnssd_clientshim.c
- +++ b/mDNSShared/dnssd_clientshim.c
- @@ -68,6 +71,14 @@ typedef struct
- DNSQuestion q;
- } mDNS_DirectOP_Browse;
- +typedef struct
- +{
- + mDNS_DirectOP_Dispose *disposefn;
- + DNSServiceRef aQuery;
- + DNSServiceGetAddrInfoReply callback;
- + void *context;
- +} mDNS_DirectOP_GetAddrInfo;
- +
- typedef struct
- {
- mDNS_DirectOP_Dispose *disposefn;
- @@ -188,6 +199,10 @@ mDNSlocal void RegCallback(mDNS *const m, ServiceRecordSet *const sr, mStatus re
- else if (result == mStatus_NameConflict)
- {
- if (x->autoname) mDNS_RenameAndReregisterService(m, sr, mDNSNULL);
- + else if (x->autorename) {
- + IncrementLabelSuffix(&x->name, mDNStrue);
- + mDNS_RenameAndReregisterService(m, &x->s, &x->name);
- + }
- else if (x->callback)
- x->callback((DNSServiceRef)x, 0, result, namestr, typestr, domstr, x->context);
- }
- @@ -253,7 +268,7 @@ DNSServiceErrorType DNSServiceRegister
- x->callback = callback;
- x->context = context;
- x->autoname = (!name[0]);
- - x->autorename = mDNSfalse;
- + x->autorename = !(flags & kDNSServiceFlagsNoAutoRename);
- x->name = n;
- x->host = h;
- @@ -674,7 +689,7 @@ DNSServiceErrorType DNSServiceQueryRecord
- x->q.ExpectUnique = mDNSfalse;
- x->q.ForceMCast = (flags & kDNSServiceFlagsForceMulticast) != 0;
- x->q.ReturnIntermed = (flags & kDNSServiceFlagsReturnIntermediates) != 0;
- - x->q.SuppressUnsable = (flags & kDNSServiceFlagsSuppressUnusable) != 0;
- + x->q.SuppressUnusable = (flags & kDNSServiceFlagsSuppressUnusable) != 0;
- x->q.SearchListIndex = 0;
- x->q.AppendSearchDomains = 0;
- x->q.RetryWithSearchDomains = mDNSfalse;
- diff --git a/mDNSShared/dnssd_clientstub.c b/mDNSShared/dnssd_clientstub.c
- index e8600cb..faa0b10 100644
- --- a/mDNSShared/dnssd_clientstub.c
- +++ b/mDNSShared/dnssd_clientstub.c
- @@ -80,7 +80,12 @@ static void syslog( int priority, const char * message, ...)
- }
- #else
- +#ifndef __ANDROID__
- #include <sys/fcntl.h> // For O_RDWR etc.
- +#else
- + #include <fcntl.h>
- + #define LOG_TAG "libmdns"
- +#endif // !__ANDROID__
- #include <sys/time.h>
- #include <sys/socket.h>
- #include <syslog.h>
- @@ -936,6 +941,9 @@ static void CallbackWithError(DNSServiceRef sdRef, DNSServiceErrorType error)
- case enumeration_request:
- if (sdr->AppCallback) ((DNSServiceDomainEnumReply) sdr->AppCallback)(sdr, 0, 0, error, NULL, sdr->AppContext);
- break;
- + case sethost_request:
- + if (sdr->AppCallback) ((DNSServiceSetHostReply) sdr->AppCallback)(sdr, 0, error, NULL, sdr->AppContext);
- + break;
- case connection_request:
- case connection_delegate_request:
- // This means Register Record, walk the list of DNSRecords to do the callback
- @@ -1584,6 +1592,56 @@ DNSServiceErrorType DNSSD_API DNSServiceBrowse
- return err;
- }
- +static void handle_hostname_changed_response(
- + DNSServiceOp *const sdr,
- + const CallbackHeader *const cbh,
- + const char *data,
- + const char *const end)
- +{
- + char replyHostname[256];
- + get_string(&data, end, replyHostname, sizeof(replyHostname));
- + if (!data) syslog(LOG_WARNING,
- + "dnssd_clientstub handle_hostname_changed_response: error reading result from daemon");
- + else ((DNSHostnameChangedReply)sdr->AppCallback)(
- + sdr, cbh->cb_flags, cbh->cb_err, replyHostname, sdr->AppContext);
- +}
- +
- +DNSServiceErrorType DNSSD_API DNSSetHostname
- +(
- + DNSServiceRef *sdRef,
- + DNSServiceFlags flags,
- + const char *hostname,
- + DNSHostnameChangedReply callBack,
- + void *context
- +)
- +{
- + char *ptr;
- + size_t len;
- + ipc_msg_hdr *hdr;
- + DNSServiceErrorType err = ConnectToServer(sdRef, flags, sethost_request,
- + handle_hostname_changed_response, callBack, context);
- + if (err) return err;
- + len = sizeof(flags);
- + len += strlen(hostname) + 1;
- + hdr = create_hdr(sethost_request, &len, &ptr,
- + (*sdRef)->primary ? 1 : 0, *sdRef);
- + if (!hdr)
- + {
- + DNSServiceRefDeallocate(*sdRef);
- + *sdRef = NULL;
- + return kDNSServiceErr_NoMemory;
- + }
- + put_flags(flags, &ptr);
- + put_string(hostname, &ptr);
- + err = deliver_request(hdr, *sdRef);
- + if (err)
- + {
- + DNSServiceRefDeallocate(*sdRef);
- + *sdRef = NULL;
- + }
- + return err;
- +}
- +
- DNSServiceErrorType DNSSD_API DNSServiceSetDefaultDomainForUser(DNSServiceFlags flags, const char *domain)
- {
- DNSServiceErrorType err;
- diff --git a/mDNSShared/dnssd_ipc.h b/mDNSShared/dnssd_ipc.h
- index 96466a9..50015f9 100644
- --- a/mDNSShared/dnssd_ipc.h
- +++ b/mDNSShared/dnssd_ipc.h
- @@ -52,12 +52,17 @@ extern char *win32_strerror(int inErrorCode);
- #else
- # include <sys/types.h>
- # include <unistd.h>
- +#ifdef __ANDROID__
- +# include <sys/socket.h>
- +#endif // __ANDROID__
- # include <sys/un.h>
- # include <string.h>
- # include <stdio.h>
- # include <stdlib.h>
- # include <sys/stat.h>
- +#ifndef __ANDROID__
- # include <sys/socket.h>
- +#endif
- # include <netinet/in.h>
- # include <arpa/inet.h>
- # define dnssd_InvalidSocket -1
- @@ -137,6 +142,7 @@ typedef enum
- getpid_request,
- release_request,
- connection_delegate_request,
- + sethost_request,
- cancel_request = 63
- } request_op_t;
- @@ -151,7 +157,8 @@ typedef enum
- reg_record_reply_op, // Up to here is in Tiger and B4W 1.0.3
- getproperty_reply_op, // New in B4W 1.0.4
- port_mapping_reply_op, // New in Leopard and B4W 2.0
- - addrinfo_reply_op
- + addrinfo_reply_op,
- + sethost_reply,
- } reply_op_t;
- #if defined(_WIN64)
- diff --git a/mDNSShared/mDNSDebug.c b/mDNSShared/mDNSDebug.c
- index dfe77a1..665dbef 100644
- --- a/mDNSShared/mDNSDebug.c
- +++ b/mDNSShared/mDNSDebug.c
- @@ -35,7 +35,7 @@ mDNSexport int mDNS_PacketLoggingEnabled = 0;
- mDNSexport int mDNS_McastLoggingEnabled = 0;
- mDNSexport int mDNS_McastTracingEnabled = 0;
- -#if MDNS_DEBUGMSGS
- +#if MDNS_DEBUGMSGS && !defined(__ANDROID__)
- mDNSexport int mDNS_DebugMode = mDNStrue;
- #else
- mDNSexport int mDNS_DebugMode = mDNSfalse;
- diff --git a/mDNSShared/uds_daemon.c b/mDNSShared/uds_daemon.c
- index d1fbc7f..72da095 100644
- --- a/mDNSShared/uds_daemon.c
- +++ b/mDNSShared/uds_daemon.c
- @@ -36,6 +36,10 @@
- #include "uds_daemon.h"
- #include "dns_sd_internal.h"
- +#ifdef __ANDROID__
- +#include "cutils/sockets.h"
- +#endif
- +
- // Normally we append search domains only for queries with a single label that are not
- // fully qualified. This can be overridden to apply search domains for queries (that are
- // not fully qualified) with any number of labels e.g., moon, moon.cs, moon.cs.be, etc.
- @@ -2506,6 +2510,29 @@ mDNSlocal void AutomaticBrowseDomainChange(mDNS *const m, DNSQuestion *q, const
- else RmvAutoBrowseDomain(0, &answer->rdata->u.name);
- }
- +mDNSlocal mStatus handle_sethost_request(request_state *request)
- +{
- + get_flags(&request->msgptr, request->msgend);
- + char hostName[MAX_DOMAIN_LABEL];
- + int len = 0;
- + if (get_string(&request->msgptr, request->msgend, hostName,
- + MAX_DOMAIN_LABEL) < 0) return (mStatus_BadParamErr);
- + LogOperation("%3d: DNSSetHostname(%X, %d, nonstr ) START",
- + request->sd, request->flags);
- + // if we start using this as a callback for notification when the
- + // hostname changes we may need to cleanup from it
- + // request->terminate = sethost_termination_callback;
- + if(hostName[0] == 0) return mStatus_BadParamErr;
- + while (len < MAX_DOMAIN_LABEL && hostName[len+1]
- + && hostName[len+1] != '.') len++;
- + strncpy(&(mDNSStorage.nicelabel.c[1]), hostName, len);
- + mDNSStorage.nicelabel.c[0] = len;
- + strncpy(&(mDNSStorage.hostlabel.c[1]), hostName, len);
- + mDNSStorage.hostlabel.c[0] = len;
- + mDNS_SetFQDN(&mDNSStorage);
- + return mStatus_NoError;
- +}
- +
- mDNSlocal mStatus handle_browse_request(request_state *request)
- {
- char regtype[MAX_ESCAPED_DOMAIN_NAME], domain[MAX_ESCAPED_DOMAIN_NAME];
- @@ -4823,6 +4850,7 @@ mDNSlocal mStatus handle_client_request(request_state *req)
- case remove_record_request: err = handle_removerecord_request(req); break;
- case cancel_request: handle_cancel_request (req); break;
- case release_request: err = handle_release_request (req); break;
- + case sethost_request: err = handle_sethost_request (req); break;
- default: LogMsg("request_callback: %3d:ERROR: Unsupported UDS req:%d PID[%d][%s]",
- req->sd, req->hdr.op, req->process_id, req->pid_name);
- err = mStatus_BadParamErr;
- @@ -4885,6 +4913,7 @@ mDNSlocal void request_callback(int fd, short filter, void *info)
- case send_bpf: // Same as cancel_request below
- case cancel_request: min_size = 0; break;
- case release_request: min_size += sizeof(mDNSu32) + 3 /* type, type, domain */; break;
- + case sethost_request: min_size = sizeof(mDNSu32) + 1 /* hostname */; break;
- default: LogMsg("request_callback: ERROR: validate_message - unsupported req type: %d PID[%d][%s]",
- req->hdr.op, req->process_id, req->pid_name);
- min_size = -1; break;
- diff --git a/mDNSShared/uds_daemon.h b/mDNSShared/uds_daemon.h
- index dc7d9ac..c60604b 100644
- --- a/mDNSShared/uds_daemon.h
- +++ b/mDNSShared/uds_daemon.h
- @@ -78,9 +78,14 @@ typedef struct browser_t
- } browser_t;
- #ifdef _WIN32
- +#ifdef __MINGW32__
- +typedef int pid_t;
- +typedef int socklen_t;
- +#else
- typedef unsigned int pid_t;
- typedef unsigned int socklen_t;
- #endif
- +#endif
- #if (!defined(MAXCOMLEN))
- #define MAXCOMLEN 16
- diff --git a/mDNSWindows/Poll.c b/mDNSWindows/Poll.c
- old mode 100755
- new mode 100644
- index 9adc632..e8b08da
- --- a/mDNSWindows/Poll.c
- +++ b/mDNSWindows/Poll.c
- @@ -113,7 +113,7 @@ ShiftDown( void * arr, size_t arraySize, size_t itemSize, int index )
- #define DEBUG_NAME "[mDNSWin32] "
- #define gMDNSRecord mDNSStorage
- -mDNSlocal Poll gPoll = { mDNSfalse, NULL };
- +mDNSlocal Poll gPoll = {};
- #define LogErr( err, FUNC ) LogMsg( "%s:%d - %s failed: %d\n", __FUNCTION__, __LINE__, FUNC, err );
- diff --git a/mDNSWindows/SystemService/Service.c b/mDNSWindows/SystemService/Service.c
- index 1dea5c7..e6c889a 100644
- --- a/mDNSWindows/SystemService/Service.c
- +++ b/mDNSWindows/SystemService/Service.c
- @@ -29,7 +29,7 @@
- #include "uds_daemon.h"
- #include "GenLinkedList.h"
- #include "Service.h"
- -#include "EventLog.h"
- +#include "mDNSWindows/SystemService/EventLog.h"
- #include "Resource.h"
- @@ -2048,7 +2048,7 @@ udsSupportAddFDToEventLoop( SocketRef fd, udsEventCallback callback, void *conte
- mDNSPlatformMemZero( sock, sizeof( TCPSocket ) );
- sock->fd = (SOCKET) fd;
- - sock->userCallback = callback;
- + sock->userCallback = (void*) callback;
- sock->userContext = context;
- sock->m = &gMDNSRecord;
- @@ -2127,9 +2127,8 @@ udsSupportRemoveFDFromEventLoop( SocketRef fd, void *platform_data) // Note: Th
- }
- -mDNSexport void RecordUpdatedNiceLabel(mDNS *const m, mDNSs32 delay)
- +mDNSexport void RecordUpdatedNiceLabel(mDNSs32 delay)
- {
- - (void)m;
- (void)delay;
- // No-op, for now
- }
- diff --git a/mDNSWindows/mDNSWin32.c b/mDNSWindows/mDNSWin32.c
- old mode 100755
- new mode 100644
- index fa07af0..7904baf
- --- a/mDNSWindows/mDNSWin32.c
- +++ b/mDNSWindows/mDNSWin32.c
- @@ -972,12 +972,14 @@ mDNSexport mDNSu32 mDNSPlatformInterfaceIndexfromInterfaceID( mDNS * const inMDN
- TCPSocket *
- mDNSPlatformTCPSocket
- (
- - mDNS * const m,
- TCPSocketFlags flags,
- mDNSIPPort * port,
- mDNSBool useBackgroundTrafficClass
- )
- {
- +#if 1
- + return NULL;
- +#else
- TCPSocket * sock = NULL;
- u_long on = 1; // "on" for setsockopt
- struct sockaddr_in saddr;
- @@ -1042,6 +1044,7 @@ exit:
- }
- return sock;
- +#endif
- }
- //===========================================================================================================================
- @@ -1074,7 +1077,7 @@ mDNSPlatformTCPConnect
- // Setup connection data object
- - sock->userCallback = inCallback;
- + sock->userCallback = (void*) inCallback;
- sock->userContext = inContext;
- mDNSPlatformMemZero(&saddr, sizeof(saddr));
- @@ -1269,8 +1272,11 @@ exit:
- // mDNSPlatformUDPSocket
- //===========================================================================================================================
- -mDNSexport UDPSocket* mDNSPlatformUDPSocket(mDNS *const m, const mDNSIPPort requestedport)
- +mDNSexport UDPSocket* mDNSPlatformUDPSocket(const mDNSIPPort requestedport)
- {
- +#if 1
- + return NULL;
- +#else
- UDPSocket* sock = NULL;
- mDNSIPPort port = requestedport;
- mStatus err = mStatus_NoError;
- @@ -1340,6 +1346,7 @@ exit:
- }
- return sock;
- +#endif
- }
- //===========================================================================================================================
- @@ -1464,15 +1471,13 @@ exit:
- return( err );
- }
- -mDNSexport void mDNSPlatformUpdateProxyList(mDNS *const m, const mDNSInterfaceID InterfaceID)
- +mDNSexport void mDNSPlatformUpdateProxyList(const mDNSInterfaceID InterfaceID)
- {
- - DEBUG_UNUSED( m );
- DEBUG_UNUSED( InterfaceID );
- }
- -mDNSexport void mDNSPlatformSetAllowSleep(mDNS *const m, mDNSBool allowSleep, const char *reason)
- +mDNSexport void mDNSPlatformSetAllowSleep(mDNSBool allowSleep, const char *reason)
- {
- - DEBUG_UNUSED( m );
- DEBUG_UNUSED( allowSleep );
- DEBUG_UNUSED( reason );
- }
- @@ -1481,8 +1486,9 @@ mDNSexport void mDNSPlatformSetAllowSleep(mDNS *const m, mDNSBool allowSleep, co
- // mDNSPlatformSendRawPacket
- //===========================================================================================================================
- -mDNSexport void mDNSPlatformSendWakeupPacket(mDNS *const m, mDNSInterfaceID InterfaceID, char *ethaddr, char *ipaddr, int iteration)
- +mDNSexport void mDNSPlatformSendWakeupPacket(mDNSInterfaceID InterfaceID, char *ethaddr, char *ipaddr, int iteration)
- {
- +#if 0
- unsigned char mac[ 6 ];
- unsigned char buf[ 102 ];
- char hex[ 3 ] = { 0 };
- @@ -1534,6 +1540,7 @@ mDNSexport void mDNSPlatformSendWakeupPacket(mDNS *const m, mDNSInterfaceID Inte
- exit:
- return;
- +#endif
- }
- mDNSexport mDNSBool mDNSPlatformValidRecordForInterface(const AuthRecord *rr, mDNSInterfaceID InterfaceID)
- @@ -1566,9 +1573,8 @@ mDNSexport void mDNSPlatformFormatTime(unsigned long te, mDNSu8 *buf, int bufsiz
- if (bufsize) buf[0] = 0;
- }
- -mDNSexport void mDNSPlatformSetLocalAddressCacheEntry(mDNS *const m, const mDNSAddr *const tpa, const mDNSEthAddr *const tha, mDNSInterfaceID InterfaceID)
- +mDNSexport void mDNSPlatformSetLocalAddressCacheEntry(const mDNSAddr *const tpa, const mDNSEthAddr *const tha, mDNSInterfaceID InterfaceID)
- {
- - DEBUG_UNUSED( m );
- DEBUG_UNUSED( tpa );
- DEBUG_UNUSED( tha );
- DEBUG_UNUSED( InterfaceID );
- @@ -1650,11 +1656,13 @@ mDNSPlatformTLSTearDownCerts(void)
- mDNSlocal void SetDNSServers( mDNS *const m );
- mDNSlocal void SetSearchDomainList( void );
- -mDNSexport mDNSBool mDNSPlatformSetDNSConfig(mDNS *const m, mDNSBool setservers, mDNSBool setsearch, domainname *const fqdn, DNameListElem **regDomains, DNameListElem **browseDomains, mDNSBool ackConfig)
- +mDNSexport mDNSBool mDNSPlatformSetDNSConfig(mDNSBool setservers, mDNSBool setsearch, domainname *const fqdn, DNameListElem **regDomains, DNameListElem **browseDomains, mDNSBool ackConfig)
- {
- (void) ackConfig;
- +#if 0
- if (setservers) SetDNSServers(m);
- +#endif
- if (setsearch) SetSearchDomainList();
- if ( fqdn )
- @@ -1974,9 +1982,7 @@ SetDomainFromDHCP( void )
- for ( pAdapter = pAdapterInfo; pAdapter; pAdapter = pAdapter->Next )
- {
- - if ( pAdapter->IpAddressList.IpAddress.String &&
- - pAdapter->IpAddressList.IpAddress.String[0] &&
- - pAdapter->GatewayList.IpAddress.String &&
- + if ( pAdapter->IpAddressList.IpAddress.String[0] &&
- pAdapter->GatewayList.IpAddress.String[0] &&
- ( !index || ( pAdapter->Index == index ) ) )
- {
- @@ -2033,8 +2039,11 @@ exit:
- //===========================================================================================================================
- mDNSexport mStatus
- -mDNSPlatformGetPrimaryInterface( mDNS * const m, mDNSAddr * v4, mDNSAddr * v6, mDNSAddr * router )
- +mDNSPlatformGetPrimaryInterface( mDNSAddr * v4, mDNSAddr * v6, mDNSAddr * router )
- {
- +#if 1
- + return mStatus_UnknownErr;
- +#else
- IP_ADAPTER_INFO * pAdapterInfo;
- IP_ADAPTER_INFO * pAdapter;
- DWORD bufLen;
- @@ -2098,6 +2107,7 @@ exit:
- }
- return err;
- +#endif
- }
- mDNSexport void mDNSPlatformSendKeepalive(mDNSAddr *sadd, mDNSAddr *dadd, mDNSIPPort *lport, mDNSIPPort *rport, mDNSu32 seq, mDNSu32 ack, mDNSu16 win)
- @@ -2111,9 +2121,8 @@ mDNSexport void mDNSPlatformSendKeepalive(mDNSAddr *sadd, mDNSAddr *dadd, mDNSIP
- (void) win; // Unused
- }
- -mDNSexport mStatus mDNSPlatformGetRemoteMacAddr(mDNS *const m, mDNSAddr *raddr)
- +mDNSexport mStatus mDNSPlatformGetRemoteMacAddr(mDNSAddr *raddr)
- {
- - (void) m; // Unused
- (void) raddr; // Unused
- return mStatus_UnsupportedErr;
- @@ -2140,9 +2149,8 @@ mDNSexport mStatus mDNSPlatformStoreOwnerOptRecord(char *ifname, DNSMessage *msg
- return mStatus_UnsupportedErr;
- }
- -mDNSexport mStatus mDNSPlatformRetrieveTCPInfo(mDNS *const m, mDNSAddr *laddr, mDNSIPPort *lport, mDNSAddr *raddr, mDNSIPPort *rport, mDNSTCPInfo *mti)
- +mDNSexport mStatus mDNSPlatformRetrieveTCPInfo(mDNSAddr *laddr, mDNSIPPort *lport, mDNSAddr *raddr, mDNSIPPort *rport, mDNSTCPInfo *mti)
- {
- - (void) m; // Unused
- (void) laddr; // Unused
- (void) raddr; // Unused
- (void) lport; // Unused
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement