#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 "test-rrs.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 zone-origin addresses k) (write `(INTERMEDIATE ,q ,zone-origin (,(length addresses) addresses))) (newline) (network-query/addresses 'foo q zone zone-origin addresses (lambda (qr) (drive-resolver (k qr))))] [_ 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))) test-roots ) #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))