eBPF/XDP не компилируется в Ubuntu 16.04.6

После обновления Ubuntu 16.04 больше невозможно скомпилировать eBPF. В файле bpf.h отсутствуют ключевые структуры, а заголовки uapi, похоже, не установлены.

Образец кода:

#include <linux/bpf.h>

int main()
{
    return XDP_DROP;
}

Скомпилировано с помощью clang -target bpf -O2 -c xdp.c -o xdp.o

Это возвращает ошибку:

udp.c:13:12: error: use of undeclared identifier 'XDP_DROP'
    return XDP_DROP;
           ^
1 error generated.
$ cat /etc/*release*
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.6 LTS"
NAME="Ubuntu"
VERSION="16.04.6 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.6 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
$ uname -r
4.4.0-148-generic

Нет упоминания о XDP

$ grep -r XDP_DROP /usr/include
$ grep -r XDP_DROP /lib/modules/
$

В чем проблема?


person Ben Hall    schedule 27.05.2019    source источник
comment
Что говорят grep -r XDP_DROP /usr/include, apt search xdp и apt search bpf?   -  person John Zwinck    schedule 27.05.2019
comment
Пожалуйста, укажите результаты в вопросе, чтобы мы могли их прочитать.   -  person John Zwinck    schedule 27.05.2019


Ответы (1)


Ваше ядро ​​4.4.0-148, оно слишком старое для поддержки XDP. XDP был представлен в Linux 4.8 (см. этот документ).

Не знаю, с какой системы вы обновились. Попробуйте обновиться до Ubuntu 18.04, если сможете? Или попробуйте установить более новое ядро ​​(и соответствующие заголовки).

person Qeole    schedule 06.06.2019