diff options
Diffstat (limited to 'ebus-racket/dumper.rkt')
-rwxr-xr-x | ebus-racket/dumper.rkt | 48 |
1 files changed, 36 insertions, 12 deletions
diff --git a/ebus-racket/dumper.rkt b/ebus-racket/dumper.rkt index 3c66015..7ffd556 100755 --- a/ebus-racket/dumper.rkt +++ b/ebus-racket/dumper.rkt @@ -1,27 +1,51 @@ #! /usr/bin/env racket -#lang racket - -(require "layer2.rkt") +#lang racket/base +(require racket/cmdline + racket/tcp + racket/pretty + "layer2.rkt" + "layer7.rkt") ;(define verbose? (make-parameter #f)) (define connect-host? (make-parameter null)) (define connect-port? (make-parameter null)) +(define layer7? (make-parameter #f)) (define greeting (command-line #:once-each -; [("-v") "Verbose mode" (verbose? #t)] - [("-c" "--connect") host port - "Connect to server <host> <port>" - (connect-host? host) - (connect-port? (string->number port)) - ])) + [("-a" "--layer7") + "Parse Layer7" (layer7? #t)] + [("-c" "--connect") + host port + "Connect to server <host> <port>" + (connect-host? host) + (connect-port? (string->number port)) + ])) + ; Connect (if (or (null? (connect-host?)) (null? (connect-port?))) - (display "Using stdin") + (display "Using stdin\n") (let-values ([(cin cout) (tcp-connect (connect-host?) (connect-port?))]) (display (format "Connected to ~s ~s ~n" (connect-host?) (connect-port?))) (current-input-port cin))) -; -(layer2-read-ebus-loop (current-input-port)) +(define (read-ebus-loop2 input-port) + (let ([paket (layer2-read-ebus (current-input-port))]) + (pretty-print paket) + (cond ((not (eof-object? paket)) (read-ebus-loop2 input-port))))) + +(define (read-ebus-loop7 input-port) + (let ([fields (layer7-read-ebus (current-input-port))]) + (if (not (void? fields)) + (pretty-print fields) + (display "")) + (cond ((not (eof-object? fields)) (read-ebus-loop7 input-port))))) + +(if (layer7?) + (let () + (display "Layer 7\n") + (read-ebus-loop7 (current-input-port))) + (let () + (display "Layer 2\n") + (read-ebus-loop2 (current-input-port)))) |