-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
89 lines (66 loc) · 2.46 KB
/
Makefile
File metadata and controls
89 lines (66 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
export KERNEL_VERSION = 6.16.0
export ARCH = $(shell uname -m)
INCLUDE_FOLDER = "internal/bpf/siit/include"
generate: go-generate
go-generate:
docker build -t siit-ebpf-deps --target deps .
docker run -ti -v $(PWD):/work -w /work siit-ebpf-deps go generate ./...
build:
CGO_ENABLED=0 GOOS=linux go build -ldflags '-s -w' -o siit-bin ./cmd
NETNS ?=
DEVELOPMENT ?= false
GRPC_REFLECTION ?= false
TCPADDR ?= ""
ifeq ($(DEVELOPMENT),true)
TCPADDR = 0.0.0.0:9999
GRPC_REFLECTION = true
endif
run:
ifneq ($(NETNS),)
@echo "running manager in network namespace $(NETNS)"
@ip netns exec $(NETNS) $(MAKE) NETNS= run
endif
./siit-bin -pool=64:ff9b:dead:beef::/96 -ipv4=10.0.0.5 -ipv6=fd00::2 -tcp-addr=$(TCPADDR) -grpc-reflection=$(GRPC_REFLECTION)
ebpf-test:
docker run --privileged -v $(shell go env GOMODCACHE):/go/pkg/mod -v $(PWD):/src -v /sys/kernel/tracing:/sys/kernel/tracing:rw -w /src golang go test -v ./internal/bpf/...
generate-btf-headers:
docker build -t bpftool https://github.com/libbpf/bpftool.git#main
docker run bpftool btf dump file /sys/kernel/btf/vmlinux format c > $(INCLUDE_FOLDER)/vmlinux.h
build-libbpf-image:
docker build -f Dockerfile.libbpf --platform=linux/$(ARCH) -t libbpf .
generate-libbpf-headers: build-libbpf-image
docker create --name libbpf libbpf
docker cp libbpf:/usr/include/bpf $(INCLUDE_FOLDER)
docker rm -f libbpf
find $(INCLUDE_FOLDER)/bpf -maxdepth 1 -type f ! -name "bpf*.h" -delete
generate-linux-headers:
crane pull -c /tmp/linuxkit linuxkit/kernel:$(KERNEL_VERSION) linuxkit.tar
mkdir linuxkit || true
tar -xf "linuxkit.tar" -C linuxkit
rm linuxkit.tar
tar -xzvf `find linuxkit -name "*.tar.gz"` -C linuxkit
mkdir /tmp/linux || true
tar -xf "linuxkit/kernel-headers.tar" -C /tmp/linux
cp -R /tmp/linux/usr/include/linux/ $(INCLUDE_FOLDER)/linux-headers
# cp -R /tmp/linux/usr/include/asm-generic $(INCLUDE_FOLDER)
rm -r linuxkit
generate-vmlinux-btf: build-libbpf-image
./hack/vmlinux.btf.sh
grpcui:
grpcui -plaintext localhost:9999
### Testbed
ipv4 = 10.0.0.5
up-server:
ip netns exec ns_server python3 -m http.server 80 --bind ::
up-client:
ip netns exec ns_client curl -vvv $(ipv4):80
setup-routes:
./hack/setup-routes.sh --pool 64:ff9b:dead:beef::/96 --ipv4 $(ipv4) || true
remove-routes:
./hack/setup-routes.sh --delete
# pool or client network or server network
pcap = net 64:ff9b:dead:beef::/96 or net 10.0.0.0/24 or net fd00::/32
tcpdump:
tcpdump -i any -nnvvvttt $(pcap)
pwru:
./hack/pwru.sh --filter-trace-tc $(pcap)