pNet-DNS 1.0.1 → 1.0.2

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 (789) hide show
  1. data/README +0 -20
  2. data/doc/classes/ConfigTable.html +500 -0
  3. data/doc/classes/ConfigTable.src/M000013.html +25 -0
  4. data/doc/classes/ConfigTable.src/M000014.html +18 -0
  5. data/doc/classes/ConfigTable.src/M000015.html +18 -0
  6. data/doc/classes/ConfigTable.src/M000016.html +18 -0
  7. data/doc/classes/ConfigTable.src/M000017.html +18 -0
  8. data/doc/classes/ConfigTable.src/M000018.html +18 -0
  9. data/doc/classes/ConfigTable.src/M000019.html +18 -0
  10. data/doc/classes/ConfigTable.src/M000020.html +18 -0
  11. data/doc/classes/ConfigTable.src/M000021.html +18 -0
  12. data/doc/classes/ConfigTable.src/M000022.html +19 -0
  13. data/doc/classes/ConfigTable.src/M000023.html +21 -0
  14. data/doc/classes/ConfigTable.src/M000024.html +20 -0
  15. data/doc/classes/ConfigTable.src/M000025.html +18 -0
  16. data/doc/classes/ConfigTable.src/M000026.html +25 -0
  17. data/doc/classes/ConfigTable.src/M000027.html +23 -0
  18. data/doc/classes/ConfigTable.src/M000028.html +20 -0
  19. data/doc/classes/ConfigTable.src/M000029.html +20 -0
  20. data/doc/classes/ConfigTable.src/M000030.html +23 -0
  21. data/doc/classes/ConfigTable.src/M000031.html +19 -0
  22. data/doc/classes/ConfigTable.src/M000032.html +18 -0
  23. data/doc/classes/ConfigTable.src/M000033.html +18 -0
  24. data/doc/classes/ConfigTable/BoolItem.html +154 -0
  25. data/doc/classes/ConfigTable/BoolItem.src/M000034.html +18 -0
  26. data/doc/classes/ConfigTable/BoolItem.src/M000035.html +18 -0
  27. data/doc/classes/ConfigTable/ExecItem.html +201 -0
  28. data/doc/classes/ConfigTable/ExecItem.src/M000053.html +20 -0
  29. data/doc/classes/ConfigTable/ExecItem.src/M000054.html +18 -0
  30. data/doc/classes/ConfigTable/ExecItem.src/M000055.html +18 -0
  31. data/doc/classes/ConfigTable/ExecItem.src/M000056.html +18 -0
  32. data/doc/classes/ConfigTable/ExecItem.src/M000057.html +22 -0
  33. data/doc/classes/ConfigTable/Item.html +250 -0
  34. data/doc/classes/ConfigTable/Item.src/M000060.html +22 -0
  35. data/doc/classes/ConfigTable/Item.src/M000061.html +18 -0
  36. data/doc/classes/ConfigTable/Item.src/M000062.html +18 -0
  37. data/doc/classes/ConfigTable/Item.src/M000063.html +18 -0
  38. data/doc/classes/ConfigTable/Item.src/M000064.html +18 -0
  39. data/doc/classes/ConfigTable/Item.src/M000065.html +18 -0
  40. data/doc/classes/ConfigTable/MetaConfigEnvironment.html +325 -0
  41. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000040.html +19 -0
  42. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000041.html +18 -0
  43. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000042.html +18 -0
  44. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000043.html +18 -0
  45. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000044.html +18 -0
  46. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000045.html +18 -0
  47. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000046.html +18 -0
  48. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000047.html +18 -0
  49. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000048.html +18 -0
  50. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000049.html +18 -0
  51. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000050.html +18 -0
  52. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000051.html +19 -0
  53. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000052.html +19 -0
  54. data/doc/classes/ConfigTable/PackageSelectionItem.html +169 -0
  55. data/doc/classes/ConfigTable/PackageSelectionItem.src/M000038.html +19 -0
  56. data/doc/classes/ConfigTable/PackageSelectionItem.src/M000039.html +18 -0
  57. data/doc/classes/ConfigTable/PathItem.html +139 -0
  58. data/doc/classes/ConfigTable/PathItem.src/M000037.html +18 -0
  59. data/doc/classes/ConfigTable/ProgramItem.html +139 -0
  60. data/doc/classes/ConfigTable/ProgramItem.src/M000036.html +18 -0
  61. data/doc/classes/ConfigTable/SelectItem.html +156 -0
  62. data/doc/classes/ConfigTable/SelectItem.src/M000058.html +19 -0
  63. data/doc/classes/ConfigTable/SelectItem.src/M000059.html +18 -0
  64. data/doc/classes/Enumerable.html +118 -0
  65. data/doc/classes/Errno.html +111 -0
  66. data/doc/classes/Errno/ENOTEMPTY.html +111 -0
  67. data/doc/classes/File.html +166 -0
  68. data/doc/classes/File.src/M000223.html +20 -0
  69. data/doc/classes/File.src/M000224.html +20 -0
  70. data/doc/classes/File.src/M000225.html +18 -0
  71. data/doc/classes/FileOperations.html +375 -0
  72. data/doc/classes/FileOperations.src/M000560.html +31 -0
  73. data/doc/classes/FileOperations.src/M000561.html +20 -0
  74. data/doc/classes/FileOperations.src/M000562.html +20 -0
  75. data/doc/classes/FileOperations.src/M000563.html +24 -0
  76. data/doc/classes/FileOperations.src/M000564.html +34 -0
  77. data/doc/classes/FileOperations.src/M000565.html +27 -0
  78. data/doc/classes/FileOperations.src/M000566.html +21 -0
  79. data/doc/classes/FileOperations.src/M000567.html +19 -0
  80. data/doc/classes/FileOperations.src/M000568.html +40 -0
  81. data/doc/classes/FileOperations.src/M000569.html +19 -0
  82. data/doc/classes/FileOperations.src/M000570.html +20 -0
  83. data/doc/classes/FileOperations.src/M000571.html +18 -0
  84. data/doc/classes/FileOperations.src/M000572.html +18 -0
  85. data/doc/classes/FileOperations.src/M000573.html +18 -0
  86. data/doc/classes/FileOperations.src/M000574.html +20 -0
  87. data/doc/classes/FileOperations.src/M000575.html +20 -0
  88. data/doc/classes/HookScriptAPI.html +308 -0
  89. data/doc/classes/HookScriptAPI.src/M000226.html +18 -0
  90. data/doc/classes/HookScriptAPI.src/M000228.html +18 -0
  91. data/doc/classes/HookScriptAPI.src/M000229.html +18 -0
  92. data/doc/classes/HookScriptAPI.src/M000230.html +18 -0
  93. data/doc/classes/HookScriptAPI.src/M000231.html +18 -0
  94. data/doc/classes/HookScriptAPI.src/M000232.html +18 -0
  95. data/doc/classes/HookScriptAPI.src/M000233.html +18 -0
  96. data/doc/classes/HookScriptAPI.src/M000234.html +18 -0
  97. data/doc/classes/HookScriptAPI.src/M000235.html +20 -0
  98. data/doc/classes/HookScriptAPI.src/M000236.html +20 -0
  99. data/doc/classes/HookScriptAPI.src/M000237.html +20 -0
  100. data/doc/classes/Installer.html +1148 -0
  101. data/doc/classes/Installer.src/M000140.html +21 -0
  102. data/doc/classes/Installer.src/M000141.html +18 -0
  103. data/doc/classes/Installer.src/M000142.html +17 -0
  104. data/doc/classes/Installer.src/M000143.html +18 -0
  105. data/doc/classes/Installer.src/M000144.html +18 -0
  106. data/doc/classes/Installer.src/M000145.html +18 -0
  107. data/doc/classes/Installer.src/M000146.html +18 -0
  108. data/doc/classes/Installer.src/M000147.html +18 -0
  109. data/doc/classes/Installer.src/M000148.html +23 -0
  110. data/doc/classes/Installer.src/M000149.html +18 -0
  111. data/doc/classes/Installer.src/M000152.html +18 -0
  112. data/doc/classes/Installer.src/M000156.html +18 -0
  113. data/doc/classes/Installer.src/M000157.html +18 -0
  114. data/doc/classes/Installer.src/M000158.html +20 -0
  115. data/doc/classes/Installer.src/M000160.html +18 -0
  116. data/doc/classes/Installer.src/M000164.html +36 -0
  117. data/doc/classes/Installer.src/M000165.html +25 -0
  118. data/doc/classes/Installer.src/M000166.html +24 -0
  119. data/doc/classes/Installer.src/M000167.html +19 -0
  120. data/doc/classes/Installer.src/M000168.html +18 -0
  121. data/doc/classes/Installer.src/M000169.html +18 -0
  122. data/doc/classes/Installer.src/M000170.html +21 -0
  123. data/doc/classes/Installer.src/M000171.html +18 -0
  124. data/doc/classes/Installer.src/M000172.html +20 -0
  125. data/doc/classes/Installer.src/M000173.html +18 -0
  126. data/doc/classes/Installer.src/M000174.html +21 -0
  127. data/doc/classes/Installer.src/M000175.html +18 -0
  128. data/doc/classes/Installer.src/M000176.html +22 -0
  129. data/doc/classes/Installer.src/M000177.html +18 -0
  130. data/doc/classes/Installer.src/M000178.html +23 -0
  131. data/doc/classes/Installer.src/M000179.html +18 -0
  132. data/doc/classes/Installer.src/M000180.html +20 -0
  133. data/doc/classes/Installer.src/M000181.html +19 -0
  134. data/doc/classes/Installer.src/M000182.html +19 -0
  135. data/doc/classes/Installer.src/M000183.html +20 -0
  136. data/doc/classes/Installer.src/M000184.html +30 -0
  137. data/doc/classes/Installer.src/M000185.html +20 -0
  138. data/doc/classes/Installer.src/M000191.html +19 -0
  139. data/doc/classes/Installer.src/M000192.html +20 -0
  140. data/doc/classes/Installer.src/M000195.html +19 -0
  141. data/doc/classes/Installer.src/M000199.html +26 -0
  142. data/doc/classes/Installer.src/M000200.html +25 -0
  143. data/doc/classes/Installer.src/M000201.html +29 -0
  144. data/doc/classes/Installer.src/M000202.html +26 -0
  145. data/doc/classes/Installer/Shebang.html +202 -0
  146. data/doc/classes/Installer/Shebang.src/M000203.html +23 -0
  147. data/doc/classes/Installer/Shebang.src/M000204.html +19 -0
  148. data/doc/classes/Installer/Shebang.src/M000205.html +19 -0
  149. data/doc/classes/Installer/Shebang.src/M000206.html +18 -0
  150. data/doc/classes/Net.html +295 -0
  151. data/doc/classes/Net/DNS.html +1139 -0
  152. data/doc/classes/Net/DNS.src/M000238.html +34 -0
  153. data/doc/classes/Net/DNS.src/M000239.html +40 -0
  154. data/doc/classes/Net/DNS.src/M000240.html +32 -0
  155. data/doc/classes/Net/DNS.src/M000241.html +30 -0
  156. data/doc/classes/Net/DNS.src/M000242.html +39 -0
  157. data/doc/classes/Net/DNS.src/M000243.html +18 -0
  158. data/doc/classes/Net/DNS.src/M000244.html +18 -0
  159. data/doc/classes/Net/DNS.src/M000245.html +18 -0
  160. data/doc/classes/Net/DNS.src/M000246.html +18 -0
  161. data/doc/classes/Net/DNS.src/M000247.html +18 -0
  162. data/doc/classes/Net/DNS.src/M000248.html +18 -0
  163. data/doc/classes/Net/DNS.src/M000249.html +25 -0
  164. data/doc/classes/Net/DNS.src/M000250.html +52 -0
  165. data/doc/classes/Net/DNS.src/M000251.html +71 -0
  166. data/doc/classes/Net/DNS.src/M000252.html +50 -0
  167. data/doc/classes/Net/DNS/Header.html +510 -0
  168. data/doc/classes/Net/DNS/Header.src/M000511.html +22 -0
  169. data/doc/classes/Net/DNS/Header.src/M000512.html +72 -0
  170. data/doc/classes/Net/DNS/Header.src/M000513.html +47 -0
  171. data/doc/classes/Net/DNS/Header.src/M000514.html +25 -0
  172. data/doc/classes/Net/DNS/Header.src/M000515.html +37 -0
  173. data/doc/classes/Net/DNS/Nameserver.html +285 -0
  174. data/doc/classes/Net/DNS/Nameserver.src/M000516.html +100 -0
  175. data/doc/classes/Net/DNS/Nameserver.src/M000517.html +86 -0
  176. data/doc/classes/Net/DNS/Nameserver.src/M000518.html +32 -0
  177. data/doc/classes/Net/DNS/Nameserver.src/M000519.html +80 -0
  178. data/doc/classes/Net/DNS/Nameserver.src/M000520.html +33 -0
  179. data/doc/classes/Net/DNS/Nameserver.src/M000521.html +18 -0
  180. data/doc/classes/Net/DNS/Nameserver.src/M000522.html +88 -0
  181. data/doc/classes/Net/DNS/Nameserver.src/M000523.html +23 -0
  182. data/doc/classes/Net/DNS/Packet.html +774 -0
  183. data/doc/classes/Net/DNS/Packet.src/M000485.html +27 -0
  184. data/doc/classes/Net/DNS/Packet.src/M000486.html +158 -0
  185. data/doc/classes/Net/DNS/Packet.src/M000487.html +21 -0
  186. data/doc/classes/Net/DNS/Packet.src/M000488.html +85 -0
  187. data/doc/classes/Net/DNS/Packet.src/M000489.html +54 -0
  188. data/doc/classes/Net/DNS/Packet.src/M000490.html +58 -0
  189. data/doc/classes/Net/DNS/Packet.src/M000491.html +26 -0
  190. data/doc/classes/Net/DNS/Packet.src/M000492.html +53 -0
  191. data/doc/classes/Net/DNS/Packet.src/M000493.html +51 -0
  192. data/doc/classes/Net/DNS/Packet.src/M000494.html +24 -0
  193. data/doc/classes/Net/DNS/Packet.src/M000495.html +56 -0
  194. data/doc/classes/Net/DNS/Packet.src/M000496.html +30 -0
  195. data/doc/classes/Net/DNS/Packet.src/M000497.html +40 -0
  196. data/doc/classes/Net/DNS/Packet.src/M000498.html +31 -0
  197. data/doc/classes/Net/DNS/Packet.src/M000499.html +47 -0
  198. data/doc/classes/Net/DNS/Packet.src/M000500.html +21 -0
  199. data/doc/classes/Net/DNS/Packet.src/M000501.html +21 -0
  200. data/doc/classes/Net/DNS/Packet.src/M000502.html +21 -0
  201. data/doc/classes/Net/DNS/Packet.src/M000503.html +21 -0
  202. data/doc/classes/Net/DNS/Packet.src/M000504.html +21 -0
  203. data/doc/classes/Net/DNS/Question.html +302 -0
  204. data/doc/classes/Net/DNS/Question.src/M000505.html +42 -0
  205. data/doc/classes/Net/DNS/Question.src/M000506.html +18 -0
  206. data/doc/classes/Net/DNS/Question.src/M000507.html +23 -0
  207. data/doc/classes/Net/DNS/Question.src/M000508.html +18 -0
  208. data/doc/classes/Net/DNS/Question.src/M000509.html +18 -0
  209. data/doc/classes/Net/DNS/Question.src/M000510.html +18 -0
  210. data/doc/classes/Net/DNS/RR.html +830 -0
  211. data/doc/classes/Net/DNS/RR.src/M000253.html +32 -0
  212. data/doc/classes/Net/DNS/RR.src/M000254.html +29 -0
  213. data/doc/classes/Net/DNS/RR.src/M000255.html +24 -0
  214. data/doc/classes/Net/DNS/RR.src/M000256.html +32 -0
  215. data/doc/classes/Net/DNS/RR.src/M000257.html +39 -0
  216. data/doc/classes/Net/DNS/RR.src/M000258.html +135 -0
  217. data/doc/classes/Net/DNS/RR.src/M000259.html +18 -0
  218. data/doc/classes/Net/DNS/RR.src/M000260.html +19 -0
  219. data/doc/classes/Net/DNS/RR.src/M000261.html +26 -0
  220. data/doc/classes/Net/DNS/RR.src/M000262.html +18 -0
  221. data/doc/classes/Net/DNS/RR.src/M000263.html +59 -0
  222. data/doc/classes/Net/DNS/RR.src/M000264.html +36 -0
  223. data/doc/classes/Net/DNS/RR.src/M000265.html +20 -0
  224. data/doc/classes/Net/DNS/RR.src/M000266.html +18 -0
  225. data/doc/classes/Net/DNS/RR.src/M000267.html +27 -0
  226. data/doc/classes/Net/DNS/RR.src/M000268.html +31 -0
  227. data/doc/classes/Net/DNS/RR.src/M000269.html +19 -0
  228. data/doc/classes/Net/DNS/RR.src/M000270.html +18 -0
  229. data/doc/classes/Net/DNS/RR.src/M000271.html +18 -0
  230. data/doc/classes/Net/DNS/RR.src/M000272.html +35 -0
  231. data/doc/classes/Net/DNS/RR/A.html +311 -0
  232. data/doc/classes/Net/DNS/RR/A.src/M000314.html +18 -0
  233. data/doc/classes/Net/DNS/RR/A.src/M000315.html +19 -0
  234. data/doc/classes/Net/DNS/RR/A.src/M000316.html +18 -0
  235. data/doc/classes/Net/DNS/RR/A.src/M000317.html +19 -0
  236. data/doc/classes/Net/DNS/RR/A.src/M000318.html +29 -0
  237. data/doc/classes/Net/DNS/RR/A.src/M000319.html +22 -0
  238. data/doc/classes/Net/DNS/RR/A.src/M000320.html +20 -0
  239. data/doc/classes/Net/DNS/RR/A.src/M000321.html +18 -0
  240. data/doc/classes/Net/DNS/RR/A.src/M000322.html +22 -0
  241. data/doc/classes/Net/DNS/RR/AAAA.html +291 -0
  242. data/doc/classes/Net/DNS/RR/AAAA.src/M000366.html +24 -0
  243. data/doc/classes/Net/DNS/RR/AAAA.src/M000367.html +54 -0
  244. data/doc/classes/Net/DNS/RR/AAAA.src/M000368.html +20 -0
  245. data/doc/classes/Net/DNS/RR/AAAA.src/M000369.html +18 -0
  246. data/doc/classes/Net/DNS/RR/AAAA.src/M000370.html +24 -0
  247. data/doc/classes/Net/DNS/RR/AAAA.src/M000371.html +24 -0
  248. data/doc/classes/Net/DNS/RR/AAAA.src/M000372.html +23 -0
  249. data/doc/classes/Net/DNS/RR/AFSDB.html +278 -0
  250. data/doc/classes/Net/DNS/RR/AFSDB.src/M000308.html +24 -0
  251. data/doc/classes/Net/DNS/RR/AFSDB.src/M000309.html +22 -0
  252. data/doc/classes/Net/DNS/RR/AFSDB.src/M000310.html +23 -0
  253. data/doc/classes/Net/DNS/RR/AFSDB.src/M000311.html +22 -0
  254. data/doc/classes/Net/DNS/RR/AFSDB.src/M000312.html +25 -0
  255. data/doc/classes/Net/DNS/RR/AFSDB.src/M000313.html +24 -0
  256. data/doc/classes/Net/DNS/RR/CERT.html +313 -0
  257. data/doc/classes/Net/DNS/RR/CERT.src/M000361.html +30 -0
  258. data/doc/classes/Net/DNS/RR/CERT.src/M000362.html +29 -0
  259. data/doc/classes/Net/DNS/RR/CERT.src/M000363.html +48 -0
  260. data/doc/classes/Net/DNS/RR/CERT.src/M000364.html +39 -0
  261. data/doc/classes/Net/DNS/RR/CERT.src/M000365.html +26 -0
  262. data/doc/classes/Net/DNS/RR/CNAME.html +271 -0
  263. data/doc/classes/Net/DNS/RR/CNAME.src/M000339.html +20 -0
  264. data/doc/classes/Net/DNS/RR/CNAME.src/M000340.html +21 -0
  265. data/doc/classes/Net/DNS/RR/CNAME.src/M000341.html +20 -0
  266. data/doc/classes/Net/DNS/RR/CNAME.src/M000342.html +18 -0
  267. data/doc/classes/Net/DNS/RR/CNAME.src/M000343.html +24 -0
  268. data/doc/classes/Net/DNS/RR/CNAME.src/M000344.html +18 -0
  269. data/doc/classes/Net/DNS/RR/DNAME.html +253 -0
  270. data/doc/classes/Net/DNS/RR/DNAME.src/M000356.html +20 -0
  271. data/doc/classes/Net/DNS/RR/DNAME.src/M000357.html +20 -0
  272. data/doc/classes/Net/DNS/RR/DNAME.src/M000358.html +21 -0
  273. data/doc/classes/Net/DNS/RR/DNAME.src/M000359.html +18 -0
  274. data/doc/classes/Net/DNS/RR/DNAME.src/M000360.html +24 -0
  275. data/doc/classes/Net/DNS/RR/EID.html +218 -0
  276. data/doc/classes/Net/DNS/RR/EID.src/M000298.html +17 -0
  277. data/doc/classes/Net/DNS/RR/EID.src/M000299.html +17 -0
  278. data/doc/classes/Net/DNS/RR/EID.src/M000300.html +17 -0
  279. data/doc/classes/Net/DNS/RR/HINFO.html +264 -0
  280. data/doc/classes/Net/DNS/RR/HINFO.src/M000351.html +31 -0
  281. data/doc/classes/Net/DNS/RR/HINFO.src/M000352.html +21 -0
  282. data/doc/classes/Net/DNS/RR/HINFO.src/M000353.html +23 -0
  283. data/doc/classes/Net/DNS/RR/HINFO.src/M000354.html +18 -0
  284. data/doc/classes/Net/DNS/RR/HINFO.src/M000355.html +28 -0
  285. data/doc/classes/Net/DNS/RR/ISDN.html +263 -0
  286. data/doc/classes/Net/DNS/RR/ISDN.src/M000471.html +34 -0
  287. data/doc/classes/Net/DNS/RR/ISDN.src/M000472.html +27 -0
  288. data/doc/classes/Net/DNS/RR/ISDN.src/M000473.html +23 -0
  289. data/doc/classes/Net/DNS/RR/ISDN.src/M000474.html +18 -0
  290. data/doc/classes/Net/DNS/RR/ISDN.src/M000475.html +30 -0
  291. data/doc/classes/Net/DNS/RR/LOC.html +516 -0
  292. data/doc/classes/Net/DNS/RR/LOC.src/M000287.html +48 -0
  293. data/doc/classes/Net/DNS/RR/LOC.src/M000288.html +46 -0
  294. data/doc/classes/Net/DNS/RR/LOC.src/M000289.html +59 -0
  295. data/doc/classes/Net/DNS/RR/LOC.src/M000290.html +47 -0
  296. data/doc/classes/Net/DNS/RR/LOC.src/M000291.html +30 -0
  297. data/doc/classes/Net/DNS/RR/LOC.src/M000292.html +20 -0
  298. data/doc/classes/Net/DNS/RR/LOC.src/M000293.html +23 -0
  299. data/doc/classes/Net/DNS/RR/LOC.src/M000294.html +32 -0
  300. data/doc/classes/Net/DNS/RR/LOC.src/M000295.html +23 -0
  301. data/doc/classes/Net/DNS/RR/LOC.src/M000296.html +25 -0
  302. data/doc/classes/Net/DNS/RR/LOC.src/M000297.html +21 -0
  303. data/doc/classes/Net/DNS/RR/MB.html +267 -0
  304. data/doc/classes/Net/DNS/RR/MB.src/M000479.html +20 -0
  305. data/doc/classes/Net/DNS/RR/MB.src/M000480.html +21 -0
  306. data/doc/classes/Net/DNS/RR/MB.src/M000481.html +20 -0
  307. data/doc/classes/Net/DNS/RR/MB.src/M000482.html +18 -0
  308. data/doc/classes/Net/DNS/RR/MB.src/M000483.html +24 -0
  309. data/doc/classes/Net/DNS/RR/MB.src/M000484.html +22 -0
  310. data/doc/classes/Net/DNS/RR/MG.html +267 -0
  311. data/doc/classes/Net/DNS/RR/MG.src/M000345.html +20 -0
  312. data/doc/classes/Net/DNS/RR/MG.src/M000346.html +21 -0
  313. data/doc/classes/Net/DNS/RR/MG.src/M000347.html +20 -0
  314. data/doc/classes/Net/DNS/RR/MG.src/M000348.html +22 -0
  315. data/doc/classes/Net/DNS/RR/MG.src/M000349.html +24 -0
  316. data/doc/classes/Net/DNS/RR/MG.src/M000350.html +22 -0
  317. data/doc/classes/Net/DNS/RR/MINFO.html +280 -0
  318. data/doc/classes/Net/DNS/RR/MINFO.src/M000465.html +21 -0
  319. data/doc/classes/Net/DNS/RR/MINFO.src/M000466.html +23 -0
  320. data/doc/classes/Net/DNS/RR/MINFO.src/M000467.html +23 -0
  321. data/doc/classes/Net/DNS/RR/MINFO.src/M000468.html +18 -0
  322. data/doc/classes/Net/DNS/RR/MINFO.src/M000469.html +26 -0
  323. data/doc/classes/Net/DNS/RR/MINFO.src/M000470.html +25 -0
  324. data/doc/classes/Net/DNS/RR/MR.html +267 -0
  325. data/doc/classes/Net/DNS/RR/MR.src/M000400.html +20 -0
  326. data/doc/classes/Net/DNS/RR/MR.src/M000401.html +21 -0
  327. data/doc/classes/Net/DNS/RR/MR.src/M000402.html +20 -0
  328. data/doc/classes/Net/DNS/RR/MR.src/M000403.html +18 -0
  329. data/doc/classes/Net/DNS/RR/MR.src/M000404.html +24 -0
  330. data/doc/classes/Net/DNS/RR/MR.src/M000405.html +22 -0
  331. data/doc/classes/Net/DNS/RR/MX.html +296 -0
  332. data/doc/classes/Net/DNS/RR/MX.src/M000280.html +21 -0
  333. data/doc/classes/Net/DNS/RR/MX.src/M000281.html +23 -0
  334. data/doc/classes/Net/DNS/RR/MX.src/M000282.html +23 -0
  335. data/doc/classes/Net/DNS/RR/MX.src/M000283.html +23 -0
  336. data/doc/classes/Net/DNS/RR/MX.src/M000284.html +22 -0
  337. data/doc/classes/Net/DNS/RR/MX.src/M000285.html +25 -0
  338. data/doc/classes/Net/DNS/RR/MX.src/M000286.html +25 -0
  339. data/doc/classes/Net/DNS/RR/NAPTR.html +330 -0
  340. data/doc/classes/Net/DNS/RR/NAPTR.src/M000459.html +20 -0
  341. data/doc/classes/Net/DNS/RR/NAPTR.src/M000460.html +42 -0
  342. data/doc/classes/Net/DNS/RR/NAPTR.src/M000461.html +27 -0
  343. data/doc/classes/Net/DNS/RR/NAPTR.src/M000462.html +35 -0
  344. data/doc/classes/Net/DNS/RR/NAPTR.src/M000463.html +26 -0
  345. data/doc/classes/Net/DNS/RR/NAPTR.src/M000464.html +36 -0
  346. data/doc/classes/Net/DNS/RR/NIMLOC.html +219 -0
  347. data/doc/classes/Net/DNS/RR/NIMLOC.src/M000336.html +17 -0
  348. data/doc/classes/Net/DNS/RR/NIMLOC.src/M000337.html +17 -0
  349. data/doc/classes/Net/DNS/RR/NIMLOC.src/M000338.html +17 -0
  350. data/doc/classes/Net/DNS/RR/NS.html +273 -0
  351. data/doc/classes/Net/DNS/RR/NS.src/M000394.html +20 -0
  352. data/doc/classes/Net/DNS/RR/NS.src/M000395.html +21 -0
  353. data/doc/classes/Net/DNS/RR/NS.src/M000396.html +20 -0
  354. data/doc/classes/Net/DNS/RR/NS.src/M000397.html +22 -0
  355. data/doc/classes/Net/DNS/RR/NS.src/M000398.html +24 -0
  356. data/doc/classes/Net/DNS/RR/NS.src/M000399.html +20 -0
  357. data/doc/classes/Net/DNS/RR/NSAP.html +420 -0
  358. data/doc/classes/Net/DNS/RR/NSAP.src/M000450.html +60 -0
  359. data/doc/classes/Net/DNS/RR/NSAP.src/M000451.html +44 -0
  360. data/doc/classes/Net/DNS/RR/NSAP.src/M000452.html +25 -0
  361. data/doc/classes/Net/DNS/RR/NSAP.src/M000453.html +19 -0
  362. data/doc/classes/Net/DNS/RR/NSAP.src/M000454.html +19 -0
  363. data/doc/classes/Net/DNS/RR/NSAP.src/M000455.html +22 -0
  364. data/doc/classes/Net/DNS/RR/NSAP.src/M000456.html +30 -0
  365. data/doc/classes/Net/DNS/RR/NSAP.src/M000457.html +37 -0
  366. data/doc/classes/Net/DNS/RR/NSAP.src/M000458.html +31 -0
  367. data/doc/classes/Net/DNS/RR/NULL.html +215 -0
  368. data/doc/classes/Net/DNS/RR/NULL.src/M000423.html +17 -0
  369. data/doc/classes/Net/DNS/RR/NULL.src/M000424.html +17 -0
  370. data/doc/classes/Net/DNS/RR/NULL.src/M000425.html +17 -0
  371. data/doc/classes/Net/DNS/RR/OPT.html +448 -0
  372. data/doc/classes/Net/DNS/RR/OPT.src/M000439.html +30 -0
  373. data/doc/classes/Net/DNS/RR/OPT.src/M000440.html +20 -0
  374. data/doc/classes/Net/DNS/RR/OPT.src/M000441.html +50 -0
  375. data/doc/classes/Net/DNS/RR/OPT.src/M000442.html +21 -0
  376. data/doc/classes/Net/DNS/RR/OPT.src/M000443.html +18 -0
  377. data/doc/classes/Net/DNS/RR/OPT.src/M000444.html +25 -0
  378. data/doc/classes/Net/DNS/RR/OPT.src/M000445.html +18 -0
  379. data/doc/classes/Net/DNS/RR/OPT.src/M000446.html +18 -0
  380. data/doc/classes/Net/DNS/RR/OPT.src/M000447.html +18 -0
  381. data/doc/classes/Net/DNS/RR/OPT.src/M000448.html +21 -0
  382. data/doc/classes/Net/DNS/RR/OPT.src/M000449.html +18 -0
  383. data/doc/classes/Net/DNS/RR/PTR.html +264 -0
  384. data/doc/classes/Net/DNS/RR/PTR.src/M000330.html +20 -0
  385. data/doc/classes/Net/DNS/RR/PTR.src/M000331.html +21 -0
  386. data/doc/classes/Net/DNS/RR/PTR.src/M000332.html +20 -0
  387. data/doc/classes/Net/DNS/RR/PTR.src/M000333.html +19 -0
  388. data/doc/classes/Net/DNS/RR/PTR.src/M000334.html +24 -0
  389. data/doc/classes/Net/DNS/RR/PTR.src/M000335.html +24 -0
  390. data/doc/classes/Net/DNS/RR/PX.html +306 -0
  391. data/doc/classes/Net/DNS/RR/PX.src/M000432.html +19 -0
  392. data/doc/classes/Net/DNS/RR/PX.src/M000433.html +24 -0
  393. data/doc/classes/Net/DNS/RR/PX.src/M000434.html +24 -0
  394. data/doc/classes/Net/DNS/RR/PX.src/M000435.html +26 -0
  395. data/doc/classes/Net/DNS/RR/PX.src/M000436.html +18 -0
  396. data/doc/classes/Net/DNS/RR/PX.src/M000437.html +28 -0
  397. data/doc/classes/Net/DNS/RR/PX.src/M000438.html +26 -0
  398. data/doc/classes/Net/DNS/RR/RP.html +280 -0
  399. data/doc/classes/Net/DNS/RR/RP.src/M000426.html +21 -0
  400. data/doc/classes/Net/DNS/RR/RP.src/M000427.html +23 -0
  401. data/doc/classes/Net/DNS/RR/RP.src/M000428.html +23 -0
  402. data/doc/classes/Net/DNS/RR/RP.src/M000429.html +18 -0
  403. data/doc/classes/Net/DNS/RR/RP.src/M000430.html +25 -0
  404. data/doc/classes/Net/DNS/RR/RP.src/M000431.html +24 -0
  405. data/doc/classes/Net/DNS/RR/RT.html +292 -0
  406. data/doc/classes/Net/DNS/RR/RT.src/M000323.html +21 -0
  407. data/doc/classes/Net/DNS/RR/RT.src/M000324.html +23 -0
  408. data/doc/classes/Net/DNS/RR/RT.src/M000325.html +23 -0
  409. data/doc/classes/Net/DNS/RR/RT.src/M000326.html +22 -0
  410. data/doc/classes/Net/DNS/RR/RT.src/M000327.html +18 -0
  411. data/doc/classes/Net/DNS/RR/RT.src/M000328.html +25 -0
  412. data/doc/classes/Net/DNS/RR/RT.src/M000329.html +25 -0
  413. data/doc/classes/Net/DNS/RR/SOA.html +350 -0
  414. data/doc/classes/Net/DNS/RR/SOA.src/M000387.html +23 -0
  415. data/doc/classes/Net/DNS/RR/SOA.src/M000388.html +38 -0
  416. data/doc/classes/Net/DNS/RR/SOA.src/M000389.html +35 -0
  417. data/doc/classes/Net/DNS/RR/SOA.src/M000390.html +22 -0
  418. data/doc/classes/Net/DNS/RR/SOA.src/M000391.html +31 -0
  419. data/doc/classes/Net/DNS/RR/SOA.src/M000392.html +30 -0
  420. data/doc/classes/Net/DNS/RR/SOA.src/M000393.html +29 -0
  421. data/doc/classes/Net/DNS/RR/SPF.html +149 -0
  422. data/doc/classes/Net/DNS/RR/SRV.html +315 -0
  423. data/doc/classes/Net/DNS/RR/SRV.src/M000301.html +27 -0
  424. data/doc/classes/Net/DNS/RR/SRV.src/M000302.html +26 -0
  425. data/doc/classes/Net/DNS/RR/SRV.src/M000303.html +29 -0
  426. data/doc/classes/Net/DNS/RR/SRV.src/M000304.html +25 -0
  427. data/doc/classes/Net/DNS/RR/SRV.src/M000305.html +25 -0
  428. data/doc/classes/Net/DNS/RR/SRV.src/M000306.html +25 -0
  429. data/doc/classes/Net/DNS/RR/SRV.src/M000307.html +25 -0
  430. data/doc/classes/Net/DNS/RR/SSHFP.html +343 -0
  431. data/doc/classes/Net/DNS/RR/SSHFP.src/M000416.html +36 -0
  432. data/doc/classes/Net/DNS/RR/SSHFP.src/M000417.html +27 -0
  433. data/doc/classes/Net/DNS/RR/SSHFP.src/M000418.html +29 -0
  434. data/doc/classes/Net/DNS/RR/SSHFP.src/M000419.html +24 -0
  435. data/doc/classes/Net/DNS/RR/SSHFP.src/M000420.html +22 -0
  436. data/doc/classes/Net/DNS/RR/SSHFP.src/M000421.html +22 -0
  437. data/doc/classes/Net/DNS/RR/SSHFP.src/M000422.html +18 -0
  438. data/doc/classes/Net/DNS/RR/TKEY.html +377 -0
  439. data/doc/classes/Net/DNS/RR/TKEY.src/M000273.html +38 -0
  440. data/doc/classes/Net/DNS/RR/TKEY.src/M000274.html +45 -0
  441. data/doc/classes/Net/DNS/RR/TKEY.src/M000275.html +22 -0
  442. data/doc/classes/Net/DNS/RR/TKEY.src/M000276.html +24 -0
  443. data/doc/classes/Net/DNS/RR/TKEY.src/M000277.html +25 -0
  444. data/doc/classes/Net/DNS/RR/TKEY.src/M000278.html +32 -0
  445. data/doc/classes/Net/DNS/RR/TKEY.src/M000279.html +31 -0
  446. data/doc/classes/Net/DNS/RR/TSIG.html +516 -0
  447. data/doc/classes/Net/DNS/RR/TSIG.src/M000406.html +51 -0
  448. data/doc/classes/Net/DNS/RR/TSIG.src/M000407.html +37 -0
  449. data/doc/classes/Net/DNS/RR/TSIG.src/M000408.html +23 -0
  450. data/doc/classes/Net/DNS/RR/TSIG.src/M000409.html +43 -0
  451. data/doc/classes/Net/DNS/RR/TSIG.src/M000410.html +25 -0
  452. data/doc/classes/Net/DNS/RR/TSIG.src/M000411.html +18 -0
  453. data/doc/classes/Net/DNS/RR/TSIG.src/M000412.html +19 -0
  454. data/doc/classes/Net/DNS/RR/TSIG.src/M000413.html +32 -0
  455. data/doc/classes/Net/DNS/RR/TSIG.src/M000414.html +52 -0
  456. data/doc/classes/Net/DNS/RR/TSIG.src/M000415.html +41 -0
  457. data/doc/classes/Net/DNS/RR/TXT.html +345 -0
  458. data/doc/classes/Net/DNS/RR/TXT.src/M000378.html +32 -0
  459. data/doc/classes/Net/DNS/RR/TXT.src/M000379.html +20 -0
  460. data/doc/classes/Net/DNS/RR/TXT.src/M000380.html +18 -0
  461. data/doc/classes/Net/DNS/RR/TXT.src/M000381.html +18 -0
  462. data/doc/classes/Net/DNS/RR/TXT.src/M000382.html +25 -0
  463. data/doc/classes/Net/DNS/RR/TXT.src/M000383.html +18 -0
  464. data/doc/classes/Net/DNS/RR/TXT.src/M000384.html +27 -0
  465. data/doc/classes/Net/DNS/RR/TXT.src/M000385.html +22 -0
  466. data/doc/classes/Net/DNS/RR/TXT.src/M000386.html +26 -0
  467. data/doc/classes/Net/DNS/RR/UNKNOWN.html +199 -0
  468. data/doc/classes/Net/DNS/RR/UNKNOWN.src/M000476.html +18 -0
  469. data/doc/classes/Net/DNS/RR/UNKNOWN.src/M000477.html +22 -0
  470. data/doc/classes/Net/DNS/RR/UNKNOWN.src/M000478.html +30 -0
  471. data/doc/classes/Net/DNS/RR/X25.html +249 -0
  472. data/doc/classes/Net/DNS/RR/X25.src/M000373.html +23 -0
  473. data/doc/classes/Net/DNS/RR/X25.src/M000374.html +20 -0
  474. data/doc/classes/Net/DNS/RR/X25.src/M000375.html +20 -0
  475. data/doc/classes/Net/DNS/RR/X25.src/M000376.html +22 -0
  476. data/doc/classes/Net/DNS/RR/X25.src/M000377.html +26 -0
  477. data/doc/classes/Net/DNS/Resolver.html +1606 -0
  478. data/doc/classes/Net/DNS/Resolver.src/M000525.html +65 -0
  479. data/doc/classes/Net/DNS/Resolver.src/M000526.html +73 -0
  480. data/doc/classes/Net/DNS/Resolver.src/M000527.html +48 -0
  481. data/doc/classes/Net/DNS/Resolver.src/M000528.html +49 -0
  482. data/doc/classes/Net/DNS/Resolver.src/M000529.html +35 -0
  483. data/doc/classes/Net/DNS/Resolver.src/M000530.html +69 -0
  484. data/doc/classes/Net/DNS/Resolver.src/M000531.html +26 -0
  485. data/doc/classes/Net/DNS/Resolver.src/M000534.html +33 -0
  486. data/doc/classes/Net/DNS/Resolver.src/M000535.html +19 -0
  487. data/doc/classes/Net/DNS/Resolver.src/M000536.html +18 -0
  488. data/doc/classes/Net/DNS/Resolver.src/M000537.html +67 -0
  489. data/doc/classes/Net/DNS/Resolver.src/M000538.html +80 -0
  490. data/doc/classes/Net/DNS/Resolver.src/M000539.html +36 -0
  491. data/doc/classes/Net/DNS/Resolver.src/M000540.html +166 -0
  492. data/doc/classes/Net/DNS/Resolver.src/M000541.html +283 -0
  493. data/doc/classes/Net/DNS/Resolver.src/M000542.html +100 -0
  494. data/doc/classes/Net/DNS/Resolver.src/M000543.html +41 -0
  495. data/doc/classes/Net/DNS/Resolver.src/M000544.html +20 -0
  496. data/doc/classes/Net/DNS/Resolver.src/M000545.html +77 -0
  497. data/doc/classes/Net/DNS/Resolver.src/M000546.html +33 -0
  498. data/doc/classes/Net/DNS/Resolver.src/M000547.html +18 -0
  499. data/doc/classes/Net/DNS/Resolver.src/M000548.html +86 -0
  500. data/doc/classes/Net/DNS/Resolver.src/M000549.html +127 -0
  501. data/doc/classes/Net/DNS/Resolver.src/M000550.html +25 -0
  502. data/doc/classes/Net/DNS/Resolver.src/M000551.html +29 -0
  503. data/doc/classes/Net/DNS/Resolver.src/M000552.html +18 -0
  504. data/doc/classes/Net/DNS/Resolver.src/M000553.html +51 -0
  505. data/doc/classes/Net/DNS/Resolver.src/M000554.html +102 -0
  506. data/doc/classes/Net/DNS/Resolver/Recurse.html +382 -0
  507. data/doc/classes/Net/DNS/Resolver/Recurse.src/M000555.html +100 -0
  508. data/doc/classes/Net/DNS/Resolver/Recurse.src/M000556.html +20 -0
  509. data/doc/classes/Net/DNS/Resolver/Recurse.src/M000557.html +18 -0
  510. data/doc/classes/Net/DNS/Resolver/Recurse.src/M000558.html +31 -0
  511. data/doc/classes/Net/DNS/Resolver/Recurse.src/M000559.html +218 -0
  512. data/doc/classes/Net/DNS/Update.html +303 -0
  513. data/doc/classes/Net/DNS/Update.src/M000524.html +33 -0
  514. data/doc/classes/SetupError.html +111 -0
  515. data/doc/classes/TestAResolverFile.html +137 -0
  516. data/doc/classes/TestAResolverFile.src/M000129.html +51 -0
  517. data/doc/classes/TestAxfr.html +137 -0
  518. data/doc/classes/TestAxfr.src/M000075.html +25 -0
  519. data/doc/classes/TestEscapedChars.html +152 -0
  520. data/doc/classes/TestEscapedChars.src/M000011.html +262 -0
  521. data/doc/classes/TestEscapedChars.src/M000012.html +245 -0
  522. data/doc/classes/TestHeader.html +137 -0
  523. data/doc/classes/TestHeader.src/M000074.html +87 -0
  524. data/doc/classes/TestInet6.html +167 -0
  525. data/doc/classes/TestInet6.src/M000126.html +43 -0
  526. data/doc/classes/TestInet6.src/M000127.html +94 -0
  527. data/doc/classes/TestInet6.src/M000128.html +52 -0
  528. data/doc/classes/TestMisc.html +167 -0
  529. data/doc/classes/TestMisc.src/M000008.html +28 -0
  530. data/doc/classes/TestMisc.src/M000009.html +50 -0
  531. data/doc/classes/TestMisc.src/M000010.html +83 -0
  532. data/doc/classes/TestOnline.html +231 -0
  533. data/doc/classes/TestOnline.src/M000215.html +66 -0
  534. data/doc/classes/TestOnline.src/M000216.html +58 -0
  535. data/doc/classes/TestOnline.src/M000217.html +80 -0
  536. data/doc/classes/TestOnline.src/M000218.html +68 -0
  537. data/doc/classes/TestOnline.src/M000219.html +32 -0
  538. data/doc/classes/TestOnline.src/M000220.html +20 -0
  539. data/doc/classes/TestOnline.src/M000221.html +20 -0
  540. data/doc/classes/TestPacket.html +152 -0
  541. data/doc/classes/TestPacket.src/M000138.html +153 -0
  542. data/doc/classes/TestPacket.src/M000139.html +30 -0
  543. data/doc/classes/TestPacketUniquePush.html +167 -0
  544. data/doc/classes/TestPacketUniquePush.src/M000212.html +20 -0
  545. data/doc/classes/TestPacketUniquePush.src/M000213.html +32 -0
  546. data/doc/classes/TestPacketUniquePush.src/M000214.html +98 -0
  547. data/doc/classes/TestQuestion.html +137 -0
  548. data/doc/classes/TestQuestion.src/M000073.html +45 -0
  549. data/doc/classes/TestRR.html +140 -0
  550. data/doc/classes/TestRR.src/M000132.html +241 -0
  551. data/doc/classes/TestRecurse.html +167 -0
  552. data/doc/classes/TestRecurse.src/M000070.html +38 -0
  553. data/doc/classes/TestRecurse.src/M000071.html +32 -0
  554. data/doc/classes/TestRecurse.src/M000072.html +21 -0
  555. data/doc/classes/TestResOpt.html +197 -0
  556. data/doc/classes/TestResOpt.src/M000207.html +40 -0
  557. data/doc/classes/TestResOpt.src/M000208.html +25 -0
  558. data/doc/classes/TestResOpt.src/M000209.html +51 -0
  559. data/doc/classes/TestResOpt.src/M000210.html +32 -0
  560. data/doc/classes/TestResOpt.src/M000211.html +38 -0
  561. data/doc/classes/TestResolver.html +137 -0
  562. data/doc/classes/TestResolver.src/M000069.html +98 -0
  563. data/doc/classes/TestResolverEnv.html +137 -0
  564. data/doc/classes/TestResolverEnv.src/M000222.html +50 -0
  565. data/doc/classes/TestRrOpt.html +137 -0
  566. data/doc/classes/TestRrOpt.src/M000007.html +36 -0
  567. data/doc/classes/TestRrRrSort.html +137 -0
  568. data/doc/classes/TestRrRrSort.src/M000125.html +112 -0
  569. data/doc/classes/TestRrTest.html +155 -0
  570. data/doc/classes/TestRrTest.src/M000137.html +80 -0
  571. data/doc/classes/TestRrUnknown.html +167 -0
  572. data/doc/classes/TestRrUnknown.src/M000066.html +41 -0
  573. data/doc/classes/TestRrUnknown.src/M000067.html +37 -0
  574. data/doc/classes/TestRrUnknown.src/M000068.html +41 -0
  575. data/doc/classes/TestTKey.html +152 -0
  576. data/doc/classes/TestTKey.src/M000130.html +18 -0
  577. data/doc/classes/TestTKey.src/M000131.html +106 -0
  578. data/doc/classes/TestTcp.html +186 -0
  579. data/doc/classes/TestTcp.src/M000133.html +22 -0
  580. data/doc/classes/TestTcp.src/M000134.html +23 -0
  581. data/doc/classes/TestTcp.src/M000135.html +22 -0
  582. data/doc/classes/TestTcp.src/M000136.html +23 -0
  583. data/doc/classes/TestUpdate.html +152 -0
  584. data/doc/classes/TestUpdate.src/M000123.html +20 -0
  585. data/doc/classes/TestUpdate.src/M000124.html +216 -0
  586. data/doc/classes/ToplevelInstaller.html +621 -0
  587. data/doc/classes/ToplevelInstaller.src/M000076.html +23 -0
  588. data/doc/classes/ToplevelInstaller.src/M000077.html +18 -0
  589. data/doc/classes/ToplevelInstaller.src/M000078.html +25 -0
  590. data/doc/classes/ToplevelInstaller.src/M000079.html +21 -0
  591. data/doc/classes/ToplevelInstaller.src/M000080.html +18 -0
  592. data/doc/classes/ToplevelInstaller.src/M000081.html +18 -0
  593. data/doc/classes/ToplevelInstaller.src/M000082.html +38 -0
  594. data/doc/classes/ToplevelInstaller.src/M000083.html +18 -0
  595. data/doc/classes/ToplevelInstaller.src/M000084.html +18 -0
  596. data/doc/classes/ToplevelInstaller.src/M000085.html +18 -0
  597. data/doc/classes/ToplevelInstaller.src/M000086.html +18 -0
  598. data/doc/classes/ToplevelInstaller.src/M000087.html +18 -0
  599. data/doc/classes/ToplevelInstaller.src/M000088.html +40 -0
  600. data/doc/classes/ToplevelInstaller.src/M000089.html +18 -0
  601. data/doc/classes/ToplevelInstaller.src/M000090.html +18 -0
  602. data/doc/classes/ToplevelInstaller.src/M000091.html +21 -0
  603. data/doc/classes/ToplevelInstaller.src/M000097.html +40 -0
  604. data/doc/classes/ToplevelInstaller.src/M000098.html +31 -0
  605. data/doc/classes/ToplevelInstaller.src/M000099.html +52 -0
  606. data/doc/classes/ToplevelInstaller.src/M000100.html +19 -0
  607. data/doc/classes/ToplevelInstaller.src/M000101.html +18 -0
  608. data/doc/classes/ToplevelInstaller.src/M000102.html +18 -0
  609. data/doc/classes/ToplevelInstaller.src/M000103.html +18 -0
  610. data/doc/classes/ToplevelInstaller.src/M000104.html +20 -0
  611. data/doc/classes/ToplevelInstaller.src/M000105.html +18 -0
  612. data/doc/classes/ToplevelInstaller.src/M000106.html +18 -0
  613. data/doc/classes/ToplevelInstallerMulti.html +398 -0
  614. data/doc/classes/ToplevelInstallerMulti.src/M000107.html +21 -0
  615. data/doc/classes/ToplevelInstallerMulti.src/M000108.html +21 -0
  616. data/doc/classes/ToplevelInstallerMulti.src/M000109.html +23 -0
  617. data/doc/classes/ToplevelInstallerMulti.src/M000110.html +29 -0
  618. data/doc/classes/ToplevelInstallerMulti.src/M000111.html +22 -0
  619. data/doc/classes/ToplevelInstallerMulti.src/M000112.html +21 -0
  620. data/doc/classes/ToplevelInstallerMulti.src/M000113.html +21 -0
  621. data/doc/classes/ToplevelInstallerMulti.src/M000114.html +20 -0
  622. data/doc/classes/ToplevelInstallerMulti.src/M000115.html +20 -0
  623. data/doc/classes/ToplevelInstallerMulti.src/M000116.html +20 -0
  624. data/doc/classes/ToplevelInstallerMulti.src/M000117.html +21 -0
  625. data/doc/classes/ToplevelInstallerMulti.src/M000118.html +21 -0
  626. data/doc/classes/ToplevelInstallerMulti.src/M000119.html +25 -0
  627. data/doc/classes/ToplevelInstallerMulti.src/M000120.html +18 -0
  628. data/doc/classes/ToplevelInstallerMulti.src/M000121.html +18 -0
  629. data/doc/classes/ToplevelInstallerMulti.src/M000122.html +18 -0
  630. data/doc/created.rid +1 -0
  631. data/doc/files/demo/axfr_rb.html +163 -0
  632. data/doc/files/demo/check_soa_rb.html +139 -0
  633. data/doc/files/demo/check_zone_rb.html +236 -0
  634. data/doc/files/demo/check_zone_rb.src/M000001.html +82 -0
  635. data/doc/files/demo/check_zone_rb.src/M000002.html +25 -0
  636. data/doc/files/demo/check_zone_rb.src/M000003.html +23 -0
  637. data/doc/files/demo/check_zone_rb.src/M000004.html +23 -0
  638. data/doc/files/demo/check_zone_rb.src/M000005.html +23 -0
  639. data/doc/files/demo/example_recurse_rb.html +117 -0
  640. data/doc/files/demo/mresolv_rb.html +149 -0
  641. data/doc/files/demo/mx_rb.html +108 -0
  642. data/doc/files/demo/rubydig_rb.html +133 -0
  643. data/doc/files/demo/trace_dns_rb.html +109 -0
  644. data/doc/files/lib/Net/DNS/Header_rb.html +117 -0
  645. data/doc/files/lib/Net/DNS/Nameserver_rb.html +126 -0
  646. data/doc/files/lib/Net/DNS/Packet_rb.html +117 -0
  647. data/doc/files/lib/Net/DNS/Question_rb.html +117 -0
  648. data/doc/files/lib/Net/DNS/RR/AAAA_rb.html +117 -0
  649. data/doc/files/lib/Net/DNS/RR/AFSDB_rb.html +117 -0
  650. data/doc/files/lib/Net/DNS/RR/A_rb.html +117 -0
  651. data/doc/files/lib/Net/DNS/RR/CERT_rb.html +124 -0
  652. data/doc/files/lib/Net/DNS/RR/CNAME_rb.html +117 -0
  653. data/doc/files/lib/Net/DNS/RR/DNAME_rb.html +117 -0
  654. data/doc/files/lib/Net/DNS/RR/EID_rb.html +117 -0
  655. data/doc/files/lib/Net/DNS/RR/HINFO_rb.html +117 -0
  656. data/doc/files/lib/Net/DNS/RR/ISDN_rb.html +117 -0
  657. data/doc/files/lib/Net/DNS/RR/LOC_rb.html +117 -0
  658. data/doc/files/lib/Net/DNS/RR/MB_rb.html +117 -0
  659. data/doc/files/lib/Net/DNS/RR/MG_rb.html +117 -0
  660. data/doc/files/lib/Net/DNS/RR/MINFO_rb.html +117 -0
  661. data/doc/files/lib/Net/DNS/RR/MR_rb.html +117 -0
  662. data/doc/files/lib/Net/DNS/RR/MX_rb.html +117 -0
  663. data/doc/files/lib/Net/DNS/RR/NAPTR_rb.html +117 -0
  664. data/doc/files/lib/Net/DNS/RR/NIMLOC_rb.html +117 -0
  665. data/doc/files/lib/Net/DNS/RR/NSAP_rb.html +117 -0
  666. data/doc/files/lib/Net/DNS/RR/NS_rb.html +117 -0
  667. data/doc/files/lib/Net/DNS/RR/NULL_rb.html +117 -0
  668. data/doc/files/lib/Net/DNS/RR/OPT_rb.html +117 -0
  669. data/doc/files/lib/Net/DNS/RR/PTR_rb.html +117 -0
  670. data/doc/files/lib/Net/DNS/RR/PX_rb.html +117 -0
  671. data/doc/files/lib/Net/DNS/RR/RP_rb.html +117 -0
  672. data/doc/files/lib/Net/DNS/RR/RT_rb.html +117 -0
  673. data/doc/files/lib/Net/DNS/RR/SOA_rb.html +117 -0
  674. data/doc/files/lib/Net/DNS/RR/SPF_rb.html +117 -0
  675. data/doc/files/lib/Net/DNS/RR/SRV_rb.html +117 -0
  676. data/doc/files/lib/Net/DNS/RR/SSHFP_rb.html +117 -0
  677. data/doc/files/lib/Net/DNS/RR/TKEY_rb.html +117 -0
  678. data/doc/files/lib/Net/DNS/RR/TSIG_rb.html +125 -0
  679. data/doc/files/lib/Net/DNS/RR/TXT_rb.html +124 -0
  680. data/doc/files/lib/Net/DNS/RR/UNKNOWN_rb.html +117 -0
  681. data/doc/files/lib/Net/DNS/RR/X25_rb.html +117 -0
  682. data/doc/files/lib/Net/DNS/RR_rb.html +156 -0
  683. data/doc/files/lib/Net/DNS/Resolver/Recurse_rb.html +117 -0
  684. data/doc/files/lib/Net/DNS/Resolver_rb.html +131 -0
  685. data/doc/files/lib/Net/DNS/Update_rb.html +117 -0
  686. data/doc/files/lib/Net/DNS_rb.html +125 -0
  687. data/doc/files/setup_rb.html +148 -0
  688. data/doc/files/setup_rb.src/M000006.html +18 -0
  689. data/doc/files/test/tc_axfr_rb.html +127 -0
  690. data/doc/files/test/tc_escapedchars_rb.html +126 -0
  691. data/doc/files/test/tc_header_rb.html +126 -0
  692. data/doc/files/test/tc_inet6_rb.html +127 -0
  693. data/doc/files/test/tc_misc_rb.html +126 -0
  694. data/doc/files/test/tc_online_rb.html +127 -0
  695. data/doc/files/test/tc_packet_rb.html +126 -0
  696. data/doc/files/test/tc_packet_unique_push_rb.html +126 -0
  697. data/doc/files/test/tc_question_rb.html +126 -0
  698. data/doc/files/test/tc_recurse_rb.html +127 -0
  699. data/doc/files/test/tc_res_env_rb.html +126 -0
  700. data/doc/files/test/tc_res_file_rb.html +126 -0
  701. data/doc/files/test/tc_res_opt_rb.html +126 -0
  702. data/doc/files/test/tc_resolver_rb.html +126 -0
  703. data/doc/files/test/tc_rr-opt_rb.html +126 -0
  704. data/doc/files/test/tc_rr-rrsort_rb.html +126 -0
  705. data/doc/files/test/tc_rr-txt_rb.html +126 -0
  706. data/doc/files/test/tc_rr-unknown_rb.html +126 -0
  707. data/doc/files/test/tc_rr_rb.html +126 -0
  708. data/doc/files/test/tc_tcp_rb.html +126 -0
  709. data/doc/files/test/tc_thread_rb.html +109 -0
  710. data/doc/files/test/tc_tkey_rb.html +127 -0
  711. data/doc/files/test/tc_udp_rb.html +126 -0
  712. data/doc/files/test/tc_update_rb.html +126 -0
  713. data/doc/files/test/ts_netdns_rb.html +125 -0
  714. data/doc/files/test/ts_offline_rb.html +140 -0
  715. data/doc/files/test/ts_online_rb.html +131 -0
  716. data/doc/fr_class_index.html +112 -0
  717. data/doc/fr_file_index.html +105 -0
  718. data/doc/fr_method_index.html +601 -0
  719. data/doc/index.html +24 -0
  720. data/lib/Net/DNS.rb +16 -17
  721. data/lib/Net/DNS/Header.rb +15 -15
  722. data/lib/Net/DNS/Nameserver.rb +15 -15
  723. data/lib/Net/DNS/Packet.rb +15 -15
  724. data/lib/Net/DNS/Question.rb +15 -15
  725. data/lib/Net/DNS/RR.rb +15 -15
  726. data/lib/Net/DNS/RR/A.rb +15 -15
  727. data/lib/Net/DNS/RR/AAAA.rb +15 -15
  728. data/lib/Net/DNS/RR/AFSDB.rb +15 -15
  729. data/lib/Net/DNS/RR/CERT.rb +15 -15
  730. data/lib/Net/DNS/RR/CNAME.rb +15 -15
  731. data/lib/Net/DNS/RR/DNAME.rb +15 -15
  732. data/lib/Net/DNS/RR/EID.rb +15 -15
  733. data/lib/Net/DNS/RR/HINFO.rb +15 -15
  734. data/lib/Net/DNS/RR/ISDN.rb +15 -15
  735. data/lib/Net/DNS/RR/LOC.rb +15 -15
  736. data/lib/Net/DNS/RR/MB.rb +15 -15
  737. data/lib/Net/DNS/RR/MG.rb +15 -15
  738. data/lib/Net/DNS/RR/MINFO.rb +15 -15
  739. data/lib/Net/DNS/RR/MR.rb +15 -15
  740. data/lib/Net/DNS/RR/MX.rb +15 -15
  741. data/lib/Net/DNS/RR/NAPTR.rb +15 -15
  742. data/lib/Net/DNS/RR/NIMLOC.rb +15 -15
  743. data/lib/Net/DNS/RR/NS.rb +15 -15
  744. data/lib/Net/DNS/RR/NSAP.rb +15 -15
  745. data/lib/Net/DNS/RR/NULL.rb +15 -15
  746. data/lib/Net/DNS/RR/OPT.rb +15 -15
  747. data/lib/Net/DNS/RR/PTR.rb +15 -15
  748. data/lib/Net/DNS/RR/PX.rb +15 -15
  749. data/lib/Net/DNS/RR/RP.rb +15 -15
  750. data/lib/Net/DNS/RR/RT.rb +15 -15
  751. data/lib/Net/DNS/RR/SOA.rb +15 -15
  752. data/lib/Net/DNS/RR/SPF.rb +15 -15
  753. data/lib/Net/DNS/RR/SRV.rb +15 -15
  754. data/lib/Net/DNS/RR/SSHFP.rb +15 -15
  755. data/lib/Net/DNS/RR/TKEY.rb +15 -15
  756. data/lib/Net/DNS/RR/TSIG.rb +15 -15
  757. data/lib/Net/DNS/RR/TXT.rb +15 -15
  758. data/lib/Net/DNS/RR/UNKNOWN.rb +15 -15
  759. data/lib/Net/DNS/RR/X25.rb +15 -15
  760. data/lib/Net/DNS/Resolver.rb +117 -117
  761. data/lib/Net/DNS/Resolver/Recurse.rb +15 -15
  762. data/lib/Net/DNS/Update.rb +15 -15
  763. data/test/tc_axfr.rb +15 -15
  764. data/test/tc_escapedchars.rb +15 -15
  765. data/test/tc_header.rb +15 -15
  766. data/test/tc_inet6.rb +15 -15
  767. data/test/tc_misc.rb +15 -15
  768. data/test/tc_online.rb +15 -15
  769. data/test/tc_packet.rb +15 -15
  770. data/test/tc_packet_unique_push.rb +15 -15
  771. data/test/tc_question.rb +15 -15
  772. data/test/tc_recurse.rb +15 -15
  773. data/test/tc_res_env.rb +15 -15
  774. data/test/tc_res_file.rb +15 -15
  775. data/test/tc_res_opt.rb +15 -15
  776. data/test/tc_resolver.rb +18 -18
  777. data/test/tc_rr-opt.rb +15 -15
  778. data/test/tc_rr-rrsort.rb +15 -15
  779. data/test/tc_rr-txt.rb +15 -15
  780. data/test/tc_rr-unknown.rb +15 -15
  781. data/test/tc_rr.rb +15 -15
  782. data/test/tc_tcp.rb +15 -15
  783. data/test/tc_tkey.rb +15 -15
  784. data/test/tc_udp.rb +15 -15
  785. data/test/tc_update.rb +15 -15
  786. data/test/ts_netdns.rb +15 -15
  787. data/test/ts_offline.rb +15 -15
  788. data/test/ts_online.rb +15 -15
  789. metadata +818 -2
