diff --git a/client/internal/wgproxy/bpf_bpfeb.go b/client/internal/wgproxy/ebpf/bpf_bpfeb.go similarity index 99% rename from client/internal/wgproxy/bpf_bpfeb.go rename to client/internal/wgproxy/ebpf/bpf_bpfeb.go index 37a5cb22c..4943513ef 100644 --- a/client/internal/wgproxy/bpf_bpfeb.go +++ b/client/internal/wgproxy/ebpf/bpf_bpfeb.go @@ -2,7 +2,7 @@ //go:build arm64be || armbe || mips || mips64 || mips64p32 || ppc64 || s390 || s390x || sparc || sparc64 // +build arm64be armbe mips mips64 mips64p32 ppc64 s390 s390x sparc sparc64 -package wgproxy +package ebpf import ( "bytes" diff --git a/client/internal/wgproxy/bpf_bpfeb.o b/client/internal/wgproxy/ebpf/bpf_bpfeb.o similarity index 100% rename from client/internal/wgproxy/bpf_bpfeb.o rename to client/internal/wgproxy/ebpf/bpf_bpfeb.o diff --git a/client/internal/wgproxy/bpf_bpfel.go b/client/internal/wgproxy/ebpf/bpf_bpfel.go similarity index 99% rename from client/internal/wgproxy/bpf_bpfel.go rename to client/internal/wgproxy/ebpf/bpf_bpfel.go index c553b9da4..cac39aa01 100644 --- a/client/internal/wgproxy/bpf_bpfel.go +++ b/client/internal/wgproxy/ebpf/bpf_bpfel.go @@ -2,7 +2,7 @@ //go:build 386 || amd64 || amd64p32 || arm || arm64 || mips64le || mips64p32le || mipsle || ppc64le || riscv64 // +build 386 amd64 amd64p32 arm arm64 mips64le mips64p32le mipsle ppc64le riscv64 -package wgproxy +package ebpf import ( "bytes" diff --git a/client/internal/wgproxy/bpf_bpfel.o b/client/internal/wgproxy/ebpf/bpf_bpfel.o similarity index 100% rename from client/internal/wgproxy/bpf_bpfel.o rename to client/internal/wgproxy/ebpf/bpf_bpfel.o diff --git a/client/internal/wgproxy/loader.go b/client/internal/wgproxy/ebpf/loader.go similarity index 77% rename from client/internal/wgproxy/loader.go rename to client/internal/wgproxy/ebpf/loader.go index 5833b9c25..18134d439 100644 --- a/client/internal/wgproxy/loader.go +++ b/client/internal/wgproxy/ebpf/loader.go @@ -1,6 +1,6 @@ //go:build linux && !android -package wgproxy +package ebpf import ( _ "embed" @@ -15,17 +15,20 @@ const ( mapKeyWgPort uint32 = 1 ) -//go:generate go run github.com/cilium/ebpf/cmd/bpf2go -cc clang-14 bpf bpf/portreplace.c -- +//go:generate go run github.com/cilium/ebpf/cmd/bpf2go -cc clang-14 bpf src/portreplace.c -- -type eBPF struct { +// EBPF is a wrapper for eBPF program +type EBPF struct { link link.Link } -func newEBPF() *eBPF { - return &eBPF{} +// NewEBPF create new EBPF instance +func NewEBPF() *EBPF { + return &EBPF{} } -func (l *eBPF) load(proxyPort, wgPort int) error { +// Load load ebpf program +func (l *EBPF) Load(proxyPort, wgPort int) error { // it required for Docker err := rlimit.RemoveMemlock() if err != nil { @@ -72,7 +75,8 @@ func (l *eBPF) load(proxyPort, wgPort int) error { return err } -func (l *eBPF) free() error { +// Free free ebpf program +func (l *EBPF) Free() error { if l.link != nil { return l.link.Close() } diff --git a/client/internal/wgproxy/loader_test.go b/client/internal/wgproxy/ebpf/loader_test.go similarity index 62% rename from client/internal/wgproxy/loader_test.go rename to client/internal/wgproxy/ebpf/loader_test.go index ad0fed236..6ce323e70 100644 --- a/client/internal/wgproxy/loader_test.go +++ b/client/internal/wgproxy/ebpf/loader_test.go @@ -1,16 +1,16 @@ //go:build linux -package wgproxy +package ebpf import ( "testing" ) func Test_newEBPF(t *testing.T) { - ebpf := newEBPF() - err := ebpf.load(1234, 51892) + ebpf := NewEBPF() + err := ebpf.Load(1234, 51892) defer func() { - _ = ebpf.free() + _ = ebpf.Free() }() if err != nil { t.Errorf("%s", err) diff --git a/client/internal/wgproxy/bpf/portreplace.c b/client/internal/wgproxy/ebpf/src/portreplace.c similarity index 100% rename from client/internal/wgproxy/bpf/portreplace.c rename to client/internal/wgproxy/ebpf/src/portreplace.c diff --git a/client/internal/wgproxy/proxy_ebpf.go b/client/internal/wgproxy/proxy_ebpf.go index 7683aa52a..dc6993ba0 100644 --- a/client/internal/wgproxy/proxy_ebpf.go +++ b/client/internal/wgproxy/proxy_ebpf.go @@ -14,11 +14,13 @@ import ( "github.com/google/gopacket/layers" log "github.com/sirupsen/logrus" + + ebpf2 "github.com/netbirdio/netbird/client/internal/wgproxy/ebpf" ) -// WGEBPFProxy definition for proxy with eBPF support +// WGEBPFProxy definition for proxy with EBPF support type WGEBPFProxy struct { - ebpf *eBPF + ebpf *ebpf2.EBPF lastUsedPort uint16 localWGListenPort int @@ -34,7 +36,7 @@ func NewWGEBPFProxy(wgPort int) *WGEBPFProxy { log.Debugf("instantiate ebpf proxy") wgProxy := &WGEBPFProxy{ localWGListenPort: wgPort, - ebpf: newEBPF(), + ebpf: ebpf2.NewEBPF(), lastUsedPort: 0, turnConnStore: make(map[uint16]net.Conn), } @@ -54,7 +56,7 @@ func (p *WGEBPFProxy) Listen() error { return err } - err = p.ebpf.load(wgPorxyPort, p.localWGListenPort) + err = p.ebpf.Load(wgPorxyPort, p.localWGListenPort) if err != nil { return err } @@ -107,7 +109,7 @@ func (p *WGEBPFProxy) Free() error { err1 = p.conn.Close() } - err2 = p.ebpf.free() + err2 = p.ebpf.Free() if p.rawConn != nil { err3 = p.rawConn.Close() }