#!/bin/bash
# saringan-paket.sh -- simulasi konsep filter paket gaya XDP.
# Aturan dimuat sekali ke array awk (analogi bpf_map), lalu setiap paket
# dinilai langsung tanpa keluar dari jalur cepat:
#   1. IP sumber dari jaringan 203.0.113.0/24  -> DROP
#   2. TCP dengan port tujuan 23 (telnet)      -> DROP
#   3. selain itu                             -> ALLOW
# Pemakaian: bash saringan-paket.sh <berkas-paket>

if [ $# -lt 1 ]; then
    exit 0
fi
berkas=$1
if [ ! -f "$berkas" ]; then
    echo "berkas paket tidak ditemukan: $berkas"
    exit 0
fi

awk '
$1 ~ /^#/ || NF < 4 { next }
$1 ~ /^203\.0\.113\./ { printf "DROP  %s\n", $0; blok++; next }
$3 == "tcp" && $4 == 23 { printf "DROP  %s\n", $0; blok++; next }
{ printf "ALLOW %s\n", $0; lewat++ }
END {
    printf "rekap: %d diizinkan, %d diblok, %d total\n", lewat, blok, lewat + blok
}' "$berkas"
