react-native-zeroconf 0.13.8 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +49 -0
- package/README.md +489 -65
- package/android/build.gradle +23 -24
- package/android/src/main/AndroidManifest.xml +5 -2
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroConfImplFactory.java +10 -3
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroconfModule.java +3 -2
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/nsd/NsdServiceImpl.java +83 -22
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/rx2dnssd/DnssdImpl.java +61 -16
- package/android/src/main/java/com/github/druk/dnssd/BaseListener.java +33 -0
- package/android/src/main/java/com/github/druk/dnssd/BrowseListener.java +67 -0
- package/android/src/main/java/com/github/druk/dnssd/DNSRecord.java +47 -0
- package/android/src/main/java/com/github/druk/dnssd/DNSSD.java +650 -0
- package/android/src/main/java/com/github/druk/dnssd/DNSSDBindable.java +67 -0
- package/android/src/main/java/com/github/druk/dnssd/DNSSDEmbedded.java +135 -0
- package/android/src/main/java/com/github/druk/dnssd/DNSSDException.java +66 -0
- package/android/src/main/java/com/github/druk/dnssd/DNSSDRecordRegistrar.java +55 -0
- package/android/src/main/java/com/github/druk/dnssd/DNSSDRegistration.java +54 -0
- package/android/src/main/java/com/github/druk/dnssd/DNSSDService.java +35 -0
- package/android/src/main/java/com/github/druk/dnssd/DomainListener.java +57 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalBrowseListener.java +76 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalDNSSD.java +870 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDRecordRegistrar.java +30 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDRegistration.java +34 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDService.java +29 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalDomainListener.java +62 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalQueryListener.java +61 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalRegisterListener.java +51 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalResolveListener.java +58 -0
- package/android/src/main/java/com/github/druk/dnssd/NSClass.java +16 -0
- package/android/src/main/java/com/github/druk/dnssd/NSType.java +58 -0
- package/android/src/main/java/com/github/druk/dnssd/QueryListener.java +54 -0
- package/android/src/main/java/com/github/druk/dnssd/RegisterListener.java +46 -0
- package/android/src/main/java/com/github/druk/dnssd/RegisterRecordListener.java +35 -0
- package/android/src/main/java/com/github/druk/dnssd/ResolveListener.java +55 -0
- package/android/src/main/java/com/github/druk/dnssd/TXTRecord.java +293 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/BonjourService.java +400 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/Rx2BrowseListener.java +55 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/Rx2Dnssd.java +127 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/Rx2DnssdBindable.java +35 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/Rx2DnssdCommon.java +280 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/Rx2DnssdEmbedded.java +31 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/Rx2QueryListener.java +70 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/Rx2RegisterListener.java +47 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/Rx2ResolveListener.java +51 -0
- package/android/src/main/jni/Android.mk +95 -0
- package/android/src/main/jni/Application.mk +3 -0
- package/android/src/main/jni/DNSSD.java.h +290 -0
- package/android/src/main/jni/JNISupport.c +1140 -0
- package/android/src/main/jni/mdnsresponder/Android.bp +215 -0
- package/android/src/main/jni/mdnsresponder/Clients/ClientCommon.c +75 -0
- package/android/src/main/jni/mdnsresponder/Clients/ClientCommon.h +41 -0
- package/android/src/main/jni/mdnsresponder/Clients/Makefile +54 -0
- package/android/src/main/jni/mdnsresponder/Clients/ReadMe.txt +25 -0
- package/android/src/main/jni/mdnsresponder/Clients/dns-sd.c +1351 -0
- package/android/src/main/jni/mdnsresponder/LICENSE +13 -0
- package/android/src/main/jni/mdnsresponder/MODULE_LICENSE_APACHE2 +0 -0
- package/android/src/main/jni/mdnsresponder/Makefile +41 -0
- package/android/src/main/jni/mdnsresponder/NOTICE +13 -0
- package/android/src/main/jni/mdnsresponder/PrivateDNS.txt +275 -0
- package/android/src/main/jni/mdnsresponder/README.txt +166 -0
- package/android/src/main/jni/mdnsresponder/README.version +3 -0
- package/android/src/main/jni/mdnsresponder/android/caseMapping/Iphlpapi.h +1 -0
- package/android/src/main/jni/mdnsresponder/android/caseMapping/README +3 -0
- package/android/src/main/jni/mdnsresponder/android/caseMapping/Resource.h +1 -0
- package/android/src/main/jni/mdnsresponder/android/caseMapping/Ws2tcpip.h +1 -0
- package/android/src/main/jni/mdnsresponder/android/caseMapping/ipExport.h +1 -0
- package/android/src/main/jni/mdnsresponder/android/windows_firewall_dummy.c +10 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/DNSCommon.c +3157 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/DNSCommon.h +292 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/DNSDigest.c +1579 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/Implementer Notes.txt +66 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/mDNS.c +11469 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/mDNSDebug.h +164 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/mDNSEmbeddedAPI.h +2974 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/uDNS.c +4969 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/uDNS.h +132 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/Client.c +223 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/ExampleClientApp.c +91 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/ExampleClientApp.h +18 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/Identify.c +378 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/Makefile +520 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/NetMonitor.c +1010 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/PosixDaemon.c +329 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/ProxyResponder.c +300 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/ReadMe.txt +314 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/Responder.c +792 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/Services.txt +36 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/libnss_mdns.8 +148 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSPosix.c +1685 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSPosix.h +88 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSUNP.c +726 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSUNP.h +130 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/mdnsd.sh +73 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_ReadMe.txt +125 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.c +2723 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.conf +13 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.conf.5 +135 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/parselog.py +247 -0
- package/android/src/main/jni/mdnsresponder/mDNSResponder.sln +400 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/CommonServices.h +1537 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/DebugServices.c +3075 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/DebugServices.h +1607 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/GenLinkedList.c +319 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/GenLinkedList.h +90 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/PlatformCommon.c +220 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/PlatformCommon.h +18 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dns-sd.1 +194 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dns_sd.h +2452 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.8 +69 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.c +3146 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.conf +60 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.h +163 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd_lexer.l +84 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd_parser.y +585 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_clientlib.c +368 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_clientshim.c +802 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_clientstub.c +1988 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_ipc.c +161 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_ipc.h +219 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/mDNS.1 +198 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/mDNSDebug.c +93 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/mDNSResponder.8 +116 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/uds_daemon.c +4758 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/uds_daemon.h +80 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/BrowsingPage.cpp +441 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/BrowsingPage.h +156 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigDialog.cpp +59 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigDialog.h +48 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigPropertySheet.cpp +301 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigPropertySheet.h +105 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.cpp +380 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.def +20 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.h +84 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.rc +141 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.vcproj +727 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelDll.rc +123 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.cpp +373 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.h +48 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.rc +123 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.vcproj +764 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelLocRes.rc +270 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelLocRes.vcproj +487 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelRes.rc +134 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelRes.vcproj +518 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/FourthPage.cpp +197 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/FourthPage.h +87 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/RegistrationPage.cpp +387 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/RegistrationPage.h +75 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SecondPage.cpp +544 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SecondPage.h +107 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ServicesPage.cpp +273 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ServicesPage.h +123 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SharedSecret.cpp +115 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SharedSecret.h +54 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.dll.manifest +10 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.exe.manifest +17 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.manifest +17 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.rc2 +13 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel64.manifest +17 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/EnergySaver.ico +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/controlpanel.ico +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/failure.ico +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/success.ico +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/resource.h +56 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/stdafx.cpp +20 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/stdafx.h +64 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dll.aps +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dll.rc +102 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dllmain.c +112 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dnssd.def +48 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dnssd.vcproj +472 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/resource.h +27 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/AssemblyInfo.cpp +84 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/PString.h +70 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/Stdafx.cpp +22 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/Stdafx.h +33 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.cpp +1234 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.h +1392 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.ico +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.rc +113 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.vcproj +446 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/resource.h +3 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.cpp +693 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.h +52 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.vcproj +324 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.cpp +208 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.def +35 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.idl +491 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.rc +126 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.rgs +11 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.vcproj +625 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSD.cpp +892 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.cpp +31 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.h +133 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.rgs +27 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.cpp +101 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.h +185 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.rgs +27 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.cpp +2095 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.h +429 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.rgs +27 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/StringServices.cpp +344 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/StringServices.h +102 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.cpp +381 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.h +203 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.rgs +27 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/_IDNSSDEvents_CP.h +358 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/dlldatax.c +51 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/dlldatax.h +49 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/resource.h +30 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/stdafx.h +88 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2002.sln +21 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2002.vcproj +253 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2003.sln +21 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2003.vcproj +267 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Application.ico +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Application.rc +323 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Application.rc2 +20 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Resource.h +53 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/AboutDialog.cpp +71 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/AboutDialog.h +62 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/Application.cpp +111 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/Application.h +68 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/ChooserDialog.cpp +1426 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/ChooserDialog.h +131 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/LoginDialog.cpp +109 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/LoginDialog.h +53 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/StdAfx.cpp +18 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/StdAfx.h +48 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcc +37 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcp +868 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcw +29 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/Application.ico +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/Application.rc +194 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/Application.rc2 +13 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/newres.h +28 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/resource.h +22 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/Application.cpp +92 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/Application.h +57 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/BrowserDialog.cpp +394 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/BrowserDialog.h +84 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/StdAfx.cpp +18 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/StdAfx.h +46 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/Java.vcproj +111 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/jdns_sd.rc +62 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/makefile +143 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/makefile64 +143 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.aps +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.c +581 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.rc +103 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.vcproj +409 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/Prefix.h +28 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/resource.h +27 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/PosixCompat.c +128 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/PosixCompat.h +70 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/README.txt +85 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/RegNames.h +57 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Secret.c +338 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Secret.h +42 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/EventLog.mc +11 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/EventLogMessages.bin +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Firewall.cpp +484 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Firewall.h +79 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Prefix.h +30 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.aps +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.c +2669 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.h +30 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.mcp +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.rc +114 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.vcproj +562 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/main.c +32 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/res/mDNSResponder.manifest +12 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/res/mDNSResponder64.manifest +12 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/resource.h +17 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/resrc1.h +15 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/VPCDetect.cpp +165 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/VPCDetect.h +36 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/WinServices.cpp +93 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/WinServices.h +34 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/WinVersRes.h +35 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/isocode.h +135 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/loclibrary.c +268 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/loclibrary.h +54 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mDNSWin32.c +5200 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mDNSWin32.h +208 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/ReadMe.txt +15 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.aps +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.c +2430 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.def +24 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.rc +104 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.vcproj +457 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/resource.h +27 -0
- package/android/src/main/jni/mdnsresponder/mdnsd.rc +7 -0
- package/android/src/main/jni/nameser.h +588 -0
- package/dist/index.js +160 -1
- package/index.d.ts +91 -0
- package/ios/RNZeroconf/RNNetServiceSerializer.m +7 -3
- package/ios/RNZeroconf/RNZeroconf.m +8 -0
- package/package.json +25 -17
- package/src/index.js +183 -0
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4 -*-
|
|
2
|
+
*
|
|
3
|
+
* Copyright (c) 2003-2004 Apple Computer, Inc. All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
|
|
17
|
+
File: daemon.c
|
|
18
|
+
|
|
19
|
+
Contains: main & associated Application layer for mDNSResponder on Linux.
|
|
20
|
+
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
#if __APPLE__
|
|
24
|
+
// In Mac OS X 10.5 and later trying to use the daemon function gives a “‘daemon’ is deprecated”
|
|
25
|
+
// error, which prevents compilation because we build with "-Werror".
|
|
26
|
+
// Since this is supposed to be portable cross-platform code, we don't care that daemon is
|
|
27
|
+
// deprecated on Mac OS X 10.5, so we use this preprocessor trick to eliminate the error message.
|
|
28
|
+
#define daemon yes_we_know_that_daemon_is_deprecated_in_os_x_10_5_thankyou
|
|
29
|
+
#endif
|
|
30
|
+
|
|
31
|
+
#include <stdio.h>
|
|
32
|
+
#include <string.h>
|
|
33
|
+
#include <unistd.h>
|
|
34
|
+
#include <stdlib.h>
|
|
35
|
+
#include <signal.h>
|
|
36
|
+
#include <errno.h>
|
|
37
|
+
#include <fcntl.h>
|
|
38
|
+
#include <pwd.h>
|
|
39
|
+
#include <sys/types.h>
|
|
40
|
+
|
|
41
|
+
#ifndef EMBEDDED
|
|
42
|
+
#ifdef __ANDROID__
|
|
43
|
+
#include "cutils/sockets.h"
|
|
44
|
+
#endif
|
|
45
|
+
#endif
|
|
46
|
+
|
|
47
|
+
#if __APPLE__
|
|
48
|
+
#undef daemon
|
|
49
|
+
extern int daemon(int, int);
|
|
50
|
+
#endif
|
|
51
|
+
|
|
52
|
+
#include "mDNSEmbeddedAPI.h"
|
|
53
|
+
#include "mDNSPosix.h"
|
|
54
|
+
#include "mDNSUNP.h" // For daemon()
|
|
55
|
+
#include "uds_daemon.h"
|
|
56
|
+
#include "PlatformCommon.h"
|
|
57
|
+
|
|
58
|
+
#ifndef MDNS_USERNAME
|
|
59
|
+
#define MDNS_USERNAME "nobody"
|
|
60
|
+
#endif
|
|
61
|
+
|
|
62
|
+
#define CONFIG_FILE "/etc/mdnsd.conf"
|
|
63
|
+
static domainname DynDNSZone; // Default wide-area zone for service registration
|
|
64
|
+
static domainname DynDNSHostname;
|
|
65
|
+
|
|
66
|
+
#define RR_CACHE_SIZE 500
|
|
67
|
+
static CacheEntity gRRCache[RR_CACHE_SIZE];
|
|
68
|
+
static mDNS_PlatformSupport PlatformStorage;
|
|
69
|
+
|
|
70
|
+
int stopNow = 0;
|
|
71
|
+
|
|
72
|
+
mDNSlocal void mDNS_StatusCallback(mDNS *const m, mStatus result)
|
|
73
|
+
{
|
|
74
|
+
(void)m; // Unused
|
|
75
|
+
if (result == mStatus_NoError)
|
|
76
|
+
{
|
|
77
|
+
// On successful registration of dot-local mDNS host name, daemon may want to check if
|
|
78
|
+
// any name conflict and automatic renaming took place, and if so, record the newly negotiated
|
|
79
|
+
// name in persistent storage for next time. It should also inform the user of the name change.
|
|
80
|
+
// On Mac OS X we store the current dot-local mDNS host name in the SCPreferences store,
|
|
81
|
+
// and notify the user with a CFUserNotification.
|
|
82
|
+
}
|
|
83
|
+
else if (result == mStatus_ConfigChanged)
|
|
84
|
+
{
|
|
85
|
+
udsserver_handle_configchange(m);
|
|
86
|
+
}
|
|
87
|
+
else if (result == mStatus_GrowCache)
|
|
88
|
+
{
|
|
89
|
+
// Allocate another chunk of cache storage
|
|
90
|
+
CacheEntity *storage = malloc(sizeof(CacheEntity) * RR_CACHE_SIZE);
|
|
91
|
+
if (storage) mDNS_GrowCache(m, storage, RR_CACHE_SIZE);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// %%% Reconfigure() probably belongs in the platform support layer (mDNSPosix.c), not the daemon cde
|
|
96
|
+
// -- all client layers running on top of mDNSPosix.c need to handle network configuration changes,
|
|
97
|
+
// not only the Unix Domain Socket Daemon
|
|
98
|
+
|
|
99
|
+
static void Reconfigure(mDNS *m)
|
|
100
|
+
{
|
|
101
|
+
mDNSAddr DynDNSIP;
|
|
102
|
+
const mDNSAddr dummy = { mDNSAddrType_IPv4, { { { 1, 1, 1, 1 } } } };;
|
|
103
|
+
mDNS_SetPrimaryInterfaceInfo(m, NULL, NULL, NULL);
|
|
104
|
+
if (ParseDNSServers(m, uDNS_SERVERS_FILE) < 0)
|
|
105
|
+
LogMsg("Unable to parse DNS server list. Unicast DNS-SD unavailable");
|
|
106
|
+
ReadDDNSSettingsFromConfFile(m, CONFIG_FILE, &DynDNSHostname, &DynDNSZone, NULL);
|
|
107
|
+
mDNSPlatformSourceAddrForDest(&DynDNSIP, &dummy);
|
|
108
|
+
if (DynDNSHostname.c[0]) mDNS_AddDynDNSHostName(m, &DynDNSHostname, NULL, NULL);
|
|
109
|
+
if (DynDNSIP.type) mDNS_SetPrimaryInterfaceInfo(m, &DynDNSIP, NULL, NULL);
|
|
110
|
+
mDNS_ConfigChanged(m);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Do appropriate things at startup with command line arguments. Calls exit() if unhappy.
|
|
114
|
+
mDNSlocal void ParseCmdLinArgs(int argc, char **argv)
|
|
115
|
+
{
|
|
116
|
+
if (argc > 1)
|
|
117
|
+
{
|
|
118
|
+
if (0 == strcmp(argv[1], "-debug")) mDNS_DebugMode = mDNStrue;
|
|
119
|
+
else printf("Usage: %s [-debug]\n", argv[0]);
|
|
120
|
+
}
|
|
121
|
+
#ifndef __ANDROID__
|
|
122
|
+
if (!mDNS_DebugMode)
|
|
123
|
+
{
|
|
124
|
+
int result = daemon(0, 0);
|
|
125
|
+
if (result != 0) { LogMsg("Could not run as daemon - exiting"); exit(result); }
|
|
126
|
+
#if __APPLE__
|
|
127
|
+
LogMsg("The POSIX mdnsd should only be used on OS X for testing - exiting");
|
|
128
|
+
exit(-1);
|
|
129
|
+
#endif
|
|
130
|
+
}
|
|
131
|
+
#endif // !__ANDROID__
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
mDNSlocal void DumpStateLog(mDNS *const m)
|
|
135
|
+
// Dump a little log of what we've been up to.
|
|
136
|
+
{
|
|
137
|
+
LogMsg("---- BEGIN STATE LOG ----");
|
|
138
|
+
udsserver_info(m);
|
|
139
|
+
LogMsg("---- END STATE LOG ----");
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
mDNSlocal mStatus MainLoop(mDNS *m) // Loop until we quit.
|
|
143
|
+
{
|
|
144
|
+
sigset_t signals;
|
|
145
|
+
mDNSBool gotData = mDNSfalse;
|
|
146
|
+
|
|
147
|
+
mDNSPosixListenForSignalInEventLoop(SIGINT);
|
|
148
|
+
mDNSPosixListenForSignalInEventLoop(SIGTERM);
|
|
149
|
+
mDNSPosixListenForSignalInEventLoop(SIGUSR1);
|
|
150
|
+
mDNSPosixListenForSignalInEventLoop(SIGPIPE);
|
|
151
|
+
mDNSPosixListenForSignalInEventLoop(SIGHUP) ;
|
|
152
|
+
|
|
153
|
+
stopNow = 0;
|
|
154
|
+
#ifdef EMBEDDED
|
|
155
|
+
while (!stopNow)
|
|
156
|
+
#else
|
|
157
|
+
for (; ;)
|
|
158
|
+
#endif
|
|
159
|
+
{
|
|
160
|
+
// Work out how long we expect to sleep before the next scheduled task
|
|
161
|
+
struct timeval timeout;
|
|
162
|
+
mDNSs32 ticks;
|
|
163
|
+
|
|
164
|
+
// Only idle if we didn't find any data the last time around
|
|
165
|
+
if (!gotData)
|
|
166
|
+
{
|
|
167
|
+
mDNSs32 nextTimerEvent = mDNS_Execute(m);
|
|
168
|
+
nextTimerEvent = udsserver_idle(nextTimerEvent);
|
|
169
|
+
ticks = nextTimerEvent - mDNS_TimeNow(m);
|
|
170
|
+
if (ticks < 1) ticks = 1;
|
|
171
|
+
}
|
|
172
|
+
else // otherwise call EventLoop again with 0 timemout
|
|
173
|
+
ticks = 0;
|
|
174
|
+
|
|
175
|
+
timeout.tv_sec = ticks / mDNSPlatformOneSecond;
|
|
176
|
+
timeout.tv_usec = (ticks % mDNSPlatformOneSecond) * 1000000 / mDNSPlatformOneSecond;
|
|
177
|
+
|
|
178
|
+
(void) mDNSPosixRunEventLoopOnce(m, &timeout, &signals, &gotData);
|
|
179
|
+
|
|
180
|
+
if (sigismember(&signals, SIGHUP )) Reconfigure(m);
|
|
181
|
+
if (sigismember(&signals, SIGUSR1)) DumpStateLog(m);
|
|
182
|
+
// SIGPIPE happens when we try to write to a dead client; death should be detected soon in request_callback() and cleaned up.
|
|
183
|
+
if (sigismember(&signals, SIGPIPE)) LogMsg("Received SIGPIPE - ignoring");
|
|
184
|
+
if (sigismember(&signals, SIGINT) || sigismember(&signals, SIGTERM)) break;
|
|
185
|
+
}
|
|
186
|
+
return EINTR;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
int main(int argc, char **argv)
|
|
190
|
+
{
|
|
191
|
+
mStatus err;
|
|
192
|
+
|
|
193
|
+
ParseCmdLinArgs(argc, argv);
|
|
194
|
+
|
|
195
|
+
LogMsg("%s starting", mDNSResponderVersionString);
|
|
196
|
+
|
|
197
|
+
err = mDNS_Init(&mDNSStorage, &PlatformStorage, gRRCache, RR_CACHE_SIZE, mDNS_Init_AdvertiseLocalAddresses,
|
|
198
|
+
mDNS_StatusCallback, mDNS_Init_NoInitCallbackContext);
|
|
199
|
+
|
|
200
|
+
#ifndef EMBEDDED
|
|
201
|
+
if (mStatus_NoError == err)
|
|
202
|
+
#ifdef __ANDROID__
|
|
203
|
+
{
|
|
204
|
+
dnssd_sock_t s[1];
|
|
205
|
+
char *socketname = strrchr(MDNS_UDS_SERVERPATH, '/');
|
|
206
|
+
if (socketname)
|
|
207
|
+
{
|
|
208
|
+
socketname++; // skip '/'
|
|
209
|
+
s[0] = android_get_control_socket(socketname);
|
|
210
|
+
err = udsserver_init(s, 1);
|
|
211
|
+
} else {
|
|
212
|
+
err = udsserver_init(mDNSNULL, 0);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
#else
|
|
216
|
+
err = udsserver_init(mDNSNULL, 0);
|
|
217
|
+
#endif // __ANDROID__
|
|
218
|
+
#endif
|
|
219
|
+
|
|
220
|
+
Reconfigure(&mDNSStorage);
|
|
221
|
+
|
|
222
|
+
// Now that we're finished with anything privileged, switch over to running as "nobody"
|
|
223
|
+
if (mStatus_NoError == err)
|
|
224
|
+
{
|
|
225
|
+
const struct passwd *pw = getpwnam(MDNS_USERNAME);
|
|
226
|
+
if (pw != NULL)
|
|
227
|
+
setuid(pw->pw_uid);
|
|
228
|
+
else
|
|
229
|
+
LogMsg("WARNING: mdnsd continuing as root because user \"%s\" does not exist", MDNS_USERNAME);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
if (mStatus_NoError == err)
|
|
233
|
+
err = MainLoop(&mDNSStorage);
|
|
234
|
+
|
|
235
|
+
LogMsg("%s stopping", mDNSResponderVersionString);
|
|
236
|
+
|
|
237
|
+
mDNS_Close(&mDNSStorage);
|
|
238
|
+
|
|
239
|
+
if (udsserver_exit() < 0)
|
|
240
|
+
LogMsg("ExitCallback: udsserver_exit failed");
|
|
241
|
+
|
|
242
|
+
#if MDNS_DEBUGMSGS > 0
|
|
243
|
+
printf("mDNSResponder exiting normally with %ld\n", err);
|
|
244
|
+
#endif
|
|
245
|
+
|
|
246
|
+
return err;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
#ifdef EMBEDDED
|
|
250
|
+
int init()
|
|
251
|
+
{
|
|
252
|
+
mStatus err;
|
|
253
|
+
|
|
254
|
+
LogMsg("%s starting", mDNSResponderVersionString);
|
|
255
|
+
|
|
256
|
+
err = mDNS_Init(&mDNSStorage, &PlatformStorage, gRRCache, RR_CACHE_SIZE, mDNS_Init_AdvertiseLocalAddresses,
|
|
257
|
+
mDNS_StatusCallback, mDNS_Init_NoInitCallbackContext);
|
|
258
|
+
|
|
259
|
+
return err;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
int loop(){
|
|
263
|
+
mStatus err;
|
|
264
|
+
Reconfigure(&mDNSStorage);
|
|
265
|
+
|
|
266
|
+
err = MainLoop(&mDNSStorage);
|
|
267
|
+
|
|
268
|
+
LogMsg("%s stopping", mDNSResponderVersionString);
|
|
269
|
+
|
|
270
|
+
mDNS_Close(&mDNSStorage);
|
|
271
|
+
|
|
272
|
+
#if MDNS_DEBUGMSGS > 0
|
|
273
|
+
printf("mDNSResponder exiting normally with %ld\n", err);
|
|
274
|
+
#endif
|
|
275
|
+
|
|
276
|
+
return err;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
void stopLoop()
|
|
280
|
+
{
|
|
281
|
+
stopNow = 1;
|
|
282
|
+
}
|
|
283
|
+
#endif
|
|
284
|
+
|
|
285
|
+
// uds_daemon support ////////////////////////////////////////////////////////////
|
|
286
|
+
|
|
287
|
+
mStatus udsSupportAddFDToEventLoop(int fd, udsEventCallback callback, void *context, void **platform_data)
|
|
288
|
+
/* Support routine for uds_daemon.c */
|
|
289
|
+
{
|
|
290
|
+
// Depends on the fact that udsEventCallback == mDNSPosixEventCallback
|
|
291
|
+
(void) platform_data;
|
|
292
|
+
return mDNSPosixAddFDToEventLoop(fd, callback, context);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
int udsSupportReadFD(dnssd_sock_t fd, char *buf, int len, int flags, void *platform_data)
|
|
296
|
+
{
|
|
297
|
+
(void) platform_data;
|
|
298
|
+
return recv(fd, buf, len, flags);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
mStatus udsSupportRemoveFDFromEventLoop(int fd, void *platform_data) // Note: This also CLOSES the file descriptor
|
|
302
|
+
{
|
|
303
|
+
mStatus err = mDNSPosixRemoveFDFromEventLoop(fd);
|
|
304
|
+
(void) platform_data;
|
|
305
|
+
close(fd);
|
|
306
|
+
return err;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
mDNSexport void RecordUpdatedNiceLabel(mDNS *const m, mDNSs32 delay)
|
|
310
|
+
{
|
|
311
|
+
(void)m;
|
|
312
|
+
(void)delay;
|
|
313
|
+
// No-op, for now
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
#if _BUILDING_XCODE_PROJECT_
|
|
317
|
+
// If the process crashes, then this string will be magically included in the automatically-generated crash log
|
|
318
|
+
const char *__crashreporter_info__ = mDNSResponderVersionString_SCCS + 5;
|
|
319
|
+
asm(".desc ___crashreporter_info__, 0x10");
|
|
320
|
+
#endif
|
|
321
|
+
|
|
322
|
+
// For convenience when using the "strings" command, this is the last thing in the file
|
|
323
|
+
#if mDNSResponderVersion > 1
|
|
324
|
+
mDNSexport const char mDNSResponderVersionString_SCCS[] = "@(#) mDNSResponder-" STRINGIFY(mDNSResponderVersion) " (" __DATE__ " " __TIME__ ")";
|
|
325
|
+
#elif MDNS_VERSIONSTR_NODTS
|
|
326
|
+
mDNSexport const char mDNSResponderVersionString_SCCS[] = "@(#) mDNSResponder (Engineering Build)";
|
|
327
|
+
#else
|
|
328
|
+
mDNSexport const char mDNSResponderVersionString_SCCS[] = "@(#) mDNSResponder (Engineering Build) (" __DATE__ " " __TIME__ ")";
|
|
329
|
+
#endif
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4 -*-
|
|
2
|
+
*
|
|
3
|
+
* Copyright (c) 2002-2004 Apple Computer, Inc. All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#include <stdio.h> // For printf()
|
|
19
|
+
#include <stdlib.h> // For exit() etc.
|
|
20
|
+
#include <string.h> // For strlen() etc.
|
|
21
|
+
#include <unistd.h> // For select()
|
|
22
|
+
#include <signal.h> // For SIGINT, SIGTERM
|
|
23
|
+
#include <errno.h> // For errno, EINTR
|
|
24
|
+
#include <netinet/in.h> // For INADDR_NONE
|
|
25
|
+
#include <arpa/inet.h> // For inet_addr()
|
|
26
|
+
#include <netdb.h> // For gethostbyname()
|
|
27
|
+
|
|
28
|
+
#include "mDNSEmbeddedAPI.h" // Defines the interface to the client layer above
|
|
29
|
+
#include "mDNSPosix.h" // Defines the specific types needed to run mDNS on this platform
|
|
30
|
+
#include "ExampleClientApp.h"
|
|
31
|
+
|
|
32
|
+
// Compatibility workaround: Solaris 2.5 has no INADDR_NONE
|
|
33
|
+
#ifndef INADDR_NONE
|
|
34
|
+
#define INADDR_NONE (mDNSu32)0xffffffff
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
//*************************************************************************************************************
|
|
38
|
+
// Globals
|
|
39
|
+
static mDNS mDNSStorage; // mDNS core uses this to store its globals
|
|
40
|
+
static mDNS_PlatformSupport PlatformStorage; // Stores this platform's globals
|
|
41
|
+
mDNSexport const char ProgramName[] = "mDNSProxyResponderPosix";
|
|
42
|
+
|
|
43
|
+
//*************************************************************************************************************
|
|
44
|
+
// Proxy Host Registration
|
|
45
|
+
|
|
46
|
+
typedef struct
|
|
47
|
+
{
|
|
48
|
+
mDNSv4Addr ip;
|
|
49
|
+
domainlabel hostlabel; // Conforms to standard DNS letter-digit-hyphen host name rules
|
|
50
|
+
AuthRecord RR_A; // 'A' (address) record for our ".local" name
|
|
51
|
+
AuthRecord RR_PTR; // PTR (reverse lookup) record
|
|
52
|
+
} ProxyHost;
|
|
53
|
+
|
|
54
|
+
mDNSlocal void HostNameCallback(mDNS *const m, AuthRecord *const rr, mStatus result)
|
|
55
|
+
{
|
|
56
|
+
ProxyHost *f = (ProxyHost*)rr->RecordContext;
|
|
57
|
+
if (result == mStatus_NoError)
|
|
58
|
+
debugf("Host name successfully registered: %##s", rr->resrec.name->c);
|
|
59
|
+
else
|
|
60
|
+
{
|
|
61
|
+
debugf("Host name conflict for %##s", rr->resrec.name->c);
|
|
62
|
+
mDNS_Deregister(m, &f->RR_A);
|
|
63
|
+
mDNS_Deregister(m, &f->RR_PTR);
|
|
64
|
+
exit(-1);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
mDNSlocal mStatus mDNS_RegisterProxyHost(mDNS *m, ProxyHost *p)
|
|
69
|
+
{
|
|
70
|
+
char buffer[32];
|
|
71
|
+
|
|
72
|
+
mDNS_SetupResourceRecord(&p->RR_A, mDNSNULL, mDNSInterface_Any, kDNSType_A, 60, kDNSRecordTypeUnique, AuthRecordAny, HostNameCallback, p);
|
|
73
|
+
mDNS_SetupResourceRecord(&p->RR_PTR, mDNSNULL, mDNSInterface_Any, kDNSType_PTR, 60, kDNSRecordTypeKnownUnique, AuthRecordAny, HostNameCallback, p);
|
|
74
|
+
|
|
75
|
+
p->RR_A.namestorage.c[0] = 0;
|
|
76
|
+
AppendDomainLabel(&p->RR_A.namestorage, &p->hostlabel);
|
|
77
|
+
AppendLiteralLabelString(&p->RR_A.namestorage, "local");
|
|
78
|
+
|
|
79
|
+
// Note: This is reverse order compared to a normal dotted-decimal IP address, so we can't use our customary "%.4a" format code
|
|
80
|
+
mDNS_snprintf(buffer, sizeof(buffer), "%d.%d.%d.%d.in-addr.arpa.", p->ip.b[3], p->ip.b[2], p->ip.b[1], p->ip.b[0]);
|
|
81
|
+
MakeDomainNameFromDNSNameString(&p->RR_PTR.namestorage, buffer);
|
|
82
|
+
p->RR_PTR.ForceMCast = mDNStrue; // This PTR points to our dot-local name, so don't ever try to write it into a uDNS server
|
|
83
|
+
|
|
84
|
+
p->RR_A. resrec.rdata->u.ipv4 = p->ip;
|
|
85
|
+
AssignDomainName(&p->RR_PTR.resrec.rdata->u.name, p->RR_A.resrec.name);
|
|
86
|
+
|
|
87
|
+
mDNS_Register(m, &p->RR_A);
|
|
88
|
+
mDNS_Register(m, &p->RR_PTR);
|
|
89
|
+
|
|
90
|
+
debugf("Made Proxy Host Records for %##s", p->RR_A.resrec.name->c);
|
|
91
|
+
|
|
92
|
+
return(mStatus_NoError);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
//*************************************************************************************************************
|
|
96
|
+
// Service Registration
|
|
97
|
+
|
|
98
|
+
// This sample ServiceCallback just calls mDNS_RenameAndReregisterService to automatically pick a new
|
|
99
|
+
// unique name for the service. For a device such as a printer, this may be appropriate.
|
|
100
|
+
// For a device with a user interface, and a screen, and a keyboard, the appropriate
|
|
101
|
+
// response may be to prompt the user and ask them to choose a new name for the service.
|
|
102
|
+
mDNSlocal void ServiceCallback(mDNS *const m, ServiceRecordSet *const sr, mStatus result)
|
|
103
|
+
{
|
|
104
|
+
switch (result)
|
|
105
|
+
{
|
|
106
|
+
case mStatus_NoError: debugf("Callback: %##s Name Registered", sr->RR_SRV.resrec.name->c); break;
|
|
107
|
+
case mStatus_NameConflict: debugf("Callback: %##s Name Conflict", sr->RR_SRV.resrec.name->c); break;
|
|
108
|
+
case mStatus_MemFree: debugf("Callback: %##s Memory Free", sr->RR_SRV.resrec.name->c); break;
|
|
109
|
+
default: debugf("Callback: %##s Unknown Result %ld", sr->RR_SRV.resrec.name->c, result); break;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (result == mStatus_NoError)
|
|
113
|
+
{
|
|
114
|
+
char buffer[MAX_ESCAPED_DOMAIN_NAME];
|
|
115
|
+
ConvertDomainNameToCString(sr->RR_SRV.resrec.name, buffer);
|
|
116
|
+
printf("Service %s now registered and active\n", buffer);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if (result == mStatus_NameConflict)
|
|
120
|
+
{
|
|
121
|
+
char buffer1[MAX_ESCAPED_DOMAIN_NAME], buffer2[MAX_ESCAPED_DOMAIN_NAME];
|
|
122
|
+
ConvertDomainNameToCString(sr->RR_SRV.resrec.name, buffer1);
|
|
123
|
+
mDNS_RenameAndReregisterService(m, sr, mDNSNULL);
|
|
124
|
+
ConvertDomainNameToCString(sr->RR_SRV.resrec.name, buffer2);
|
|
125
|
+
printf("Name Conflict! %s renamed as %s\n", buffer1, buffer2);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// RegisterService() is a simple wrapper function which takes C string
|
|
130
|
+
// parameters, converts them to domainname parameters, and calls mDNS_RegisterService()
|
|
131
|
+
mDNSlocal void RegisterService(mDNS *m, ServiceRecordSet *recordset,
|
|
132
|
+
const char name[], const char type[], const char domain[],
|
|
133
|
+
const domainname *host, mDNSu16 PortAsNumber, int argc, char **argv)
|
|
134
|
+
{
|
|
135
|
+
domainlabel n;
|
|
136
|
+
domainname t, d;
|
|
137
|
+
unsigned char txtbuffer[1024], *bptr = txtbuffer;
|
|
138
|
+
char buffer[MAX_ESCAPED_DOMAIN_NAME];
|
|
139
|
+
|
|
140
|
+
MakeDomainLabelFromLiteralString(&n, name);
|
|
141
|
+
MakeDomainNameFromDNSNameString(&t, type);
|
|
142
|
+
MakeDomainNameFromDNSNameString(&d, domain);
|
|
143
|
+
while (argc)
|
|
144
|
+
{
|
|
145
|
+
int len = strlen(argv[0]);
|
|
146
|
+
if (len > 255 || bptr + 1 + len >= txtbuffer + sizeof(txtbuffer)) break;
|
|
147
|
+
printf("STR: %s\n", argv[0]);
|
|
148
|
+
bptr[0] = len;
|
|
149
|
+
strcpy((char*)(bptr+1), argv[0]);
|
|
150
|
+
bptr += 1 + len;
|
|
151
|
+
argc--;
|
|
152
|
+
argv++;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
mDNS_RegisterService(m, recordset,
|
|
156
|
+
&n, &t, &d, // Name, type, domain
|
|
157
|
+
host, mDNSOpaque16fromIntVal(PortAsNumber),
|
|
158
|
+
txtbuffer, bptr-txtbuffer, // TXT data, length
|
|
159
|
+
mDNSNULL, 0, // Subtypes
|
|
160
|
+
mDNSInterface_Any, // Interface ID
|
|
161
|
+
ServiceCallback, mDNSNULL, 0); // Callback, context, flags
|
|
162
|
+
|
|
163
|
+
ConvertDomainNameToCString(recordset->RR_SRV.resrec.name, buffer);
|
|
164
|
+
printf("Made Service Records for %s\n", buffer);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
//*************************************************************************************************************
|
|
168
|
+
// Service non-existence assertion
|
|
169
|
+
// (claiming a service name without actually providing a service at that name, to prevent anyone else using that name)
|
|
170
|
+
// This is useful to avoid confusion between similar services
|
|
171
|
+
// e.g. A printer that implements IPP printing service using the name "My Printer", but doesn't implement LPR service,
|
|
172
|
+
// should also claim the LPR service name "My Printer" to stop a different printer offering LPR service under the same name,
|
|
173
|
+
// since it would be confusing to users to have two equivalent services with the same name.
|
|
174
|
+
|
|
175
|
+
mDNSlocal void NoSuchServiceCallback(mDNS *const m, AuthRecord *const rr, mStatus result)
|
|
176
|
+
{
|
|
177
|
+
const domainname *proxyhostname = (const domainname *)rr->RecordContext;
|
|
178
|
+
switch (result)
|
|
179
|
+
{
|
|
180
|
+
case mStatus_NoError: debugf("Callback: %##s Name Registered", rr->resrec.name->c); break;
|
|
181
|
+
case mStatus_NameConflict: debugf("Callback: %##s Name Conflict", rr->resrec.name->c); break;
|
|
182
|
+
case mStatus_MemFree: debugf("Callback: %##s Memory Free", rr->resrec.name->c); break;
|
|
183
|
+
default: debugf("Callback: %##s Unknown Result %ld", rr->resrec.name->c, result); break;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if (result == mStatus_NoError)
|
|
187
|
+
{
|
|
188
|
+
char buffer[MAX_ESCAPED_DOMAIN_NAME];
|
|
189
|
+
ConvertDomainNameToCString(rr->resrec.name, buffer);
|
|
190
|
+
printf("Non-existence assertion %s now registered and active\n", buffer);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
if (result == mStatus_NameConflict)
|
|
194
|
+
{
|
|
195
|
+
domainlabel n;
|
|
196
|
+
domainname t, d;
|
|
197
|
+
char buffer1[MAX_ESCAPED_DOMAIN_NAME], buffer2[MAX_ESCAPED_DOMAIN_NAME];
|
|
198
|
+
ConvertDomainNameToCString(rr->resrec.name, buffer1);
|
|
199
|
+
DeconstructServiceName(rr->resrec.name, &n, &t, &d);
|
|
200
|
+
IncrementLabelSuffix(&n, mDNStrue);
|
|
201
|
+
mDNS_RegisterNoSuchService(m, rr, &n, &t, &d, proxyhostname, mDNSInterface_Any, NoSuchServiceCallback, mDNSNULL, mDNSfalse);
|
|
202
|
+
ConvertDomainNameToCString(rr->resrec.name, buffer2);
|
|
203
|
+
printf("Name Conflict! %s renamed as %s\n", buffer1, buffer2);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
mDNSlocal void RegisterNoSuchService(mDNS *m, AuthRecord *const rr, domainname *proxyhostname,
|
|
208
|
+
const char name[], const char type[], const char domain[])
|
|
209
|
+
{
|
|
210
|
+
domainlabel n;
|
|
211
|
+
domainname t, d;
|
|
212
|
+
char buffer[MAX_ESCAPED_DOMAIN_NAME];
|
|
213
|
+
MakeDomainLabelFromLiteralString(&n, name);
|
|
214
|
+
MakeDomainNameFromDNSNameString(&t, type);
|
|
215
|
+
MakeDomainNameFromDNSNameString(&d, domain);
|
|
216
|
+
mDNS_RegisterNoSuchService(m, rr, &n, &t, &d, proxyhostname, mDNSInterface_Any, NoSuchServiceCallback, proxyhostname, mDNSfalse);
|
|
217
|
+
ConvertDomainNameToCString(rr->resrec.name, buffer);
|
|
218
|
+
printf("Made Non-existence Record for %s\n", buffer);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
//*************************************************************************************************************
|
|
222
|
+
// Main
|
|
223
|
+
|
|
224
|
+
mDNSexport int main(int argc, char **argv)
|
|
225
|
+
{
|
|
226
|
+
mStatus status;
|
|
227
|
+
sigset_t signals;
|
|
228
|
+
|
|
229
|
+
if (argc < 3) goto usage;
|
|
230
|
+
|
|
231
|
+
status = mDNS_Init(&mDNSStorage, &PlatformStorage,
|
|
232
|
+
mDNS_Init_NoCache, mDNS_Init_ZeroCacheSize,
|
|
233
|
+
mDNS_Init_DontAdvertiseLocalAddresses,
|
|
234
|
+
mDNS_Init_NoInitCallback, mDNS_Init_NoInitCallbackContext);
|
|
235
|
+
if (status) { fprintf(stderr, "Daemon start: mDNS_Init failed %d\n", (int)status); return(status); }
|
|
236
|
+
|
|
237
|
+
mDNSPosixListenForSignalInEventLoop(SIGINT);
|
|
238
|
+
mDNSPosixListenForSignalInEventLoop(SIGTERM);
|
|
239
|
+
|
|
240
|
+
if (!strcmp(argv[1], "-"))
|
|
241
|
+
{
|
|
242
|
+
domainname proxyhostname;
|
|
243
|
+
AuthRecord proxyrecord;
|
|
244
|
+
if (argc < 5) goto usage;
|
|
245
|
+
proxyhostname.c[0] = 0;
|
|
246
|
+
AppendLiteralLabelString(&proxyhostname, argv[2]);
|
|
247
|
+
AppendLiteralLabelString(&proxyhostname, "local");
|
|
248
|
+
RegisterNoSuchService(&mDNSStorage, &proxyrecord, &proxyhostname, argv[3], argv[4], "local.");
|
|
249
|
+
}
|
|
250
|
+
else
|
|
251
|
+
{
|
|
252
|
+
ProxyHost proxyhost;
|
|
253
|
+
ServiceRecordSet proxyservice;
|
|
254
|
+
|
|
255
|
+
proxyhost.ip.NotAnInteger = inet_addr(argv[1]);
|
|
256
|
+
if (proxyhost.ip.NotAnInteger == INADDR_NONE) // INADDR_NONE is 0xFFFFFFFF
|
|
257
|
+
{
|
|
258
|
+
struct hostent *h = gethostbyname(argv[1]);
|
|
259
|
+
if (h) proxyhost.ip.NotAnInteger = *(long*)h->h_addr;
|
|
260
|
+
}
|
|
261
|
+
if (proxyhost.ip.NotAnInteger == INADDR_NONE) // INADDR_NONE is 0xFFFFFFFF
|
|
262
|
+
{
|
|
263
|
+
fprintf(stderr, "%s is not valid host address\n", argv[1]);
|
|
264
|
+
return(-1);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
MakeDomainLabelFromLiteralString(&proxyhost.hostlabel, argv[2]);
|
|
268
|
+
|
|
269
|
+
mDNS_RegisterProxyHost(&mDNSStorage, &proxyhost);
|
|
270
|
+
|
|
271
|
+
if (argc >=6)
|
|
272
|
+
RegisterService(&mDNSStorage, &proxyservice, argv[3], argv[4], "local.",
|
|
273
|
+
proxyhost.RR_A.resrec.name, atoi(argv[5]), argc-6, &argv[6]);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
do
|
|
277
|
+
{
|
|
278
|
+
struct timeval timeout = { 0x3FFFFFFF, 0 }; // wait until SIGINT or SIGTERM
|
|
279
|
+
mDNSBool gotSomething;
|
|
280
|
+
mDNSPosixRunEventLoopOnce(&mDNSStorage, &timeout, &signals, &gotSomething);
|
|
281
|
+
}
|
|
282
|
+
while ( !( sigismember( &signals, SIGINT) || sigismember( &signals, SIGTERM)));
|
|
283
|
+
|
|
284
|
+
mDNS_Close(&mDNSStorage);
|
|
285
|
+
|
|
286
|
+
return(0);
|
|
287
|
+
|
|
288
|
+
usage:
|
|
289
|
+
fprintf(stderr, "%s ip hostlabel [srvname srvtype port txt [txt ...]]\n", argv[0]);
|
|
290
|
+
fprintf(stderr, "ip Real IP address (or valid host name) of the host where the service actually resides\n");
|
|
291
|
+
fprintf(stderr, "hostlabel First label of the dot-local host name to create for this host, e.g. \"foo\" for \"foo.local.\"\n");
|
|
292
|
+
fprintf(stderr, "srvname Descriptive name of service, e.g. \"Stuart's Ink Jet Printer\"\n");
|
|
293
|
+
fprintf(stderr, "srvtype IANA service type, e.g. \"_ipp._tcp\" or \"_ssh._tcp\", etc.\n");
|
|
294
|
+
fprintf(stderr, "port Port number where the service resides (1-65535)\n");
|
|
295
|
+
fprintf(stderr, "txt Additional name/value pairs specified in service definition, e.g. \"pdl=application/postscript\"\n");
|
|
296
|
+
fprintf(stderr, "e.g. %s 169.254.12.34 thehost (just create a dot-local host name)\n", argv[0]);
|
|
297
|
+
fprintf(stderr, "or %s 169.254.12.34 thehost \"My Printer\" _printer._tcp. 515 rp=lpt1 pdl=application/postscript\n", argv[0]);
|
|
298
|
+
fprintf(stderr, "or %s - thehost \"My Printer\" _printer._tcp. (assertion of non-existence)\n", argv[0]);
|
|
299
|
+
return(-1);
|
|
300
|
+
}
|