1 ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
3 ;;; --- DNS client constants.
6 (in-package :net.sockets
)
8 (enable-reader-macro 'literal-hash-table
)
10 (defconstant +dns-max-datagram-size
+ 4096)
12 (defconstant +opcode-standard
+ 0)
16 (define-constant +query-type-to-value-map
+
17 #h
:eq
((:a .
1) (:ns .
2) (:cname .
5) (:soa .
6)
18 (:wks .
11) (:ptr .
12) (:hinfo .
13) (:mx .
15)
19 (:txt .
16) (:aaaa .
28) (:any .
255))
22 (define-constant +query-value-to-type-map
+
23 #h
((1 .
:a
) (2 .
:ns
) (5 .
:cname
) (6 .
:soa
)
24 (11 .
:wks
) (12 .
:ptr
) (13 .
:hinfo
) (15 .
:mx
)
25 (16 .
:txt
) (28 .
:aaaa
) (255 .
:any
))
28 (defun query-type-number (id)
29 (gethash id
+query-type-to-value-map
+))
31 (defun query-type-id (number)
32 (gethash number
+query-value-to-type-map
+))
34 (defun dns-record-type-p (id)
35 (query-type-number id
))
39 (define-constant +query-class-to-value-map
+
40 #h
:eq
((:in .
1) (:any .
255))
43 (define-constant +query-value-to-class-map
+
44 #h
((1 .
:in
) (255 .
:any
))
47 (defun query-class-number (id)
48 (gethash id
+query-class-to-value-map
+))
50 (defun query-class-id (number)
51 (gethash number
+query-value-to-class-map
+))
55 (define-constant +rcode-to-value-map
+
56 #h
:eq
((:no-error .
0) (:format-error .
1)
57 (:server-failure .
2) (:name-error .
3)
58 (:not-implemented .
4) (:refused .
5))
61 (define-constant +value-to-rcode-map
+
62 #h
((0 .
:no-error
) (1 .
:format-error
)
63 (2 .
:server-failure
) (3 .
:name-error
)
64 (4 .
:not-implemented
) (5 .
:refused
))
67 (defun rcode-number (id)
68 (gethash id
+rcode-to-value-map
+))
70 (defun rcode-id (number)
71 (gethash number
+value-to-rcode-map
+))
73 (disable-reader-macro 'literal-hash-table
)