4
4
"flag"
5
5
"fmt"
6
6
"io/ioutil"
7
+ "net/http"
7
8
"log"
8
9
"time"
9
10
"github.com/google/gopacket"
@@ -14,6 +15,9 @@ import (
14
15
func main () {
15
16
var err error
16
17
18
+ requests := 0
19
+ responses := 0
20
+
17
21
// cmd line options
18
22
var (
19
23
device = flag .String ("device" , "docker0" , "device to sniff packets from" )
@@ -30,6 +34,21 @@ func main() {
30
34
log .SetOutput (ioutil .Discard )
31
35
}
32
36
37
+
38
+ go func () {
39
+ http .HandleFunc ("/requests" , func (w http.ResponseWriter , r * http.Request ) {
40
+ if _ , err := w .Write ([]byte (fmt .Sprintf ("%d\n " , requests ))); err != nil {
41
+ log .Fatal ("Can't write rate" )
42
+ }
43
+ })
44
+ http .HandleFunc ("/responses" , func (w http.ResponseWriter , r * http.Request ) {
45
+ if _ , err := w .Write ([]byte (fmt .Sprintf ("%d\n " , responses ))); err != nil {
46
+ log .Fatal ("Can't write rate" )
47
+ }
48
+ })
49
+ log .Fatal (http .ListenAndServe (":6666" , nil ))
50
+ }()
51
+
33
52
requestFilter := fmt .Sprintf ("src %s and dst %s and (tcp[0xd] & tcp-syn) != 0" , * clientIP , * gorbIP )
34
53
responseFilter := fmt .Sprintf ("dst %s and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)" , * clientIP )
35
54
@@ -71,9 +90,6 @@ func main() {
71
90
}
72
91
responsePacketSource = gopacket .NewPacketSource (handle_res , handle_res .LinkType ())
73
92
74
- requests := 0
75
- responses := 0
76
-
77
93
for {
78
94
select {
79
95
case request := <- requestPacketSource .Packets ():
0 commit comments