mirror of
https://github.com/tailscale/tailscale.git
synced 2025-10-25 02:02:51 +00:00
wgengine/packet: refactor and expose UDP header marshaling (#408)
Signed-off-by: Dmytro Shynkevych <dmytro@tailscale.com>
This commit is contained in:
committed by
GitHub
parent
5e0ff494a5
commit
059b1d10bb
@@ -176,10 +176,11 @@ func (t *TUN) filterOut(buf []byte) filter.Response {
|
||||
return filter.Drop
|
||||
}
|
||||
|
||||
var q packet.QDecode
|
||||
if filt.RunOut(buf, &q, t.filterFlags) == filter.Accept {
|
||||
var p packet.ParsedPacket
|
||||
if filt.RunOut(buf, &p, t.filterFlags) == filter.Accept {
|
||||
return filter.Accept
|
||||
}
|
||||
|
||||
return filter.Drop
|
||||
}
|
||||
|
||||
@@ -218,13 +219,15 @@ func (t *TUN) filterIn(buf []byte) filter.Response {
|
||||
return filter.Drop
|
||||
}
|
||||
|
||||
var q packet.QDecode
|
||||
if filt.RunIn(buf, &q, t.filterFlags) == filter.Accept {
|
||||
var p packet.ParsedPacket
|
||||
if filt.RunIn(buf, &p, t.filterFlags) == filter.Accept {
|
||||
// Only in fake mode, answer any incoming pings.
|
||||
if q.IsEchoRequest() {
|
||||
if p.IsEchoRequest() {
|
||||
ft, ok := t.tdev.(*fakeTUN)
|
||||
if ok {
|
||||
packet := q.EchoRespond()
|
||||
header := p.ICMPHeader()
|
||||
header.ToResponse()
|
||||
packet := packet.Generate(&header, p.Payload())
|
||||
ft.Write(packet, 0)
|
||||
// We already handled it, stop.
|
||||
return filter.Drop
|
||||
@@ -232,6 +235,7 @@ func (t *TUN) filterIn(buf []byte) filter.Response {
|
||||
}
|
||||
return filter.Accept
|
||||
}
|
||||
|
||||
return filter.Drop
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user