gfwproxyshadowsocksdocker-imagegogolanggvisornatnetworksocks4socks5tcpip-stacktortun-devicetun2sockstunneludpwireguard
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
566 B
36 lines
566 B
package tunnel
|
|
|
|
import (
|
|
"github.com/xjasonlyu/tun2socks/v2/core/adapter"
|
|
)
|
|
|
|
// Unbuffered TCP/UDP queues.
|
|
var (
|
|
_tcpQueue = make(chan adapter.TCPConn)
|
|
_udpQueue = make(chan adapter.UDPConn)
|
|
)
|
|
|
|
func init() {
|
|
go process()
|
|
}
|
|
|
|
// TCPIn return fan-in TCP queue.
|
|
func TCPIn() chan<- adapter.TCPConn {
|
|
return _tcpQueue
|
|
}
|
|
|
|
// UDPIn return fan-in UDP queue.
|
|
func UDPIn() chan<- adapter.UDPConn {
|
|
return _udpQueue
|
|
}
|
|
|
|
func process() {
|
|
for {
|
|
select {
|
|
case conn := <-_tcpQueue:
|
|
go handleTCPConn(conn)
|
|
case conn := <-_udpQueue:
|
|
go handleUDPConn(conn)
|
|
}
|
|
}
|
|
}
|
|
|