簡體   English   中英

eBPF BPF_ARRAY 查找

[英]eBPF BPF_ARRAY lookup

我正在嘗試使用 eBPF 和 XDP 構建數據包計數器。 我需要一種方法來跟蹤收到的數據包總數。 由於我使用的是 XDP,因此我使用 BPF_ARRAY 並在每次收到數據包時遞增它。 問題是我似乎無法使用提供的lookup() function 訪問存儲的值。

這是我創建 BPF_ARRAY 的方法。

BPF_ARRAY(counter, u64, 1);

這是我嘗試訪問和使用存儲值的方式。 output.avg 的類型是 u64。

int cindex = 0;
counter.increment(&cindex);
long current_count = counter.lookup(&cindex);
output.avg = current_count;

BPF 給了我這個警告並且無法編譯。

warning: incompatible pointer to integer conversion initializing 'long' with
      an expression of type 'u64 *' (aka 'unsigned long long *') [-Wint-conversion]
                        long current_count = counter.lookup(&cindex);

我想出了如何解決我的錯誤。 我是 C 的新手,所以指針讓我有點困惑。

int cindex = 0;
counter.increment(cindex);
unsigned long long *current_count = counter.lookup(&cindex);

if(current_count != NULL){          
    output.avg = *current_count;    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM