Improve: with gvisor internal log

This commit is contained in:
xjasonlyu
2023-03-27 13:21:10 +08:00
parent 66860d3de8
commit 7327f2c784
4 changed files with 9 additions and 19 deletions

View File

@@ -23,10 +23,6 @@ type Config struct {
// stack to set transport handlers. // stack to set transport handlers.
TransportHandler adapter.TransportHandler TransportHandler adapter.TransportHandler
// PrintFunc is the function that will be called
// to print internal stack events.
PrintFunc func(string, ...any)
// Options are supplement options to apply settings // Options are supplement options to apply settings
// for the internal stack. // for the internal stack.
Options []option.Option Options []option.Option
@@ -34,10 +30,6 @@ type Config struct {
// CreateStack creates *stack.Stack with given config. // CreateStack creates *stack.Stack with given config.
func CreateStack(cfg *Config) (*stack.Stack, error) { func CreateStack(cfg *Config) (*stack.Stack, error) {
if cfg.PrintFunc == nil {
cfg.PrintFunc = func(string, ...any) {}
}
opts := []option.Option{option.WithDefault()} opts := []option.Option{option.WithDefault()}
if len(opts) > 0 { if len(opts) > 0 {
opts = append(opts, cfg.Options...) opts = append(opts, cfg.Options...)
@@ -64,8 +56,8 @@ func CreateStack(cfg *Config) (*stack.Stack, error) {
// before creating NIC, otherwise NIC would dispatch packets // before creating NIC, otherwise NIC would dispatch packets
// to stack and cause race condition. // to stack and cause race condition.
// Initiate transport protocol (TCP/UDP) with given handler. // Initiate transport protocol (TCP/UDP) with given handler.
withTCPHandler(cfg.TransportHandler.HandleTCP, cfg.PrintFunc), withTCPHandler(cfg.TransportHandler.HandleTCP),
withUDPHandler(cfg.TransportHandler.HandleUDP, cfg.PrintFunc), withUDPHandler(cfg.TransportHandler.HandleUDP),
// Create stack NIC and then bind link endpoint to it. // Create stack NIC and then bind link endpoint to it.
withCreatingNIC(nicID, cfg.LinkEndpoint), withCreatingNIC(nicID, cfg.LinkEndpoint),

View File

@@ -3,6 +3,7 @@ package core
import ( import (
"time" "time"
glog "gvisor.dev/gvisor/pkg/log"
"gvisor.dev/gvisor/pkg/tcpip" "gvisor.dev/gvisor/pkg/tcpip"
"gvisor.dev/gvisor/pkg/tcpip/adapters/gonet" "gvisor.dev/gvisor/pkg/tcpip/adapters/gonet"
"gvisor.dev/gvisor/pkg/tcpip/header" "gvisor.dev/gvisor/pkg/tcpip/header"
@@ -40,7 +41,7 @@ const (
tcpKeepaliveInterval = 30 * time.Second tcpKeepaliveInterval = 30 * time.Second
) )
func withTCPHandler(handle func(adapter.TCPConn), printf func(string, ...any)) option.Option { func withTCPHandler(handle func(adapter.TCPConn)) option.Option {
return func(s *stack.Stack) error { return func(s *stack.Stack) error {
tcpForwarder := tcp.NewForwarder(s, defaultWndSize, maxConnAttempts, func(r *tcp.ForwarderRequest) { tcpForwarder := tcp.NewForwarder(s, defaultWndSize, maxConnAttempts, func(r *tcp.ForwarderRequest) {
var ( var (
@@ -52,7 +53,7 @@ func withTCPHandler(handle func(adapter.TCPConn), printf func(string, ...any)) o
defer func() { defer func() {
if err != nil { if err != nil {
printf("forward tcp request %s:%d->%s:%d: %s", glog.Warningf("forward tcp request: %s:%d->%s:%d: %s",
id.RemoteAddress, id.RemotePort, id.LocalAddress, id.LocalPort, err) id.RemoteAddress, id.RemotePort, id.LocalAddress, id.LocalPort, err)
} }
}() }()

View File

@@ -1,6 +1,7 @@
package core package core
import ( import (
glog "gvisor.dev/gvisor/pkg/log"
"gvisor.dev/gvisor/pkg/tcpip/adapters/gonet" "gvisor.dev/gvisor/pkg/tcpip/adapters/gonet"
"gvisor.dev/gvisor/pkg/tcpip/stack" "gvisor.dev/gvisor/pkg/tcpip/stack"
"gvisor.dev/gvisor/pkg/tcpip/transport/udp" "gvisor.dev/gvisor/pkg/tcpip/transport/udp"
@@ -10,7 +11,7 @@ import (
"github.com/xjasonlyu/tun2socks/v2/core/option" "github.com/xjasonlyu/tun2socks/v2/core/option"
) )
func withUDPHandler(handle func(adapter.UDPConn), printf func(string, ...any)) option.Option { func withUDPHandler(handle func(adapter.UDPConn)) option.Option {
return func(s *stack.Stack) error { return func(s *stack.Stack) error {
udpForwarder := udp.NewForwarder(s, func(r *udp.ForwarderRequest) { udpForwarder := udp.NewForwarder(s, func(r *udp.ForwarderRequest) {
var ( var (
@@ -19,7 +20,7 @@ func withUDPHandler(handle func(adapter.UDPConn), printf func(string, ...any)) o
) )
ep, err := r.CreateEndpoint(&wq) ep, err := r.CreateEndpoint(&wq)
if err != nil { if err != nil {
printf("udp forwarder request %s:%d->%s:%d: %s", glog.Warningf("forward udp request: %s:%d->%s:%d: %s",
id.RemoteAddress, id.RemotePort, id.LocalAddress, id.LocalPort, err) id.RemoteAddress, id.RemotePort, id.LocalAddress, id.LocalPort, err)
return return
} }

View File

@@ -2,7 +2,6 @@ package engine
import ( import (
"errors" "errors"
"fmt"
"net" "net"
"sync" "sync"
"time" "time"
@@ -192,10 +191,7 @@ func netstack(k *Key) (err error) {
if _defaultStack, err = core.CreateStack(&core.Config{ if _defaultStack, err = core.CreateStack(&core.Config{
LinkEndpoint: _defaultDevice, LinkEndpoint: _defaultDevice,
TransportHandler: &mirror.Tunnel{}, TransportHandler: &mirror.Tunnel{},
PrintFunc: func(format string, v ...any) { Options: opts,
log.Warnf("[STACK] %s", fmt.Sprintf(format, v...))
},
Options: opts,
}); err != nil { }); err != nil {
return return
} }