|
|
|
|
@ -713,7 +713,7 @@ func (t *Wrapper) Read(buffs [][]byte, sizes []int, offset int) (int, error) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if capt := t.captureHook.Load(); capt != nil { |
|
|
|
|
capt(capture.FromLocal, time.Now(), data[res.dataOffset:]) |
|
|
|
|
capt(capture.FromLocal, time.Now(), p.Buffer()) |
|
|
|
|
} |
|
|
|
|
if !t.disableFilter { |
|
|
|
|
response := t.filterPacketOutboundToWireGuard(p) |
|
|
|
|
@ -722,13 +722,13 @@ func (t *Wrapper) Read(buffs [][]byte, sizes []int, offset int) (int, error) { |
|
|
|
|
continue |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
n := copy(buffs[buffsPos][offset:], data[res.dataOffset:]) |
|
|
|
|
n := copy(buffs[buffsPos][offset:], p.Buffer()) |
|
|
|
|
if n != len(data)-res.dataOffset { |
|
|
|
|
panic(fmt.Sprintf("short copy: %d != %d", n, len(data)-res.dataOffset)) |
|
|
|
|
} |
|
|
|
|
sizes[buffsPos] = n |
|
|
|
|
if stats := t.stats.Load(); stats != nil { |
|
|
|
|
stats.UpdateTxVirtual(data[res.dataOffset:]) |
|
|
|
|
stats.UpdateTxVirtual(p.Buffer()) |
|
|
|
|
} |
|
|
|
|
buffsPos++ |
|
|
|
|
} |
|
|
|
|
@ -942,12 +942,12 @@ func (t *Wrapper) InjectInboundPacketBuffer(pkt stack.PacketBufferPtr) error { |
|
|
|
|
} |
|
|
|
|
pkt.DecRef() |
|
|
|
|
|
|
|
|
|
if capt := t.captureHook.Load(); capt != nil { |
|
|
|
|
capt(capture.SynthesizedToLocal, time.Now(), buf[PacketStartOffset:]) |
|
|
|
|
} |
|
|
|
|
p := parsedPacketPool.Get().(*packet.Parsed) |
|
|
|
|
defer parsedPacketPool.Put(p) |
|
|
|
|
p.Decode(buf[PacketStartOffset:]) |
|
|
|
|
if capt := t.captureHook.Load(); capt != nil { |
|
|
|
|
capt(capture.SynthesizedToLocal, time.Now(), p.Buffer()) |
|
|
|
|
} |
|
|
|
|
t.dnatV4(p) |
|
|
|
|
|
|
|
|
|
return t.InjectInboundDirect(buf, PacketStartOffset) |
|
|
|
|
|