summaryrefslogtreecommitdiff
path: root/ebus-racket/dumper.rkt
diff options
context:
space:
mode:
Diffstat (limited to 'ebus-racket/dumper.rkt')
-rwxr-xr-xebus-racket/dumper.rkt48
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))))