commit
This commit is contained in:
1 parent
c4cea8c3b3
commit
9ed03e108d
4 files changed
+242
-237
No files matched your search
+12
-4
@@ -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:
|
||||
|
||||
Reference in new issue
Block a user