This commit is contained in:
rodrigo committed 2025-02-26 19:08:28 -03:00
1 parent c4cea8c3b3
commit 9ed03e108d
4 files changed
+242 -237

No files matched your search

+12 -4
View File
@@ -39,13 +39,16 @@ def int_to_ip(ip_int):
def compile_xdp_program():
"""Compila o programa XDP."""
print("Compilando o programa XDP...")
cmd = "clang -O2 -target bpf -c xdp_accelerated_nat.c -o xdp_accelerated_nat.o"
# Corrigido para incluir diretórios de inclusão e target para ARM64
cmd = "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/"
return run_cmd(cmd, True) is not None
def attach_xdp_program(interface, program_path):
"""Anexa o programa XDP à interface."""
print(f"Anexando programa XDP à interface {interface}...")
cmd = f"ip link set dev {interface} xdp obj {program_path} section xdp"
# Adicionando a flag --force para substituir qualquer programa existente
# Usando 'generic' como modo XDP para maior compatibilidade
cmd = f"ip link set dev {interface} xdp obj {program_path} section xdp mode generic"
return run_cmd(cmd, True) is not None
def detach_xdp_program(interface):
@@ -244,16 +247,21 @@ def main():
# Compilar e carregar programa
if args.compile:
if not compile_xdp_program():
print("Falha ao compilar o programa XDP")
print("Falha ao compilar o programa XDP. Verifique os erros acima.")
sys.exit(1)
# Desanexar qualquer programa existente
detach_xdp_program(args.interface)
# Anexar o novo programa
print("Tentando anexar o programa XDP à interface...")
if not attach_xdp_program(args.interface, "xdp_accelerated_nat.o"):
print("Falha ao anexar o programa XDP à interface")
sys.exit(1)
# Tentar modo alternativo
print("Tentando modo alternativo (generic)...")
if not run_cmd(f"ip link set dev {args.interface} xdp obj xdp_accelerated_nat.o section xdp mode generic", True):
print("Todas as tentativas de carregamento falharam. Verifique se o kernel suporta XDP.")
sys.exit(1)
# Carregar o objeto BPF para interagir com o programa carregado
try: