Tabla de contenido
Prototipos de funciones y explicaciones.
Prototipos de funciones y explicaciones.
LIBBPF_API int bpf_link__fd(const struct bpf_link *enlace);
Descripción de parámetros:
- enlace: un puntero a una estructura bpf_link, que indica el enlace eBPF en el que se operará.
Valor de retorno: un número entero que representa el descriptor de archivo asociado con el enlace eBPF dado. Si ocurre un error, se devolverá un número negativo.
Demostración de código
#include <linux/bpf.h> #incluir <bpf/bpf_helpers.h> SEC("kprobe/__x64_sys_getpid") int bpf_prog1(struct pt_regs *ctx) { bpf_printk("sys_getpid llamado\n"); devolver 0; }
#include <stdio.h> #incluir <stdlib.h> #incluir <string.h> #incluir <unistd.h> #incluir <arpa/inet.h> #incluir <errno.h> #incluir <fcntl.h> #incluir <linux/bpf.h> #incluir <bpf/bpf.h> #incluir <bpf/libbpf.h> int principal(int argc, char **argv) { si (argc != 2) { fprintf(stderr, "Uso: %s <bpf_program.o>\n", argv[0]); devolver 1; } } devolver 0; bpf_object__unload(obj); bpf_link__destroy(enlace); getchar(); printf("Presione Enter para desconectar y destruir el enlace BPF...\n"); // Espere a que el usuario ingrese para desconectar y destruir el enlace } devolver 1; fprintf(stderr, "Error al obtener el descriptor del archivo de enlace BPF: %s\n", strerror(errno)); si (fd < 0) { } devolver 1; fprintf(stderr, "Error al adjuntar el programa BPF: %s\n", strerror(errno)); if (libbpf_get_error(enlace)) { enlace = bpf_program__attach(prog); } devolver 1; fprintf(stderr, "Error al cargar el programa BPF: %s\n", strerror(errno)); if (bpf_prog_load(bpf_program_path, BPF_PROG_TYPE_KPROBE, &obj, &prog)) { estructura bpf_link *enlace = NULL; estructura bpf_program *prog = NULL; estructura bpf_object *obj = NULL;
archivo make
CC=gcc CFLAGS=-I/usr/include/bpf -I./include LDFLAGS=-lbpf todos: prueba prueba: prueba.c $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) limpiar: rm -f prueba
cmake
cmake_minimum_required(VERSIÓN 2.8) proyecto(prueba) set(CMAKE_C_FLAGS "-I/usr/include/bpf -I./include") add_executable(prueba prueba.c) target_link_libraries(prueba bpf)
Rendimiento esperado
hacer
./manifestación
Descriptor de archivo de enlace BPF:3 Presione Enter para desconectar y destruir el enlace BPF...