#!/bin/sh
# DF-3443 one-shot setup + run, for post-reset use.
# Idempotent: pushes sources, builds PoC + ALTQ pf.ko + inspector, loads them.
set -e
cd /home/maxx/dfbsd/dfbsd
SCP="scp -F dfbsd-qemu/config -o ConnectTimeout=8"
$SCP findings/poc/DF-3443/df3443_poc.c dfbsd:/root/df3443_poc.c
$SCP findings/poc/DF-3443/fw3443.c dfbsd:/root/fwbuild_fw3443.c
dfbsd-qemu/vm.sh run_root '
set -e
cd /root
cc -O -w -o df3443_poc df3443_poc.c -I/usr/src/sys
mkdir -p fwbuild && cp /root/fwbuild_fw3443.c fwbuild/fw3443.c
printf "KMOD=fw3443\nSRCS=fw3443.c\n\n.include <bsd.kmod.mk>\n" > fwbuild/Makefile
( cd fwbuild && make >/dev/null 2>&1 || make )
kldload pf 2>/dev/null || true
kldload if_tap 2>/dev/null || true
if [ ! -f /usr/src/sys/net/pf/pf.ko ]; then
  ( cd /usr/src/sys/net/pf && make KERNBUILDDIR=/usr/obj/usr/src/sys/X86_64_GENERIC >/root/pfbuild.log 2>&1 )
fi
kldstat -n pf >/dev/null 2>&1 && kldunload pf || true
kldload /usr/src/sys/net/pf/pf.ko
kldload /root/fwbuild/fw3443.ko
dmesg | grep "fw3443:" | tail -1
ifconfig tap0 create up
echo SETUP-READY
'
