Berkeley Packet Filter (BPF)

Вопросы программного кода и архитектуры Linux

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Berkeley Packet Filter (BPF)

Непрочитанное сообщение Olej » 24 июл 2023, 11:56

Olej писал(а):
24 июл 2023, 01:35
Вот теперь всё собралось:
Возвращаюсь в Fedora, для полноты картины ... и при тех же равных:

Код: Выделить всё

[olej@xenix hello_world]$ make bpfload
clang -O2 -target bpf -c bpf_program.c -I/kernel-src/tools/testing/selftests/bpf -o bpf_program.o
clang  -o monitor-exec -lelf -I/kernel-src/samples/bpf -I/kernel-src/tools/lib -I/kernel-src/tools/perf -I/kernel-src/tools/include -L/usr/local/lib64 -lbpf \
        /kernel-src/samples/bpf/bpf_load.c loader.c
/kernel-src/samples/bpf/bpf_load.c:131:7: error: call to undeclared function 'bpf_load_program'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
        fd = bpf_load_program(prog_type, prog, insns_cnt, license, kern_version,
             ^
/kernel-src/samples/bpf/bpf_load.c:287:16: error: call to undeclared function 'bpf_create_map_in_map_node'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
                        map_fd[i] = bpf_create_map_in_map_node(maps[i].def.type,
                                    ^
/kernel-src/samples/bpf/bpf_load.c:295:16: error: call to undeclared function 'bpf_create_map_node'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
                        map_fd[i] = bpf_create_map_node(maps[i].def.type,
                                    ^
3 errors generated.
make: *** [Makefile:45: bpfload] Error 1
Разбирательство (небыстрое :-( ) показывает, что они (в ядрах 6.Х) начисто поменяли прототипы BPF функций:

Код: Выделить всё

olej@R420:~$ uname -r
5.15.0-76-generic

olej@R420:~$ cat /usr/include/bpf/bpf.h
...
LIBBPF_API int bpf_load_program(enum bpf_prog_type type,
                                const struct bpf_insn *insns, size_t insns_cnt,
                                const char *license, __u32 kern_version,
                                char *log_buf, size_t log_buf_sz);
...

Код: Выделить всё

[olej@xenix bpf]$ uname -r
6.4.4-200.fc38.x86_64

olej@R420:~$ cat /usr/include/bpf/bpf.h
...
LIBBPF_API int bpf_prog_load(enum bpf_prog_type prog_type,
                    const char *prog_name, const char *license,
                    const struct bpf_insn *insns, size_t insn_cnt,
                    const struct bpf_prog_load_opts *opts);
...
Обычная история от команды Линуса Торвальдса: что хочу - то и верчу :!: :cry:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Berkeley Packet Filter (BPF)

Непрочитанное сообщение Olej » 25 июл 2023, 12:53

Olej писал(а):
24 июл 2023, 11:56
показывает, что они (в ядрах 6.Х) начисто поменяли прототипы BPF функций:
Обращаем внимание, что это радикальное изменение не API ядра (там, наверняка тоже), но, пока, только API программирования в пользовательском пространстве!

Ответить

Вернуться в «Linux изнутри»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей