69 lines
2.0 KiB
Bash
69 lines
2.0 KiB
Bash
#!/bin/bash
|
|
|
|
# Script simplificado para compilar e carregar programas XDP
|
|
|
|
# Interface a ser utilizada
|
|
IFACE=${1:-"enp0s6"}
|
|
MODE=${2:-"generic"} # generic é mais compatível; native é mais rápido
|
|
TYPE=${3:-"simple"} # simple ou accelerated
|
|
|
|
echo "Compilando e carregando programa XDP"
|
|
echo "Interface: $IFACE"
|
|
echo "Modo: $MODE"
|
|
echo "Tipo: $TYPE"
|
|
|
|
# Compilar o programa correto
|
|
if [ "$TYPE" == "simple" ]; then
|
|
echo "=== Compilando programa simple_xdp_filter ==="
|
|
clang -O2 -Wall -target bpf -g -D__TARGET_ARCH_arm64 -c simple_xdp_filter.c -o simple_xdp_filter.o -I/usr/include/bpf -I/usr/include/
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "Erro na compilação!"
|
|
exit 1
|
|
fi
|
|
|
|
PROG_FILE="simple_xdp_filter.o"
|
|
else
|
|
echo "=== Compilando programa xdp_accelerated_nat ==="
|
|
clang -O2 -Wall -target bpf -g -D__TARGET_ARCH_arm64 -c xdp_accelerated_nat.c -o xdp_accelerated_nat.o -I/usr/include/bpf -I/usr/include/
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "Erro na compilação!"
|
|
exit 1
|
|
fi
|
|
|
|
PROG_FILE="xdp_accelerated_nat.o"
|
|
fi
|
|
|
|
# Remover qualquer programa XDP existente
|
|
echo "Removendo programas XDP existentes da interface $IFACE"
|
|
ip link set dev $IFACE xdp off
|
|
|
|
# Carregar o programa
|
|
echo "Carregando programa $PROG_FILE na interface $IFACE (modo $MODE)..."
|
|
ip link set dev $IFACE xdp obj $PROG_FILE section xdp mode $MODE
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "Erro ao carregar programa XDP."
|
|
echo "Tentando modo alternativo (skb)..."
|
|
ip link set dev $IFACE xdp obj $PROG_FILE section xdp mode skb
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "Falha também no modo skb."
|
|
echo "Verifique se seu kernel suporta XDP."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo "Programa XDP carregado com sucesso!"
|
|
echo "Verificando status:"
|
|
ip link show dev $IFACE | grep xdp
|
|
|
|
echo "Use 'bpftool map dump' para ver os mapas"
|
|
|
|
if [ "$TYPE" == "simple" ]; then
|
|
# Mostrar estatísticas iniciais
|
|
echo "Estatísticas iniciais:"
|
|
bpftool map dump name stats_map
|
|
fi
|