Выполнение сравнения с использованием карты eBPF в пространстве ядра

Я экспериментирую с картой eBPF, и у меня возникают проблемы с использованием значений, полученных из карт eBPF, в предложении if.

Я также использую BCC для экспериментов с этим кодом!

Итак, когда я запускаю код, я пытаюсь сделать это:

BPF_ARRAY(test,u64, 12);
u64 key0 = 0;
u64 test = 1234;
test.update(&key0, &test);

и я проверил после запуска кода, что 1234 правильно вставлен.

и когда я пытаюсь прочитать значение из карты eBPF и провести сравнение с помощью 'if', я получаю такую ​​ошибку, как:

BPF_ARRAY(test,u64, 12);
u64 key0 = 0;
u64 test = 1234;
test.update(&key0, &test);
u64 comparer = 0;
u64 compared = 1234;
u64 replace_value = 1111;
comparer = test.lookup(&key0);
if (comparer == compared)
    test.update(&key0, &replace_value);

и это дает мне такую ​​ошибку, как:

R3 type=map_value_or_null expected=fp

Я думаю, что делаю законные действия, просто читаю значение из карты eBPF и сравниваю его с другим значением в пространстве ядра, но это, похоже, не работает.

0 ответов

Другие вопросы по тегам