Add ping proxy implementation

This commit is contained in:
世界 2025-08-22 14:21:21 +08:00
parent 933bd2b2d5
commit 036d61a0aa
No known key found for this signature in database
GPG key ID: CD109927C34A63C4
9 changed files with 348 additions and 7 deletions

View file

@ -11,6 +11,7 @@ import (
"github.com/sagernet/gvisor/pkg/tcpip"
"github.com/sagernet/gvisor/pkg/tcpip/adapters/gonet"
"github.com/sagernet/gvisor/pkg/tcpip/header"
"github.com/sagernet/gvisor/pkg/tcpip/header/parse"
"github.com/sagernet/gvisor/pkg/tcpip/network/ipv4"
"github.com/sagernet/gvisor/pkg/tcpip/network/ipv6"
"github.com/sagernet/gvisor/pkg/tcpip/stack"
@ -178,7 +179,8 @@ func (w *ICMPBackWriter) WritePacket(p []byte) error {
Payload: buffer.MakeWithData(p),
})
defer packet.DecRef()
err = route.WriteHeaderIncludedPacket(packet)
parse.IPv4(packet)
err = route.WritePacketDirect(packet)
if err != nil {
return gonet.TranslateNetstackError(err)
}
@ -198,7 +200,7 @@ func (w *ICMPBackWriter) WritePacket(p []byte) error {
Payload: buffer.MakeWithData(p),
})
defer packet.DecRef()
err = route.WriteHeaderIncludedPacket(packet)
err = route.WritePacketDirect(packet)
if err != nil {
return gonet.TranslateNetstackError(err)
}