dnsruby 1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/EVENTMACHINE +64 -0
- data/README +63 -0
- data/doc/classes/Dnsruby.html +463 -0
- data/doc/classes/Dnsruby/Algorithms.html +171 -0
- data/doc/classes/Dnsruby/Classes.html +197 -0
- data/doc/classes/Dnsruby/Classes.src/M000209.html +23 -0
- data/doc/classes/Dnsruby/Classes.src/M000210.html +19 -0
- data/doc/classes/Dnsruby/CodeMapper.html +375 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000186.html +18 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000187.html +33 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000188.html +21 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000189.html +19 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000190.html +19 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000191.html +18 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000192.html +22 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000193.html +22 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000194.html +22 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000195.html +31 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000196.html +19 -0
- data/doc/classes/Dnsruby/Config.html +413 -0
- data/doc/classes/Dnsruby/Config.src/M000148.html +18 -0
- data/doc/classes/Dnsruby/Config.src/M000149.html +19 -0
- data/doc/classes/Dnsruby/Config.src/M000150.html +19 -0
- data/doc/classes/Dnsruby/Config.src/M000151.html +25 -0
- data/doc/classes/Dnsruby/Config.src/M000152.html +21 -0
- data/doc/classes/Dnsruby/Config.src/M000153.html +38 -0
- data/doc/classes/Dnsruby/Config.src/M000154.html +26 -0
- data/doc/classes/Dnsruby/Config.src/M000155.html +22 -0
- data/doc/classes/Dnsruby/Config.src/M000156.html +27 -0
- data/doc/classes/Dnsruby/Config.src/M000157.html +22 -0
- data/doc/classes/Dnsruby/Config.src/M000158.html +21 -0
- data/doc/classes/Dnsruby/DNS.html +571 -0
- data/doc/classes/Dnsruby/DNS.src/M000258.html +24 -0
- data/doc/classes/Dnsruby/DNS.src/M000259.html +18 -0
- data/doc/classes/Dnsruby/DNS.src/M000260.html +18 -0
- data/doc/classes/Dnsruby/DNS.src/M000261.html +20 -0
- data/doc/classes/Dnsruby/DNS.src/M000262.html +19 -0
- data/doc/classes/Dnsruby/DNS.src/M000263.html +20 -0
- data/doc/classes/Dnsruby/DNS.src/M000264.html +18 -0
- data/doc/classes/Dnsruby/DNS.src/M000265.html +19 -0
- data/doc/classes/Dnsruby/DNS.src/M000266.html +20 -0
- data/doc/classes/Dnsruby/DNS.src/M000267.html +28 -0
- data/doc/classes/Dnsruby/DNS.src/M000268.html +19 -0
- data/doc/classes/Dnsruby/DNS.src/M000269.html +20 -0
- data/doc/classes/Dnsruby/DNS.src/M000270.html +31 -0
- data/doc/classes/Dnsruby/DecodeError.html +120 -0
- data/doc/classes/Dnsruby/Dnssec.html +287 -0
- data/doc/classes/Dnsruby/Dnssec.src/M000249.html +23 -0
- data/doc/classes/Dnsruby/Dnssec.src/M000250.html +19 -0
- data/doc/classes/Dnsruby/Dnssec.src/M000251.html +90 -0
- data/doc/classes/Dnsruby/Dnssec.src/M000252.html +76 -0
- data/doc/classes/Dnsruby/EncodeError.html +120 -0
- data/doc/classes/Dnsruby/FormErr.html +119 -0
- data/doc/classes/Dnsruby/Header.html +501 -0
- data/doc/classes/Dnsruby/Header.src/M000231.html +35 -0
- data/doc/classes/Dnsruby/Header.src/M000232.html +18 -0
- data/doc/classes/Dnsruby/Header.src/M000233.html +18 -0
- data/doc/classes/Dnsruby/Header.src/M000234.html +21 -0
- data/doc/classes/Dnsruby/Header.src/M000235.html +20 -0
- data/doc/classes/Dnsruby/Header.src/M000236.html +32 -0
- data/doc/classes/Dnsruby/Header.src/M000237.html +27 -0
- data/doc/classes/Dnsruby/Header.src/M000238.html +26 -0
- data/doc/classes/Dnsruby/Header.src/M000239.html +47 -0
- data/doc/classes/Dnsruby/Header.src/M000240.html +28 -0
- data/doc/classes/Dnsruby/Header.src/M000241.html +30 -0
- data/doc/classes/Dnsruby/Hosts.html +316 -0
- data/doc/classes/Dnsruby/Hosts.src/M000197.html +20 -0
- data/doc/classes/Dnsruby/Hosts.src/M000198.html +19 -0
- data/doc/classes/Dnsruby/Hosts.src/M000199.html +20 -0
- data/doc/classes/Dnsruby/Hosts.src/M000200.html +21 -0
- data/doc/classes/Dnsruby/Hosts.src/M000201.html +19 -0
- data/doc/classes/Dnsruby/Hosts.src/M000202.html +20 -0
- data/doc/classes/Dnsruby/Hosts.src/M000203.html +21 -0
- data/doc/classes/Dnsruby/IPv4.html +233 -0
- data/doc/classes/Dnsruby/IPv4.src/M000204.html +32 -0
- data/doc/classes/Dnsruby/IPv4.src/M000205.html +19 -0
- data/doc/classes/Dnsruby/IPv4.src/M000206.html +18 -0
- data/doc/classes/Dnsruby/IPv4.src/M000207.html +18 -0
- data/doc/classes/Dnsruby/IPv4.src/M000208.html +18 -0
- data/doc/classes/Dnsruby/IPv6.html +281 -0
- data/doc/classes/Dnsruby/IPv6.src/M000242.html +60 -0
- data/doc/classes/Dnsruby/IPv6.src/M000243.html +22 -0
- data/doc/classes/Dnsruby/IPv6.src/M000244.html +20 -0
- data/doc/classes/Dnsruby/IPv6.src/M000245.html +18 -0
- data/doc/classes/Dnsruby/Message.html +803 -0
- data/doc/classes/Dnsruby/Message.src/M000119.html +38 -0
- data/doc/classes/Dnsruby/Message.src/M000120.html +26 -0
- data/doc/classes/Dnsruby/Message.src/M000121.html +22 -0
- data/doc/classes/Dnsruby/Message.src/M000122.html +22 -0
- data/doc/classes/Dnsruby/Message.src/M000123.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000124.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000125.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000126.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000127.html +18 -0
- data/doc/classes/Dnsruby/Message.src/M000128.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000129.html +23 -0
- data/doc/classes/Dnsruby/Message.src/M000130.html +30 -0
- data/doc/classes/Dnsruby/Message.src/M000131.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000132.html +18 -0
- data/doc/classes/Dnsruby/Message.src/M000133.html +56 -0
- data/doc/classes/Dnsruby/Message.src/M000134.html +35 -0
- data/doc/classes/Dnsruby/Message.src/M000135.html +46 -0
- data/doc/classes/Dnsruby/Message/Section.html +160 -0
- data/doc/classes/Dnsruby/Message/Section.src/M000141.html +29 -0
- data/doc/classes/Dnsruby/Message/Section.src/M000142.html +30 -0
- data/doc/classes/Dnsruby/MetaTypes.html +136 -0
- data/doc/classes/Dnsruby/Modes.html +171 -0
- data/doc/classes/Dnsruby/NXDomain.html +119 -0
- data/doc/classes/Dnsruby/Name.html +330 -0
- data/doc/classes/Dnsruby/Name.src/M000104.html +28 -0
- data/doc/classes/Dnsruby/Name.src/M000105.html +20 -0
- data/doc/classes/Dnsruby/Name.src/M000106.html +18 -0
- data/doc/classes/Dnsruby/Name.src/M000107.html +21 -0
- data/doc/classes/Dnsruby/Name.src/M000108.html +22 -0
- data/doc/classes/Dnsruby/Name.src/M000109.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.html +300 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000110.html +21 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000111.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000112.html +22 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000113.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000114.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000115.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000116.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000117.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000118.html +18 -0
- data/doc/classes/Dnsruby/NotImp.html +119 -0
- data/doc/classes/Dnsruby/OpCode.html +146 -0
- data/doc/classes/Dnsruby/OtherResolvError.html +119 -0
- data/doc/classes/Dnsruby/QTypes.html +146 -0
- data/doc/classes/Dnsruby/Question.html +301 -0
- data/doc/classes/Dnsruby/Question.src/M000226.html +47 -0
- data/doc/classes/Dnsruby/Question.src/M000227.html +18 -0
- data/doc/classes/Dnsruby/Question.src/M000228.html +18 -0
- data/doc/classes/Dnsruby/Question.src/M000229.html +32 -0
- data/doc/classes/Dnsruby/Question.src/M000230.html +18 -0
- data/doc/classes/Dnsruby/RCode.html +211 -0
- data/doc/classes/Dnsruby/RR.html +648 -0
- data/doc/classes/Dnsruby/RR.src/M000001.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000002.html +22 -0
- data/doc/classes/Dnsruby/RR.src/M000003.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000004.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000005.html +26 -0
- data/doc/classes/Dnsruby/RR.src/M000006.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000007.html +36 -0
- data/doc/classes/Dnsruby/RR.src/M000008.html +100 -0
- data/doc/classes/Dnsruby/RR.src/M000009.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000010.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000011.html +22 -0
- data/doc/classes/Dnsruby/RR.src/M000012.html +29 -0
- data/doc/classes/Dnsruby/RR.src/M000013.html +24 -0
- data/doc/classes/Dnsruby/RR/ANY.html +133 -0
- data/doc/classes/Dnsruby/RR/CERT.html +180 -0
- data/doc/classes/Dnsruby/RR/CERT/CertificateTypes.html +169 -0
- data/doc/classes/Dnsruby/RR/CNAME.html +151 -0
- data/doc/classes/Dnsruby/RR/DNAME.html +150 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.html +422 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000044.html +20 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000045.html +21 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000046.html +28 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000047.html +22 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000048.html +18 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000049.html +22 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000050.html +18 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000051.html +26 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000052.html +38 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000053.html +45 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000054.html +21 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000055.html +24 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000056.html +32 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000057.html +24 -0
- data/doc/classes/Dnsruby/RR/DS.html +286 -0
- data/doc/classes/Dnsruby/RR/DS.src/M000039.html +22 -0
- data/doc/classes/Dnsruby/RR/DS.src/M000040.html +28 -0
- data/doc/classes/Dnsruby/RR/DS.src/M000041.html +24 -0
- data/doc/classes/Dnsruby/RR/DS.src/M000042.html +28 -0
- data/doc/classes/Dnsruby/RR/DS.src/M000043.html +36 -0
- data/doc/classes/Dnsruby/RR/DomainName.html +175 -0
- data/doc/classes/Dnsruby/RR/DomainName.src/M000083.html +18 -0
- data/doc/classes/Dnsruby/RR/Generic.html +133 -0
- data/doc/classes/Dnsruby/RR/HINFO.html +155 -0
- data/doc/classes/Dnsruby/RR/IN.html +155 -0
- data/doc/classes/Dnsruby/RR/IN/A.html +200 -0
- data/doc/classes/Dnsruby/RR/IN/A.src/M000017.html +18 -0
- data/doc/classes/Dnsruby/RR/IN/A.src/M000018.html +18 -0
- data/doc/classes/Dnsruby/RR/IN/A.src/M000019.html +18 -0
- data/doc/classes/Dnsruby/RR/IN/AAAA.html +139 -0
- data/doc/classes/Dnsruby/RR/IN/AFSDB.html +145 -0
- data/doc/classes/Dnsruby/RR/IN/PX.html +143 -0
- data/doc/classes/Dnsruby/RR/IN/SRV.html +238 -0
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000014.html +29 -0
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000015.html +26 -0
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000016.html +22 -0
- data/doc/classes/Dnsruby/RR/IN/WKS.html +166 -0
- data/doc/classes/Dnsruby/RR/IN/WKS.src/M000020.html +20 -0
- data/doc/classes/Dnsruby/RR/ISDN.html +155 -0
- data/doc/classes/Dnsruby/RR/LOC.html +395 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000025.html +32 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000026.html +23 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000027.html +25 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000028.html +21 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000029.html +20 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000030.html +23 -0
- data/doc/classes/Dnsruby/RR/MB.html +150 -0
- data/doc/classes/Dnsruby/RR/MG.html +150 -0
- data/doc/classes/Dnsruby/RR/MINFO.html +156 -0
- data/doc/classes/Dnsruby/RR/MR.html +150 -0
- data/doc/classes/Dnsruby/RR/MX.html +155 -0
- data/doc/classes/Dnsruby/RR/NAPTR.html +190 -0
- data/doc/classes/Dnsruby/RR/NS.html +151 -0
- data/doc/classes/Dnsruby/RR/NSAP.html +293 -0
- data/doc/classes/Dnsruby/RR/NSAP.src/M000093.html +19 -0
- data/doc/classes/Dnsruby/RR/NSAP.src/M000094.html +19 -0
- data/doc/classes/Dnsruby/RR/NSAP.src/M000095.html +22 -0
- data/doc/classes/Dnsruby/RR/NSAP.src/M000096.html +31 -0
- data/doc/classes/Dnsruby/RR/NSEC.html +301 -0
- data/doc/classes/Dnsruby/RR/NSEC.src/M000031.html +19 -0
- data/doc/classes/Dnsruby/RR/NSEC.src/M000032.html +18 -0
- data/doc/classes/Dnsruby/RR/NSEC.src/M000033.html +34 -0
- data/doc/classes/Dnsruby/RR/NSEC.src/M000034.html +18 -0
- data/doc/classes/Dnsruby/RR/NSEC.src/M000035.html +71 -0
- data/doc/classes/Dnsruby/RR/NSEC.src/M000036.html +18 -0
- data/doc/classes/Dnsruby/RR/NSEC.src/M000037.html +80 -0
- data/doc/classes/Dnsruby/RR/NSEC.src/M000038.html +23 -0
- data/doc/classes/Dnsruby/RR/NSEC3.html +366 -0
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000085.html +28 -0
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000086.html +18 -0
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000087.html +18 -0
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000088.html +22 -0
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000089.html +18 -0
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000090.html +21 -0
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000091.html +21 -0
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000092.html +29 -0
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.html +279 -0
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000077.html +28 -0
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000078.html +18 -0
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000079.html +22 -0
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000080.html +21 -0
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000081.html +25 -0
- data/doc/classes/Dnsruby/RR/PTR.html +132 -0
- data/doc/classes/Dnsruby/RR/RP.html +183 -0
- data/doc/classes/Dnsruby/RR/RP.src/M000082.html +19 -0
- data/doc/classes/Dnsruby/RR/RRSIG.html +357 -0
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000097.html +26 -0
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000098.html +28 -0
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000099.html +23 -0
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000100.html +23 -0
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000101.html +46 -0
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000102.html +50 -0
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000103.html +27 -0
- data/doc/classes/Dnsruby/RR/RT.html +155 -0
- data/doc/classes/Dnsruby/RR/SOA.html +233 -0
- data/doc/classes/Dnsruby/RR/SOA.src/M000066.html +24 -0
- data/doc/classes/Dnsruby/RR/SOA.src/M000067.html +27 -0
- data/doc/classes/Dnsruby/RR/SPF.html +138 -0
- data/doc/classes/Dnsruby/RR/TKEY.html +313 -0
- data/doc/classes/Dnsruby/RR/TKEY.src/M000021.html +19 -0
- data/doc/classes/Dnsruby/RR/TKEY.src/M000022.html +29 -0
- data/doc/classes/Dnsruby/RR/TKEY.src/M000023.html +21 -0
- data/doc/classes/Dnsruby/RR/TKEY.src/M000024.html +29 -0
- data/doc/classes/Dnsruby/RR/TSIG.html +524 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000068.html +24 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000069.html +32 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000070.html +54 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000071.html +121 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000072.html +33 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000073.html +25 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000074.html +36 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000075.html +22 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000076.html +29 -0
- data/doc/classes/Dnsruby/RR/TXT.html +233 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000061.html +18 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000062.html +18 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000063.html +20 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000064.html +27 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000065.html +25 -0
- data/doc/classes/Dnsruby/RR/X25.html +203 -0
- data/doc/classes/Dnsruby/RR/X25.src/M000058.html +18 -0
- data/doc/classes/Dnsruby/RR/X25.src/M000059.html +18 -0
- data/doc/classes/Dnsruby/RR/X25.src/M000060.html +22 -0
- data/doc/classes/Dnsruby/RRSet.html +404 -0
- data/doc/classes/Dnsruby/RRSet.src/M000211.html +23 -0
- data/doc/classes/Dnsruby/RRSet.src/M000212.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000213.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000214.html +47 -0
- data/doc/classes/Dnsruby/RRSet.src/M000215.html +42 -0
- data/doc/classes/Dnsruby/RRSet.src/M000216.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000217.html +20 -0
- data/doc/classes/Dnsruby/RRSet.src/M000218.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000219.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000220.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000221.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000222.html +22 -0
- data/doc/classes/Dnsruby/RRSet.src/M000223.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000224.html +22 -0
- data/doc/classes/Dnsruby/RRSet.src/M000225.html +18 -0
- data/doc/classes/Dnsruby/Refused.html +119 -0
- data/doc/classes/Dnsruby/Resolv.html +401 -0
- data/doc/classes/Dnsruby/Resolv.src/M000159.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000160.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000161.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000162.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000163.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000164.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000165.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000166.html +19 -0
- data/doc/classes/Dnsruby/Resolv.src/M000167.html +20 -0
- data/doc/classes/Dnsruby/Resolv.src/M000168.html +29 -0
- data/doc/classes/Dnsruby/Resolv.src/M000169.html +19 -0
- data/doc/classes/Dnsruby/Resolv.src/M000170.html +20 -0
- data/doc/classes/Dnsruby/Resolv.src/M000171.html +25 -0
- data/doc/classes/Dnsruby/ResolvError.html +117 -0
- data/doc/classes/Dnsruby/ResolvTimeout.html +117 -0
- data/doc/classes/Dnsruby/Resolver.html +1055 -0
- data/doc/classes/Dnsruby/Resolver.src/M000271.html +21 -0
- data/doc/classes/Dnsruby/Resolver.src/M000272.html +27 -0
- data/doc/classes/Dnsruby/Resolver.src/M000273.html +28 -0
- data/doc/classes/Dnsruby/Resolver.src/M000274.html +18 -0
- data/doc/classes/Dnsruby/Resolver.src/M000275.html +51 -0
- data/doc/classes/Dnsruby/Resolver.src/M000276.html +21 -0
- data/doc/classes/Dnsruby/Resolver.src/M000277.html +22 -0
- data/doc/classes/Dnsruby/Resolver.src/M000278.html +18 -0
- data/doc/classes/Dnsruby/Resolver.src/M000279.html +20 -0
- data/doc/classes/Dnsruby/Resolver.src/M000280.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000281.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000282.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000283.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000284.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000285.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000286.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000287.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000288.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000289.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000290.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000291.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000292.html +26 -0
- data/doc/classes/Dnsruby/Resolver.src/M000293.html +18 -0
- data/doc/classes/Dnsruby/Resolver.src/M000294.html +23 -0
- data/doc/classes/Dnsruby/Resolver.src/M000295.html +18 -0
- data/doc/classes/Dnsruby/ServFail.html +119 -0
- data/doc/classes/Dnsruby/SingleResolver.html +674 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000172.html +18 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000173.html +24 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000174.html +36 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000175.html +18 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000176.html +19 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000177.html +50 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000178.html +19 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000179.html +21 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000180.html +25 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000181.html +54 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000182.html +27 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000183.html +27 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000184.html +35 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000185.html +21 -0
- data/doc/classes/Dnsruby/TheLog.html +196 -0
- data/doc/classes/Dnsruby/TheLog.src/M000246.html +20 -0
- data/doc/classes/Dnsruby/TheLog.src/M000247.html +20 -0
- data/doc/classes/Dnsruby/TheLog.src/M000248.html +20 -0
- data/doc/classes/Dnsruby/Types.html +436 -0
- data/doc/classes/Dnsruby/Update.html +368 -0
- data/doc/classes/Dnsruby/Update.src/M000253.html +32 -0
- data/doc/classes/Dnsruby/Update.src/M000254.html +36 -0
- data/doc/classes/Dnsruby/Update.src/M000255.html +32 -0
- data/doc/classes/Dnsruby/Update.src/M000256.html +41 -0
- data/doc/classes/Dnsruby/Update.src/M000257.html +34 -0
- data/doc/classes/Dnsruby/VerifyError.html +119 -0
- data/doc/classes/Dnsruby/ZoneTransfer.html +300 -0
- data/doc/classes/Dnsruby/ZoneTransfer.src/M000143.html +18 -0
- data/doc/classes/Dnsruby/ZoneTransfer.src/M000144.html +24 -0
- data/doc/classes/Dnsruby/ZoneTransfer.src/M000145.html +35 -0
- data/doc/classes/Dnsruby/ZoneTransfer/Delta.html +200 -0
- data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/M000146.html +19 -0
- data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/M000147.html +19 -0
- data/doc/created.rid +1 -0
- data/doc/files/lib/Dnsruby/Config_rb.html +101 -0
- data/doc/files/lib/Dnsruby/DNS_rb.html +110 -0
- data/doc/files/lib/Dnsruby/Hosts_rb.html +108 -0
- data/doc/files/lib/Dnsruby/Resolver_rb.html +109 -0
- data/doc/files/lib/Dnsruby/SingleResolver_rb.html +108 -0
- data/doc/files/lib/Dnsruby/TheLog_rb.html +110 -0
- data/doc/files/lib/Dnsruby/code_mapper_rb.html +101 -0
- data/doc/files/lib/Dnsruby/dnssec_rb.html +107 -0
- data/doc/files/lib/Dnsruby/event_machine_interface_rb.html +108 -0
- data/doc/files/lib/Dnsruby/ipv4_rb.html +101 -0
- data/doc/files/lib/Dnsruby/ipv6_rb.html +101 -0
- data/doc/files/lib/Dnsruby/message_rb.html +109 -0
- data/doc/files/lib/Dnsruby/name_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/AAAA_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/AFSDB_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/A_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/CERT_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/DNSKEY_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/DS_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/HINFO_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/IN_rb.html +112 -0
- data/doc/files/lib/Dnsruby/resource/ISDN_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/LOC_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/MINFO_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/MX_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/NAPTR_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/NSAP_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/NSEC3PARAM_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/NSEC3_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/NSEC_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/OPT_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/PX_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/RP_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/RRSIG_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/RT_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/SOA_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/SPF_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/SRV_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/TKEY_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/TSIG_rb.html +114 -0
- data/doc/files/lib/Dnsruby/resource/TXT_rb.html +108 -0
- data/doc/files/lib/Dnsruby/resource/X25_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/domain_name_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/generic_rb.html +131 -0
- data/doc/files/lib/Dnsruby/resource/resource_rb.html +110 -0
- data/doc/files/lib/Dnsruby/select_thread_rb.html +111 -0
- data/doc/files/lib/Dnsruby/update_rb.html +101 -0
- data/doc/files/lib/Dnsruby/zone_transfer_rb.html +101 -0
- data/doc/files/lib/dnsruby_rb.html +118 -0
- data/doc/fr_class_index.html +108 -0
- data/doc/fr_file_index.html +75 -0
- data/doc/fr_method_index.html +321 -0
- data/doc/index.html +24 -0
- data/lib/Dnsruby/Config.rb +363 -0
- data/lib/Dnsruby/DNS.rb +293 -0
- data/lib/Dnsruby/Hosts.rb +126 -0
- data/lib/Dnsruby/Resolver.rb +999 -0
- data/lib/Dnsruby/SingleResolver.rb +493 -0
- data/lib/Dnsruby/TheLog.rb +60 -0
- data/lib/Dnsruby/code_mapper.rb +165 -0
- data/lib/Dnsruby/dnssec.rb +357 -0
- data/lib/Dnsruby/event_machine_interface.rb +264 -0
- data/lib/Dnsruby/ipv4.rb +74 -0
- data/lib/Dnsruby/ipv6.rb +144 -0
- data/lib/Dnsruby/message.rb +961 -0
- data/lib/Dnsruby/name.rb +332 -0
- data/lib/Dnsruby/resource/A.rb +56 -0
- data/lib/Dnsruby/resource/AAAA.rb +54 -0
- data/lib/Dnsruby/resource/AFSDB.rb +68 -0
- data/lib/Dnsruby/resource/CERT.rb +89 -0
- data/lib/Dnsruby/resource/DNSKEY.rb +242 -0
- data/lib/Dnsruby/resource/DS.rb +162 -0
- data/lib/Dnsruby/resource/HINFO.rb +52 -0
- data/lib/Dnsruby/resource/IN.rb +70 -0
- data/lib/Dnsruby/resource/ISDN.rb +54 -0
- data/lib/Dnsruby/resource/LOC.rb +255 -0
- data/lib/Dnsruby/resource/MINFO.rb +70 -0
- data/lib/Dnsruby/resource/MX.rb +66 -0
- data/lib/Dnsruby/resource/NAPTR.rb +90 -0
- data/lib/Dnsruby/resource/NSAP.rb +172 -0
- data/lib/Dnsruby/resource/NSEC.rb +243 -0
- data/lib/Dnsruby/resource/NSEC3.rb +173 -0
- data/lib/Dnsruby/resource/NSEC3PARAM.rb +120 -0
- data/lib/Dnsruby/resource/OPT.rb +210 -0
- data/lib/Dnsruby/resource/PX.rb +71 -0
- data/lib/Dnsruby/resource/RP.rb +67 -0
- data/lib/Dnsruby/resource/RRSIG.rb +256 -0
- data/lib/Dnsruby/resource/RT.rb +67 -0
- data/lib/Dnsruby/resource/SOA.rb +95 -0
- data/lib/Dnsruby/resource/SPF.rb +29 -0
- data/lib/Dnsruby/resource/SRV.rb +112 -0
- data/lib/Dnsruby/resource/TKEY.rb +163 -0
- data/lib/Dnsruby/resource/TSIG.rb +584 -0
- data/lib/Dnsruby/resource/TXT.rb +76 -0
- data/lib/Dnsruby/resource/X25.rb +53 -0
- data/lib/Dnsruby/resource/domain_name.rb +54 -0
- data/lib/Dnsruby/resource/generic.rb +151 -0
- data/lib/Dnsruby/resource/resource.rb +561 -0
- data/lib/Dnsruby/select_thread.rb +449 -0
- data/lib/Dnsruby/update.rb +262 -0
- data/lib/Dnsruby/zone_transfer.rb +332 -0
- data/lib/dnsruby.rb +512 -0
- data/test/custom.txt +4 -0
- data/test/resolv.conf +4 -0
- data/test/tc_axfr.rb +32 -0
- data/test/tc_dns.rb +230 -0
- data/test/tc_dnskey.rb +52 -0
- data/test/tc_dnsruby.rb +42 -0
- data/test/tc_dnssec.rb +88 -0
- data/test/tc_ds.rb +38 -0
- data/test/tc_escapedchars.rb +484 -0
- data/test/tc_event_machine_deferrable.rb +85 -0
- data/test/tc_event_machine_res.rb +174 -0
- data/test/tc_event_machine_single_res.rb +101 -0
- data/test/tc_event_machine_soak.rb +98 -0
- data/test/tc_header.rb +104 -0
- data/test/tc_misc.rb +139 -0
- data/test/tc_name.rb +53 -0
- data/test/tc_nsec.rb +36 -0
- data/test/tc_nsec3.rb +63 -0
- data/test/tc_nsec3param.rb +30 -0
- data/test/tc_packet.rb +179 -0
- data/test/tc_packet_unique_push.rb +102 -0
- data/test/tc_question.rb +51 -0
- data/test/tc_res_config.rb +92 -0
- data/test/tc_res_env.rb +51 -0
- data/test/tc_res_file.rb +42 -0
- data/test/tc_res_opt.rb +187 -0
- data/test/tc_resolver.rb +184 -0
- data/test/tc_rr-opt.rb +82 -0
- data/test/tc_rr-txt.rb +137 -0
- data/test/tc_rr-unknown.rb +99 -0
- data/test/tc_rr.rb +258 -0
- data/test/tc_rrset.rb +58 -0
- data/test/tc_rrsig.rb +32 -0
- data/test/tc_single_resolver.rb +169 -0
- data/test/tc_soak.rb +200 -0
- data/test/tc_soak_base.rb +136 -0
- data/test/tc_tcp.rb +35 -0
- data/test/tc_tkey.rb +75 -0
- data/test/tc_tsig.rb +237 -0
- data/test/tc_update.rb +215 -0
- data/test/ts_dnsruby.rb +17 -0
- data/test/ts_offline.rb +42 -0
- data/test/ts_online.rb +107 -0
- metadata +627 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#--
|
|
2
|
+
#Copyright 2007 Nominet UK
|
|
3
|
+
#
|
|
4
|
+
#Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
#you may not use this file except in compliance with the License.
|
|
6
|
+
#You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
#Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
#distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
#See the License for the specific language governing permissions and
|
|
14
|
+
#limitations under the License.
|
|
15
|
+
#++
|
|
16
|
+
module Dnsruby
|
|
17
|
+
class RR
|
|
18
|
+
#Class for DNS Mail Exchanger (MX) resource records.
|
|
19
|
+
#RFC 1035 Section 3.3.9
|
|
20
|
+
class MX < RR
|
|
21
|
+
ClassValue = nil #:nodoc: all
|
|
22
|
+
TypeValue= Types::MX #:nodoc: all
|
|
23
|
+
|
|
24
|
+
#The preference for this mail exchange.
|
|
25
|
+
attr_accessor :preference
|
|
26
|
+
#The name of this mail exchange.
|
|
27
|
+
attr_accessor :exchange
|
|
28
|
+
|
|
29
|
+
def from_hash(hash) #:nodoc: all
|
|
30
|
+
@preference = hash[:preference]
|
|
31
|
+
@exchange = Name.create(hash[:exchange])
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def from_data(data) #:nodoc: all
|
|
35
|
+
@preference, @exchange = data
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def from_string(input) #:nodoc: all
|
|
39
|
+
if (input.length > 0)
|
|
40
|
+
names = input.split(" ")
|
|
41
|
+
@preference = names[0].to_i
|
|
42
|
+
@exchange = Name.create(names[1])
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def rdata_to_string #:nodoc: all
|
|
47
|
+
if (@preference!=nil)
|
|
48
|
+
return "#{@preference} #{@exchange}"
|
|
49
|
+
else
|
|
50
|
+
return ""
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def encode_rdata(msg, canonical=false) #:nodoc: all
|
|
55
|
+
msg.put_pack('n', @preference, canonical)
|
|
56
|
+
msg.put_name(@exchange, canonical)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def self.decode_rdata(msg) #:nodoc: all
|
|
60
|
+
preference, = msg.get_unpack('n')
|
|
61
|
+
exchange = msg.get_name
|
|
62
|
+
return self.new([preference, exchange])
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
#--
|
|
2
|
+
#Copyright 2007 Nominet UK
|
|
3
|
+
#
|
|
4
|
+
#Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
#you may not use this file except in compliance with the License.
|
|
6
|
+
#You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
#Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
#distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
#See the License for the specific language governing permissions and
|
|
14
|
+
#limitations under the License.
|
|
15
|
+
#++
|
|
16
|
+
module Dnsruby
|
|
17
|
+
class RR
|
|
18
|
+
#Class for DNS Naming Authority Pointer (NAPTR) resource records.
|
|
19
|
+
#RFC 2168
|
|
20
|
+
class NAPTR < RR
|
|
21
|
+
ClassValue = nil #:nodoc: all
|
|
22
|
+
TypeValue= Types::NAPTR #:nodoc: all
|
|
23
|
+
|
|
24
|
+
# The NAPTR RR order field
|
|
25
|
+
attr_accessor :order
|
|
26
|
+
# The NAPTR RR preference field
|
|
27
|
+
attr_accessor :preference
|
|
28
|
+
# The NAPTR RR flags field
|
|
29
|
+
attr_accessor :flags
|
|
30
|
+
# The NAPTR RR service field
|
|
31
|
+
attr_accessor :service
|
|
32
|
+
# The NAPTR RR regexp field
|
|
33
|
+
attr_accessor :regexp
|
|
34
|
+
# The NAPTR RR replacement field
|
|
35
|
+
attr_accessor :replacement
|
|
36
|
+
|
|
37
|
+
def from_hash(hash) #:nodoc: all
|
|
38
|
+
@order = hash[:order]
|
|
39
|
+
@preference = hash[:preference]
|
|
40
|
+
@flags = hash[:flags]
|
|
41
|
+
@service = hash[:service]
|
|
42
|
+
@regexp = hash[:regexp]
|
|
43
|
+
@replacement = Name.create(hash[:replacement])
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def from_data(data) #:nodoc: all
|
|
47
|
+
@order, @preference, @flags, @service, @regexp, @replacement = data
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def from_string(input) #:nodoc: all
|
|
51
|
+
if (input.length > 0)
|
|
52
|
+
values = input.split(" ")
|
|
53
|
+
@order = values [0]
|
|
54
|
+
@preference = values [1]
|
|
55
|
+
@flags = values [2]
|
|
56
|
+
@service = values [3]
|
|
57
|
+
@regexp = values [4]
|
|
58
|
+
@replacement = Name.create(values[5])
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def rdata_to_string #:nodoc: all
|
|
63
|
+
if (@order!=nil)
|
|
64
|
+
return "#{@order} #{@preference} #{@flags} #{@service} #{@regexp} #{@replacement}"
|
|
65
|
+
else
|
|
66
|
+
return ""
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def encode_rdata(msg, canonical=false) #:nodoc: all
|
|
71
|
+
msg.put_pack('n', @order)
|
|
72
|
+
msg.put_pack('n', @preference)
|
|
73
|
+
msg.put_string(@flags)
|
|
74
|
+
msg.put_string(@service)
|
|
75
|
+
msg.put_string(@regexp)
|
|
76
|
+
msg.put_name(@replacement, canonical)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def self.decode_rdata(msg) #:nodoc: all
|
|
80
|
+
order, = msg.get_unpack('n')
|
|
81
|
+
preference, = msg.get_unpack('n')
|
|
82
|
+
flags, = msg.get_string
|
|
83
|
+
service, = msg.get_string
|
|
84
|
+
regexp, = msg.get_string
|
|
85
|
+
replacement = msg.get_name
|
|
86
|
+
return self.new([order, preference, flags, service, regexp, replacement])
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
#--
|
|
2
|
+
#Copyright 2007 Nominet UK
|
|
3
|
+
#
|
|
4
|
+
#Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
#you may not use this file except in compliance with the License.
|
|
6
|
+
#You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
#Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
#distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
#See the License for the specific language governing permissions and
|
|
14
|
+
#limitations under the License.
|
|
15
|
+
#++
|
|
16
|
+
module Dnsruby
|
|
17
|
+
class RR
|
|
18
|
+
#Class for DNS Network Service Access Point (NSAP) resource records.
|
|
19
|
+
#RFC 1706.
|
|
20
|
+
class NSAP < RR
|
|
21
|
+
ClassValue = nil #:nodoc: all
|
|
22
|
+
TypeValue= Types::NSAP #:nodoc: all
|
|
23
|
+
#The RR's authority and format identifier. Dnsruby
|
|
24
|
+
#currently supports only AFI 47 (GOSIP Version 2).
|
|
25
|
+
attr_accessor :afi
|
|
26
|
+
#The RR's initial domain identifier.
|
|
27
|
+
attr_accessor :idi
|
|
28
|
+
#The RR's DSP format identifier.
|
|
29
|
+
attr_accessor :dfi
|
|
30
|
+
#The RR's administrative authority.
|
|
31
|
+
attr_accessor :aa
|
|
32
|
+
#The RR's routing domain identifier.
|
|
33
|
+
attr_accessor :rd
|
|
34
|
+
#The RR's area identifier.
|
|
35
|
+
attr_accessor :area
|
|
36
|
+
#The RR's system identifier.
|
|
37
|
+
attr_accessor :id
|
|
38
|
+
#The RR's NSAP selector.
|
|
39
|
+
attr_accessor :sel
|
|
40
|
+
|
|
41
|
+
#The RR's reserved field.
|
|
42
|
+
attr_writer :rsvd
|
|
43
|
+
|
|
44
|
+
#The RR's initial domain part (the AFI and IDI fields).
|
|
45
|
+
def idp
|
|
46
|
+
ret = [@afi, @idi].join('')
|
|
47
|
+
return ret
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
#The RR's domain specific part (the DFI, AA, Rsvd, RD, Area,
|
|
51
|
+
#ID, and SEL fields).
|
|
52
|
+
def dsp
|
|
53
|
+
ret = [@dfi,@aa,rsvd,@rd,@area,@id,@sel].join('')
|
|
54
|
+
return ret
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def rsvd
|
|
58
|
+
if (@rsvd==nil)
|
|
59
|
+
return "0000"
|
|
60
|
+
else
|
|
61
|
+
return @rsvd
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
#------------------------------------------------------------------------------
|
|
66
|
+
# Usage: str2bcd(STRING, NUM_BYTES)
|
|
67
|
+
#
|
|
68
|
+
# Takes a string representing a hex number of arbitrary length and
|
|
69
|
+
# returns an equivalent BCD string of NUM_BYTES length (with
|
|
70
|
+
# NUM_BYTES * 2 digits), adding leading zeros if necessary.
|
|
71
|
+
#------------------------------------------------------------------------------
|
|
72
|
+
def str2bcd(s, bytes)
|
|
73
|
+
retval = "";
|
|
74
|
+
|
|
75
|
+
digits = bytes * 2;
|
|
76
|
+
string = sprintf("%#{digits}s", s);
|
|
77
|
+
string.tr!(" ","0");
|
|
78
|
+
|
|
79
|
+
i=0;
|
|
80
|
+
bytes.times do
|
|
81
|
+
bcd = string[i*2, 2];
|
|
82
|
+
retval += [bcd.to_i(16)].pack("C");
|
|
83
|
+
i+=1
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
return retval;
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def from_data(data) #:nodoc: all
|
|
91
|
+
@afi, @idi, @dfi, @aa, @rsvd, @rd, @area, @id, @sel = data
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def from_string(s) #:nodoc: all
|
|
95
|
+
if (s)
|
|
96
|
+
string = s.gsub(/\./, ""); # remove all dots.
|
|
97
|
+
string.gsub!(/^0x/,""); # remove leading 0x
|
|
98
|
+
|
|
99
|
+
if (string =~ /^[a-zA-Z0-9]{40}$/)
|
|
100
|
+
(@afi, @idi, @dfi, @aa, @rsvd, @rd, @area, @id, @sel) = string.unpack("A2A4A2A6A4A4A4A12A2")
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def rdata_to_string #:nodoc: all
|
|
107
|
+
rdatastr=""
|
|
108
|
+
|
|
109
|
+
if (defined?@afi)
|
|
110
|
+
if (@afi == "47")
|
|
111
|
+
rdatastr = [idp, dsp].join('')
|
|
112
|
+
else
|
|
113
|
+
rdatastr = "; AFI #{@afi} not supported"
|
|
114
|
+
end
|
|
115
|
+
else
|
|
116
|
+
rdatastr = ''
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
return rdatastr
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def encode_rdata(msg, canonical=false) #:nodoc: all
|
|
123
|
+
if (defined?@afi)
|
|
124
|
+
msg.put_pack("C", @afi.to_i(16))
|
|
125
|
+
|
|
126
|
+
if (@afi == "47")
|
|
127
|
+
msg.put_bytes(str2bcd(@idi, 2))
|
|
128
|
+
msg.put_bytes(str2bcd(@dfi, 1))
|
|
129
|
+
msg.put_bytes(str2bcd(@aa, 3))
|
|
130
|
+
msg.put_bytes(str2bcd(0, 2)) # rsvd)
|
|
131
|
+
msg.put_bytes(str2bcd(@rd, 2))
|
|
132
|
+
msg.put_bytes(str2bcd(@area, 2))
|
|
133
|
+
msg.put_bytes(str2bcd(@id, 6))
|
|
134
|
+
msg.put_bytes(str2bcd(@sel, 1))
|
|
135
|
+
end
|
|
136
|
+
# Checks for other versions would go here.
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
return rdata
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def self.decode_rdata(msg) #:nodoc: all
|
|
143
|
+
afi = msg.get_unpack("C")[0]
|
|
144
|
+
afi = sprintf("%02x", afi)
|
|
145
|
+
|
|
146
|
+
if (afi == "47")
|
|
147
|
+
idi = msg.get_unpack("CC")
|
|
148
|
+
dfi = msg.get_unpack("C")[0]
|
|
149
|
+
aa = msg.get_unpack("CCC")
|
|
150
|
+
rsvd = msg.get_unpack("CC")
|
|
151
|
+
rd = msg.get_unpack("CC")
|
|
152
|
+
area = msg.get_unpack("CC")
|
|
153
|
+
id = msg.get_unpack("CCCCCC")
|
|
154
|
+
sel = msg.get_unpack("C")[0]
|
|
155
|
+
|
|
156
|
+
idi = sprintf("%02x%02x", idi[0], idi[1])
|
|
157
|
+
dfi = sprintf("%02x", dfi)
|
|
158
|
+
aa = sprintf("%02x%02x%02x", aa[0], aa[1], aa[2])
|
|
159
|
+
rsvd = sprintf("%02x%02x", rsvd[0],rsvd[1])
|
|
160
|
+
rd = sprintf("%02x%02x", rd[0],rd[1])
|
|
161
|
+
area = sprintf("%02x%02x", area[0],area[1])
|
|
162
|
+
id = sprintf("%02x%02x%02x%02x%02x%02x", id[0],id[1],id[2],id[3],id[4],id[5])
|
|
163
|
+
sel = sprintf("%02x", sel)
|
|
164
|
+
|
|
165
|
+
else
|
|
166
|
+
# What to do for unsupported versions?
|
|
167
|
+
end
|
|
168
|
+
return self.new([afi, idi, dfi, aa, rsvd, rd, area, id, sel])
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
end
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
#--
|
|
2
|
+
#Copyright 2007 Nominet UK
|
|
3
|
+
#
|
|
4
|
+
#Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
#you may not use this file except in compliance with the License.
|
|
6
|
+
#You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
#Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
#distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
#See the License for the specific language governing permissions and
|
|
14
|
+
#limitations under the License.
|
|
15
|
+
#++
|
|
16
|
+
module Dnsruby
|
|
17
|
+
class RR
|
|
18
|
+
#RFC4034, section 4
|
|
19
|
+
#The NSEC resource record lists two separate things: the next owner
|
|
20
|
+
#name (in the canonical ordering of the zone) that contains
|
|
21
|
+
#authoritative data or a delegation point NS RRset, and the set of RR
|
|
22
|
+
#types present at the NSEC RR's owner name [RFC3845]. The complete
|
|
23
|
+
#set of NSEC RRs in a zone indicates which authoritative RRsets exist
|
|
24
|
+
#in a zone and also form a chain of authoritative owner names in the
|
|
25
|
+
#zone. This information is used to provide authenticated denial of
|
|
26
|
+
#existence for DNS data, as described in [RFC4035].
|
|
27
|
+
class NSEC < RR
|
|
28
|
+
ClassValue = nil #:nodoc: all
|
|
29
|
+
TypeValue = Types::NSEC #:nodoc: all
|
|
30
|
+
|
|
31
|
+
#The next name which exists after this NSEC
|
|
32
|
+
#The Next Domain field contains the next owner name (in the canonical
|
|
33
|
+
#ordering of the zone) that has authoritative data or contains a
|
|
34
|
+
#delegation point NS RRset
|
|
35
|
+
attr_reader :next_domain
|
|
36
|
+
#The Type Bit Maps field identifies the RRset types that exist at the
|
|
37
|
+
#NSEC RR's owner name
|
|
38
|
+
attr_reader :types
|
|
39
|
+
|
|
40
|
+
def next_domain=(n)
|
|
41
|
+
nxt = Name.create(n)
|
|
42
|
+
@next_domain = nxt
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def types=(t)
|
|
46
|
+
@types = NSEC.get_types(t)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def self.get_types(t)
|
|
50
|
+
types = nil
|
|
51
|
+
if (t.instance_of?Array)
|
|
52
|
+
# from the wire, already decoded
|
|
53
|
+
types =t
|
|
54
|
+
elsif (t.instance_of?String)
|
|
55
|
+
# List of mnemonics
|
|
56
|
+
types=[]
|
|
57
|
+
mnemonics = t.split(" ")
|
|
58
|
+
mnemonics.pop
|
|
59
|
+
mnemonics.each do |m|
|
|
60
|
+
type = Types.new(m)
|
|
61
|
+
types.push(type)
|
|
62
|
+
end
|
|
63
|
+
else
|
|
64
|
+
raise DecodeError.new("Unknown format of types for Dnsruby::RR::NSEC")
|
|
65
|
+
end
|
|
66
|
+
return types
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def add_type(t)
|
|
70
|
+
self.types=(@types + [t])
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def self.decode_types(bytes)
|
|
74
|
+
types = []
|
|
75
|
+
#RFC4034 section 4.1.2
|
|
76
|
+
#The RR type space is split into 256 window blocks, each representing
|
|
77
|
+
#the low-order 8 bits of the 16-bit RR type space. Each block that
|
|
78
|
+
#has at least one active RR type is encoded using a single octet
|
|
79
|
+
#window number (from 0 to 255), a single octet bitmap length (from 1
|
|
80
|
+
#to 32) indicating the number of octets used for the window block's
|
|
81
|
+
#bitmap, and up to 32 octets (256 bits) of bitmap.
|
|
82
|
+
|
|
83
|
+
#Blocks are present in the NSEC RR RDATA in increasing numerical
|
|
84
|
+
#order.
|
|
85
|
+
|
|
86
|
+
# Type Bit Maps Field = ( Window Block # | Bitmap Length | Bitmap )+
|
|
87
|
+
|
|
88
|
+
# where "|" denotes concatenation.
|
|
89
|
+
|
|
90
|
+
pos = 0
|
|
91
|
+
while (pos < bytes.length)
|
|
92
|
+
#So, read the first two octets
|
|
93
|
+
if (bytes.length-pos < 2)
|
|
94
|
+
raise DecodeError.new("NSEC : Expected window number and bitmap length octets")
|
|
95
|
+
end
|
|
96
|
+
window_number = bytes[pos]
|
|
97
|
+
bitmap_length = bytes[pos+1]
|
|
98
|
+
pos += 2
|
|
99
|
+
bitmap = bytes[pos,bitmap_length]
|
|
100
|
+
pos += bitmap_length
|
|
101
|
+
#Each bitmap encodes the low-order 8 bits of RR types within the
|
|
102
|
+
#window block, in network bit order. The first bit is bit 0. For
|
|
103
|
+
#window block 0, bit 1 corresponds to RR type 1 (A), bit 2 corresponds
|
|
104
|
+
#to RR type 2 (NS), and so forth. For window block 1, bit 1
|
|
105
|
+
#corresponds to RR type 257, and bit 2 to RR type 258. If a bit is
|
|
106
|
+
#set, it indicates that an RRset of that type is present for the NSEC
|
|
107
|
+
#RR's owner name. If a bit is clear, it indicates that no RRset of
|
|
108
|
+
#that type is present for the NSEC RR's owner name.
|
|
109
|
+
index = 0
|
|
110
|
+
bitmap.each_byte do |char|
|
|
111
|
+
if char.to_i != 0
|
|
112
|
+
# decode these RR types
|
|
113
|
+
0..8.times do |i|
|
|
114
|
+
if (((1 << (7-i)) & char) == (1 << (7-i)))
|
|
115
|
+
type = Types.new((256 * window_number) + (8 * index) + i)
|
|
116
|
+
#Bits representing pseudo-types MUST be clear, as they do not appear
|
|
117
|
+
#in zone data. If encountered, they MUST be ignored upon being read.
|
|
118
|
+
if (!([Types.OPT, Types.TSIG].include?(type)))
|
|
119
|
+
types.push(type)
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
index += 1
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
return types
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def encode_types
|
|
131
|
+
NSEC.encode_types(self)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def self.encode_types(nsec)
|
|
135
|
+
output=""
|
|
136
|
+
#types represents all 65536 possible RR types.
|
|
137
|
+
#Split up types into sets of 256 different types.
|
|
138
|
+
type_codes = []
|
|
139
|
+
nsec.types.each do |type|
|
|
140
|
+
type_codes.push(type.code)
|
|
141
|
+
end
|
|
142
|
+
type_codes.sort!
|
|
143
|
+
window = -1
|
|
144
|
+
0.step(65536,256) { |step|
|
|
145
|
+
# Gather up the RR types for this set of 256
|
|
146
|
+
types_to_go = []
|
|
147
|
+
while (type_codes[0] < step)
|
|
148
|
+
types_to_go.push(type_codes[0])
|
|
149
|
+
# And delete them from type_codes
|
|
150
|
+
type_codes=type_codes.last(type_codes.length-1)
|
|
151
|
+
break if (type_codes.empty?)
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
if (!types_to_go.empty?)
|
|
155
|
+
# Then create the bitmap for them
|
|
156
|
+
bitmap=""
|
|
157
|
+
# keep on adding them until there's none left
|
|
158
|
+
pos = 0
|
|
159
|
+
bitmap_pos = 0
|
|
160
|
+
while (!types_to_go.empty?)
|
|
161
|
+
|
|
162
|
+
# Check the next eight
|
|
163
|
+
byte = 0
|
|
164
|
+
pos += 8
|
|
165
|
+
while (types_to_go[0] < pos + step-256)
|
|
166
|
+
byte = byte | (1 << (pos-1-(types_to_go[0] - (step-256) )))
|
|
167
|
+
# Add it to the list
|
|
168
|
+
# And remove it from the to_go queue
|
|
169
|
+
types_to_go =types_to_go.last(types_to_go.length-1)
|
|
170
|
+
break if (types_to_go.empty?)
|
|
171
|
+
end
|
|
172
|
+
bitmap += " "
|
|
173
|
+
bitmap[bitmap_pos]=byte
|
|
174
|
+
bitmap_pos+=1
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# Now add data to output bytes
|
|
178
|
+
start = output.length
|
|
179
|
+
(2+bitmap.length).times do
|
|
180
|
+
output += " "
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
output[start] = window
|
|
184
|
+
output[start+1] = bitmap.length
|
|
185
|
+
bitmap.length.times do |i|
|
|
186
|
+
output[start+2+i] = bitmap[i]
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
window += 1
|
|
190
|
+
|
|
191
|
+
# Are there any more types after this?
|
|
192
|
+
if (type_codes.empty?)
|
|
193
|
+
# If not, then break (so we don't add more zeros)
|
|
194
|
+
break
|
|
195
|
+
end
|
|
196
|
+
}
|
|
197
|
+
return output
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
def from_data(data) #:nodoc: all
|
|
201
|
+
next_domain, types = data
|
|
202
|
+
self.next_domain=(next_domain)
|
|
203
|
+
self.types=(types)
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
def from_string(input)
|
|
207
|
+
if (input.length > 0)
|
|
208
|
+
data = input.split(" ")
|
|
209
|
+
self.next_domain=(data[0])
|
|
210
|
+
len = data[0].length + data[1].length + 1
|
|
211
|
+
self.types=(input[len, input.length-len])
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def rdata_to_string #:nodoc: all
|
|
216
|
+
if (@next_domain!=nil)
|
|
217
|
+
type_strings = []
|
|
218
|
+
@types.each do |t|
|
|
219
|
+
type_strings.push(t.string)
|
|
220
|
+
end
|
|
221
|
+
types = type_strings.join(" ")
|
|
222
|
+
return "#{@next_domain} ( #{types} )"
|
|
223
|
+
else
|
|
224
|
+
return ""
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
def encode_rdata(msg, canonical=false) #:nodoc: all
|
|
229
|
+
# Canonical
|
|
230
|
+
msg.put_name(@next_domain, true)
|
|
231
|
+
types = encode_types
|
|
232
|
+
msg.put_bytes(types)
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
def self.decode_rdata(msg) #:nodoc: all
|
|
236
|
+
next_domain = msg.get_name
|
|
237
|
+
types = decode_types(msg.get_bytes)
|
|
238
|
+
return self.new(
|
|
239
|
+
[next_domain, types])
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
end
|