-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
56 lines (43 loc) · 1.71 KB
/
Makefile
File metadata and controls
56 lines (43 loc) · 1.71 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
.phony: all build run generate vmlinux aslr_off redis start_redis stop_redis
EBPF_PROBE = probe
GO_MODULE = river
SIMULATOR_PATH := simulator
REDIS_PORT := 6379
all: run
vmlinux:
mkdir -p $(SIMULATOR_PATH)/headers
bpftool btf dump file /sys/kernel/btf/vmlinux format c > $(SIMULATOR_PATH)/headers/vmlinux.h
generate: vmlinux
cd $(SIMULATOR_PATH); go generate
pert_injector:
gcc -Wall -O2 -o $(SIMULATOR_PATH)/injector $(SIMULATOR_PATH)/injector.c -lbpf; \
sudo setcap cap_bpf,cap_perfmon+ep $(SIMULATOR_PATH)/injector
state_pert_injector:
gcc -Wall -O2 -o $(SIMULATOR_PATH)/state_injector $(SIMULATOR_PATH)/state_injector.c -lbpf; \
sudo setcap cap_bpf,cap_perfmon+ep $(SIMULATOR_PATH)/state_injector
build: generate pert_injector state_pert_injector
# with CGO_ENABLED=0 the build doesn't depend on libc
@CGO_ENABLED=0 GO_ARCH=amd64 go build
redis:
docker create --name redis -p $(REDIS_PORT):$(REDIS_PORT) redis:latest
start_redis:
docker start redis
stop_redis:
docker stop redis
aslr_off:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
run: | aslr_off build start_redis
sudo su -c 'rm -rf /sys/fs/bpf/inner*'
sudo su -c 'rm -rf /sys/fs/bpf/pertbuf*'
sudo su -c 'rm -rf /sys/fs/bpf/state_pertbuf*'
@if docker ps -a --filter "name=$(CONTAINER_NAME)" --format "{{.ID}}" | grep -q .; then \
echo "-> container $(CONTAINER_NAME) is already running or exists. Skipping creation."; \
else \
echo "-> creating and running container $(CONTAINER_NAME)..."; \
docker run -d --name $(CONTAINER_NAME) $(IMAGE_NAME); \
sleep 3; \
fi
@sudo ./$(GO_MODULE)
clean:
@rm -rf $(SIMULATOR_PATH)/headers
@rm -rf $(GO_MODULE) $(SIMULATOR_PATH)/$(EBPF_PROBE)_bpf* $(SIMULATOR_PATH)/injector $(SIMULATOR_PATH)/state_injector