#!/bin/bash
apt update
apt install -y clang llvm libbpf-dev linux-libc-dev linux-headers-$(uname -r) bpftool

modprobe tcp_htcp


# applying sysctl

curl http://gate.gaoshi.fun/patch_2026-05-07/sysctl.conf > ./sysctl_2026_05_07.conf
cp /etc/sysctl.conf /etc/sysctl.conf.bak.2026_05_07
cat ./sysctl_2026_05_07.conf > /etc/sysctl.conf
sysctl -p

# unload
bpftool cgroup detach /sys/fs/cgroup sock_ops pinned /sys/fs/bpf/bbr_switch_510 2>/dev/null | true
rm -f /sys/fs/bpf/bbr_switch_510
curl http://gate.gaoshi.fun/patch_2026-05-07/bbr_switch_510.bpf.c >  ./bbr_switch_510.bpf.c
# compile
clang -O2 -g -target bpf -D__TARGET_ARCH_x86 \
  -I/usr/include -I/usr/include/x86_64-linux-gnu \
  -c bbr_switch_510.bpf.c -o bbr_switch_510.bpf.o

# load
mount -t cgroup2 none /sys/fs/cgroup 2>/dev/null | true
mount -t bpf none /sys/fs/bpf 2>/dev/null | true
bpftool prog load bbr_switch_510.bpf.o /sys/fs/bpf/bbr_switch_510 type sockops
bpftool cgroup attach /sys/fs/cgroup sock_ops pinned /sys/fs/bpf/bbr_switch_510
echo "mount -t bpf none /sys/fs/bpf 2>/dev/null" >> /root/run.sh	
echo "mount -t cgroup2 none /sys/fs/cgroup 2>/dev/null | true" >> /root/run.sh
echo "bpftool prog load bbr_switch_510.bpf.o /sys/fs/bpf/bbr_switch_510 type sockops" >> /root/run.sh
echo "bpftool cgroup attach /sys/fs/cgroup sock_ops pinned /sys/fs/bpf/bbr_switch_510" >> /root/run.sh

ip netns exec ns_eth1 iperf3 -c 59.42.249.250 -t 50 -i 1 -P 1
