mirror of
https://github.com/netbirdio/netbird.git
synced 2024-11-27 02:24:30 +01:00
b0364da67c
EBPF proxy between TURN (relay) and WireGuard to reduce number of used ports used by the NetBird agent. - Separate the wg configuration from the proxy logic - In case if eBPF type proxy has only one single proxy instance - In case if the eBPF is not supported fallback to the original proxy Implementation Between the signature of eBPF type proxy and original proxy has differences so this is why the factory structure exists
57 lines
1.3 KiB
Go
57 lines
1.3 KiB
Go
//go:build linux && !android
|
|
|
|
package wgproxy
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestWGEBPFProxy_connStore(t *testing.T) {
|
|
wgProxy := NewWGEBPFProxy(1)
|
|
|
|
p, _ := wgProxy.storeTurnConn(nil)
|
|
if p != 1 {
|
|
t.Errorf("invalid initial port: %d", wgProxy.lastUsedPort)
|
|
}
|
|
|
|
numOfConns := 10
|
|
for i := 0; i < numOfConns; i++ {
|
|
p, _ = wgProxy.storeTurnConn(nil)
|
|
}
|
|
if p != uint16(numOfConns)+1 {
|
|
t.Errorf("invalid last used port: %d, expected: %d", p, numOfConns+1)
|
|
}
|
|
if len(wgProxy.turnConnStore) != numOfConns+1 {
|
|
t.Errorf("invalid store size: %d, expected: %d", len(wgProxy.turnConnStore), numOfConns+1)
|
|
}
|
|
}
|
|
|
|
func TestWGEBPFProxy_portCalculation_overflow(t *testing.T) {
|
|
wgProxy := NewWGEBPFProxy(1)
|
|
|
|
_, _ = wgProxy.storeTurnConn(nil)
|
|
wgProxy.lastUsedPort = 65535
|
|
p, _ := wgProxy.storeTurnConn(nil)
|
|
|
|
if len(wgProxy.turnConnStore) != 2 {
|
|
t.Errorf("invalid store size: %d, expected: %d", len(wgProxy.turnConnStore), 2)
|
|
}
|
|
|
|
if p != 2 {
|
|
t.Errorf("invalid last used port: %d, expected: %d", p, 2)
|
|
}
|
|
}
|
|
|
|
func TestWGEBPFProxy_portCalculation_maxConn(t *testing.T) {
|
|
wgProxy := NewWGEBPFProxy(1)
|
|
|
|
for i := 0; i < 65535; i++ {
|
|
_, _ = wgProxy.storeTurnConn(nil)
|
|
}
|
|
|
|
_, err := wgProxy.storeTurnConn(nil)
|
|
if err == nil {
|
|
t.Errorf("invalid turn conn store calculation")
|
|
}
|
|
}
|