netlink:GNEL_ID_GENERATE定義がRHEL7.5カーネルライブラリから削除されました。

netlink:GNEL_ID_GENERATE定義がRHEL7.5カーネルライブラリから削除されました。

我々は、最新のRHEL7.5までRedHat Linuxディストリビューションスイートに適して構築されたカーネルモジュールを持っています。

RHEL7.5でビルドしようとすると、次のエラーが発生します。

...エラー: 'GENL_ID_GENERATE'が宣言されていません...

読んでみると、カーネル4.11+以降の変化のようですが、RHEL7.5はカーネル3.10+に基づいています。どうしたの?

とにかく、GENL_ID_GENERATEの値は0であることがわかります。しかし、マクロを置き換えるために0を使用できますか?このカーネルモジュールと通信するユーザーモードモジュールに問題がありますか?

それとも問題を解決する正しい方法は何ですか?どんな提案がありますか?

ありがとう、Weishan

答え1

見ている子コミットnetlinkの場合、バージョン4.11では構造がいくつか変更されているようです。

まず、Linuxが静的ファミリIDを削除したため、.id初期化プログラムからそのフィールドを完全に省略できます。genl_family

もう一度申し上げますが、このgenl_register_family_with_ops機能は廃止されました。逆に、Netlink は Linux HOWTO ドキュメントに記載されています。:

Linux 4.10以前では、構造体genl_register_family_with_ops()への参照がgenl_ops構造体の要素genl_family(element .ops)とコマンドの数(element .n_ops)として.4.10以降で含まれていました。

関連情報