@@ -0,0 +1,67 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>search (Net::DNS::Resolver)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/Net/DNS/Resolver.rb, line 843</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">search</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
15
+ <span class="ruby-identifier">name</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
16
+ <span class="ruby-identifier">type</span> = <span class="ruby-value str">'A'</span>
17
+ <span class="ruby-identifier">klass</span> = <span class="ruby-value str">&quot;IN&quot;</span>
18
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span><span class="ruby-value">1</span>
19
+ <span class="ruby-identifier">type</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>]
20
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">2</span>
21
+ <span class="ruby-identifier">klass</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">2</span>]
22
+ <span class="ruby-keyword kw">end</span>
23
+ <span class="ruby-keyword kw">end</span>
24
+ <span class="ruby-identifier">ans</span>=<span class="ruby-value str">&quot;&quot;</span>
25
+
26
+ <span class="ruby-comment cmt"># If the name looks like an IP address then do an appropriate</span>
27
+ <span class="ruby-comment cmt"># PTR query.</span>
28
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">name</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/</span>)
29
+ <span class="ruby-identifier">name</span> = <span class="ruby-node">&quot;#{$4}.#{$3}.#{$2}.#{$1}.in-addr.arpa.&quot;</span>;
30
+ <span class="ruby-identifier">type</span> = <span class="ruby-value str">'PTR'</span>;
31
+ <span class="ruby-keyword kw">end</span>
32
+
33
+ <span class="ruby-comment cmt"># pass IPv6 addresses right to query()</span>
34
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">name</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">':'</span>)<span class="ruby-operator">!=</span><span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">'.'</span>)<span class="ruby-operator">==</span><span class="ruby-keyword kw">nil</span>)
35
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">query</span>(<span class="ruby-identifier">name</span>);
36
+ <span class="ruby-keyword kw">end</span>
37
+
38
+ <span class="ruby-comment cmt"># If the name contains at least one dot then try it as is first.</span>
39
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">name</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">'.'</span>) <span class="ruby-operator">!=</span> <span class="ruby-keyword kw">nil</span>)
40
+ <span class="ruby-identifier">print</span> <span class="ruby-node">&quot;;; search(#{name}, #{type}, #{klass})\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
41
+ <span class="ruby-identifier">ans</span> = <span class="ruby-identifier">query</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">type</span>, <span class="ruby-identifier">klass</span>)
42
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">ans</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ans!</span>=<span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">ans</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">ancount</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
43
+ <span class="ruby-keyword kw">end</span>
44
+
45
+ <span class="ruby-comment cmt"># If the name doesn't end in a dot then apply the search list.</span>
46
+ <span class="ruby-keyword kw">if</span> ((<span class="ruby-identifier">name</span> <span class="ruby-operator">!~</span> <span class="ruby-regexp re">/\.$/</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@dnsrch</span>)
47
+ <span class="ruby-comment cmt"># foreach my $domain (@{$self-&gt;{'searchlist'}}) {</span>
48
+ <span class="ruby-ivar">@searchlist</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">domain</span><span class="ruby-operator">|</span>
49
+ <span class="ruby-identifier">newname</span> = <span class="ruby-node">&quot;#{name}.#{domain}&quot;</span>
50
+ <span class="ruby-identifier">print</span> <span class="ruby-node">&quot;;; search(#{newname}, #{type}, #{klass})\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
51
+ <span class="ruby-identifier">ans</span> = <span class="ruby-identifier">query</span>(<span class="ruby-identifier">newname</span>, <span class="ruby-identifier">type</span>, <span class="ruby-identifier">klass</span>)
52
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">ans</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ans!</span>=<span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">ans</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">ancount</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
53
+ <span class="ruby-keyword kw">end</span>
54
+ <span class="ruby-keyword kw">end</span>
55
+
56
+ <span class="ruby-comment cmt"># Finally, if the name has no dots then try it as is.</span>
57
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">name</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">'.'</span>)<span class="ruby-operator">==</span><span class="ruby-keyword kw">nil</span>)
58
+ <span class="ruby-identifier">print</span> <span class="ruby-node">&quot;;; search(#{name}, #{type}, #{klass})\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
59
+ <span class="ruby-identifier">ans</span> = <span class="ruby-identifier">query</span>(<span class="ruby-node">&quot;#{name}.&quot;</span>, <span class="ruby-identifier">type</span>, <span class="ruby-identifier">klass</span>)
60
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">ans</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ans!</span>=<span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">ans</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">ancount</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
61
+ <span class="ruby-keyword kw">end</span>
62
+
63
+ <span class="ruby-comment cmt"># No answer was found.</span>
64
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>;
65
+ <span class="ruby-keyword kw">end</span></pre>
66
+ </body>
67
+ </html>
@@ -0,0 +1,80 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>query (Net::DNS::Resolver)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/Net/DNS/Resolver.rb, line 913</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
15
+ <span class="ruby-identifier">name</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">0</span>]
16
+ <span class="ruby-identifier">type</span> = <span class="ruby-value str">'A'</span>;
17
+ <span class="ruby-identifier">klass</span> = <span class="ruby-value str">'IN'</span>;
18
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">args</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>)
19
+ <span class="ruby-identifier">type</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">1</span>]
20
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">args</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">2</span>)
21
+ <span class="ruby-identifier">klass</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">2</span>]
22
+ <span class="ruby-keyword kw">end</span>
23
+ <span class="ruby-keyword kw">end</span>
24
+
25
+ <span class="ruby-comment cmt"># If the name doesn't contain any dots then append the default domain.</span>
26
+ <span class="ruby-keyword kw">if</span> ((<span class="ruby-identifier">name</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">'.'</span>)<span class="ruby-operator">==</span><span class="ruby-keyword kw">nil</span>) <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">name</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">':'</span>)<span class="ruby-operator">==</span><span class="ruby-keyword kw">nil</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@defnames!</span>=<span class="ruby-keyword kw">nil</span>)
27
+ <span class="ruby-identifier">name</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;.#{@domain}&quot;</span>;
28
+ <span class="ruby-keyword kw">end</span>
29
+
30
+ <span class="ruby-comment cmt"># If the name looks like an IP address then do an appropriate</span>
31
+ <span class="ruby-comment cmt"># PTR query.</span>
32
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">name</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/</span>)
33
+ <span class="ruby-identifier">name</span> = <span class="ruby-node">&quot;#{$4}.#{$3}.#{$2}.#{$1}.in-addr.arpa&quot;</span>;
34
+ <span class="ruby-identifier">type</span> = <span class="ruby-value str">'PTR'</span>;
35
+ <span class="ruby-keyword kw">end</span>
36
+
37
+ <span class="ruby-comment cmt"># IPv4 address in IPv6 format (very lax regex)</span>
38
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">name</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^[0:]*:ffff:(\d+)\.(\d+)\.(\d+)\.(\d+)$/i</span>)
39
+ <span class="ruby-identifier">name</span> = <span class="ruby-node">&quot;#{$4}.#{$3}.#{$2}.#{$1}.in-addr.arpa&quot;</span>;
40
+ <span class="ruby-identifier">type</span> = <span class="ruby-value str">'PTR'</span>;
41
+ <span class="ruby-keyword kw">end</span>
42
+
43
+ <span class="ruby-comment cmt"># if the name looks like an IPv6 0-compressed IP address then expand</span>
44
+ <span class="ruby-comment cmt"># PTR query. (eg 2001:5c0:0:1::2)</span>
45
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">name</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/::/</span>)
46
+ <span class="ruby-comment cmt"># avoid stupid &quot;Use of implicit split to @_ is deprecated&quot; warning</span>
47
+ <span class="ruby-keyword kw">while</span> ((<span class="ruby-identifier">parts</span> = <span class="ruby-identifier">name</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp re">/:/</span>)).<span class="ruby-identifier">length</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">8</span>) <span class="ruby-keyword kw">do</span>
48
+ <span class="ruby-identifier">name</span>.<span class="ruby-identifier">sub!</span>(<span class="ruby-regexp re">/::/</span>, <span class="ruby-value str">&quot;:0::&quot;</span>)
49
+ <span class="ruby-keyword kw">end</span>
50
+ <span class="ruby-identifier">name</span>.<span class="ruby-identifier">sub!</span>(<span class="ruby-regexp re">/::/</span>, <span class="ruby-value str">&quot;:0:&quot;</span>)
51
+ <span class="ruby-keyword kw">end</span>
52
+
53
+ <span class="ruby-comment cmt"># if the name looks like an IPv6 address then do appropriate</span>
54
+ <span class="ruby-comment cmt"># PTR query. (eg 2001:5c0:0:1:0:0:0:2)</span>
55
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">name</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/:/</span>)
56
+ <span class="ruby-identifier">stuff</span> = <span class="ruby-identifier">name</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp re">/:/</span>)
57
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">stuff</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">8</span>)
58
+ <span class="ruby-identifier">name</span> = <span class="ruby-value str">'ip6.arpa.'</span>
59
+ <span class="ruby-identifier">type</span> = <span class="ruby-value str">'PTR'</span>
60
+ <span class="ruby-identifier">stuff</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">segment</span><span class="ruby-operator">|</span>
61
+ <span class="ruby-identifier">segment</span> = <span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;%04s&quot;</span>, <span class="ruby-identifier">segment</span>)
62
+ <span class="ruby-identifier">segment</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/ /</span>, <span class="ruby-value str">&quot;0&quot;</span>)
63
+ <span class="ruby-identifier">segment</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/(.)(.)(.)(.)/</span>
64
+ <span class="ruby-identifier">name</span> = <span class="ruby-node">&quot;#{$4}.#{$3}.#{$2}.#{$1}.#{name}&quot;</span>
65
+ <span class="ruby-keyword kw">end</span>
66
+ <span class="ruby-keyword kw">else</span>
67
+ <span class="ruby-comment cmt"># no idea what this is</span>
68
+ <span class="ruby-keyword kw">end</span>
69
+ <span class="ruby-keyword kw">end</span>
70
+
71
+ <span class="ruby-identifier">print</span> <span class="ruby-node">&quot;;; query(#{name}, #{type}, #{klass})\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>;
72
+ <span class="ruby-identifier">packet</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">DNS</span><span class="ruby-operator">::</span><span class="ruby-constant">Packet</span>.<span class="ruby-identifier">new_from_values</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">type</span>, <span class="ruby-identifier">klass</span>);
73
+
74
+ <span class="ruby-identifier">ans</span> = <span class="ruby-identifier">send</span>(<span class="ruby-identifier">packet</span>);
75
+
76
+ <span class="ruby-comment cmt"># return (ans &amp;&amp; ans.header.ancount) ? ans : nil;</span>
77
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">ans</span>
78
+ <span class="ruby-keyword kw">end</span></pre>
79
+ </body>
80
+ </html>
@@ -0,0 +1,36 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>send (Net::DNS::Resolver)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/Net/DNS/Resolver.rb, line 996</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
15
+ <span class="ruby-identifier">packet</span> = <span class="ruby-identifier">make_query_packet</span>(<span class="ruby-identifier">args</span>);
16
+ <span class="ruby-identifier">packet_data</span> = <span class="ruby-identifier">packet</span>.<span class="ruby-identifier">data</span>;
17
+
18
+
19
+ <span class="ruby-identifier">ans</span> = <span class="ruby-value str">&quot;&quot;</span>
20
+
21
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@usevc</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">packet_data</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">_packetsz</span>)
22
+
23
+ <span class="ruby-identifier">ans</span> = <span class="ruby-identifier">send_tcp</span>(<span class="ruby-identifier">packet</span>, <span class="ruby-identifier">packet_data</span>);
24
+
25
+ <span class="ruby-keyword kw">else</span>
26
+ <span class="ruby-identifier">ans</span> = <span class="ruby-identifier">send_udp</span>(<span class="ruby-identifier">packet</span>, <span class="ruby-identifier">packet_data</span>);
27
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">ans!</span>=<span class="ruby-keyword kw">nil</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span>(<span class="ruby-operator">!</span><span class="ruby-identifier">ans</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">tc</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">ans</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">tc</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@igntc</span>)
28
+ <span class="ruby-identifier">print</span> <span class="ruby-value str">&quot;;;\n;; packet truncated: retrying using TCP\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>;
29
+ <span class="ruby-identifier">ans</span> = <span class="ruby-identifier">send_tcp</span>(<span class="ruby-identifier">packet</span>, <span class="ruby-identifier">packet_data</span>);
30
+ <span class="ruby-keyword kw">end</span>
31
+ <span class="ruby-keyword kw">end</span>
32
+
33
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">ans</span>;
34
+ <span class="ruby-keyword kw">end</span></pre>
35
+ </body>
36
+ </html>
@@ -0,0 +1,166 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>send_tcp (Net::DNS::Resolver)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/Net/DNS/Resolver.rb, line 1018</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_tcp</span>(<span class="ruby-identifier">packet</span>, <span class="ruby-identifier">packet_data</span>)
15
+ <span class="ruby-identifier">lastanswer</span>=<span class="ruby-value str">&quot;&quot;</span>
16
+
17
+ <span class="ruby-identifier">srcport</span> = <span class="ruby-ivar">@srcport</span>
18
+ <span class="ruby-identifier">srcaddr</span> = <span class="ruby-ivar">@srcaddr</span>
19
+ <span class="ruby-identifier">dstport</span> = <span class="ruby-ivar">@port</span>
20
+
21
+ <span class="ruby-keyword kw">if</span> ( <span class="ruby-ivar">@nameservers</span><span class="ruby-operator">==</span><span class="ruby-keyword kw">nil</span>)
22
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-value str">'no nameservers'</span>)
23
+ <span class="ruby-identifier">print</span> <span class="ruby-value str">&quot;;; ERROR: send_tcp: no nameservers\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
24
+ <span class="ruby-keyword kw">return</span>;
25
+ <span class="ruby-keyword kw">end</span>
26
+
27
+ <span class="ruby-identifier">_reset_errorstring</span>
28
+
29
+
30
+ <span class="ruby-comment cmt"># NAMESERVER: foreach my $ns ($self-&gt;nameservers()) {</span>
31
+ <span class="ruby-ivar">@nameservers</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ns</span><span class="ruby-operator">|</span>
32
+ <span class="ruby-identifier">print</span> <span class="ruby-node">&quot;;; attempt to send_tcp(#{ns}:#{dstport}) (src port = #{srcport})\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
33
+
34
+ <span class="ruby-identifier">sock</span>=<span class="ruby-value str">&quot;&quot;</span>
35
+ <span class="ruby-identifier">sock_key</span> = <span class="ruby-node">&quot;#{ns}:#{dstport}&quot;</span>;
36
+ <span class="ruby-identifier">host</span>,<span class="ruby-identifier">port</span>=<span class="ruby-value str">&quot;&quot;</span>
37
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@persistent_tcp</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@sockets</span>[<span class="ruby-value str">'AF_UNSPEC'</span>][<span class="ruby-identifier">sock_key</span>])
38
+ <span class="ruby-identifier">sock</span> = <span class="ruby-ivar">@sockets</span>[<span class="ruby-value str">'AF_UNSPEC'</span>][<span class="ruby-identifier">sock_key</span>];
39
+ <span class="ruby-identifier">print</span> <span class="ruby-value str">&quot;;; using persistent socket\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
40
+ <span class="ruby-keyword kw">else</span>
41
+ <span class="ruby-identifier">sock</span>= <span class="ruby-identifier">_create_tcp_socket</span>(<span class="ruby-identifier">ns</span>)
42
+ <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">sock!</span>=<span class="ruby-keyword kw">nil</span>
43
+
44
+ <span class="ruby-ivar">@sockets</span>[<span class="ruby-value str">'AF_UNSPEC'</span>][<span class="ruby-identifier">sock_key</span>] = <span class="ruby-identifier">sock</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@persistent_tcp</span>
45
+ <span class="ruby-keyword kw">end</span>
46
+
47
+
48
+ <span class="ruby-identifier">lenmsg</span> = [<span class="ruby-identifier">packet_data</span>.<span class="ruby-identifier">length</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-value str">'n'</span>)
49
+ <span class="ruby-identifier">print</span> <span class="ruby-value str">';; sending '</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">packet_data</span>.<span class="ruby-identifier">length</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot; bytes\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
50
+
51
+ <span class="ruby-comment cmt"># note that we send the length and packet data in a single call</span>
52
+ <span class="ruby-comment cmt"># as this produces a single TCP packet rather than two. This</span>
53
+ <span class="ruby-comment cmt"># is more efficient and also makes things much nicer for sniffers.</span>
54
+ <span class="ruby-comment cmt"># (ethereal doesn't seem to reassemble DNS over TCP correctly)</span>
55
+
56
+
57
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">sock</span>.<span class="ruby-identifier">send</span>( <span class="ruby-identifier">lenmsg</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">packet_data</span>,<span class="ruby-value">0</span>))
58
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-identifier">$!</span>)
59
+ <span class="ruby-identifier">print</span> <span class="ruby-node">&quot;;; ERROR: send_tcp: data send failed: #{@errorstring}\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
60
+ <span class="ruby-keyword kw">next</span>
61
+ <span class="ruby-keyword kw">end</span>
62
+
63
+ <span class="ruby-keyword kw">begin</span>
64
+ <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-identifier">timeout</span>(<span class="ruby-ivar">@tcp_timeout</span>) {
65
+ <span class="ruby-identifier">buf</span>, <span class="ruby-identifier">from</span> = <span class="ruby-identifier">read_tcp</span>(<span class="ruby-identifier">sock</span>, <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">DNS</span><span class="ruby-operator">::</span><span class="ruby-constant">INT16SZ</span>, <span class="ruby-ivar">@debug</span>)
66
+
67
+ <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">buf</span>.<span class="ruby-identifier">length</span> <span class="ruby-comment cmt"># Failure to get anything</span>
68
+ <span class="ruby-identifier">len</span> = <span class="ruby-identifier">buf</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-value str">'n'</span>)[<span class="ruby-value">0</span>]
69
+ <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">len</span> <span class="ruby-comment cmt"># Cannot determine size</span>
70
+
71
+ <span class="ruby-identifier">buf</span>, <span class="ruby-identifier">from</span> = <span class="ruby-identifier">read_tcp</span>(<span class="ruby-identifier">sock</span>, <span class="ruby-identifier">len</span>, <span class="ruby-ivar">@debug</span>)
72
+
73
+ <span class="ruby-ivar">@answerfrom</span>=(<span class="ruby-identifier">from</span>[<span class="ruby-value">2</span>])
74
+ <span class="ruby-ivar">@answersize</span>=(<span class="ruby-identifier">buf</span>.<span class="ruby-identifier">length</span>)
75
+
76
+ <span class="ruby-identifier">print</span> <span class="ruby-value str">';; received '</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">buf</span>.<span class="ruby-identifier">length</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot; bytes\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
77
+
78
+ <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">buf</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">len</span>)
79
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-node">&quot;expected #{len} bytes, received &quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">buf</span>.<span class="ruby-identifier">length</span>)
80
+ <span class="ruby-keyword kw">next</span>
81
+ <span class="ruby-keyword kw">end</span>
82
+
83
+ <span class="ruby-identifier">ans</span>, <span class="ruby-identifier">err</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">DNS</span><span class="ruby-operator">::</span><span class="ruby-constant">Packet</span>.<span class="ruby-identifier">new_from_binary</span>(<span class="ruby-identifier">buf</span>, <span class="ruby-ivar">@debug</span>)
84
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">ans!</span>=<span class="ruby-keyword kw">nil</span>)
85
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-identifier">ans</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">rcode</span>)
86
+ <span class="ruby-identifier">ans</span>.<span class="ruby-identifier">answerfrom</span>=(<span class="ruby-ivar">@answerfrom</span>)
87
+ <span class="ruby-identifier">ans</span>.<span class="ruby-identifier">answersize</span>=(<span class="ruby-ivar">@answersize</span>)
88
+
89
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">ans</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">rcode</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;NOERROR&quot;</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">ans</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">rcode</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;NXDOMAIN&quot;</span>)
90
+ <span class="ruby-comment cmt"># Remove this one from the stack</span>
91
+ <span class="ruby-identifier">print</span> <span class="ruby-value str">&quot;RCODE: &quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">ans</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">rcode</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;; trying next nameserver\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
92
+ <span class="ruby-identifier">lastanswer</span>=<span class="ruby-identifier">ans</span>
93
+ <span class="ruby-keyword kw">next</span>
94
+ <span class="ruby-keyword kw">end</span>
95
+ <span class="ruby-keyword kw">elsif</span> (<span class="ruby-identifier">err!</span>=<span class="ruby-keyword kw">nil</span>)
96
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-identifier">err</span>)
97
+ <span class="ruby-keyword kw">end</span>
98
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">ans</span>
99
+ }
100
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
101
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-value str">'Timeout: #{e.message}'</span>)
102
+ <span class="ruby-keyword kw">next</span>
103
+ <span class="ruby-keyword kw">ensure</span>
104
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-operator">!</span><span class="ruby-ivar">@persistent_tcp</span>)
105
+ <span class="ruby-identifier">sock</span>.<span class="ruby-identifier">close</span>()
106
+ <span class="ruby-keyword kw">end</span>
107
+ <span class="ruby-keyword kw">end</span>
108
+ <span class="ruby-keyword kw">end</span>
109
+
110
+ <span class="ruby-comment cmt"># sel = IO::Select.new(sock)</span>
111
+ <span class="ruby-comment cmt"># timeout=@tcp_timeout</span>
112
+ <span class="ruby-comment cmt"># if (sel.can_read(timeout))</span>
113
+ <span class="ruby-comment cmt"># buf = read_tcp(sock, Net::DNS::INT16SZ, @debug)</span>
114
+ <span class="ruby-comment cmt"># next unless buf.length # Failure to get anything</span>
115
+ <span class="ruby-comment cmt"># len = buf.unpack('n')[0]</span>
116
+ <span class="ruby-comment cmt"># next unless len # Cannot determine size</span>
117
+ <span class="ruby-comment cmt"># </span>
118
+ <span class="ruby-comment cmt"># unless (sel.can_read(timeout))</span>
119
+ <span class="ruby-comment cmt"># @errorstring=('timeout')</span>
120
+ <span class="ruby-comment cmt"># print &quot;;; TIMEOUT\n&quot; if @debug</span>
121
+ <span class="ruby-comment cmt"># next</span>
122
+ <span class="ruby-comment cmt"># end</span>
123
+ <span class="ruby-comment cmt"># </span>
124
+ <span class="ruby-comment cmt"># buf = read_tcp(sock, len, @debug)</span>
125
+ <span class="ruby-comment cmt"># </span>
126
+ <span class="ruby-comment cmt"># answerfrom(sock.peerhost)</span>
127
+ <span class="ruby-comment cmt"># answersize(buf.length)</span>
128
+ <span class="ruby-comment cmt"># </span>
129
+ <span class="ruby-comment cmt"># print ';; received ' + buf.length + &quot; bytes\n&quot; if @debug</span>
130
+ <span class="ruby-comment cmt"># </span>
131
+ <span class="ruby-comment cmt"># unless (buf.length == len)</span>
132
+ <span class="ruby-comment cmt"># @errorstring=(&quot;expected #{len} bytes, received &quot; + buf.length)</span>
133
+ <span class="ruby-comment cmt"># next</span>
134
+ <span class="ruby-comment cmt"># end</span>
135
+ <span class="ruby-comment cmt"># </span>
136
+ <span class="ruby-comment cmt"># ans, err = Net::DNS::Packet.new_from_data(buf, @debug)</span>
137
+ <span class="ruby-comment cmt"># if (ans!=nil)</span>
138
+ <span class="ruby-comment cmt"># @errorstring=(ans.header.rcode)</span>
139
+ <span class="ruby-comment cmt"># ans.answerfrom=(@answerfrom)</span>
140
+ <span class="ruby-comment cmt"># ans.answersize=(@answersize)</span>
141
+ <span class="ruby-comment cmt"># </span>
142
+ <span class="ruby-comment cmt"># if (ans.header.rcode != &quot;NOERROR&quot; &amp;&amp; ans.header.rcode != &quot;NXDOMAIN&quot;)</span>
143
+ <span class="ruby-comment cmt"># # Remove this one from the stack</span>
144
+ <span class="ruby-comment cmt"># print &quot;RCODE: &quot; + ans.header.rcode + &quot;; trying next nameserver\n&quot; if @debug</span>
145
+ <span class="ruby-comment cmt"># lastanswer=ans</span>
146
+ <span class="ruby-comment cmt"># next</span>
147
+ <span class="ruby-comment cmt"># end</span>
148
+ <span class="ruby-comment cmt"># elsif (err!=nil)</span>
149
+ <span class="ruby-comment cmt"># @errorstring=(err)</span>
150
+ <span class="ruby-comment cmt"># end</span>
151
+ <span class="ruby-comment cmt"># return ans</span>
152
+ <span class="ruby-comment cmt"># else</span>
153
+ <span class="ruby-comment cmt"># @errorstring=('timeout')</span>
154
+ <span class="ruby-comment cmt"># next</span>
155
+ <span class="ruby-comment cmt"># end</span>
156
+ <span class="ruby-comment cmt"># end</span>
157
+
158
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">lastanswer!</span>=<span class="ruby-value str">&quot;&quot;</span>)
159
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-identifier">lastanswer</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">rcode</span>)
160
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">lastanswer</span>
161
+ <span class="ruby-keyword kw">end</span>
162
+
163
+ <span class="ruby-keyword kw">return</span>
164
+ <span class="ruby-keyword kw">end</span></pre>
165
+ </body>
166
+ </html>
@@ -0,0 +1,283 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>send_udp (Net::DNS::Resolver)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/Net/DNS/Resolver.rb, line 1170</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_udp</span>(<span class="ruby-identifier">packet</span>, <span class="ruby-identifier">packet_data</span>)
15
+ <span class="ruby-identifier">retrans</span> = <span class="ruby-ivar">@retrans</span>
16
+ <span class="ruby-identifier">timeout</span> = <span class="ruby-identifier">retrans</span>
17
+
18
+ <span class="ruby-identifier">lastanswer</span>=<span class="ruby-value str">&quot;&quot;</span>
19
+
20
+ <span class="ruby-identifier">stop_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@udp_timeout</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@udp_timeout</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@udp_timeout</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>)
21
+
22
+ <span class="ruby-identifier">_reset_errorstring</span>;
23
+
24
+ <span class="ruby-identifier">ns</span>=[]
25
+ <span class="ruby-identifier">dstport</span> = <span class="ruby-ivar">@port</span>
26
+ <span class="ruby-identifier">srcport</span> = <span class="ruby-ivar">@srcport</span>
27
+ <span class="ruby-identifier">srcaddr</span> = <span class="ruby-ivar">@srcaddr</span>
28
+
29
+ <span class="ruby-identifier">sock</span>=<span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>
30
+
31
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@persistent_udp</span>)
32
+ <span class="ruby-keyword kw">if</span> ( (<span class="ruby-ivar">@sockets</span>[<span class="ruby-value str">'AF_INET6'</span>][<span class="ruby-value str">'UDP'</span>])<span class="ruby-operator">!=</span><span class="ruby-keyword kw">nil</span>)
33
+ <span class="ruby-identifier">sock</span>[<span class="ruby-constant">AF_INET6</span>] = <span class="ruby-ivar">@sockets</span>[<span class="ruby-value str">'AF_INET6'</span>][<span class="ruby-value str">'UDP'</span>]
34
+ <span class="ruby-identifier">print</span> <span class="ruby-value str">&quot;;; using persistent AF_INET6 family type socket\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
35
+ <span class="ruby-keyword kw">end</span>
36
+ <span class="ruby-keyword kw">if</span> ( (<span class="ruby-ivar">@sockets</span>[<span class="ruby-value str">'AF_INET'</span>][<span class="ruby-value str">'UDP'</span>])<span class="ruby-operator">!=</span><span class="ruby-keyword kw">nil</span>)
37
+ <span class="ruby-identifier">sock</span>[<span class="ruby-value str">'AF_INET'</span>] = <span class="ruby-ivar">@sockets</span>[<span class="ruby-value str">'AF_INET'</span>][<span class="ruby-value str">'UDP'</span>];
38
+ <span class="ruby-identifier">print</span> <span class="ruby-value str">&quot;;; using persistent AF_INET() family type socket\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
39
+ <span class="ruby-keyword kw">end</span>
40
+ <span class="ruby-keyword kw">end</span>
41
+
42
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-operator">!</span> <span class="ruby-ivar">@force_v4</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@sockets</span>[<span class="ruby-value str">'AF_INET6'</span>]<span class="ruby-operator">==</span><span class="ruby-keyword kw">nil</span> )
43
+
44
+
45
+ <span class="ruby-comment cmt"># '::' Otherwise the INET6 socket will fail.</span>
46
+
47
+ <span class="ruby-identifier">srcaddr6</span> = <span class="ruby-identifier">srcaddr</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'0.0.0.0'</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'::'</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">srcaddr</span>
48
+
49
+ <span class="ruby-identifier">print</span> <span class="ruby-node">&quot;;; Trying to set up a AF_INET6 family type UDP socket with srcaddr: #{srcaddr} ... &quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
50
+
51
+
52
+ <span class="ruby-comment cmt"># IO::Socket carps on errors if Perl's -w flag is turned on.</span>
53
+ <span class="ruby-comment cmt"># Uncomment the next two lines and the line following the &quot;new&quot;</span>
54
+ <span class="ruby-comment cmt"># call to turn off these messages.</span>
55
+
56
+ <span class="ruby-comment cmt">#my $old_wflag = $^W;</span>
57
+ <span class="ruby-comment cmt">#$^W = 0;</span>
58
+
59
+ <span class="ruby-identifier">sock</span>[<span class="ruby-value str">'AF_INET6'</span>] = <span class="ruby-constant">UDPSocket</span>.<span class="ruby-identifier">new</span>
60
+ <span class="ruby-identifier">sock</span>[<span class="ruby-value str">'AF_INET6'</span>].<span class="ruby-identifier">bind</span>(<span class="ruby-identifier">srcaddr6</span>, <span class="ruby-identifier">srcport</span>)
61
+ <span class="ruby-identifier">print</span>(<span class="ruby-identifier">sock</span>[<span class="ruby-value str">'AF_INET6'</span>]<span class="ruby-operator">!=</span><span class="ruby-keyword kw">nil</span> <span class="ruby-operator">?</span> <span class="ruby-value str">&quot;done\n&quot;</span><span class="ruby-operator">:</span><span class="ruby-value str">&quot;failed\n&quot;</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
62
+ <span class="ruby-keyword kw">end</span>
63
+
64
+ <span class="ruby-comment cmt"># Always set up an AF_INET socket. </span>
65
+ <span class="ruby-comment cmt"># It will be used if the address familly of for the endpoint is V4.</span>
66
+
67
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">sock</span>[<span class="ruby-value str">'AF_INET'</span>]<span class="ruby-operator">==</span><span class="ruby-keyword kw">nil</span>)
68
+ <span class="ruby-identifier">print</span> <span class="ruby-value str">&quot;;; setting up an AF_INET() family type UDP socket\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
69
+
70
+ <span class="ruby-identifier">sock</span>[<span class="ruby-value str">'AF_INET'</span>] = <span class="ruby-constant">UDPSocket</span>.<span class="ruby-identifier">new</span>()
71
+ <span class="ruby-identifier">sock</span>[<span class="ruby-value str">'AF_INET'</span>].<span class="ruby-identifier">bind</span>(<span class="ruby-identifier">srcaddr</span>, <span class="ruby-identifier">srcport</span>)
72
+ <span class="ruby-keyword kw">end</span>
73
+
74
+
75
+
76
+ <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">sock</span>[<span class="ruby-value str">'AF_INET'</span>]<span class="ruby-operator">!=</span><span class="ruby-keyword kw">nil</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">sock</span>[<span class="ruby-value str">'AF_INET6'</span>]<span class="ruby-operator">!=</span><span class="ruby-keyword kw">nil</span>)
77
+
78
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-value str">&quot;could not get socket&quot;</span>)
79
+ <span class="ruby-keyword kw">return</span>;
80
+ <span class="ruby-keyword kw">end</span>
81
+
82
+ <span class="ruby-ivar">@sockets</span>[<span class="ruby-value str">'AF_INET'</span>][<span class="ruby-value str">'UDP'</span>] = <span class="ruby-identifier">sock</span>[<span class="ruby-value str">'AF_INET'</span>] <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@persistent_udp</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">sock</span> <span class="ruby-operator">!=</span> <span class="ruby-keyword kw">nil</span>
83
+ <span class="ruby-ivar">@sockets</span>[<span class="ruby-value str">'AF_INET6'</span>][<span class="ruby-value str">'UDP'</span>] = <span class="ruby-identifier">sock</span>[<span class="ruby-value str">'AF_INET6'</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">persistent_udp</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">sock</span>[<span class="ruby-value str">'AF_INET6'</span>]<span class="ruby-operator">!=</span><span class="ruby-keyword kw">nil</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span> <span class="ruby-ivar">@force_v4</span>
84
+
85
+ <span class="ruby-comment cmt"># Constructing an array of arrays that contain 3 elements: The</span>
86
+ <span class="ruby-comment cmt"># nameserver IP address, its sockaddr and the sockfamily for</span>
87
+ <span class="ruby-comment cmt"># which the sockaddr structure is constructed.</span>
88
+
89
+ <span class="ruby-identifier">nmbrnsfailed</span>=<span class="ruby-value">0</span>;
90
+ <span class="ruby-comment cmt"># # NSADDRESS: foreach my $ns_address ($self-&gt;nameservers()){</span>
91
+ <span class="ruby-comment cmt"># # NSADDRESS: @nameservers.each do |ns_address|</span>
92
+ <span class="ruby-ivar">@nameservers</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ns_address</span><span class="ruby-operator">|</span>
93
+ <span class="ruby-comment cmt"># The logic below determines the $dst_sockaddr.</span>
94
+ <span class="ruby-comment cmt"># If getaddrinfo is available that is used for both INET4 and INET6</span>
95
+ <span class="ruby-comment cmt"># If getaddrinfo is not avialable (Socket6 failed to load) we revert</span>
96
+ <span class="ruby-comment cmt"># to the 'classic mechanism</span>
97
+
98
+ <span class="ruby-comment cmt"># we can use getaddrinfo</span>
99
+ <span class="ruby-comment cmt"># no strict 'subs'; # Because of the eval statement in the BEGIN</span>
100
+ <span class="ruby-comment cmt"># AI_NUMERICHOST is not available at compile time.</span>
101
+ <span class="ruby-comment cmt"># The AI_NUMERICHOST surpresses lookups.</span>
102
+
103
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-constant">IPAddr</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">ns_address</span>).<span class="ruby-identifier">ipv6?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@force_v4</span>)
104
+ <span class="ruby-keyword kw">next</span>
105
+ <span class="ruby-keyword kw">end</span>
106
+ <span class="ruby-keyword kw">begin</span>
107
+ <span class="ruby-identifier">res</span> = <span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-identifier">getaddrinfo</span>(<span class="ruby-identifier">ns_address</span>, <span class="ruby-identifier">dstport</span>)[<span class="ruby-value">0</span>] <span class="ruby-comment cmt"># , Socket::AF_UNSPEC, Socket::SOCK_DGRAM, </span>
108
+ <span class="ruby-comment cmt"># 0, Socket::AI_NUMERICHOST)[0]</span>
109
+
110
+
111
+ <span class="ruby-identifier">sockfamily</span> = <span class="ruby-identifier">res</span>[<span class="ruby-value">0</span>]
112
+ <span class="ruby-identifier">socktype_tmp</span> = <span class="ruby-identifier">res</span>[<span class="ruby-value">1</span>]
113
+ <span class="ruby-identifier">proto_tmp</span> = <span class="ruby-identifier">res</span>[<span class="ruby-value">2</span>]
114
+ <span class="ruby-identifier">dst_sockaddr</span> = <span class="ruby-identifier">res</span>[<span class="ruby-value">3</span>]
115
+ <span class="ruby-identifier">canonname_tmp</span> = <span class="ruby-identifier">res</span>[<span class="ruby-value">4</span>]
116
+
117
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">SocketError</span>
118
+ <span class="ruby-comment cmt"># if (res.length &lt; 5)</span>
119
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>, (<span class="ruby-value str">'can\'t resolve '</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">ns_address</span> <span class="ruby-operator">+</span> <span class="ruby-value str">' to address'</span>)
120
+ <span class="ruby-keyword kw">end</span>
121
+
122
+ <span class="ruby-identifier">ns</span>.<span class="ruby-identifier">push</span>([<span class="ruby-identifier">ns_address</span>,<span class="ruby-identifier">dst_sockaddr</span>,<span class="ruby-identifier">sockfamily</span>])
123
+ <span class="ruby-keyword kw">end</span>
124
+
125
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">nameservers</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>)
126
+ <span class="ruby-identifier">print</span> <span class="ruby-value str">&quot;No nameservers&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>;
127
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-value str">'no nameservers'</span>);
128
+ <span class="ruby-keyword kw">return</span>;
129
+ <span class="ruby-keyword kw">end</span>
130
+
131
+
132
+ <span class="ruby-identifier">select</span> = []
133
+ <span class="ruby-comment cmt"># We allready tested that one of the two socket exists</span>
134
+
135
+ <span class="ruby-identifier">select</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">sock</span>[<span class="ruby-value str">'AF_INET'</span>]) <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">sock</span>[<span class="ruby-value str">'AF_INET'</span>] <span class="ruby-operator">!=</span> <span class="ruby-keyword kw">nil</span>)
136
+ <span class="ruby-identifier">select</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">sock</span>[<span class="ruby-value str">'AF_INET6'</span>]) <span class="ruby-keyword kw">if</span> ((<span class="ruby-identifier">sock</span>[<span class="ruby-value str">'AF_INET6'</span>] <span class="ruby-operator">!=</span> <span class="ruby-keyword kw">nil</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@force_v4</span>)
137
+
138
+
139
+ <span class="ruby-comment cmt"># Perform each round of retries.</span>
140
+ <span class="ruby-comment cmt"># for (i = 0</span>
141
+ <span class="ruby-comment cmt"># i &lt; @retry;</span>
142
+ <span class="ruby-comment cmt"># ++i, retrans *= 2, timeout = int(retrans / (ns.length || 1)))</span>
143
+ <span class="ruby-ivar">@retry</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
144
+
145
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">i</span><span class="ruby-operator">&gt;</span><span class="ruby-value">0</span>)
146
+ <span class="ruby-identifier">retrans</span> <span class="ruby-operator">*=</span> <span class="ruby-value">2</span>
147
+ <span class="ruby-keyword kw">end</span>
148
+ <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
149
+ <span class="ruby-identifier">timeout</span> = (<span class="ruby-identifier">retrans</span> <span class="ruby-operator">/</span> (<span class="ruby-identifier">ns</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">||</span> <span class="ruby-value">1</span>)).<span class="ruby-identifier">to_int</span>
150
+
151
+ <span class="ruby-identifier">timeout</span> = <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">timeout</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">1</span>)
152
+
153
+ <span class="ruby-comment cmt"># Try each nameserver.</span>
154
+ <span class="ruby-comment cmt"># NAMESERVER: foreach my $ns (@ns) {</span>
155
+ <span class="ruby-comment cmt"># NAMESERVER: ns.each do |nstemp|</span>
156
+ <span class="ruby-identifier">ns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">nstemp</span><span class="ruby-operator">|</span>
157
+ <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">nstemp</span>[<span class="ruby-value">3</span>]<span class="ruby-operator">!=</span><span class="ruby-keyword kw">nil</span>
158
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">stop_time</span>)
159
+ <span class="ruby-identifier">now</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
160
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">stop_time</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">now</span>)
161
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-value str">'query timed out'</span>)
162
+ <span class="ruby-keyword kw">return</span>;
163
+ <span class="ruby-keyword kw">end</span>
164
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">timeout</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">timeout</span> <span class="ruby-operator">&gt;</span> (<span class="ruby-identifier">stop_time</span><span class="ruby-operator">-</span><span class="ruby-identifier">now</span>))
165
+ <span class="ruby-identifier">timeout</span> = <span class="ruby-identifier">stop_time</span><span class="ruby-operator">-</span><span class="ruby-identifier">now</span>;
166
+ <span class="ruby-keyword kw">end</span>
167
+ <span class="ruby-keyword kw">end</span>
168
+ <span class="ruby-identifier">nsname</span> = <span class="ruby-identifier">nstemp</span>[<span class="ruby-value">0</span>]
169
+ <span class="ruby-identifier">nsaddr</span> = <span class="ruby-identifier">nstemp</span>[<span class="ruby-value">1</span>]
170
+ <span class="ruby-identifier">nssockfamily</span> = <span class="ruby-identifier">nstemp</span>[<span class="ruby-value">2</span>]
171
+
172
+ <span class="ruby-comment cmt"># If we do not have a socket for the transport</span>
173
+ <span class="ruby-comment cmt"># we are supposed to reach the namserver on we</span>
174
+ <span class="ruby-comment cmt"># should skip it.</span>
175
+ <span class="ruby-keyword kw">unless</span> ((<span class="ruby-identifier">sock</span>[ <span class="ruby-identifier">nssockfamily</span> ])<span class="ruby-operator">!=</span><span class="ruby-keyword kw">nil</span>)
176
+ <span class="ruby-identifier">print</span> <span class="ruby-node">&quot;Send error: cannot reach #{nsname} (&quot;</span> <span class="ruby-operator">+</span>
177
+ ( (<span class="ruby-identifier">nssockfamily</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'AF_INET6'</span>) <span class="ruby-operator">?</span> <span class="ruby-value str">&quot;IPv6&quot;</span> <span class="ruby-operator">:</span> <span class="ruby-value str">&quot;&quot;</span> ) <span class="ruby-operator">+</span>
178
+ ( (<span class="ruby-identifier">nssockfamily</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'AF_INET'</span>) <span class="ruby-operator">?</span> <span class="ruby-value str">&quot;IPv4&quot;</span> <span class="ruby-operator">:</span> <span class="ruby-value str">&quot;&quot;</span> ) <span class="ruby-operator">+</span>
179
+ <span class="ruby-value str">&quot;) not available&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
180
+
181
+
182
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-node">&quot;Send error: cannot reach #{nsname} (&quot;</span> <span class="ruby-operator">+</span>
183
+ ( (<span class="ruby-identifier">nssockfamily</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'AF_INET6'</span>) <span class="ruby-operator">?</span> <span class="ruby-value str">&quot;IPv6&quot;</span> <span class="ruby-operator">:</span> <span class="ruby-value str">&quot;&quot;</span> ) <span class="ruby-operator">+</span>
184
+ ( (<span class="ruby-identifier">nssockfamily</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'AF_INET'</span>) <span class="ruby-operator">?</span> <span class="ruby-value str">&quot;IPv4&quot;</span> <span class="ruby-operator">:</span> <span class="ruby-value str">&quot;&quot;</span> ) <span class="ruby-operator">+</span>
185
+ <span class="ruby-value str">&quot;) not available&quot;</span>)
186
+ <span class="ruby-keyword kw">next</span>
187
+ <span class="ruby-keyword kw">end</span>
188
+
189
+ <span class="ruby-identifier">print</span> <span class="ruby-node">&quot;;; send_udp(#{nsname}:#{dstport})\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
190
+
191
+ <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">sock</span>[<span class="ruby-identifier">nssockfamily</span>].<span class="ruby-identifier">send</span>(<span class="ruby-identifier">packet_data</span>, <span class="ruby-value">0</span>, <span class="ruby-identifier">nsaddr</span>, <span class="ruby-ivar">@port</span>))
192
+ <span class="ruby-identifier">print</span> <span class="ruby-node">&quot;;; send error: #{$!}\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
193
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-node">&quot;Send error: #{$!}&quot;</span>)
194
+ <span class="ruby-identifier">nmbrnsfailed</span><span class="ruby-operator">+=</span><span class="ruby-value">1</span>
195
+ <span class="ruby-identifier">nstemp</span>[<span class="ruby-value">3</span>]=<span class="ruby-value str">&quot;Send error&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@errorstring</span>
196
+ <span class="ruby-keyword kw">next</span>
197
+ <span class="ruby-keyword kw">end</span>
198
+
199
+ <span class="ruby-comment cmt"># See ticket 11931 but this works not quite yet</span>
200
+ <span class="ruby-identifier">oldpacket_timeout</span>=<span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span><span class="ruby-operator">+</span><span class="ruby-identifier">timeout</span>
201
+ <span class="ruby-keyword kw">while</span> ( <span class="ruby-identifier">oldpacket_timeout</span> <span class="ruby-operator">&gt;</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>)
202
+ <span class="ruby-comment cmt"># ready = sel.can_read(timeout)</span>
203
+ <span class="ruby-identifier">ready</span> = <span class="ruby-constant">IO</span>.<span class="ruby-identifier">select</span>(<span class="ruby-identifier">select</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">timeout</span>)
204
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">ready</span> <span class="ruby-operator">!=</span> <span class="ruby-keyword kw">nil</span>)
205
+ <span class="ruby-identifier">ready</span> = <span class="ruby-identifier">ready</span>[<span class="ruby-value">0</span>]
206
+ <span class="ruby-identifier">ready</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">readytemp</span><span class="ruby-operator">|</span>
207
+ <span class="ruby-identifier">buf</span> = <span class="ruby-value str">''</span>
208
+
209
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">ret</span> = <span class="ruby-identifier">readytemp</span>.<span class="ruby-identifier">recvfrom</span>(<span class="ruby-identifier">_packetsz</span>))
210
+
211
+ <span class="ruby-identifier">buf</span> = <span class="ruby-identifier">ret</span>[<span class="ruby-value">0</span>]
212
+ <span class="ruby-identifier">from</span> = <span class="ruby-identifier">ret</span>[<span class="ruby-value">1</span>]
213
+ <span class="ruby-ivar">@answerfrom</span>=(<span class="ruby-identifier">from</span>[<span class="ruby-value">2</span>])
214
+ <span class="ruby-ivar">@answersize</span>=(<span class="ruby-identifier">buf</span>.<span class="ruby-identifier">length</span>)
215
+
216
+ <span class="ruby-identifier">print</span> <span class="ruby-value str">';; answer from '</span> <span class="ruby-operator">+</span> \
217
+ <span class="ruby-identifier">from</span>[<span class="ruby-value">2</span>].<span class="ruby-identifier">inspect</span> <span class="ruby-operator">+</span> <span class="ruby-value str">':'</span> <span class="ruby-operator">+</span> \
218
+ <span class="ruby-identifier">from</span>[<span class="ruby-value">3</span>].<span class="ruby-identifier">inspect</span> <span class="ruby-operator">+</span> <span class="ruby-value str">' : '</span> <span class="ruby-operator">+</span> \
219
+ <span class="ruby-identifier">buf</span>.<span class="ruby-identifier">length</span>.<span class="ruby-identifier">inspect</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot; bytes\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
220
+
221
+ <span class="ruby-identifier">ans</span>, <span class="ruby-identifier">err</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">DNS</span><span class="ruby-operator">::</span><span class="ruby-constant">Packet</span>.<span class="ruby-identifier">new_from_binary</span>(<span class="ruby-identifier">buf</span>, <span class="ruby-ivar">@debug</span>)
222
+
223
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">ans!</span>= <span class="ruby-keyword kw">nil</span>)
224
+ <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> ( <span class="ruby-identifier">ans</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">qr</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@ignqrid</span>)
225
+ <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> ( (<span class="ruby-identifier">ans</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">packet</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">id</span>) <span class="ruby-operator">||</span> <span class="ruby-ivar">@ignqrid</span> )
226
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-identifier">ans</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">rcode</span>)
227
+ <span class="ruby-identifier">ans</span>.<span class="ruby-identifier">answerfrom</span>=(<span class="ruby-ivar">@answerfrom</span>)
228
+ <span class="ruby-identifier">ans</span>.<span class="ruby-identifier">answersize</span>=(<span class="ruby-ivar">@answersize</span>)
229
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">ans</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">rcode</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;NOERROR&quot;</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">ans</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">rcode</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;NXDOMAIN&quot;</span>)
230
+ <span class="ruby-comment cmt"># # Remove this one from the stack</span>
231
+
232
+ <span class="ruby-identifier">print</span> <span class="ruby-value str">&quot;RCODE: &quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">ans</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">rcode</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;; trying next nameserver\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
233
+ <span class="ruby-identifier">nmbrnsfailed</span><span class="ruby-operator">+=</span><span class="ruby-value">1</span>
234
+ <span class="ruby-identifier">nstemp</span>[<span class="ruby-value">3</span>]=<span class="ruby-value str">&quot;RCODE: &quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">ans</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">rcode</span>()
235
+ <span class="ruby-identifier">lastanswer</span>=<span class="ruby-identifier">ans</span>
236
+ <span class="ruby-comment cmt"># throw :nameserver</span>
237
+ <span class="ruby-keyword kw">break</span>
238
+ <span class="ruby-keyword kw">end</span>
239
+ <span class="ruby-keyword kw">elsif</span> (<span class="ruby-identifier">err</span> <span class="ruby-operator">!=</span> <span class="ruby-keyword kw">nil</span>)
240
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-identifier">err</span>)
241
+ <span class="ruby-keyword kw">end</span>
242
+
243
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">ans</span>
244
+ <span class="ruby-keyword kw">else</span>
245
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-identifier">$!</span>)
246
+ <span class="ruby-identifier">print</span> <span class="ruby-value str">';; recv ERROR('</span> <span class="ruby-operator">+</span> \
247
+ <span class="ruby-identifier">readytemp</span>.<span class="ruby-identifier">peerhost</span> <span class="ruby-operator">+</span> <span class="ruby-value str">':'</span> <span class="ruby-operator">+</span> \
248
+ <span class="ruby-identifier">readytemp</span>.<span class="ruby-identifier">peerport</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'): '</span> <span class="ruby-operator">+</span> \
249
+ <span class="ruby-ivar">@errorstring</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
250
+ <span class="ruby-identifier">nstemp</span>[<span class="ruby-value">3</span>]=<span class="ruby-value str">&quot;Recv error &quot;</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@errorstring</span>
251
+ <span class="ruby-identifier">nmbrnsfailed</span><span class="ruby-operator">+=</span><span class="ruby-value">1</span>
252
+ <span class="ruby-comment cmt"># We want to remain in the SELECTOR LOOP...</span>
253
+ <span class="ruby-comment cmt"># unless there are no more nameservers</span>
254
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">nmbrnsfailed</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">ns</span>.<span class="ruby-identifier">length</span>)
255
+ <span class="ruby-identifier">print</span> <span class="ruby-value str">';; Number of failed nameservers: #{nmbrnsfailed} out of '</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">ns</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
256
+
257
+ <span class="ruby-keyword kw">end</span>
258
+ <span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt"># not ready</span>
259
+ <span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt">#SELECTOR LOOP</span>
260
+ <span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt"># until stop_time loop</span>
261
+ <span class="ruby-comment cmt"># end # :nameserver</span>
262
+ <span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt">#NAMESERVER LOOP</span>
263
+ <span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt"># retry times</span>
264
+
265
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">lastanswer!</span>=<span class="ruby-value str">&quot;&quot;</span>)
266
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-identifier">lastanswer</span>.<span class="ruby-identifier">header</span>.<span class="ruby-identifier">rcode</span> )
267
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">lastanswer</span>
268
+ <span class="ruby-keyword kw">end</span>
269
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">select</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>)
270
+ <span class="ruby-comment cmt"># If there are valid handles then we have either a timeout or </span>
271
+ <span class="ruby-comment cmt"># a send error.</span>
272
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-value str">'query timed out'</span>) <span class="ruby-keyword kw">unless</span> (<span class="ruby-ivar">@errorstring</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/Send error:/</span>)
273
+ <span class="ruby-keyword kw">else</span>
274
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">nmbrnsfailed</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">ns</span>.<span class="ruby-identifier">length</span>)
275
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-value str">'Unexpected Error'</span>) ;
276
+ <span class="ruby-keyword kw">else</span>
277
+ <span class="ruby-ivar">@errorstring</span>=(<span class="ruby-value str">'all nameservers failed'</span>);
278
+ <span class="ruby-keyword kw">end</span>
279
+ <span class="ruby-keyword kw">end</span>
280
+ <span class="ruby-keyword kw">return</span>
281
+ <span class="ruby-keyword kw">end</span></pre>
282
+ </body>
283
+ </html>