diff --git a/go.mod b/go.mod index 672eb6e..452ddac 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/sagernet/gvisor v0.0.0-20250822052253-5558536cf237 github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a 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 go4.org/netipx v0.0.0-20231129151722-fdeea329fbba golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 diff --git a/go.sum b/go.sum index 8f45d8c..4b6325c 100644 --- a/go.sum +++ b/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/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/sing v0.7.6-0.20250825115037-1dbcbdf691a5 h1:ozQMu9iZGuSNdNaoBTy2E9ukYsE0uY4p9U0jA0CqrsM= -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 h1:RCfo1Q6VDAXfumNupRyqTomKzDODhASswkxVCqM8l2M= +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/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8= diff --git a/network_name.go b/network_name.go deleted file mode 100644 index fa487fb..0000000 --- a/network_name.go +++ /dev/null @@ -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) -} diff --git a/ping/ping_test.go b/ping/ping_test.go index 73a56b2..7ec291a 100644 --- a/ping/ping_test.go +++ b/ping/ping_test.go @@ -12,6 +12,7 @@ import ( "github.com/sagernet/sing-tun/internal/gtcpip/header" "github.com/sagernet/sing-tun/ping" "github.com/sagernet/sing/common/buf" + "github.com/stretchr/testify/require" ) diff --git a/ping/socket_unix.go b/ping/socket_unix.go index 3d3c59b..3e9bc99 100644 --- a/ping/socket_unix.go +++ b/ping/socket_unix.go @@ -12,6 +12,7 @@ import ( "github.com/sagernet/sing/common/control" E "github.com/sagernet/sing/common/exceptions" M "github.com/sagernet/sing/common/metadata" + "golang.org/x/sys/unix" ) diff --git a/stack_gvisor_icmp.go b/stack_gvisor_icmp.go index c2e369b..cb46405 100644 --- a/stack_gvisor_icmp.go +++ b/stack_gvisor_icmp.go @@ -61,7 +61,7 @@ func (f *ICMPForwarder) HandlePacket(id stack.TransportEndpointID, pkt *stack.Pa if destinationAddr != f.inet4Address { action, err := f.mapping.Lookup(DirectRouteSession{Source: sourceAddr, Destination: destinationAddr}, func(timeout time.Duration) (DirectRouteDestination, error) { return f.handler.PrepareConnection( - N.NetworkICMPv4, + N.NetworkICMP, M.SocksaddrFrom(sourceAddr, 0), M.SocksaddrFrom(destinationAddr, 0), &ICMPBackWriter{ @@ -120,7 +120,7 @@ func (f *ICMPForwarder) HandlePacket(id stack.TransportEndpointID, pkt *stack.Pa if destinationAddr != f.inet6Address { action, err := f.mapping.Lookup(DirectRouteSession{Source: sourceAddr, Destination: destinationAddr}, func(timeout time.Duration) (DirectRouteDestination, error) { return f.handler.PrepareConnection( - N.NetworkICMPv6, + N.NetworkICMP, M.SocksaddrFrom(sourceAddr, 0), M.SocksaddrFrom(destinationAddr, 0), &ICMPBackWriter{ diff --git a/stack_system.go b/stack_system.go index 5797fa9..d09e754 100644 --- a/stack_system.go +++ b/stack_system.go @@ -660,7 +660,7 @@ func (s *System) processIPv4ICMP(ipHdr header.IPv4, icmpHdr header.ICMPv4) (bool if destinationAddr != s.inet4Address { action, err := s.directNat.Lookup(DirectRouteSession{Source: sourceAddr, Destination: destinationAddr}, func(timeout time.Duration) (DirectRouteDestination, error) { return s.handler.PrepareConnection( - N.NetworkICMPv4, + N.NetworkICMP, M.SocksaddrFrom(sourceAddr, 0), M.SocksaddrFrom(destinationAddr, 0), &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 { action, err := s.directNat.Lookup(DirectRouteSession{Source: sourceAddr, Destination: destinationAddr}, func(timeout time.Duration) (DirectRouteDestination, error) { return s.handler.PrepareConnection( - N.NetworkICMPv6, + N.NetworkICMP, M.SocksaddrFrom(sourceAddr, 0), M.SocksaddrFrom(destinationAddr, 0), &systemICMPDirectPacketWriter6{s.tun, s.frontHeadroom + PacketOffset, sourceAddr},