udptlspipe tests

Signed-off-by: Iurii Egorov <ye@amnezia.org>
This commit is contained in:
Iurii Egorov 2024-03-22 00:54:26 +03:00
parent 28bf1e21f0
commit 253dbf58ef
11 changed files with 31 additions and 25 deletions

View file

@ -101,6 +101,7 @@ type Device struct {
udptlspipe *pipe.Server
serverMode bool
udpMode bool
}
type aSecCfgType struct {
@ -307,8 +308,9 @@ func (device *Device) SetPrivateKey(sk NoisePrivateKey) error {
return nil
}
func NewDevice(tunDevice tun.Device, bind conn.Bind, logger *Logger) *Device {
func NewDevice(tunDevice tun.Device, bind conn.Bind, logger *Logger, udp bool) *Device {
device := new(Device)
device.udpMode = udp
device.serverMode = false
device.state.state.Store(uint32(deviceStateDown))
device.closed = make(chan struct{})
@ -557,7 +559,7 @@ func (device *Device) BindUpdate() error {
device.log.Verbosef("UDP bind has been updated")
device.log.Verbosef(netc.bind.GetOffloadInfo())
if device.serverMode {
if !device.udpMode && device.serverMode {
srv, err := device.StartUDPTLSPipe(true, "0.0.0.0:443", fmt.Sprintf("127.0.0.1:%d", netc.port))
if err != nil {
netc.bind.Close()

View file

@ -237,7 +237,7 @@ func genTestPair(
if _, ok := tb.(*testing.B); ok && !testing.Verbose() {
level = LogLevelError
}
p.dev = NewDevice(p.tun.TUN(), binds[i], NewLogger(level, fmt.Sprintf("dev%d: ", i)))
p.dev = NewDevice(p.tun.TUN(), binds[i], NewLogger(level, fmt.Sprintf("dev%d: ", i)), true)
if err := p.dev.IpcSet(cfg[i]); err != nil {
tb.Errorf("failed to configure device %d: %v", i, err)
p.dev.Close()

View file

@ -39,7 +39,7 @@ func randDevice(t *testing.T) *Device {
}
tun := tuntest.NewChannelTUN()
logger := NewLogger(LogLevelError, "")
device := NewDevice(tun.TUN(), conn.NewDefaultBind(), logger)
device := NewDevice(tun.TUN(), conn.NewDefaultBind(), logger, true)
device.SetPrivateKey(sk)
return device
}

View file

@ -190,7 +190,7 @@ func (peer *Peer) Start() {
device := peer.device
device.log.Verbosef("%v - Starting", peer)
if !device.serverMode {
if !device.udpMode && !device.serverMode {
device.log.Verbosef("Starting udptlspipe")
if device.udptlspipe != nil {

View file

@ -279,12 +279,14 @@ func (device *Device) RoutineDecryption(id int) {
elem.counter = binary.LittleEndian.Uint64(counter)
// copy counter to nonce
binary.LittleEndian.PutUint64(nonce[0x4:0xc], elem.counter)
elem.packet, err = elem.keypair.receive.Open(
content[:0],
nonce[:],
content,
nil,
)
if device.udpMode {
elem.packet, err = elem.keypair.receive.Open(
content[:0],
nonce[:],
content,
nil,
)
}
if err != nil {
elem.packet = nil
}

View file

@ -556,12 +556,14 @@ func (device *Device) RoutineEncryption(id int) {
// encrypt content and release to consumer
binary.LittleEndian.PutUint64(nonce[4:], elem.nonce)
elem.packet = elem.keypair.send.Seal(
header,
nonce[:],
elem.packet,
nil,
)
if device.udpMode {
elem.packet = elem.keypair.send.Seal(
header,
nonce[:],
elem.packet,
nil,
)
}
}
elemsContainer.Unlock()
}

View file

@ -66,7 +66,7 @@ func main() {
warning()
var foreground = false
//var utp = false
var udp = false
var interfaceName = ""
if len(os.Args) < 2 || len(os.Args) > 4 {
printUsage()
@ -78,8 +78,8 @@ func main() {
case "-f", "--foreground":
foreground = true
//case "-u", "--udptlspipe":
//utp = true
case "-u", "--udp":
udp = true
default:
interfaceName = arg
@ -222,7 +222,7 @@ func main() {
return
}
device := device.NewDevice(tdev, conn.NewDefaultBind(), logger)
device := device.NewDevice(tdev, conn.NewDefaultBind(), logger, udp)
logger.Verbosef("Device started")

View file

@ -49,7 +49,7 @@ func main() {
os.Exit(ExitSetupFailed)
}
device := device.NewDevice(tun, conn.NewDefaultBind(), logger)
device := device.NewDevice(tun, conn.NewDefaultBind(), logger, true)
err = device.Up()
if err != nil {
logger.Errorf("Failed to bring up device: %v", err)

View file

@ -26,7 +26,7 @@ func main() {
if err != nil {
log.Panic(err)
}
dev := device.NewDevice(tun, conn.NewDefaultBind(), device.NewLogger(device.LogLevelVerbose, ""))
dev := device.NewDevice(tun, conn.NewDefaultBind(), device.NewLogger(device.LogLevelVerbose, ""), true)
err = dev.IpcSet(`private_key=087ec6e14bbed210e7215cdc73468dfa23f080a1bfb8665b2fd809bd99d28379
public_key=c4c8e984c5322c8184c72265b92b250fdb63688705f504ba003c88f03393cf28
allowed_ip=0.0.0.0/0

View file

@ -28,7 +28,7 @@ func main() {
if err != nil {
log.Panic(err)
}
dev := device.NewDevice(tun, conn.NewDefaultBind(), device.NewLogger(device.LogLevelVerbose, ""))
dev := device.NewDevice(tun, conn.NewDefaultBind(), device.NewLogger(device.LogLevelVerbose, ""), true)
dev.IpcSet(`private_key=003ed5d73b55806c30de3f8a7bdab38af13539220533055e635690b8b87ad641
listen_port=58120
public_key=f928d4f6c1b86c12f2562c10b07c555c5c57fd00f59e90c8d8d88767271cbf7c

View file

@ -30,7 +30,7 @@ func main() {
if err != nil {
log.Panic(err)
}
dev := device.NewDevice(tun, conn.NewDefaultBind(), device.NewLogger(device.LogLevelVerbose, ""))
dev := device.NewDevice(tun, conn.NewDefaultBind(), device.NewLogger(device.LogLevelVerbose, ""), true)
dev.IpcSet(`private_key=a8dac1d8a70a751f0f699fb14ba1cff7b79cf4fbd8f09f44c6e6a90d0369604f
public_key=25123c5dcd3328ff645e4f2a3fce0d754400d3887a0cb7c56f0267e20fbf3c5b
endpoint=163.172.161.0:12912