Update icmp network name
This commit is contained in:
parent
59e42c0d1f
commit
e6c64e3f18
7 changed files with 9 additions and 49 deletions
2
go.mod
2
go.mod
|
|
@ -9,7 +9,7 @@ require (
|
||||||
github.com/sagernet/gvisor v0.0.0-20250822052253-5558536cf237
|
github.com/sagernet/gvisor v0.0.0-20250822052253-5558536cf237
|
||||||
github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a
|
github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a
|
||||||
github.com/sagernet/nftables v0.3.0-beta.4
|
github.com/sagernet/nftables v0.3.0-beta.4
|
||||||
github.com/sagernet/sing v0.7.6-0.20250825115037-1dbcbdf691a5
|
github.com/sagernet/sing v0.7.6-0.20250825141840-811aa328e57b
|
||||||
github.com/stretchr/testify v1.9.0
|
github.com/stretchr/testify v1.9.0
|
||||||
go4.org/netipx v0.0.0-20231129151722-fdeea329fbba
|
go4.org/netipx v0.0.0-20231129151722-fdeea329fbba
|
||||||
golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8
|
golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8
|
||||||
|
|
|
||||||
4
go.sum
4
go.sum
|
|
@ -24,8 +24,8 @@ github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a h1:ObwtHN2VpqE0ZN
|
||||||
github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM=
|
github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM=
|
||||||
github.com/sagernet/nftables v0.3.0-beta.4 h1:kbULlAwAC3jvdGAC1P5Fa3GSxVwQJibNenDW2zaXr8I=
|
github.com/sagernet/nftables v0.3.0-beta.4 h1:kbULlAwAC3jvdGAC1P5Fa3GSxVwQJibNenDW2zaXr8I=
|
||||||
github.com/sagernet/nftables v0.3.0-beta.4/go.mod h1:OQXAjvjNGGFxaTgVCSTRIhYB5/llyVDeapVoENYBDS8=
|
github.com/sagernet/nftables v0.3.0-beta.4/go.mod h1:OQXAjvjNGGFxaTgVCSTRIhYB5/llyVDeapVoENYBDS8=
|
||||||
github.com/sagernet/sing v0.7.6-0.20250825115037-1dbcbdf691a5 h1:ozQMu9iZGuSNdNaoBTy2E9ukYsE0uY4p9U0jA0CqrsM=
|
github.com/sagernet/sing v0.7.6-0.20250825141840-811aa328e57b h1:RCfo1Q6VDAXfumNupRyqTomKzDODhASswkxVCqM8l2M=
|
||||||
github.com/sagernet/sing v0.7.6-0.20250825115037-1dbcbdf691a5/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
|
github.com/sagernet/sing v0.7.6-0.20250825141840-811aa328e57b/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
|
||||||
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
||||||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||||
github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8=
|
github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8=
|
||||||
|
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
package tun
|
|
||||||
|
|
||||||
import (
|
|
||||||
"strconv"
|
|
||||||
|
|
||||||
"github.com/sagernet/sing-tun/internal/gtcpip"
|
|
||||||
"github.com/sagernet/sing-tun/internal/gtcpip/header"
|
|
||||||
F "github.com/sagernet/sing/common/format"
|
|
||||||
N "github.com/sagernet/sing/common/network"
|
|
||||||
)
|
|
||||||
|
|
||||||
func NetworkName(network uint8) string {
|
|
||||||
switch tcpip.TransportProtocolNumber(network) {
|
|
||||||
case header.TCPProtocolNumber:
|
|
||||||
return N.NetworkTCP
|
|
||||||
case header.UDPProtocolNumber:
|
|
||||||
return N.NetworkUDP
|
|
||||||
case header.ICMPv4ProtocolNumber:
|
|
||||||
return N.NetworkICMPv4
|
|
||||||
case header.ICMPv6ProtocolNumber:
|
|
||||||
return N.NetworkICMPv6
|
|
||||||
}
|
|
||||||
return F.ToString(network)
|
|
||||||
}
|
|
||||||
|
|
||||||
func NetworkFromName(name string) uint8 {
|
|
||||||
switch name {
|
|
||||||
case N.NetworkTCP:
|
|
||||||
return uint8(header.TCPProtocolNumber)
|
|
||||||
case N.NetworkUDP:
|
|
||||||
return uint8(header.UDPProtocolNumber)
|
|
||||||
case N.NetworkICMPv4:
|
|
||||||
return uint8(header.ICMPv4ProtocolNumber)
|
|
||||||
case N.NetworkICMPv6:
|
|
||||||
return uint8(header.ICMPv6ProtocolNumber)
|
|
||||||
}
|
|
||||||
parseNetwork, err := strconv.ParseUint(name, 10, 8)
|
|
||||||
if err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return uint8(parseNetwork)
|
|
||||||
}
|
|
||||||
|
|
@ -12,6 +12,7 @@ import (
|
||||||
"github.com/sagernet/sing-tun/internal/gtcpip/header"
|
"github.com/sagernet/sing-tun/internal/gtcpip/header"
|
||||||
"github.com/sagernet/sing-tun/ping"
|
"github.com/sagernet/sing-tun/ping"
|
||||||
"github.com/sagernet/sing/common/buf"
|
"github.com/sagernet/sing/common/buf"
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import (
|
||||||
"github.com/sagernet/sing/common/control"
|
"github.com/sagernet/sing/common/control"
|
||||||
E "github.com/sagernet/sing/common/exceptions"
|
E "github.com/sagernet/sing/common/exceptions"
|
||||||
M "github.com/sagernet/sing/common/metadata"
|
M "github.com/sagernet/sing/common/metadata"
|
||||||
|
|
||||||
"golang.org/x/sys/unix"
|
"golang.org/x/sys/unix"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ func (f *ICMPForwarder) HandlePacket(id stack.TransportEndpointID, pkt *stack.Pa
|
||||||
if destinationAddr != f.inet4Address {
|
if destinationAddr != f.inet4Address {
|
||||||
action, err := f.mapping.Lookup(DirectRouteSession{Source: sourceAddr, Destination: destinationAddr}, func(timeout time.Duration) (DirectRouteDestination, error) {
|
action, err := f.mapping.Lookup(DirectRouteSession{Source: sourceAddr, Destination: destinationAddr}, func(timeout time.Duration) (DirectRouteDestination, error) {
|
||||||
return f.handler.PrepareConnection(
|
return f.handler.PrepareConnection(
|
||||||
N.NetworkICMPv4,
|
N.NetworkICMP,
|
||||||
M.SocksaddrFrom(sourceAddr, 0),
|
M.SocksaddrFrom(sourceAddr, 0),
|
||||||
M.SocksaddrFrom(destinationAddr, 0),
|
M.SocksaddrFrom(destinationAddr, 0),
|
||||||
&ICMPBackWriter{
|
&ICMPBackWriter{
|
||||||
|
|
@ -120,7 +120,7 @@ func (f *ICMPForwarder) HandlePacket(id stack.TransportEndpointID, pkt *stack.Pa
|
||||||
if destinationAddr != f.inet6Address {
|
if destinationAddr != f.inet6Address {
|
||||||
action, err := f.mapping.Lookup(DirectRouteSession{Source: sourceAddr, Destination: destinationAddr}, func(timeout time.Duration) (DirectRouteDestination, error) {
|
action, err := f.mapping.Lookup(DirectRouteSession{Source: sourceAddr, Destination: destinationAddr}, func(timeout time.Duration) (DirectRouteDestination, error) {
|
||||||
return f.handler.PrepareConnection(
|
return f.handler.PrepareConnection(
|
||||||
N.NetworkICMPv6,
|
N.NetworkICMP,
|
||||||
M.SocksaddrFrom(sourceAddr, 0),
|
M.SocksaddrFrom(sourceAddr, 0),
|
||||||
M.SocksaddrFrom(destinationAddr, 0),
|
M.SocksaddrFrom(destinationAddr, 0),
|
||||||
&ICMPBackWriter{
|
&ICMPBackWriter{
|
||||||
|
|
|
||||||
|
|
@ -660,7 +660,7 @@ func (s *System) processIPv4ICMP(ipHdr header.IPv4, icmpHdr header.ICMPv4) (bool
|
||||||
if destinationAddr != s.inet4Address {
|
if destinationAddr != s.inet4Address {
|
||||||
action, err := s.directNat.Lookup(DirectRouteSession{Source: sourceAddr, Destination: destinationAddr}, func(timeout time.Duration) (DirectRouteDestination, error) {
|
action, err := s.directNat.Lookup(DirectRouteSession{Source: sourceAddr, Destination: destinationAddr}, func(timeout time.Duration) (DirectRouteDestination, error) {
|
||||||
return s.handler.PrepareConnection(
|
return s.handler.PrepareConnection(
|
||||||
N.NetworkICMPv4,
|
N.NetworkICMP,
|
||||||
M.SocksaddrFrom(sourceAddr, 0),
|
M.SocksaddrFrom(sourceAddr, 0),
|
||||||
M.SocksaddrFrom(destinationAddr, 0),
|
M.SocksaddrFrom(destinationAddr, 0),
|
||||||
&systemICMPDirectPacketWriter4{s.tun, s.frontHeadroom + PacketOffset, sourceAddr},
|
&systemICMPDirectPacketWriter4{s.tun, s.frontHeadroom + PacketOffset, sourceAddr},
|
||||||
|
|
@ -732,7 +732,7 @@ func (s *System) processIPv6ICMP(ipHdr header.IPv6, icmpHdr header.ICMPv6) (bool
|
||||||
if destinationAddr != s.inet6Address {
|
if destinationAddr != s.inet6Address {
|
||||||
action, err := s.directNat.Lookup(DirectRouteSession{Source: sourceAddr, Destination: destinationAddr}, func(timeout time.Duration) (DirectRouteDestination, error) {
|
action, err := s.directNat.Lookup(DirectRouteSession{Source: sourceAddr, Destination: destinationAddr}, func(timeout time.Duration) (DirectRouteDestination, error) {
|
||||||
return s.handler.PrepareConnection(
|
return s.handler.PrepareConnection(
|
||||||
N.NetworkICMPv6,
|
N.NetworkICMP,
|
||||||
M.SocksaddrFrom(sourceAddr, 0),
|
M.SocksaddrFrom(sourceAddr, 0),
|
||||||
M.SocksaddrFrom(destinationAddr, 0),
|
M.SocksaddrFrom(destinationAddr, 0),
|
||||||
&systemICMPDirectPacketWriter6{s.tun, s.frontHeadroom + PacketOffset, sourceAddr},
|
&systemICMPDirectPacketWriter6{s.tun, s.frontHeadroom + PacketOffset, sourceAddr},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue