В настоящее время я пытаюсь запустить AF_XDP-Tutorial отсюда: https://github.com/xdp-project/xdp-tutorial/tree/master/advanced03-AF_XDP
Я смог его скомпилировать, но если я попытаюсь поместить xdp-код в ядро через:
sudo ./af_xdp_user --dev veth-basic02 --force
Я получаю эту ошибку:
ERROR: Can't setup AF_XDP socket "Operation not permitted"
Затем я проверил флаги ядра
CONFIG_BPF=y
CONFIG_BPF_SYSCALL=y
CONFIG_XDP_SOCKETS=y
в /boot/config-4.18.0-25-generic
и они все там.
Поэтому в качестве следующего шага я попытался скомпилировать программу не с libbpf
-подмодулем в репозитории xdp-tutorial
, а с последней версией отсюда: https://github.com/libbpf/libbpf/tree/master/src
Но теперь, если я попытаюсь скомпилировать программу, я получу такой вывод:
cc -Wall -I../libbpf/src/build/usr/include/ -g -I../headers/ -L../libbpf/src -o af_xdp_user ../common/common_libbpf.o ../common /common_params.o ../common/common_user_bpf_xdp.o \ af_xdp_user.c -l:libbpf.a -lelf -lpthread /usr/bin/ld: ../libbpf/src/libbpf.a(libbpf.o): не определено ссылка на символ 'gzopen64@@ZLIB_1.2.3.3' /usr/bin/ld://lib/x86_64-linux-gnu/libz.so.1: ошибка при добавлении символов: DSO отсутствует в командной строке
Кто-нибудь может помочь?
Редактировать:
Выход sudo strace ./af_xdp_user --dev veth-basic02 --force
:
Edit_2: С момента создания этого сообщения я обновился до ядра 5.3.0-28
- но, к сожалению, ничего не изменилось.
sudo strace ./af_xdp_user --dev veth-basic02 --force
и сообщить о результатах в исходном сообщении выше? Это должно сказать нам, какие именно системные вызовы терпят неудачу. Если у вас установлена последняя версия strace (v5.3+), вы можете выполнитьsudo strace -Z ./af_xdp_user --dev veth-basic02 --force
, чтобы просмотреть только ошибочные системные вызовы. - person pchaigno   schedule 20.02.2020