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.
Files changed (300) hide show
  1. package/NOTICE +49 -0
  2. package/README.md +489 -65
  3. package/android/build.gradle +23 -24
  4. package/android/src/main/AndroidManifest.xml +5 -2
  5. package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroConfImplFactory.java +10 -3
  6. package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroconfModule.java +3 -2
  7. package/android/src/main/java/com/balthazargronon/RCTZeroconf/nsd/NsdServiceImpl.java +83 -22
  8. package/android/src/main/java/com/balthazargronon/RCTZeroconf/rx2dnssd/DnssdImpl.java +61 -16
  9. package/android/src/main/java/com/github/druk/dnssd/BaseListener.java +33 -0
  10. package/android/src/main/java/com/github/druk/dnssd/BrowseListener.java +67 -0
  11. package/android/src/main/java/com/github/druk/dnssd/DNSRecord.java +47 -0
  12. package/android/src/main/java/com/github/druk/dnssd/DNSSD.java +650 -0
  13. package/android/src/main/java/com/github/druk/dnssd/DNSSDBindable.java +67 -0
  14. package/android/src/main/java/com/github/druk/dnssd/DNSSDEmbedded.java +135 -0
  15. package/android/src/main/java/com/github/druk/dnssd/DNSSDException.java +66 -0
  16. package/android/src/main/java/com/github/druk/dnssd/DNSSDRecordRegistrar.java +55 -0
  17. package/android/src/main/java/com/github/druk/dnssd/DNSSDRegistration.java +54 -0
  18. package/android/src/main/java/com/github/druk/dnssd/DNSSDService.java +35 -0
  19. package/android/src/main/java/com/github/druk/dnssd/DomainListener.java +57 -0
  20. package/android/src/main/java/com/github/druk/dnssd/InternalBrowseListener.java +76 -0
  21. package/android/src/main/java/com/github/druk/dnssd/InternalDNSSD.java +870 -0
  22. package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDRecordRegistrar.java +30 -0
  23. package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDRegistration.java +34 -0
  24. package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDService.java +29 -0
  25. package/android/src/main/java/com/github/druk/dnssd/InternalDomainListener.java +62 -0
  26. package/android/src/main/java/com/github/druk/dnssd/InternalQueryListener.java +61 -0
  27. package/android/src/main/java/com/github/druk/dnssd/InternalRegisterListener.java +51 -0
  28. package/android/src/main/java/com/github/druk/dnssd/InternalResolveListener.java +58 -0
  29. package/android/src/main/java/com/github/druk/dnssd/NSClass.java +16 -0
  30. package/android/src/main/java/com/github/druk/dnssd/NSType.java +58 -0
  31. package/android/src/main/java/com/github/druk/dnssd/QueryListener.java +54 -0
  32. package/android/src/main/java/com/github/druk/dnssd/RegisterListener.java +46 -0
  33. package/android/src/main/java/com/github/druk/dnssd/RegisterRecordListener.java +35 -0
  34. package/android/src/main/java/com/github/druk/dnssd/ResolveListener.java +55 -0
  35. package/android/src/main/java/com/github/druk/dnssd/TXTRecord.java +293 -0
  36. package/android/src/main/java/com/github/druk/rx2dnssd/BonjourService.java +400 -0
  37. package/android/src/main/java/com/github/druk/rx2dnssd/Rx2BrowseListener.java +55 -0
  38. package/android/src/main/java/com/github/druk/rx2dnssd/Rx2Dnssd.java +127 -0
  39. package/android/src/main/java/com/github/druk/rx2dnssd/Rx2DnssdBindable.java +35 -0
  40. package/android/src/main/java/com/github/druk/rx2dnssd/Rx2DnssdCommon.java +280 -0
  41. package/android/src/main/java/com/github/druk/rx2dnssd/Rx2DnssdEmbedded.java +31 -0
  42. package/android/src/main/java/com/github/druk/rx2dnssd/Rx2QueryListener.java +70 -0
  43. package/android/src/main/java/com/github/druk/rx2dnssd/Rx2RegisterListener.java +47 -0
  44. package/android/src/main/java/com/github/druk/rx2dnssd/Rx2ResolveListener.java +51 -0
  45. package/android/src/main/jni/Android.mk +95 -0
  46. package/android/src/main/jni/Application.mk +3 -0
  47. package/android/src/main/jni/DNSSD.java.h +290 -0
  48. package/android/src/main/jni/JNISupport.c +1140 -0
  49. package/android/src/main/jni/mdnsresponder/Android.bp +215 -0
  50. package/android/src/main/jni/mdnsresponder/Clients/ClientCommon.c +75 -0
  51. package/android/src/main/jni/mdnsresponder/Clients/ClientCommon.h +41 -0
  52. package/android/src/main/jni/mdnsresponder/Clients/Makefile +54 -0
  53. package/android/src/main/jni/mdnsresponder/Clients/ReadMe.txt +25 -0
  54. package/android/src/main/jni/mdnsresponder/Clients/dns-sd.c +1351 -0
  55. package/android/src/main/jni/mdnsresponder/LICENSE +13 -0
  56. package/android/src/main/jni/mdnsresponder/MODULE_LICENSE_APACHE2 +0 -0
  57. package/android/src/main/jni/mdnsresponder/Makefile +41 -0
  58. package/android/src/main/jni/mdnsresponder/NOTICE +13 -0
  59. package/android/src/main/jni/mdnsresponder/PrivateDNS.txt +275 -0
  60. package/android/src/main/jni/mdnsresponder/README.txt +166 -0
  61. package/android/src/main/jni/mdnsresponder/README.version +3 -0
  62. package/android/src/main/jni/mdnsresponder/android/caseMapping/Iphlpapi.h +1 -0
  63. package/android/src/main/jni/mdnsresponder/android/caseMapping/README +3 -0
  64. package/android/src/main/jni/mdnsresponder/android/caseMapping/Resource.h +1 -0
  65. package/android/src/main/jni/mdnsresponder/android/caseMapping/Ws2tcpip.h +1 -0
  66. package/android/src/main/jni/mdnsresponder/android/caseMapping/ipExport.h +1 -0
  67. package/android/src/main/jni/mdnsresponder/android/windows_firewall_dummy.c +10 -0
  68. package/android/src/main/jni/mdnsresponder/mDNSCore/DNSCommon.c +3157 -0
  69. package/android/src/main/jni/mdnsresponder/mDNSCore/DNSCommon.h +292 -0
  70. package/android/src/main/jni/mdnsresponder/mDNSCore/DNSDigest.c +1579 -0
  71. package/android/src/main/jni/mdnsresponder/mDNSCore/Implementer Notes.txt +66 -0
  72. package/android/src/main/jni/mdnsresponder/mDNSCore/mDNS.c +11469 -0
  73. package/android/src/main/jni/mdnsresponder/mDNSCore/mDNSDebug.h +164 -0
  74. package/android/src/main/jni/mdnsresponder/mDNSCore/mDNSEmbeddedAPI.h +2974 -0
  75. package/android/src/main/jni/mdnsresponder/mDNSCore/uDNS.c +4969 -0
  76. package/android/src/main/jni/mdnsresponder/mDNSCore/uDNS.h +132 -0
  77. package/android/src/main/jni/mdnsresponder/mDNSPosix/Client.c +223 -0
  78. package/android/src/main/jni/mdnsresponder/mDNSPosix/ExampleClientApp.c +91 -0
  79. package/android/src/main/jni/mdnsresponder/mDNSPosix/ExampleClientApp.h +18 -0
  80. package/android/src/main/jni/mdnsresponder/mDNSPosix/Identify.c +378 -0
  81. package/android/src/main/jni/mdnsresponder/mDNSPosix/Makefile +520 -0
  82. package/android/src/main/jni/mdnsresponder/mDNSPosix/NetMonitor.c +1010 -0
  83. package/android/src/main/jni/mdnsresponder/mDNSPosix/PosixDaemon.c +329 -0
  84. package/android/src/main/jni/mdnsresponder/mDNSPosix/ProxyResponder.c +300 -0
  85. package/android/src/main/jni/mdnsresponder/mDNSPosix/ReadMe.txt +314 -0
  86. package/android/src/main/jni/mdnsresponder/mDNSPosix/Responder.c +792 -0
  87. package/android/src/main/jni/mdnsresponder/mDNSPosix/Services.txt +36 -0
  88. package/android/src/main/jni/mdnsresponder/mDNSPosix/libnss_mdns.8 +148 -0
  89. package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSPosix.c +1685 -0
  90. package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSPosix.h +88 -0
  91. package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSUNP.c +726 -0
  92. package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSUNP.h +130 -0
  93. package/android/src/main/jni/mdnsresponder/mDNSPosix/mdnsd.sh +73 -0
  94. package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_ReadMe.txt +125 -0
  95. package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.c +2723 -0
  96. package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.conf +13 -0
  97. package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.conf.5 +135 -0
  98. package/android/src/main/jni/mdnsresponder/mDNSPosix/parselog.py +247 -0
  99. package/android/src/main/jni/mdnsresponder/mDNSResponder.sln +400 -0
  100. package/android/src/main/jni/mdnsresponder/mDNSShared/CommonServices.h +1537 -0
  101. package/android/src/main/jni/mdnsresponder/mDNSShared/DebugServices.c +3075 -0
  102. package/android/src/main/jni/mdnsresponder/mDNSShared/DebugServices.h +1607 -0
  103. package/android/src/main/jni/mdnsresponder/mDNSShared/GenLinkedList.c +319 -0
  104. package/android/src/main/jni/mdnsresponder/mDNSShared/GenLinkedList.h +90 -0
  105. package/android/src/main/jni/mdnsresponder/mDNSShared/PlatformCommon.c +220 -0
  106. package/android/src/main/jni/mdnsresponder/mDNSShared/PlatformCommon.h +18 -0
  107. package/android/src/main/jni/mdnsresponder/mDNSShared/dns-sd.1 +194 -0
  108. package/android/src/main/jni/mdnsresponder/mDNSShared/dns_sd.h +2452 -0
  109. package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.8 +69 -0
  110. package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.c +3146 -0
  111. package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.conf +60 -0
  112. package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.h +163 -0
  113. package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd_lexer.l +84 -0
  114. package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd_parser.y +585 -0
  115. package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_clientlib.c +368 -0
  116. package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_clientshim.c +802 -0
  117. package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_clientstub.c +1988 -0
  118. package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_ipc.c +161 -0
  119. package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_ipc.h +219 -0
  120. package/android/src/main/jni/mdnsresponder/mDNSShared/mDNS.1 +198 -0
  121. package/android/src/main/jni/mdnsresponder/mDNSShared/mDNSDebug.c +93 -0
  122. package/android/src/main/jni/mdnsresponder/mDNSShared/mDNSResponder.8 +116 -0
  123. package/android/src/main/jni/mdnsresponder/mDNSShared/uds_daemon.c +4758 -0
  124. package/android/src/main/jni/mdnsresponder/mDNSShared/uds_daemon.h +80 -0
  125. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/BrowsingPage.cpp +441 -0
  126. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/BrowsingPage.h +156 -0
  127. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigDialog.cpp +59 -0
  128. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigDialog.h +48 -0
  129. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigPropertySheet.cpp +301 -0
  130. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigPropertySheet.h +105 -0
  131. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.cpp +380 -0
  132. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.def +20 -0
  133. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.h +84 -0
  134. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.rc +141 -0
  135. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.vcproj +727 -0
  136. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelDll.rc +123 -0
  137. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.cpp +373 -0
  138. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.h +48 -0
  139. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.rc +123 -0
  140. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.vcproj +764 -0
  141. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelLocRes.rc +270 -0
  142. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelLocRes.vcproj +487 -0
  143. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelRes.rc +134 -0
  144. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelRes.vcproj +518 -0
  145. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/FourthPage.cpp +197 -0
  146. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/FourthPage.h +87 -0
  147. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/RegistrationPage.cpp +387 -0
  148. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/RegistrationPage.h +75 -0
  149. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SecondPage.cpp +544 -0
  150. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SecondPage.h +107 -0
  151. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ServicesPage.cpp +273 -0
  152. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ServicesPage.h +123 -0
  153. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SharedSecret.cpp +115 -0
  154. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SharedSecret.h +54 -0
  155. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.dll.manifest +10 -0
  156. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.exe.manifest +17 -0
  157. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.manifest +17 -0
  158. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.rc2 +13 -0
  159. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel64.manifest +17 -0
  160. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/EnergySaver.ico +0 -0
  161. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/controlpanel.ico +0 -0
  162. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/failure.ico +0 -0
  163. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/success.ico +0 -0
  164. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/resource.h +56 -0
  165. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/stdafx.cpp +20 -0
  166. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/stdafx.h +64 -0
  167. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dll.aps +0 -0
  168. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dll.rc +102 -0
  169. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dllmain.c +112 -0
  170. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dnssd.def +48 -0
  171. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dnssd.vcproj +472 -0
  172. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/resource.h +27 -0
  173. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/AssemblyInfo.cpp +84 -0
  174. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/PString.h +70 -0
  175. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/Stdafx.cpp +22 -0
  176. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/Stdafx.h +33 -0
  177. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.cpp +1234 -0
  178. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.h +1392 -0
  179. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.ico +0 -0
  180. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.rc +113 -0
  181. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.vcproj +446 -0
  182. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/resource.h +3 -0
  183. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.cpp +693 -0
  184. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.h +52 -0
  185. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.vcproj +324 -0
  186. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.cpp +208 -0
  187. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.def +35 -0
  188. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.idl +491 -0
  189. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.rc +126 -0
  190. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.rgs +11 -0
  191. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.vcproj +625 -0
  192. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSD.cpp +892 -0
  193. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.cpp +31 -0
  194. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.h +133 -0
  195. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.rgs +27 -0
  196. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.cpp +101 -0
  197. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.h +185 -0
  198. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.rgs +27 -0
  199. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.cpp +2095 -0
  200. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.h +429 -0
  201. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.rgs +27 -0
  202. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/StringServices.cpp +344 -0
  203. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/StringServices.h +102 -0
  204. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.cpp +381 -0
  205. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.h +203 -0
  206. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.rgs +27 -0
  207. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/_IDNSSDEvents_CP.h +358 -0
  208. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/dlldatax.c +51 -0
  209. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/dlldatax.h +49 -0
  210. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/resource.h +30 -0
  211. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/stdafx.h +88 -0
  212. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2002.sln +21 -0
  213. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2002.vcproj +253 -0
  214. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2003.sln +21 -0
  215. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2003.vcproj +267 -0
  216. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Application.ico +0 -0
  217. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Application.rc +323 -0
  218. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Application.rc2 +20 -0
  219. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Resource.h +53 -0
  220. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/AboutDialog.cpp +71 -0
  221. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/AboutDialog.h +62 -0
  222. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/Application.cpp +111 -0
  223. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/Application.h +68 -0
  224. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/ChooserDialog.cpp +1426 -0
  225. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/ChooserDialog.h +131 -0
  226. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/LoginDialog.cpp +109 -0
  227. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/LoginDialog.h +53 -0
  228. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/StdAfx.cpp +18 -0
  229. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/StdAfx.h +48 -0
  230. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcc +37 -0
  231. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcp +868 -0
  232. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcw +29 -0
  233. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/Application.ico +0 -0
  234. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/Application.rc +194 -0
  235. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/Application.rc2 +13 -0
  236. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/newres.h +28 -0
  237. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/resource.h +22 -0
  238. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/Application.cpp +92 -0
  239. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/Application.h +57 -0
  240. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/BrowserDialog.cpp +394 -0
  241. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/BrowserDialog.h +84 -0
  242. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/StdAfx.cpp +18 -0
  243. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/StdAfx.h +46 -0
  244. package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/Java.vcproj +111 -0
  245. package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/jdns_sd.rc +62 -0
  246. package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/makefile +143 -0
  247. package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/makefile64 +143 -0
  248. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.aps +0 -0
  249. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.c +581 -0
  250. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.rc +103 -0
  251. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.vcproj +409 -0
  252. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/Prefix.h +28 -0
  253. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/resource.h +27 -0
  254. package/android/src/main/jni/mdnsresponder/mDNSWindows/PosixCompat.c +128 -0
  255. package/android/src/main/jni/mdnsresponder/mDNSWindows/PosixCompat.h +70 -0
  256. package/android/src/main/jni/mdnsresponder/mDNSWindows/README.txt +85 -0
  257. package/android/src/main/jni/mdnsresponder/mDNSWindows/RegNames.h +57 -0
  258. package/android/src/main/jni/mdnsresponder/mDNSWindows/Secret.c +338 -0
  259. package/android/src/main/jni/mdnsresponder/mDNSWindows/Secret.h +42 -0
  260. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/EventLog.mc +11 -0
  261. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/EventLogMessages.bin +0 -0
  262. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Firewall.cpp +484 -0
  263. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Firewall.h +79 -0
  264. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Prefix.h +30 -0
  265. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.aps +0 -0
  266. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.c +2669 -0
  267. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.h +30 -0
  268. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.mcp +0 -0
  269. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.rc +114 -0
  270. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.vcproj +562 -0
  271. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/main.c +32 -0
  272. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/res/mDNSResponder.manifest +12 -0
  273. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/res/mDNSResponder64.manifest +12 -0
  274. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/resource.h +17 -0
  275. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/resrc1.h +15 -0
  276. package/android/src/main/jni/mdnsresponder/mDNSWindows/VPCDetect.cpp +165 -0
  277. package/android/src/main/jni/mdnsresponder/mDNSWindows/VPCDetect.h +36 -0
  278. package/android/src/main/jni/mdnsresponder/mDNSWindows/WinServices.cpp +93 -0
  279. package/android/src/main/jni/mdnsresponder/mDNSWindows/WinServices.h +34 -0
  280. package/android/src/main/jni/mdnsresponder/mDNSWindows/WinVersRes.h +35 -0
  281. package/android/src/main/jni/mdnsresponder/mDNSWindows/isocode.h +135 -0
  282. package/android/src/main/jni/mdnsresponder/mDNSWindows/loclibrary.c +268 -0
  283. package/android/src/main/jni/mdnsresponder/mDNSWindows/loclibrary.h +54 -0
  284. package/android/src/main/jni/mdnsresponder/mDNSWindows/mDNSWin32.c +5200 -0
  285. package/android/src/main/jni/mdnsresponder/mDNSWindows/mDNSWin32.h +208 -0
  286. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/ReadMe.txt +15 -0
  287. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.aps +0 -0
  288. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.c +2430 -0
  289. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.def +24 -0
  290. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.rc +104 -0
  291. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.vcproj +457 -0
  292. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/resource.h +27 -0
  293. package/android/src/main/jni/mdnsresponder/mdnsd.rc +7 -0
  294. package/android/src/main/jni/nameser.h +588 -0
  295. package/dist/index.js +160 -1
  296. package/index.d.ts +91 -0
  297. package/ios/RNZeroconf/RNNetServiceSerializer.m +7 -3
  298. package/ios/RNZeroconf/RNZeroconf.m +8 -0
  299. package/package.json +25 -17
  300. 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
+ }