#!/bin/sh
# run_on_guest.sh — root-side demonstration. Copied to guest, run there.
set +e
echo "=== guest setup ==="
kldstat | grep -w pf || kldload pf.ko
pfctl -e 2>&1 || true
ifconfig pfsync0 create 2>&1 || true
echo
echo "=== before injection: netstat -s protocols ==="
netstat -s 2>&1 | grep -iE "^(icmp|igmp|tcp|udp|ip|pfsync|carp|ip6|icmp6)" | head
echo
echo "=== dmesg line count before ==="
DMESG_BEFORE=$(dmesg | wc -l)
echo "before=$DMESG_BEFORE"
echo
echo "=== inject proto-240 CLR packet (spoofed 10.0.2.99 -> 224.0.0.240) ==="
/home/maxx/poc/DF-0428/inject_pfsync 10.0.2.99 224.0.0.240 0xdeadbeef
sleep 2
echo
echo "=== dmesg after (UNCHANGED = no kernel response) ==="
DMESG_AFTER=$(dmesg | wc -l)
echo "after=$DMESG_AFTER"
dmesg | tail -3
echo
echo "=== netstat -s protocols after (still NO pfsync => handler not registered) ==="
netstat -s 2>&1 | grep -iE "^(icmp|igmp|tcp|udp|ip|pfsync|carp|ip6|icmp6)" | head
echo
echo "=== nm static kernel: pfsync_input present? ==="
nm /boot/kernel/kernel.debug 2>/dev/null | grep -w pfsync_input || echo "pfsync_input: ABSENT from static kernel"
