私の問題を提示する前に。以前に質問されたさまざまな ebpf プログラム タイプ間のマップ共有を読みまし たが、私の質問には答えていないようです。
今、私がやっていることは、XDP 用と TC (No Userspace プログラム) 用の 2 つの BPF プログラムがあることです。TC プログラムでマップを作成し、グローバル名前空間に固定しました
struct bpf_elf_map cnt_map __section("maps") = {
.type = BPF_MAP_TYPE_ARRAY,
.size_key = sizeof(uint32_t),
.size_value = sizeof(uint32_t),
.pinning = PIN_GLOBAL_NS,
.max_elem = 2,
};
ここで、XDP コードで同じマップにアクセスしたいと考えています。ドキュメントには、ピン留めされたオブジェクトは を使用して取得できると書かれていますがBPF_OBJ_GET
、私が見つけたのはこれのユーザー空間バージョンだけです。
では、どうすれば 2 つのカーネル空間 BPF プログラムがマップを共有できるのでしょうか? BPF_OBJ_GET
ピン留めされたオブジェクト (私の場合はマップ) を取得できる場合は、どうすればよいでしょうか? または、それを行う他の方法はありますか?
私は XDP/BPF または tc/BPF を初めて使用するので、他のカーネル空間の BPF プログラムで固定されたオブジェクトにアクセスする方法のコード例は非常に高く評価されています。
ありがとう。