pNet-DNS 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README +0 -20
- data/doc/classes/ConfigTable.html +500 -0
- data/doc/classes/ConfigTable.src/M000013.html +25 -0
- data/doc/classes/ConfigTable.src/M000014.html +18 -0
- data/doc/classes/ConfigTable.src/M000015.html +18 -0
- data/doc/classes/ConfigTable.src/M000016.html +18 -0
- data/doc/classes/ConfigTable.src/M000017.html +18 -0
- data/doc/classes/ConfigTable.src/M000018.html +18 -0
- data/doc/classes/ConfigTable.src/M000019.html +18 -0
- data/doc/classes/ConfigTable.src/M000020.html +18 -0
- data/doc/classes/ConfigTable.src/M000021.html +18 -0
- data/doc/classes/ConfigTable.src/M000022.html +19 -0
- data/doc/classes/ConfigTable.src/M000023.html +21 -0
- data/doc/classes/ConfigTable.src/M000024.html +20 -0
- data/doc/classes/ConfigTable.src/M000025.html +18 -0
- data/doc/classes/ConfigTable.src/M000026.html +25 -0
- data/doc/classes/ConfigTable.src/M000027.html +23 -0
- data/doc/classes/ConfigTable.src/M000028.html +20 -0
- data/doc/classes/ConfigTable.src/M000029.html +20 -0
- data/doc/classes/ConfigTable.src/M000030.html +23 -0
- data/doc/classes/ConfigTable.src/M000031.html +19 -0
- data/doc/classes/ConfigTable.src/M000032.html +18 -0
- data/doc/classes/ConfigTable.src/M000033.html +18 -0
- data/doc/classes/ConfigTable/BoolItem.html +154 -0
- data/doc/classes/ConfigTable/BoolItem.src/M000034.html +18 -0
- data/doc/classes/ConfigTable/BoolItem.src/M000035.html +18 -0
- data/doc/classes/ConfigTable/ExecItem.html +201 -0
- data/doc/classes/ConfigTable/ExecItem.src/M000053.html +20 -0
- data/doc/classes/ConfigTable/ExecItem.src/M000054.html +18 -0
- data/doc/classes/ConfigTable/ExecItem.src/M000055.html +18 -0
- data/doc/classes/ConfigTable/ExecItem.src/M000056.html +18 -0
- data/doc/classes/ConfigTable/ExecItem.src/M000057.html +22 -0
- data/doc/classes/ConfigTable/Item.html +250 -0
- data/doc/classes/ConfigTable/Item.src/M000060.html +22 -0
- data/doc/classes/ConfigTable/Item.src/M000061.html +18 -0
- data/doc/classes/ConfigTable/Item.src/M000062.html +18 -0
- data/doc/classes/ConfigTable/Item.src/M000063.html +18 -0
- data/doc/classes/ConfigTable/Item.src/M000064.html +18 -0
- data/doc/classes/ConfigTable/Item.src/M000065.html +18 -0
- data/doc/classes/ConfigTable/MetaConfigEnvironment.html +325 -0
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000040.html +19 -0
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000041.html +18 -0
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000042.html +18 -0
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000043.html +18 -0
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000044.html +18 -0
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000045.html +18 -0
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000046.html +18 -0
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000047.html +18 -0
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000048.html +18 -0
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000049.html +18 -0
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000050.html +18 -0
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000051.html +19 -0
- data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000052.html +19 -0
- data/doc/classes/ConfigTable/PackageSelectionItem.html +169 -0
- data/doc/classes/ConfigTable/PackageSelectionItem.src/M000038.html +19 -0
- data/doc/classes/ConfigTable/PackageSelectionItem.src/M000039.html +18 -0
- data/doc/classes/ConfigTable/PathItem.html +139 -0
- data/doc/classes/ConfigTable/PathItem.src/M000037.html +18 -0
- data/doc/classes/ConfigTable/ProgramItem.html +139 -0
- data/doc/classes/ConfigTable/ProgramItem.src/M000036.html +18 -0
- data/doc/classes/ConfigTable/SelectItem.html +156 -0
- data/doc/classes/ConfigTable/SelectItem.src/M000058.html +19 -0
- data/doc/classes/ConfigTable/SelectItem.src/M000059.html +18 -0
- data/doc/classes/Enumerable.html +118 -0
- data/doc/classes/Errno.html +111 -0
- data/doc/classes/Errno/ENOTEMPTY.html +111 -0
- data/doc/classes/File.html +166 -0
- data/doc/classes/File.src/M000223.html +20 -0
- data/doc/classes/File.src/M000224.html +20 -0
- data/doc/classes/File.src/M000225.html +18 -0
- data/doc/classes/FileOperations.html +375 -0
- data/doc/classes/FileOperations.src/M000560.html +31 -0
- data/doc/classes/FileOperations.src/M000561.html +20 -0
- data/doc/classes/FileOperations.src/M000562.html +20 -0
- data/doc/classes/FileOperations.src/M000563.html +24 -0
- data/doc/classes/FileOperations.src/M000564.html +34 -0
- data/doc/classes/FileOperations.src/M000565.html +27 -0
- data/doc/classes/FileOperations.src/M000566.html +21 -0
- data/doc/classes/FileOperations.src/M000567.html +19 -0
- data/doc/classes/FileOperations.src/M000568.html +40 -0
- data/doc/classes/FileOperations.src/M000569.html +19 -0
- data/doc/classes/FileOperations.src/M000570.html +20 -0
- data/doc/classes/FileOperations.src/M000571.html +18 -0
- data/doc/classes/FileOperations.src/M000572.html +18 -0
- data/doc/classes/FileOperations.src/M000573.html +18 -0
- data/doc/classes/FileOperations.src/M000574.html +20 -0
- data/doc/classes/FileOperations.src/M000575.html +20 -0
- data/doc/classes/HookScriptAPI.html +308 -0
- data/doc/classes/HookScriptAPI.src/M000226.html +18 -0
- data/doc/classes/HookScriptAPI.src/M000228.html +18 -0
- data/doc/classes/HookScriptAPI.src/M000229.html +18 -0
- data/doc/classes/HookScriptAPI.src/M000230.html +18 -0
- data/doc/classes/HookScriptAPI.src/M000231.html +18 -0
- data/doc/classes/HookScriptAPI.src/M000232.html +18 -0
- data/doc/classes/HookScriptAPI.src/M000233.html +18 -0
- data/doc/classes/HookScriptAPI.src/M000234.html +18 -0
- data/doc/classes/HookScriptAPI.src/M000235.html +20 -0
- data/doc/classes/HookScriptAPI.src/M000236.html +20 -0
- data/doc/classes/HookScriptAPI.src/M000237.html +20 -0
- data/doc/classes/Installer.html +1148 -0
- data/doc/classes/Installer.src/M000140.html +21 -0
- data/doc/classes/Installer.src/M000141.html +18 -0
- data/doc/classes/Installer.src/M000142.html +17 -0
- data/doc/classes/Installer.src/M000143.html +18 -0
- data/doc/classes/Installer.src/M000144.html +18 -0
- data/doc/classes/Installer.src/M000145.html +18 -0
- data/doc/classes/Installer.src/M000146.html +18 -0
- data/doc/classes/Installer.src/M000147.html +18 -0
- data/doc/classes/Installer.src/M000148.html +23 -0
- data/doc/classes/Installer.src/M000149.html +18 -0
- data/doc/classes/Installer.src/M000152.html +18 -0
- data/doc/classes/Installer.src/M000156.html +18 -0
- data/doc/classes/Installer.src/M000157.html +18 -0
- data/doc/classes/Installer.src/M000158.html +20 -0
- data/doc/classes/Installer.src/M000160.html +18 -0
- data/doc/classes/Installer.src/M000164.html +36 -0
- data/doc/classes/Installer.src/M000165.html +25 -0
- data/doc/classes/Installer.src/M000166.html +24 -0
- data/doc/classes/Installer.src/M000167.html +19 -0
- data/doc/classes/Installer.src/M000168.html +18 -0
- data/doc/classes/Installer.src/M000169.html +18 -0
- data/doc/classes/Installer.src/M000170.html +21 -0
- data/doc/classes/Installer.src/M000171.html +18 -0
- data/doc/classes/Installer.src/M000172.html +20 -0
- data/doc/classes/Installer.src/M000173.html +18 -0
- data/doc/classes/Installer.src/M000174.html +21 -0
- data/doc/classes/Installer.src/M000175.html +18 -0
- data/doc/classes/Installer.src/M000176.html +22 -0
- data/doc/classes/Installer.src/M000177.html +18 -0
- data/doc/classes/Installer.src/M000178.html +23 -0
- data/doc/classes/Installer.src/M000179.html +18 -0
- data/doc/classes/Installer.src/M000180.html +20 -0
- data/doc/classes/Installer.src/M000181.html +19 -0
- data/doc/classes/Installer.src/M000182.html +19 -0
- data/doc/classes/Installer.src/M000183.html +20 -0
- data/doc/classes/Installer.src/M000184.html +30 -0
- data/doc/classes/Installer.src/M000185.html +20 -0
- data/doc/classes/Installer.src/M000191.html +19 -0
- data/doc/classes/Installer.src/M000192.html +20 -0
- data/doc/classes/Installer.src/M000195.html +19 -0
- data/doc/classes/Installer.src/M000199.html +26 -0
- data/doc/classes/Installer.src/M000200.html +25 -0
- data/doc/classes/Installer.src/M000201.html +29 -0
- data/doc/classes/Installer.src/M000202.html +26 -0
- data/doc/classes/Installer/Shebang.html +202 -0
- data/doc/classes/Installer/Shebang.src/M000203.html +23 -0
- data/doc/classes/Installer/Shebang.src/M000204.html +19 -0
- data/doc/classes/Installer/Shebang.src/M000205.html +19 -0
- data/doc/classes/Installer/Shebang.src/M000206.html +18 -0
- data/doc/classes/Net.html +295 -0
- data/doc/classes/Net/DNS.html +1139 -0
- data/doc/classes/Net/DNS.src/M000238.html +34 -0
- data/doc/classes/Net/DNS.src/M000239.html +40 -0
- data/doc/classes/Net/DNS.src/M000240.html +32 -0
- data/doc/classes/Net/DNS.src/M000241.html +30 -0
- data/doc/classes/Net/DNS.src/M000242.html +39 -0
- data/doc/classes/Net/DNS.src/M000243.html +18 -0
- data/doc/classes/Net/DNS.src/M000244.html +18 -0
- data/doc/classes/Net/DNS.src/M000245.html +18 -0
- data/doc/classes/Net/DNS.src/M000246.html +18 -0
- data/doc/classes/Net/DNS.src/M000247.html +18 -0
- data/doc/classes/Net/DNS.src/M000248.html +18 -0
- data/doc/classes/Net/DNS.src/M000249.html +25 -0
- data/doc/classes/Net/DNS.src/M000250.html +52 -0
- data/doc/classes/Net/DNS.src/M000251.html +71 -0
- data/doc/classes/Net/DNS.src/M000252.html +50 -0
- data/doc/classes/Net/DNS/Header.html +510 -0
- data/doc/classes/Net/DNS/Header.src/M000511.html +22 -0
- data/doc/classes/Net/DNS/Header.src/M000512.html +72 -0
- data/doc/classes/Net/DNS/Header.src/M000513.html +47 -0
- data/doc/classes/Net/DNS/Header.src/M000514.html +25 -0
- data/doc/classes/Net/DNS/Header.src/M000515.html +37 -0
- data/doc/classes/Net/DNS/Nameserver.html +285 -0
- data/doc/classes/Net/DNS/Nameserver.src/M000516.html +100 -0
- data/doc/classes/Net/DNS/Nameserver.src/M000517.html +86 -0
- data/doc/classes/Net/DNS/Nameserver.src/M000518.html +32 -0
- data/doc/classes/Net/DNS/Nameserver.src/M000519.html +80 -0
- data/doc/classes/Net/DNS/Nameserver.src/M000520.html +33 -0
- data/doc/classes/Net/DNS/Nameserver.src/M000521.html +18 -0
- data/doc/classes/Net/DNS/Nameserver.src/M000522.html +88 -0
- data/doc/classes/Net/DNS/Nameserver.src/M000523.html +23 -0
- data/doc/classes/Net/DNS/Packet.html +774 -0
- data/doc/classes/Net/DNS/Packet.src/M000485.html +27 -0
- data/doc/classes/Net/DNS/Packet.src/M000486.html +158 -0
- data/doc/classes/Net/DNS/Packet.src/M000487.html +21 -0
- data/doc/classes/Net/DNS/Packet.src/M000488.html +85 -0
- data/doc/classes/Net/DNS/Packet.src/M000489.html +54 -0
- data/doc/classes/Net/DNS/Packet.src/M000490.html +58 -0
- data/doc/classes/Net/DNS/Packet.src/M000491.html +26 -0
- data/doc/classes/Net/DNS/Packet.src/M000492.html +53 -0
- data/doc/classes/Net/DNS/Packet.src/M000493.html +51 -0
- data/doc/classes/Net/DNS/Packet.src/M000494.html +24 -0
- data/doc/classes/Net/DNS/Packet.src/M000495.html +56 -0
- data/doc/classes/Net/DNS/Packet.src/M000496.html +30 -0
- data/doc/classes/Net/DNS/Packet.src/M000497.html +40 -0
- data/doc/classes/Net/DNS/Packet.src/M000498.html +31 -0
- data/doc/classes/Net/DNS/Packet.src/M000499.html +47 -0
- data/doc/classes/Net/DNS/Packet.src/M000500.html +21 -0
- data/doc/classes/Net/DNS/Packet.src/M000501.html +21 -0
- data/doc/classes/Net/DNS/Packet.src/M000502.html +21 -0
- data/doc/classes/Net/DNS/Packet.src/M000503.html +21 -0
- data/doc/classes/Net/DNS/Packet.src/M000504.html +21 -0
- data/doc/classes/Net/DNS/Question.html +302 -0
- data/doc/classes/Net/DNS/Question.src/M000505.html +42 -0
- data/doc/classes/Net/DNS/Question.src/M000506.html +18 -0
- data/doc/classes/Net/DNS/Question.src/M000507.html +23 -0
- data/doc/classes/Net/DNS/Question.src/M000508.html +18 -0
- data/doc/classes/Net/DNS/Question.src/M000509.html +18 -0
- data/doc/classes/Net/DNS/Question.src/M000510.html +18 -0
- data/doc/classes/Net/DNS/RR.html +830 -0
- data/doc/classes/Net/DNS/RR.src/M000253.html +32 -0
- data/doc/classes/Net/DNS/RR.src/M000254.html +29 -0
- data/doc/classes/Net/DNS/RR.src/M000255.html +24 -0
- data/doc/classes/Net/DNS/RR.src/M000256.html +32 -0
- data/doc/classes/Net/DNS/RR.src/M000257.html +39 -0
- data/doc/classes/Net/DNS/RR.src/M000258.html +135 -0
- data/doc/classes/Net/DNS/RR.src/M000259.html +18 -0
- data/doc/classes/Net/DNS/RR.src/M000260.html +19 -0
- data/doc/classes/Net/DNS/RR.src/M000261.html +26 -0
- data/doc/classes/Net/DNS/RR.src/M000262.html +18 -0
- data/doc/classes/Net/DNS/RR.src/M000263.html +59 -0
- data/doc/classes/Net/DNS/RR.src/M000264.html +36 -0
- data/doc/classes/Net/DNS/RR.src/M000265.html +20 -0
- data/doc/classes/Net/DNS/RR.src/M000266.html +18 -0
- data/doc/classes/Net/DNS/RR.src/M000267.html +27 -0
- data/doc/classes/Net/DNS/RR.src/M000268.html +31 -0
- data/doc/classes/Net/DNS/RR.src/M000269.html +19 -0
- data/doc/classes/Net/DNS/RR.src/M000270.html +18 -0
- data/doc/classes/Net/DNS/RR.src/M000271.html +18 -0
- data/doc/classes/Net/DNS/RR.src/M000272.html +35 -0
- data/doc/classes/Net/DNS/RR/A.html +311 -0
- data/doc/classes/Net/DNS/RR/A.src/M000314.html +18 -0
- data/doc/classes/Net/DNS/RR/A.src/M000315.html +19 -0
- data/doc/classes/Net/DNS/RR/A.src/M000316.html +18 -0
- data/doc/classes/Net/DNS/RR/A.src/M000317.html +19 -0
- data/doc/classes/Net/DNS/RR/A.src/M000318.html +29 -0
- data/doc/classes/Net/DNS/RR/A.src/M000319.html +22 -0
- data/doc/classes/Net/DNS/RR/A.src/M000320.html +20 -0
- data/doc/classes/Net/DNS/RR/A.src/M000321.html +18 -0
- data/doc/classes/Net/DNS/RR/A.src/M000322.html +22 -0
- data/doc/classes/Net/DNS/RR/AAAA.html +291 -0
- data/doc/classes/Net/DNS/RR/AAAA.src/M000366.html +24 -0
- data/doc/classes/Net/DNS/RR/AAAA.src/M000367.html +54 -0
- data/doc/classes/Net/DNS/RR/AAAA.src/M000368.html +20 -0
- data/doc/classes/Net/DNS/RR/AAAA.src/M000369.html +18 -0
- data/doc/classes/Net/DNS/RR/AAAA.src/M000370.html +24 -0
- data/doc/classes/Net/DNS/RR/AAAA.src/M000371.html +24 -0
- data/doc/classes/Net/DNS/RR/AAAA.src/M000372.html +23 -0
- data/doc/classes/Net/DNS/RR/AFSDB.html +278 -0
- data/doc/classes/Net/DNS/RR/AFSDB.src/M000308.html +24 -0
- data/doc/classes/Net/DNS/RR/AFSDB.src/M000309.html +22 -0
- data/doc/classes/Net/DNS/RR/AFSDB.src/M000310.html +23 -0
- data/doc/classes/Net/DNS/RR/AFSDB.src/M000311.html +22 -0
- data/doc/classes/Net/DNS/RR/AFSDB.src/M000312.html +25 -0
- data/doc/classes/Net/DNS/RR/AFSDB.src/M000313.html +24 -0
- data/doc/classes/Net/DNS/RR/CERT.html +313 -0
- data/doc/classes/Net/DNS/RR/CERT.src/M000361.html +30 -0
- data/doc/classes/Net/DNS/RR/CERT.src/M000362.html +29 -0
- data/doc/classes/Net/DNS/RR/CERT.src/M000363.html +48 -0
- data/doc/classes/Net/DNS/RR/CERT.src/M000364.html +39 -0
- data/doc/classes/Net/DNS/RR/CERT.src/M000365.html +26 -0
- data/doc/classes/Net/DNS/RR/CNAME.html +271 -0
- data/doc/classes/Net/DNS/RR/CNAME.src/M000339.html +20 -0
- data/doc/classes/Net/DNS/RR/CNAME.src/M000340.html +21 -0
- data/doc/classes/Net/DNS/RR/CNAME.src/M000341.html +20 -0
- data/doc/classes/Net/DNS/RR/CNAME.src/M000342.html +18 -0
- data/doc/classes/Net/DNS/RR/CNAME.src/M000343.html +24 -0
- data/doc/classes/Net/DNS/RR/CNAME.src/M000344.html +18 -0
- data/doc/classes/Net/DNS/RR/DNAME.html +253 -0
- data/doc/classes/Net/DNS/RR/DNAME.src/M000356.html +20 -0
- data/doc/classes/Net/DNS/RR/DNAME.src/M000357.html +20 -0
- data/doc/classes/Net/DNS/RR/DNAME.src/M000358.html +21 -0
- data/doc/classes/Net/DNS/RR/DNAME.src/M000359.html +18 -0
- data/doc/classes/Net/DNS/RR/DNAME.src/M000360.html +24 -0
- data/doc/classes/Net/DNS/RR/EID.html +218 -0
- data/doc/classes/Net/DNS/RR/EID.src/M000298.html +17 -0
- data/doc/classes/Net/DNS/RR/EID.src/M000299.html +17 -0
- data/doc/classes/Net/DNS/RR/EID.src/M000300.html +17 -0
- data/doc/classes/Net/DNS/RR/HINFO.html +264 -0
- data/doc/classes/Net/DNS/RR/HINFO.src/M000351.html +31 -0
- data/doc/classes/Net/DNS/RR/HINFO.src/M000352.html +21 -0
- data/doc/classes/Net/DNS/RR/HINFO.src/M000353.html +23 -0
- data/doc/classes/Net/DNS/RR/HINFO.src/M000354.html +18 -0
- data/doc/classes/Net/DNS/RR/HINFO.src/M000355.html +28 -0
- data/doc/classes/Net/DNS/RR/ISDN.html +263 -0
- data/doc/classes/Net/DNS/RR/ISDN.src/M000471.html +34 -0
- data/doc/classes/Net/DNS/RR/ISDN.src/M000472.html +27 -0
- data/doc/classes/Net/DNS/RR/ISDN.src/M000473.html +23 -0
- data/doc/classes/Net/DNS/RR/ISDN.src/M000474.html +18 -0
- data/doc/classes/Net/DNS/RR/ISDN.src/M000475.html +30 -0
- data/doc/classes/Net/DNS/RR/LOC.html +516 -0
- data/doc/classes/Net/DNS/RR/LOC.src/M000287.html +48 -0
- data/doc/classes/Net/DNS/RR/LOC.src/M000288.html +46 -0
- data/doc/classes/Net/DNS/RR/LOC.src/M000289.html +59 -0
- data/doc/classes/Net/DNS/RR/LOC.src/M000290.html +47 -0
- data/doc/classes/Net/DNS/RR/LOC.src/M000291.html +30 -0
- data/doc/classes/Net/DNS/RR/LOC.src/M000292.html +20 -0
- data/doc/classes/Net/DNS/RR/LOC.src/M000293.html +23 -0
- data/doc/classes/Net/DNS/RR/LOC.src/M000294.html +32 -0
- data/doc/classes/Net/DNS/RR/LOC.src/M000295.html +23 -0
- data/doc/classes/Net/DNS/RR/LOC.src/M000296.html +25 -0
- data/doc/classes/Net/DNS/RR/LOC.src/M000297.html +21 -0
- data/doc/classes/Net/DNS/RR/MB.html +267 -0
- data/doc/classes/Net/DNS/RR/MB.src/M000479.html +20 -0
- data/doc/classes/Net/DNS/RR/MB.src/M000480.html +21 -0
- data/doc/classes/Net/DNS/RR/MB.src/M000481.html +20 -0
- data/doc/classes/Net/DNS/RR/MB.src/M000482.html +18 -0
- data/doc/classes/Net/DNS/RR/MB.src/M000483.html +24 -0
- data/doc/classes/Net/DNS/RR/MB.src/M000484.html +22 -0
- data/doc/classes/Net/DNS/RR/MG.html +267 -0
- data/doc/classes/Net/DNS/RR/MG.src/M000345.html +20 -0
- data/doc/classes/Net/DNS/RR/MG.src/M000346.html +21 -0
- data/doc/classes/Net/DNS/RR/MG.src/M000347.html +20 -0
- data/doc/classes/Net/DNS/RR/MG.src/M000348.html +22 -0
- data/doc/classes/Net/DNS/RR/MG.src/M000349.html +24 -0
- data/doc/classes/Net/DNS/RR/MG.src/M000350.html +22 -0
- data/doc/classes/Net/DNS/RR/MINFO.html +280 -0
- data/doc/classes/Net/DNS/RR/MINFO.src/M000465.html +21 -0
- data/doc/classes/Net/DNS/RR/MINFO.src/M000466.html +23 -0
- data/doc/classes/Net/DNS/RR/MINFO.src/M000467.html +23 -0
- data/doc/classes/Net/DNS/RR/MINFO.src/M000468.html +18 -0
- data/doc/classes/Net/DNS/RR/MINFO.src/M000469.html +26 -0
- data/doc/classes/Net/DNS/RR/MINFO.src/M000470.html +25 -0
- data/doc/classes/Net/DNS/RR/MR.html +267 -0
- data/doc/classes/Net/DNS/RR/MR.src/M000400.html +20 -0
- data/doc/classes/Net/DNS/RR/MR.src/M000401.html +21 -0
- data/doc/classes/Net/DNS/RR/MR.src/M000402.html +20 -0
- data/doc/classes/Net/DNS/RR/MR.src/M000403.html +18 -0
- data/doc/classes/Net/DNS/RR/MR.src/M000404.html +24 -0
- data/doc/classes/Net/DNS/RR/MR.src/M000405.html +22 -0
- data/doc/classes/Net/DNS/RR/MX.html +296 -0
- data/doc/classes/Net/DNS/RR/MX.src/M000280.html +21 -0
- data/doc/classes/Net/DNS/RR/MX.src/M000281.html +23 -0
- data/doc/classes/Net/DNS/RR/MX.src/M000282.html +23 -0
- data/doc/classes/Net/DNS/RR/MX.src/M000283.html +23 -0
- data/doc/classes/Net/DNS/RR/MX.src/M000284.html +22 -0
- data/doc/classes/Net/DNS/RR/MX.src/M000285.html +25 -0
- data/doc/classes/Net/DNS/RR/MX.src/M000286.html +25 -0
- data/doc/classes/Net/DNS/RR/NAPTR.html +330 -0
- data/doc/classes/Net/DNS/RR/NAPTR.src/M000459.html +20 -0
- data/doc/classes/Net/DNS/RR/NAPTR.src/M000460.html +42 -0
- data/doc/classes/Net/DNS/RR/NAPTR.src/M000461.html +27 -0
- data/doc/classes/Net/DNS/RR/NAPTR.src/M000462.html +35 -0
- data/doc/classes/Net/DNS/RR/NAPTR.src/M000463.html +26 -0
- data/doc/classes/Net/DNS/RR/NAPTR.src/M000464.html +36 -0
- data/doc/classes/Net/DNS/RR/NIMLOC.html +219 -0
- data/doc/classes/Net/DNS/RR/NIMLOC.src/M000336.html +17 -0
- data/doc/classes/Net/DNS/RR/NIMLOC.src/M000337.html +17 -0
- data/doc/classes/Net/DNS/RR/NIMLOC.src/M000338.html +17 -0
- data/doc/classes/Net/DNS/RR/NS.html +273 -0
- data/doc/classes/Net/DNS/RR/NS.src/M000394.html +20 -0
- data/doc/classes/Net/DNS/RR/NS.src/M000395.html +21 -0
- data/doc/classes/Net/DNS/RR/NS.src/M000396.html +20 -0
- data/doc/classes/Net/DNS/RR/NS.src/M000397.html +22 -0
- data/doc/classes/Net/DNS/RR/NS.src/M000398.html +24 -0
- data/doc/classes/Net/DNS/RR/NS.src/M000399.html +20 -0
- data/doc/classes/Net/DNS/RR/NSAP.html +420 -0
- data/doc/classes/Net/DNS/RR/NSAP.src/M000450.html +60 -0
- data/doc/classes/Net/DNS/RR/NSAP.src/M000451.html +44 -0
- data/doc/classes/Net/DNS/RR/NSAP.src/M000452.html +25 -0
- data/doc/classes/Net/DNS/RR/NSAP.src/M000453.html +19 -0
- data/doc/classes/Net/DNS/RR/NSAP.src/M000454.html +19 -0
- data/doc/classes/Net/DNS/RR/NSAP.src/M000455.html +22 -0
- data/doc/classes/Net/DNS/RR/NSAP.src/M000456.html +30 -0
- data/doc/classes/Net/DNS/RR/NSAP.src/M000457.html +37 -0
- data/doc/classes/Net/DNS/RR/NSAP.src/M000458.html +31 -0
- data/doc/classes/Net/DNS/RR/NULL.html +215 -0
- data/doc/classes/Net/DNS/RR/NULL.src/M000423.html +17 -0
- data/doc/classes/Net/DNS/RR/NULL.src/M000424.html +17 -0
- data/doc/classes/Net/DNS/RR/NULL.src/M000425.html +17 -0
- data/doc/classes/Net/DNS/RR/OPT.html +448 -0
- data/doc/classes/Net/DNS/RR/OPT.src/M000439.html +30 -0
- data/doc/classes/Net/DNS/RR/OPT.src/M000440.html +20 -0
- data/doc/classes/Net/DNS/RR/OPT.src/M000441.html +50 -0
- data/doc/classes/Net/DNS/RR/OPT.src/M000442.html +21 -0
- data/doc/classes/Net/DNS/RR/OPT.src/M000443.html +18 -0
- data/doc/classes/Net/DNS/RR/OPT.src/M000444.html +25 -0
- data/doc/classes/Net/DNS/RR/OPT.src/M000445.html +18 -0
- data/doc/classes/Net/DNS/RR/OPT.src/M000446.html +18 -0
- data/doc/classes/Net/DNS/RR/OPT.src/M000447.html +18 -0
- data/doc/classes/Net/DNS/RR/OPT.src/M000448.html +21 -0
- data/doc/classes/Net/DNS/RR/OPT.src/M000449.html +18 -0
- data/doc/classes/Net/DNS/RR/PTR.html +264 -0
- data/doc/classes/Net/DNS/RR/PTR.src/M000330.html +20 -0
- data/doc/classes/Net/DNS/RR/PTR.src/M000331.html +21 -0
- data/doc/classes/Net/DNS/RR/PTR.src/M000332.html +20 -0
- data/doc/classes/Net/DNS/RR/PTR.src/M000333.html +19 -0
- data/doc/classes/Net/DNS/RR/PTR.src/M000334.html +24 -0
- data/doc/classes/Net/DNS/RR/PTR.src/M000335.html +24 -0
- data/doc/classes/Net/DNS/RR/PX.html +306 -0
- data/doc/classes/Net/DNS/RR/PX.src/M000432.html +19 -0
- data/doc/classes/Net/DNS/RR/PX.src/M000433.html +24 -0
- data/doc/classes/Net/DNS/RR/PX.src/M000434.html +24 -0
- data/doc/classes/Net/DNS/RR/PX.src/M000435.html +26 -0
- data/doc/classes/Net/DNS/RR/PX.src/M000436.html +18 -0
- data/doc/classes/Net/DNS/RR/PX.src/M000437.html +28 -0
- data/doc/classes/Net/DNS/RR/PX.src/M000438.html +26 -0
- data/doc/classes/Net/DNS/RR/RP.html +280 -0
- data/doc/classes/Net/DNS/RR/RP.src/M000426.html +21 -0
- data/doc/classes/Net/DNS/RR/RP.src/M000427.html +23 -0
- data/doc/classes/Net/DNS/RR/RP.src/M000428.html +23 -0
- data/doc/classes/Net/DNS/RR/RP.src/M000429.html +18 -0
- data/doc/classes/Net/DNS/RR/RP.src/M000430.html +25 -0
- data/doc/classes/Net/DNS/RR/RP.src/M000431.html +24 -0
- data/doc/classes/Net/DNS/RR/RT.html +292 -0
- data/doc/classes/Net/DNS/RR/RT.src/M000323.html +21 -0
- data/doc/classes/Net/DNS/RR/RT.src/M000324.html +23 -0
- data/doc/classes/Net/DNS/RR/RT.src/M000325.html +23 -0
- data/doc/classes/Net/DNS/RR/RT.src/M000326.html +22 -0
- data/doc/classes/Net/DNS/RR/RT.src/M000327.html +18 -0
- data/doc/classes/Net/DNS/RR/RT.src/M000328.html +25 -0
- data/doc/classes/Net/DNS/RR/RT.src/M000329.html +25 -0
- data/doc/classes/Net/DNS/RR/SOA.html +350 -0
- data/doc/classes/Net/DNS/RR/SOA.src/M000387.html +23 -0
- data/doc/classes/Net/DNS/RR/SOA.src/M000388.html +38 -0
- data/doc/classes/Net/DNS/RR/SOA.src/M000389.html +35 -0
- data/doc/classes/Net/DNS/RR/SOA.src/M000390.html +22 -0
- data/doc/classes/Net/DNS/RR/SOA.src/M000391.html +31 -0
- data/doc/classes/Net/DNS/RR/SOA.src/M000392.html +30 -0
- data/doc/classes/Net/DNS/RR/SOA.src/M000393.html +29 -0
- data/doc/classes/Net/DNS/RR/SPF.html +149 -0
- data/doc/classes/Net/DNS/RR/SRV.html +315 -0
- data/doc/classes/Net/DNS/RR/SRV.src/M000301.html +27 -0
- data/doc/classes/Net/DNS/RR/SRV.src/M000302.html +26 -0
- data/doc/classes/Net/DNS/RR/SRV.src/M000303.html +29 -0
- data/doc/classes/Net/DNS/RR/SRV.src/M000304.html +25 -0
- data/doc/classes/Net/DNS/RR/SRV.src/M000305.html +25 -0
- data/doc/classes/Net/DNS/RR/SRV.src/M000306.html +25 -0
- data/doc/classes/Net/DNS/RR/SRV.src/M000307.html +25 -0
- data/doc/classes/Net/DNS/RR/SSHFP.html +343 -0
- data/doc/classes/Net/DNS/RR/SSHFP.src/M000416.html +36 -0
- data/doc/classes/Net/DNS/RR/SSHFP.src/M000417.html +27 -0
- data/doc/classes/Net/DNS/RR/SSHFP.src/M000418.html +29 -0
- data/doc/classes/Net/DNS/RR/SSHFP.src/M000419.html +24 -0
- data/doc/classes/Net/DNS/RR/SSHFP.src/M000420.html +22 -0
- data/doc/classes/Net/DNS/RR/SSHFP.src/M000421.html +22 -0
- data/doc/classes/Net/DNS/RR/SSHFP.src/M000422.html +18 -0
- data/doc/classes/Net/DNS/RR/TKEY.html +377 -0
- data/doc/classes/Net/DNS/RR/TKEY.src/M000273.html +38 -0
- data/doc/classes/Net/DNS/RR/TKEY.src/M000274.html +45 -0
- data/doc/classes/Net/DNS/RR/TKEY.src/M000275.html +22 -0
- data/doc/classes/Net/DNS/RR/TKEY.src/M000276.html +24 -0
- data/doc/classes/Net/DNS/RR/TKEY.src/M000277.html +25 -0
- data/doc/classes/Net/DNS/RR/TKEY.src/M000278.html +32 -0
- data/doc/classes/Net/DNS/RR/TKEY.src/M000279.html +31 -0
- data/doc/classes/Net/DNS/RR/TSIG.html +516 -0
- data/doc/classes/Net/DNS/RR/TSIG.src/M000406.html +51 -0
- data/doc/classes/Net/DNS/RR/TSIG.src/M000407.html +37 -0
- data/doc/classes/Net/DNS/RR/TSIG.src/M000408.html +23 -0
- data/doc/classes/Net/DNS/RR/TSIG.src/M000409.html +43 -0
- data/doc/classes/Net/DNS/RR/TSIG.src/M000410.html +25 -0
- data/doc/classes/Net/DNS/RR/TSIG.src/M000411.html +18 -0
- data/doc/classes/Net/DNS/RR/TSIG.src/M000412.html +19 -0
- data/doc/classes/Net/DNS/RR/TSIG.src/M000413.html +32 -0
- data/doc/classes/Net/DNS/RR/TSIG.src/M000414.html +52 -0
- data/doc/classes/Net/DNS/RR/TSIG.src/M000415.html +41 -0
- data/doc/classes/Net/DNS/RR/TXT.html +345 -0
- data/doc/classes/Net/DNS/RR/TXT.src/M000378.html +32 -0
- data/doc/classes/Net/DNS/RR/TXT.src/M000379.html +20 -0
- data/doc/classes/Net/DNS/RR/TXT.src/M000380.html +18 -0
- data/doc/classes/Net/DNS/RR/TXT.src/M000381.html +18 -0
- data/doc/classes/Net/DNS/RR/TXT.src/M000382.html +25 -0
- data/doc/classes/Net/DNS/RR/TXT.src/M000383.html +18 -0
- data/doc/classes/Net/DNS/RR/TXT.src/M000384.html +27 -0
- data/doc/classes/Net/DNS/RR/TXT.src/M000385.html +22 -0
- data/doc/classes/Net/DNS/RR/TXT.src/M000386.html +26 -0
- data/doc/classes/Net/DNS/RR/UNKNOWN.html +199 -0
- data/doc/classes/Net/DNS/RR/UNKNOWN.src/M000476.html +18 -0
- data/doc/classes/Net/DNS/RR/UNKNOWN.src/M000477.html +22 -0
- data/doc/classes/Net/DNS/RR/UNKNOWN.src/M000478.html +30 -0
- data/doc/classes/Net/DNS/RR/X25.html +249 -0
- data/doc/classes/Net/DNS/RR/X25.src/M000373.html +23 -0
- data/doc/classes/Net/DNS/RR/X25.src/M000374.html +20 -0
- data/doc/classes/Net/DNS/RR/X25.src/M000375.html +20 -0
- data/doc/classes/Net/DNS/RR/X25.src/M000376.html +22 -0
- data/doc/classes/Net/DNS/RR/X25.src/M000377.html +26 -0
- data/doc/classes/Net/DNS/Resolver.html +1606 -0
- data/doc/classes/Net/DNS/Resolver.src/M000525.html +65 -0
- data/doc/classes/Net/DNS/Resolver.src/M000526.html +73 -0
- data/doc/classes/Net/DNS/Resolver.src/M000527.html +48 -0
- data/doc/classes/Net/DNS/Resolver.src/M000528.html +49 -0
- data/doc/classes/Net/DNS/Resolver.src/M000529.html +35 -0
- data/doc/classes/Net/DNS/Resolver.src/M000530.html +69 -0
- data/doc/classes/Net/DNS/Resolver.src/M000531.html +26 -0
- data/doc/classes/Net/DNS/Resolver.src/M000534.html +33 -0
- data/doc/classes/Net/DNS/Resolver.src/M000535.html +19 -0
- data/doc/classes/Net/DNS/Resolver.src/M000536.html +18 -0
- data/doc/classes/Net/DNS/Resolver.src/M000537.html +67 -0
- data/doc/classes/Net/DNS/Resolver.src/M000538.html +80 -0
- data/doc/classes/Net/DNS/Resolver.src/M000539.html +36 -0
- data/doc/classes/Net/DNS/Resolver.src/M000540.html +166 -0
- data/doc/classes/Net/DNS/Resolver.src/M000541.html +283 -0
- data/doc/classes/Net/DNS/Resolver.src/M000542.html +100 -0
- data/doc/classes/Net/DNS/Resolver.src/M000543.html +41 -0
- data/doc/classes/Net/DNS/Resolver.src/M000544.html +20 -0
- data/doc/classes/Net/DNS/Resolver.src/M000545.html +77 -0
- data/doc/classes/Net/DNS/Resolver.src/M000546.html +33 -0
- data/doc/classes/Net/DNS/Resolver.src/M000547.html +18 -0
- data/doc/classes/Net/DNS/Resolver.src/M000548.html +86 -0
- data/doc/classes/Net/DNS/Resolver.src/M000549.html +127 -0
- data/doc/classes/Net/DNS/Resolver.src/M000550.html +25 -0
- data/doc/classes/Net/DNS/Resolver.src/M000551.html +29 -0
- data/doc/classes/Net/DNS/Resolver.src/M000552.html +18 -0
- data/doc/classes/Net/DNS/Resolver.src/M000553.html +51 -0
- data/doc/classes/Net/DNS/Resolver.src/M000554.html +102 -0
- data/doc/classes/Net/DNS/Resolver/Recurse.html +382 -0
- data/doc/classes/Net/DNS/Resolver/Recurse.src/M000555.html +100 -0
- data/doc/classes/Net/DNS/Resolver/Recurse.src/M000556.html +20 -0
- data/doc/classes/Net/DNS/Resolver/Recurse.src/M000557.html +18 -0
- data/doc/classes/Net/DNS/Resolver/Recurse.src/M000558.html +31 -0
- data/doc/classes/Net/DNS/Resolver/Recurse.src/M000559.html +218 -0
- data/doc/classes/Net/DNS/Update.html +303 -0
- data/doc/classes/Net/DNS/Update.src/M000524.html +33 -0
- data/doc/classes/SetupError.html +111 -0
- data/doc/classes/TestAResolverFile.html +137 -0
- data/doc/classes/TestAResolverFile.src/M000129.html +51 -0
- data/doc/classes/TestAxfr.html +137 -0
- data/doc/classes/TestAxfr.src/M000075.html +25 -0
- data/doc/classes/TestEscapedChars.html +152 -0
- data/doc/classes/TestEscapedChars.src/M000011.html +262 -0
- data/doc/classes/TestEscapedChars.src/M000012.html +245 -0
- data/doc/classes/TestHeader.html +137 -0
- data/doc/classes/TestHeader.src/M000074.html +87 -0
- data/doc/classes/TestInet6.html +167 -0
- data/doc/classes/TestInet6.src/M000126.html +43 -0
- data/doc/classes/TestInet6.src/M000127.html +94 -0
- data/doc/classes/TestInet6.src/M000128.html +52 -0
- data/doc/classes/TestMisc.html +167 -0
- data/doc/classes/TestMisc.src/M000008.html +28 -0
- data/doc/classes/TestMisc.src/M000009.html +50 -0
- data/doc/classes/TestMisc.src/M000010.html +83 -0
- data/doc/classes/TestOnline.html +231 -0
- data/doc/classes/TestOnline.src/M000215.html +66 -0
- data/doc/classes/TestOnline.src/M000216.html +58 -0
- data/doc/classes/TestOnline.src/M000217.html +80 -0
- data/doc/classes/TestOnline.src/M000218.html +68 -0
- data/doc/classes/TestOnline.src/M000219.html +32 -0
- data/doc/classes/TestOnline.src/M000220.html +20 -0
- data/doc/classes/TestOnline.src/M000221.html +20 -0
- data/doc/classes/TestPacket.html +152 -0
- data/doc/classes/TestPacket.src/M000138.html +153 -0
- data/doc/classes/TestPacket.src/M000139.html +30 -0
- data/doc/classes/TestPacketUniquePush.html +167 -0
- data/doc/classes/TestPacketUniquePush.src/M000212.html +20 -0
- data/doc/classes/TestPacketUniquePush.src/M000213.html +32 -0
- data/doc/classes/TestPacketUniquePush.src/M000214.html +98 -0
- data/doc/classes/TestQuestion.html +137 -0
- data/doc/classes/TestQuestion.src/M000073.html +45 -0
- data/doc/classes/TestRR.html +140 -0
- data/doc/classes/TestRR.src/M000132.html +241 -0
- data/doc/classes/TestRecurse.html +167 -0
- data/doc/classes/TestRecurse.src/M000070.html +38 -0
- data/doc/classes/TestRecurse.src/M000071.html +32 -0
- data/doc/classes/TestRecurse.src/M000072.html +21 -0
- data/doc/classes/TestResOpt.html +197 -0
- data/doc/classes/TestResOpt.src/M000207.html +40 -0
- data/doc/classes/TestResOpt.src/M000208.html +25 -0
- data/doc/classes/TestResOpt.src/M000209.html +51 -0
- data/doc/classes/TestResOpt.src/M000210.html +32 -0
- data/doc/classes/TestResOpt.src/M000211.html +38 -0
- data/doc/classes/TestResolver.html +137 -0
- data/doc/classes/TestResolver.src/M000069.html +98 -0
- data/doc/classes/TestResolverEnv.html +137 -0
- data/doc/classes/TestResolverEnv.src/M000222.html +50 -0
- data/doc/classes/TestRrOpt.html +137 -0
- data/doc/classes/TestRrOpt.src/M000007.html +36 -0
- data/doc/classes/TestRrRrSort.html +137 -0
- data/doc/classes/TestRrRrSort.src/M000125.html +112 -0
- data/doc/classes/TestRrTest.html +155 -0
- data/doc/classes/TestRrTest.src/M000137.html +80 -0
- data/doc/classes/TestRrUnknown.html +167 -0
- data/doc/classes/TestRrUnknown.src/M000066.html +41 -0
- data/doc/classes/TestRrUnknown.src/M000067.html +37 -0
- data/doc/classes/TestRrUnknown.src/M000068.html +41 -0
- data/doc/classes/TestTKey.html +152 -0
- data/doc/classes/TestTKey.src/M000130.html +18 -0
- data/doc/classes/TestTKey.src/M000131.html +106 -0
- data/doc/classes/TestTcp.html +186 -0
- data/doc/classes/TestTcp.src/M000133.html +22 -0
- data/doc/classes/TestTcp.src/M000134.html +23 -0
- data/doc/classes/TestTcp.src/M000135.html +22 -0
- data/doc/classes/TestTcp.src/M000136.html +23 -0
- data/doc/classes/TestUpdate.html +152 -0
- data/doc/classes/TestUpdate.src/M000123.html +20 -0
- data/doc/classes/TestUpdate.src/M000124.html +216 -0
- data/doc/classes/ToplevelInstaller.html +621 -0
- data/doc/classes/ToplevelInstaller.src/M000076.html +23 -0
- data/doc/classes/ToplevelInstaller.src/M000077.html +18 -0
- data/doc/classes/ToplevelInstaller.src/M000078.html +25 -0
- data/doc/classes/ToplevelInstaller.src/M000079.html +21 -0
- data/doc/classes/ToplevelInstaller.src/M000080.html +18 -0
- data/doc/classes/ToplevelInstaller.src/M000081.html +18 -0
- data/doc/classes/ToplevelInstaller.src/M000082.html +38 -0
- data/doc/classes/ToplevelInstaller.src/M000083.html +18 -0
- data/doc/classes/ToplevelInstaller.src/M000084.html +18 -0
- data/doc/classes/ToplevelInstaller.src/M000085.html +18 -0
- data/doc/classes/ToplevelInstaller.src/M000086.html +18 -0
- data/doc/classes/ToplevelInstaller.src/M000087.html +18 -0
- data/doc/classes/ToplevelInstaller.src/M000088.html +40 -0
- data/doc/classes/ToplevelInstaller.src/M000089.html +18 -0
- data/doc/classes/ToplevelInstaller.src/M000090.html +18 -0
- data/doc/classes/ToplevelInstaller.src/M000091.html +21 -0
- data/doc/classes/ToplevelInstaller.src/M000097.html +40 -0
- data/doc/classes/ToplevelInstaller.src/M000098.html +31 -0
- data/doc/classes/ToplevelInstaller.src/M000099.html +52 -0
- data/doc/classes/ToplevelInstaller.src/M000100.html +19 -0
- data/doc/classes/ToplevelInstaller.src/M000101.html +18 -0
- data/doc/classes/ToplevelInstaller.src/M000102.html +18 -0
- data/doc/classes/ToplevelInstaller.src/M000103.html +18 -0
- data/doc/classes/ToplevelInstaller.src/M000104.html +20 -0
- data/doc/classes/ToplevelInstaller.src/M000105.html +18 -0
- data/doc/classes/ToplevelInstaller.src/M000106.html +18 -0
- data/doc/classes/ToplevelInstallerMulti.html +398 -0
- data/doc/classes/ToplevelInstallerMulti.src/M000107.html +21 -0
- data/doc/classes/ToplevelInstallerMulti.src/M000108.html +21 -0
- data/doc/classes/ToplevelInstallerMulti.src/M000109.html +23 -0
- data/doc/classes/ToplevelInstallerMulti.src/M000110.html +29 -0
- data/doc/classes/ToplevelInstallerMulti.src/M000111.html +22 -0
- data/doc/classes/ToplevelInstallerMulti.src/M000112.html +21 -0
- data/doc/classes/ToplevelInstallerMulti.src/M000113.html +21 -0
- data/doc/classes/ToplevelInstallerMulti.src/M000114.html +20 -0
- data/doc/classes/ToplevelInstallerMulti.src/M000115.html +20 -0
- data/doc/classes/ToplevelInstallerMulti.src/M000116.html +20 -0
- data/doc/classes/ToplevelInstallerMulti.src/M000117.html +21 -0
- data/doc/classes/ToplevelInstallerMulti.src/M000118.html +21 -0
- data/doc/classes/ToplevelInstallerMulti.src/M000119.html +25 -0
- data/doc/classes/ToplevelInstallerMulti.src/M000120.html +18 -0
- data/doc/classes/ToplevelInstallerMulti.src/M000121.html +18 -0
- data/doc/classes/ToplevelInstallerMulti.src/M000122.html +18 -0
- data/doc/created.rid +1 -0
- data/doc/files/demo/axfr_rb.html +163 -0
- data/doc/files/demo/check_soa_rb.html +139 -0
- data/doc/files/demo/check_zone_rb.html +236 -0
- data/doc/files/demo/check_zone_rb.src/M000001.html +82 -0
- data/doc/files/demo/check_zone_rb.src/M000002.html +25 -0
- data/doc/files/demo/check_zone_rb.src/M000003.html +23 -0
- data/doc/files/demo/check_zone_rb.src/M000004.html +23 -0
- data/doc/files/demo/check_zone_rb.src/M000005.html +23 -0
- data/doc/files/demo/example_recurse_rb.html +117 -0
- data/doc/files/demo/mresolv_rb.html +149 -0
- data/doc/files/demo/mx_rb.html +108 -0
- data/doc/files/demo/rubydig_rb.html +133 -0
- data/doc/files/demo/trace_dns_rb.html +109 -0
- data/doc/files/lib/Net/DNS/Header_rb.html +117 -0
- data/doc/files/lib/Net/DNS/Nameserver_rb.html +126 -0
- data/doc/files/lib/Net/DNS/Packet_rb.html +117 -0
- data/doc/files/lib/Net/DNS/Question_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/AAAA_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/AFSDB_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/A_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/CERT_rb.html +124 -0
- data/doc/files/lib/Net/DNS/RR/CNAME_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/DNAME_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/EID_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/HINFO_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/ISDN_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/LOC_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/MB_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/MG_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/MINFO_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/MR_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/MX_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/NAPTR_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/NIMLOC_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/NSAP_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/NS_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/NULL_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/OPT_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/PTR_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/PX_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/RP_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/RT_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/SOA_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/SPF_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/SRV_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/SSHFP_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/TKEY_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/TSIG_rb.html +125 -0
- data/doc/files/lib/Net/DNS/RR/TXT_rb.html +124 -0
- data/doc/files/lib/Net/DNS/RR/UNKNOWN_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR/X25_rb.html +117 -0
- data/doc/files/lib/Net/DNS/RR_rb.html +156 -0
- data/doc/files/lib/Net/DNS/Resolver/Recurse_rb.html +117 -0
- data/doc/files/lib/Net/DNS/Resolver_rb.html +131 -0
- data/doc/files/lib/Net/DNS/Update_rb.html +117 -0
- data/doc/files/lib/Net/DNS_rb.html +125 -0
- data/doc/files/setup_rb.html +148 -0
- data/doc/files/setup_rb.src/M000006.html +18 -0
- data/doc/files/test/tc_axfr_rb.html +127 -0
- data/doc/files/test/tc_escapedchars_rb.html +126 -0
- data/doc/files/test/tc_header_rb.html +126 -0
- data/doc/files/test/tc_inet6_rb.html +127 -0
- data/doc/files/test/tc_misc_rb.html +126 -0
- data/doc/files/test/tc_online_rb.html +127 -0
- data/doc/files/test/tc_packet_rb.html +126 -0
- data/doc/files/test/tc_packet_unique_push_rb.html +126 -0
- data/doc/files/test/tc_question_rb.html +126 -0
- data/doc/files/test/tc_recurse_rb.html +127 -0
- data/doc/files/test/tc_res_env_rb.html +126 -0
- data/doc/files/test/tc_res_file_rb.html +126 -0
- data/doc/files/test/tc_res_opt_rb.html +126 -0
- data/doc/files/test/tc_resolver_rb.html +126 -0
- data/doc/files/test/tc_rr-opt_rb.html +126 -0
- data/doc/files/test/tc_rr-rrsort_rb.html +126 -0
- data/doc/files/test/tc_rr-txt_rb.html +126 -0
- data/doc/files/test/tc_rr-unknown_rb.html +126 -0
- data/doc/files/test/tc_rr_rb.html +126 -0
- data/doc/files/test/tc_tcp_rb.html +126 -0
- data/doc/files/test/tc_thread_rb.html +109 -0
- data/doc/files/test/tc_tkey_rb.html +127 -0
- data/doc/files/test/tc_udp_rb.html +126 -0
- data/doc/files/test/tc_update_rb.html +126 -0
- data/doc/files/test/ts_netdns_rb.html +125 -0
- data/doc/files/test/ts_offline_rb.html +140 -0
- data/doc/files/test/ts_online_rb.html +131 -0
- data/doc/fr_class_index.html +112 -0
- data/doc/fr_file_index.html +105 -0
- data/doc/fr_method_index.html +601 -0
- data/doc/index.html +24 -0
- data/lib/Net/DNS.rb +16 -17
- data/lib/Net/DNS/Header.rb +15 -15
- data/lib/Net/DNS/Nameserver.rb +15 -15
- data/lib/Net/DNS/Packet.rb +15 -15
- data/lib/Net/DNS/Question.rb +15 -15
- data/lib/Net/DNS/RR.rb +15 -15
- data/lib/Net/DNS/RR/A.rb +15 -15
- data/lib/Net/DNS/RR/AAAA.rb +15 -15
- data/lib/Net/DNS/RR/AFSDB.rb +15 -15
- data/lib/Net/DNS/RR/CERT.rb +15 -15
- data/lib/Net/DNS/RR/CNAME.rb +15 -15
- data/lib/Net/DNS/RR/DNAME.rb +15 -15
- data/lib/Net/DNS/RR/EID.rb +15 -15
- data/lib/Net/DNS/RR/HINFO.rb +15 -15
- data/lib/Net/DNS/RR/ISDN.rb +15 -15
- data/lib/Net/DNS/RR/LOC.rb +15 -15
- data/lib/Net/DNS/RR/MB.rb +15 -15
- data/lib/Net/DNS/RR/MG.rb +15 -15
- data/lib/Net/DNS/RR/MINFO.rb +15 -15
- data/lib/Net/DNS/RR/MR.rb +15 -15
- data/lib/Net/DNS/RR/MX.rb +15 -15
- data/lib/Net/DNS/RR/NAPTR.rb +15 -15
- data/lib/Net/DNS/RR/NIMLOC.rb +15 -15
- data/lib/Net/DNS/RR/NS.rb +15 -15
- data/lib/Net/DNS/RR/NSAP.rb +15 -15
- data/lib/Net/DNS/RR/NULL.rb +15 -15
- data/lib/Net/DNS/RR/OPT.rb +15 -15
- data/lib/Net/DNS/RR/PTR.rb +15 -15
- data/lib/Net/DNS/RR/PX.rb +15 -15
- data/lib/Net/DNS/RR/RP.rb +15 -15
- data/lib/Net/DNS/RR/RT.rb +15 -15
- data/lib/Net/DNS/RR/SOA.rb +15 -15
- data/lib/Net/DNS/RR/SPF.rb +15 -15
- data/lib/Net/DNS/RR/SRV.rb +15 -15
- data/lib/Net/DNS/RR/SSHFP.rb +15 -15
- data/lib/Net/DNS/RR/TKEY.rb +15 -15
- data/lib/Net/DNS/RR/TSIG.rb +15 -15
- data/lib/Net/DNS/RR/TXT.rb +15 -15
- data/lib/Net/DNS/RR/UNKNOWN.rb +15 -15
- data/lib/Net/DNS/RR/X25.rb +15 -15
- data/lib/Net/DNS/Resolver.rb +117 -117
- data/lib/Net/DNS/Resolver/Recurse.rb +15 -15
- data/lib/Net/DNS/Update.rb +15 -15
- data/test/tc_axfr.rb +15 -15
- data/test/tc_escapedchars.rb +15 -15
- data/test/tc_header.rb +15 -15
- data/test/tc_inet6.rb +15 -15
- data/test/tc_misc.rb +15 -15
- data/test/tc_online.rb +15 -15
- data/test/tc_packet.rb +15 -15
- data/test/tc_packet_unique_push.rb +15 -15
- data/test/tc_question.rb +15 -15
- data/test/tc_recurse.rb +15 -15
- data/test/tc_res_env.rb +15 -15
- data/test/tc_res_file.rb +15 -15
- data/test/tc_res_opt.rb +15 -15
- data/test/tc_resolver.rb +18 -18
- data/test/tc_rr-opt.rb +15 -15
- data/test/tc_rr-rrsort.rb +15 -15
- data/test/tc_rr-txt.rb +15 -15
- data/test/tc_rr-unknown.rb +15 -15
- data/test/tc_rr.rb +15 -15
- data/test/tc_tcp.rb +15 -15
- data/test/tc_tkey.rb +15 -15
- data/test/tc_udp.rb +15 -15
- data/test/tc_update.rb +15 -15
- data/test/ts_netdns.rb +15 -15
- data/test/ts_offline.rb +15 -15
- data/test/ts_online.rb +15 -15
- 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">"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">></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">></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">""</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">"#{$4}.#{$3}.#{$2}.#{$1}.in-addr.arpa."</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">";; search(#{name}, #{type}, #{klass})\n"</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">></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">&&</span> <span class="ruby-ivar">@dnsrch</span>)
|
47
|
+
<span class="ruby-comment cmt"># foreach my $domain (@{$self->{'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">"#{name}.#{domain}"</span>
|
50
|
+
<span class="ruby-identifier">print</span> <span class="ruby-node">";; search(#{newname}, #{type}, #{klass})\n"</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">></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">";; search(#{name}, #{type}, #{klass})\n"</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">"#{name}."</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">></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">></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">></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">&&</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">&&</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">".#{@domain}"</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">"#{$4}.#{$3}.#{$2}.#{$1}.in-addr.arpa"</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">"#{$4}.#{$3}.#{$2}.#{$1}.in-addr.arpa"</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 "Use of implicit split to @_ is deprecated" 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"><</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">":0::"</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">":0:"</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">"%04s"</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">"0"</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">"#{$4}.#{$3}.#{$2}.#{$1}.#{name}"</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">";; query(#{name}, #{type}, #{klass})\n"</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 && 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">""</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">></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">&&</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">&&</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@igntc</span>)
|
28
|
+
<span class="ruby-identifier">print</span> <span class="ruby-value str">";;\n;; packet truncated: retrying using TCP\n"</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">""</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">";; ERROR: send_tcp: no nameservers\n"</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->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">";; attempt to send_tcp(#{ns}:#{dstport}) (src port = #{srcport})\n"</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">""</span>
|
35
|
+
<span class="ruby-identifier">sock_key</span> = <span class="ruby-node">"#{ns}:#{dstport}"</span>;
|
36
|
+
<span class="ruby-identifier">host</span>,<span class="ruby-identifier">port</span>=<span class="ruby-value str">""</span>
|
37
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@persistent_tcp</span> <span class="ruby-operator">&&</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">";; using persistent socket\n"</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">" bytes\n"</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">";; ERROR: send_tcp: data send failed: #{@errorstring}\n"</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">" bytes\n"</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">"expected #{len} bytes, received "</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">"NOERROR"</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">"NXDOMAIN"</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">"RCODE: "</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">"; trying next nameserver\n"</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">></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 ";; TIMEOUT\n" 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 + " bytes\n" 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=("expected #{len} bytes, received " + 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 != "NOERROR" && ans.header.rcode != "NXDOMAIN")</span>
|
143
|
+
<span class="ruby-comment cmt"># # Remove this one from the stack</span>
|
144
|
+
<span class="ruby-comment cmt"># print "RCODE: " + ans.header.rcode + "; trying next nameserver\n" 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">""</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">""</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">&&</span> <span class="ruby-ivar">@udp_timeout</span> <span class="ruby-operator">></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">";; using persistent AF_INET6 family type socket\n"</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">";; using persistent AF_INET() family type socket\n"</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">&&</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">";; Trying to set up a AF_INET6 family type UDP socket with srcaddr: #{srcaddr} ... "</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 "new"</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">"done\n"</span><span class="ruby-operator">:</span><span class="ruby-value str">"failed\n"</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">";; setting up an AF_INET() family type UDP socket\n"</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">"could not get socket"</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">&&</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">&&</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-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->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">&&</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 < 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">"No nameservers"</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">&&</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 < @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">></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"><</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"><</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">></span> <span class="ruby-value">1</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">timeout</span> <span class="ruby-operator">></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">"Send error: cannot reach #{nsname} ("</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">"IPv6"</span> <span class="ruby-operator">:</span> <span class="ruby-value str">""</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">"IPv4"</span> <span class="ruby-operator">:</span> <span class="ruby-value str">""</span> ) <span class="ruby-operator">+</span>
|
179
|
+
<span class="ruby-value str">") not available"</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">"Send error: cannot reach #{nsname} ("</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">"IPv6"</span> <span class="ruby-operator">:</span> <span class="ruby-value str">""</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">"IPv4"</span> <span class="ruby-operator">:</span> <span class="ruby-value str">""</span> ) <span class="ruby-operator">+</span>
|
185
|
+
<span class="ruby-value str">") not available"</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">";; send_udp(#{nsname}:#{dstport})\n"</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">";; send error: #{$!}\n"</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">"Send error: #{$!}"</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">"Send error"</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">></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">" bytes\n"</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">"NOERROR"</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">"NXDOMAIN"</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">"RCODE: "</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">"; trying next nameserver\n"</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">"RCODE: "</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">"\n"</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">"Recv error "</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"><</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">"\n"</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">""</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">></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"><</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>
|