Add support for known network layers

Fix #310
Close #311
This commit is contained in:
Leonid Bugaev
2016-06-20 19:32:13 +03:00
parent 2c49556b2e
commit 51860e130c
+22 -8
View File
@@ -351,16 +351,30 @@ func (t *Listener) readPcap() {
continue
}
if decoder == layers.LinkTypeEthernet {
// Skip ethernet layer, 14 bytes
data = packet.Data()[14:]
} else if decoder == layers.LinkTypeNull || decoder == layers.LinkTypeLoop {
data = packet.Data()[4:]
} else {
log.Println("Unknown packet layer", packet)
break
// We should remove network layer before parsing TCP/IP data
var of int
switch decoder {
case layers.LinkTypeEthernet:
of = 14
case layers.LinkTypePPP:
of = 1
case layers.LinkTypeFDDI:
of = 13
case layers.LinkTypeNull:
of = 4
case layers.LinkTypeLoop:
of = 4
case layers.LinkTypeRaw:
of = 0
case layers.LinkTypeLinuxSLL:
of = 16
default:
log.Println("Unknown packet layer", packet)
break
}
data = packet.Data()[of:]
version := uint8(data[0]) >> 4
if version == 4 {