]> gitweb.factorcode.org Git - factor.git/blob - extra/io/sniffer/filter/bsd/bsd.factor
Initial import
[factor.git] / extra / io / sniffer / filter / bsd / bsd.factor
1 USING: alien.c-types hexdump io io.backend io.sockets.headers
2 io.sockets.headers.bsd kernel io.sniffer io.sniffer.bsd
3 io.sniffer.filter io.streams.string io.unix.backend math
4 sequences system ;
5 IN: io.sniffer.filter.bsd
6
7 ! http://www.iana.org/assignments/ethernet-numbers
8
9 : bpf-align ( n -- n' )
10     #! Align to next higher word size
11     "long" heap-size 1- [ + ] keep bitnot bitand ;
12
13 M: unix-io packet. ( string -- )
14     18 swap cut swap >byte-array bpfh.
15     (packet.) ;
16
17 M: unix-io sniffer-loop ( stream -- )
18     nl nl
19     4096 over stream-read-partial
20         dup hexdump.
21     packet.
22     sniffer-loop ;
23
24
25 ! Mac 
26 : sniff-wired ( -- )
27     "/dev/bpf0" "en0" <sniffer-spec> <sniffer> sniffer-loop ;
28
29 ! Macbook
30 : sniff-wireless ( -- )
31     "/dev/bpf0" "en1" <sniffer-spec> <sniffer> sniffer-loop ;
32