Network utilities in Golang
- TCP assembly stream for dns packets
- Generic IP defrag function
- Generate BPF filter: (ip4 || ip6) && (tcp || udp) && port == int
- Get EBPF program to inject in kernel (XDP DNS filter)
- Easy config for TLS
- String IPv4/v6 CIDR parser to net.IPMask
Install prerequisites
sudo apt install llvm clang
sudo apt-get install gcc-multilib
Update libpbf
library and generate vmlinux.h
cd ebpf/headers
./update.sh
Compiles a C source file into eBPF bytecode
cd xdp/
go generate .
$ go test -cover -v
v4Mask, err = netutils.ParseCIDRMask("10.0.0.0/8")
if err != nil {
fmt.Println(err)
}
// v4Mask == net.CIDRMask(8, 32)