public static PtrMemBlockToString ( MemBlock ptr ) : String | ||
ptr | MemBlock | The block containing the dns ptr data. |
Résultat | String |
public static String PtrMemBlockToString(MemBlock ptr) {
String name = HostnameMemBlockToString(ptr);
String[] res = name.Split('.');
name = String.Empty;
/* The last 2 parts are the pointer IN-ADDR.ARPA, the rest is
* reverse notation, we don't bother the user with this.
*/
for(int i = res.Length - 3; i > 0; i--) {
try {
Byte.Parse(res[i]);
}
catch {
throw new Exception("Invalid IP Ptr");
}
name += res[i] + ".";
}
name += res[0];
return name;
}
public void TestPtr() { String ptr = "64.233.169.104"; MemBlock ptrm = MemBlock.Reference(new byte[] { 0x03, 0x31, 0x30, 0x34, 0x03, 0x31, 0x36, 0x39, 0x03, 0x32, 0x33, 0x33, 0x02, 0x36, 0x34, 0x07, 0x69, 0x6e, 0x2d, 0x61, 0x64, 0x64, 0x72, 0x04, 0x61, 0x72, 0x70, 0x61, 0x00 }); Assert.AreEqual(ptr, DnsPacket.PtrMemBlockToString(ptrm), "PtrMemBlockToString"); Assert.AreEqual(ptrm, DnsPacket.PtrStringToMemBlock(ptr), "PtrStringToMemBlock"); Assert.AreEqual(ptr, DnsPacket.PtrMemBlockToString( DnsPacket.PtrStringToMemBlock(ptr)), "Ptr String dual"); Assert.AreEqual(ptrm, DnsPacket.PtrStringToMemBlock( DnsPacket.PtrMemBlockToString(ptrm)), "Ptr MemBlock dual"); }