Выполнение сравнения с использованием карты 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 и сравниваю его с другим значением в пространстве ядра, но это, похоже, не работает.