1

私の問題を提示する前に。以前に質問されたさまざまな 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 プログラムで固定されたオブジェクトにアクセスする方法のコード例は非常に高く評価されています。

ありがとう。

4

0 に答える 0