24 */ |
24 */ |
25 |
25 |
26 package jdk.dns.client.internal; |
26 package jdk.dns.client.internal; |
27 |
27 |
28 import jdk.dns.client.ex.DnsCommunicationException; |
28 import jdk.dns.client.ex.DnsCommunicationException; |
29 import jdk.dns.client.ex.DnsInvalidNameException; |
29 import jdk.dns.client.ex.DnsResolverException; |
30 |
30 |
31 import java.io.IOException; |
31 import java.io.IOException; |
32 import java.nio.charset.StandardCharsets; |
32 import java.nio.charset.StandardCharsets; |
33 |
33 |
34 |
34 |
46 */ |
46 */ |
47 public static final int TYPE_A = 1; |
47 public static final int TYPE_A = 1; |
48 public static final int TYPE_CNAME = 5; |
48 public static final int TYPE_CNAME = 5; |
49 public static final int TYPE_AAAA = 28; |
49 public static final int TYPE_AAAA = 28; |
50 public static final int TYPE_PTR = 12; |
50 public static final int TYPE_PTR = 12; |
51 static final int QTYPE_STAR = 255; // query type "*" |
51 public static final int TYPE_ANY = 255; // query type "*" |
52 |
52 |
53 private static final int TYPE_NS = 2; |
53 private static final int TYPE_NS = 2; |
54 private static final int TYPE_SOA = 6; |
54 private static final int TYPE_SOA = 6; |
55 private static final int TYPE_HINFO = 13; |
55 private static final int TYPE_HINFO = 13; |
56 private static final int TYPE_MX = 15; |
56 private static final int TYPE_MX = 15; |
57 private static final int TYPE_TXT = 16; |
57 private static final int TYPE_TXT = 16; |
58 private static final int TYPE_SRV = 33; |
58 private static final int TYPE_SRV = 33; |
59 private static final int TYPE_NAPTR = 35; |
59 private static final int TYPE_NAPTR = 35; |
60 //static final int QTYPE_AXFR = 252; // zone transfer //Do not want to support that |
|
61 |
60 |
62 /* |
61 /* |
63 * Mapping from resource record type codes to type name strings. |
62 * Mapping from resource record type codes to type name strings. |
64 */ |
63 */ |
65 private static final String[] rrTypeNames = { |
64 private static final String[] rrTypeNames = { |
194 |
193 |
195 private static int nameToValue(String name, String[] names) { |
194 private static int nameToValue(String name, String[] names) { |
196 if (name.isEmpty()) { |
195 if (name.isEmpty()) { |
197 return -1; // invalid name |
196 return -1; // invalid name |
198 } else if (name.equals("*")) { |
197 } else if (name.equals("*")) { |
199 return QTYPE_STAR; // QTYPE_STAR == QCLASS_STAR |
198 return TYPE_ANY; // QTYPE_STAR == QCLASS_STAR |
200 } |
199 } |
201 if (Character.isDigit(name.charAt(0))) { |
200 if (Character.isDigit(name.charAt(0))) { |
202 try { |
201 try { |
203 return Integer.parseInt(name); |
202 return Integer.parseInt(name); |
204 } catch (NumberFormatException e) { |
203 } catch (NumberFormatException e) { |
341 assert pos >= Header.HEADER_SIZE; |
340 assert pos >= Header.HEADER_SIZE; |
342 } |
341 } |
343 } else |
342 } else |
344 throw new IOException("Invalid label type: " + typeAndLen); |
343 throw new IOException("Invalid label type: " + typeAndLen); |
345 } |
344 } |
346 } catch (IOException | DnsInvalidNameException e) { |
345 } catch (IOException | DnsResolverException e) { |
347 DnsCommunicationException ce = new DnsCommunicationException( |
346 DnsCommunicationException ce = new DnsCommunicationException( |
348 "DNS error: malformed packet"); |
347 "DNS error: malformed packet"); |
349 ce.initCause(e); |
348 ce.initCause(e); |
350 throw ce; |
349 throw ce; |
351 } |
350 } |