Updates for #:meta-level -> inbound/outbound and for (actor(relay...))->(actor...)
This commit is contained in:
parent
b7bdb4065e
commit
aea344fd81
52
tk-dns.rkt
52
tk-dns.rkt
|
@ -23,6 +23,7 @@
|
|||
(require racket/match)
|
||||
(require "codec.rkt")
|
||||
(require syndicate/actor)
|
||||
(require syndicate/protocol/standard-relay)
|
||||
(require syndicate/drivers/udp)
|
||||
|
||||
(provide (struct-out bad-dns-packet)
|
||||
|
@ -38,38 +39,35 @@
|
|||
|
||||
(define (dns-read-driver s)
|
||||
(actor
|
||||
(forever
|
||||
(on (message (udp-packet $source s #"") #:meta-level 1)
|
||||
(log-info "Debug dump packet received")
|
||||
(send! `(debug-dump)))
|
||||
(on (message (udp-packet $source s $body) #:meta-level 1)
|
||||
(send!
|
||||
(with-handlers ((exn:fail? (lambda (e)
|
||||
(bad-dns-packet body source s 'unparseable))))
|
||||
(define message (packet->dns-message body))
|
||||
(case (dns-message-direction message)
|
||||
((request) (dns-request message source s))
|
||||
((response) (dns-reply message source s)))))))))
|
||||
(on (message (inbound (udp-packet $source s #"")))
|
||||
(log-info "Debug dump packet received")
|
||||
(send! `(debug-dump)))
|
||||
(on (message (inbound (udp-packet $source s $body)))
|
||||
(send!
|
||||
(with-handlers ((exn:fail? (lambda (e)
|
||||
(bad-dns-packet body source s 'unparseable))))
|
||||
(define message (packet->dns-message body))
|
||||
(case (dns-message-direction message)
|
||||
((request) (dns-request message source s))
|
||||
((response) (dns-reply message source s))))))))
|
||||
|
||||
(define (translate message s sink)
|
||||
(with-handlers ((exn:fail? (lambda (e)
|
||||
(send! (bad-dns-packet message s sink 'unencodable)))))
|
||||
(send! #:meta-level 1 (udp-packet s sink (dns-message->packet message)))))
|
||||
(send! (outbound (udp-packet s sink (dns-message->packet message))))))
|
||||
|
||||
(define (dns-write-driver s)
|
||||
(actor (forever
|
||||
(on (message (dns-request $message s $sink))
|
||||
(translate message s sink))
|
||||
(on (message (dns-reply $message s $sink))
|
||||
(translate message s sink)))))
|
||||
(actor (on (message (dns-request $message s $sink))
|
||||
(translate message s sink))
|
||||
(on (message (dns-reply $message s $sink))
|
||||
(translate message s sink))))
|
||||
|
||||
(define (dns-spy)
|
||||
(actor (forever
|
||||
(on (message (dns-request $message $source $sink))
|
||||
(log-info (format "DNS: ~v asks ~v ~v~n : ~v"
|
||||
source sink (dns-message-id message)
|
||||
(dns-message-questions message))))
|
||||
(on (message (dns-reply $message $source $sink))
|
||||
(log-info (format "DNS: ~v answers ~v~n : ~v"
|
||||
source sink
|
||||
message))))))
|
||||
(actor (on (message (dns-request $message $source $sink))
|
||||
(log-info (format "DNS: ~v asks ~v ~v~n : ~v"
|
||||
source sink (dns-message-id message)
|
||||
(dns-message-questions message))))
|
||||
(on (message (dns-reply $message $source $sink))
|
||||
(log-info (format "DNS: ~v answers ~v~n : ~v"
|
||||
source sink
|
||||
message)))))
|
||||
|
|
Loading…
Reference in New Issue