64 lines
2.3 KiB
Racket
64 lines
2.3 KiB
Racket
#lang racket/base
|
|
|
|
;; Noddy representation of a zone, and various zone and RRSet utilities.
|
|
|
|
(require racket/unit)
|
|
(require racket/pretty)
|
|
(require racket/set)
|
|
(require racket/match)
|
|
(require "api.rkt")
|
|
(require "codec.rkt")
|
|
(require "zonedb.rkt")
|
|
(require "network-query.rkt")
|
|
(require "resolver.rkt")
|
|
|
|
;; (require racket/trace)
|
|
;; (trace ;;resolve-from-zone
|
|
;; ;;build-referral
|
|
;; ;;incorporate-claims
|
|
;; ;;additional-section/a
|
|
;; ;;network-query
|
|
;; ;;network-query/addresses
|
|
;; ;;dns-message->claims
|
|
;; ;;negative-network-query-result
|
|
;; ;;closest-untried-nameservers
|
|
;; ;;answer-from-zone
|
|
;; ;;merge-replies
|
|
;; ;;in-bailiwick?
|
|
;; )
|
|
|
|
(define (drive-resolver qr)
|
|
(match qr
|
|
[(resolver-network-query q zone ns-rr addresses k)
|
|
(write `(INTERMEDIATE ,q ,ns-rr (,(length addresses) addresses))) (newline)
|
|
(drive-resolver (k (network-query/addresses q zone ns-rr addresses)))]
|
|
[_ qr]))
|
|
|
|
(define (run-question name qtype)
|
|
(drive-resolver
|
|
(resolve-from-zone (question name qtype 'in)
|
|
(compile-zone-db
|
|
;; (list (rr '() 'ns 'in 30 '(#"google-public-dns-a" #"google" #"com"))
|
|
;; (rr '(#"google-public-dns-a" #"google" #"com") 'a 'in 30 '#(8 8 8 8)))
|
|
(list (rr '() 'ns 'in 30 '(#"f" #"root-servers" #"net"))
|
|
(rr '(#"f" #"root-servers" #"net") 'a 'in 30 '#(198 41 0 4))
|
|
(rr '(#"f" #"root-servers" #"net") 'a 'in 30 '#(192 228 79 201))
|
|
(rr '(#"f" #"root-servers" #"net") 'a 'in 30 '#(192 33 4 12))
|
|
(rr '(#"f" #"root-servers" #"net") 'a 'in 30 '#(192 203 230 10))
|
|
(rr '(#"f" #"root-servers" #"net") 'a 'in 30 '#(192 112 36 4))
|
|
(rr '(#"f" #"root-servers" #"net") 'a 'in 30 '#(128 63 2 53))
|
|
(rr '(#"f" #"root-servers" #"net") 'a 'in 30 '#(192 58 128 30))
|
|
(rr '(#"f" #"root-servers" #"net") 'a 'in 30 '#(193 0 14 129)))
|
|
)
|
|
#f
|
|
#t
|
|
(set)
|
|
values)))
|
|
|
|
;;(pretty-print (run-question '(#"www" #"google" #"com") 'a))
|
|
;;(pretty-print (run-question '(#"vapour" #"eighty-twenty" #"org") 'a))
|
|
;;(pretty-print (run-question '(#"eighty-twenty" #"org") 'a))
|
|
(pretty-print (run-question '(#"www" #"eighty-twenty" #"org") 'a))
|
|
;;(pretty-print (run-question '(#"foo" #"rallyx" #"ccs" #"neu" #"edu") 'a))
|
|
;;(pretty-print (run-question '(#"rallyx" #"ccs" #"neu" #"edu") 'a))
|