問題タブ [netlink]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1251 参照

c++ - C++ から netlink を使用する最良の方法は何ですか?

C++ でユーザー空間から netlink メッセージを送受信する最良の方法は何ですか? C は使いたくない。inet_diag モジュールと接続したい。

0 投票する
1 に答える
1373 参照

linux - Linux カーネルで netlink ソケットを使用してユーザー空間アプリケーションとキャラクター デバイス間の通信中にエラーが発生する

カスタムノード /dev/hello にキャラクターデバイスとして登録するカーネルドライバー「hello_kernel」を作成しました。hello_kernel.c ファイルで、register_chrdev() を呼び出した後、netlink_kernel_create() ( netlink.h で定義) を使用して netlink ソケットを作成しようとしました。このソケットを介してユーザー空間メッセージを受信する関数が適切に定義されています。

コードは完全にコンパイルされ、mknod を使用してデバイスを /dev/hello にしました。しかし、このモジュール ( hello_kernel.ko ) を insmod しようとすると、エラーが発生します:

insmod: 'hello_kernel.ko' の挿入エラー: -1 子プロセスがありません

dmesg コマンドは、ソケットの作成中に、つまり netlink_kernel_create() でエラーが発生したことを示しています。

当初、私はこのモジュールを使用して、完全に機能する netlink ソケットのみを使用するユーザー空間アプリケーションに接続しようとしていました。キャラクター デバイス機能を追加する動機は、別のユーザー アプリケーションが通常のデバイス ファイルのようにそれを開いて ioctl 呼び出しを発行できるようにすることでした。

この作業を行うにはどうすればよいですか? または、カーネルは両方の機能のマージをサポートしていませんか?

以下のコード:

モジュールを挿入しようとしています:

dmesg の出力:

0 投票する
3 に答える
16292 参照

android - NetlinkListenerおよびNetlinkEventのエラーメッセージ

私のアプリケーションは実行時に壊れません。ただし、次のエラーメッセージは常に表示されます

NetlinkListener:カーネル以外のnetlinkマルチキャストメッセージを無視しますNetlinkEvent:NetlinkEvent :: FindParam():パラメーター'UDEV_LOG'が見つかりません

私が開発しているアプリは、ソケットを使用して特定のIPソース(特定の有効なポート番号)からパッケージを受信します。データフローを確認するために一連のログ出力を設定し(「System.out.println」呼び出しも試しました)、すべてが正常であるように見えます。

誰かがそれらのエラーメッセージが正確に何に関連しているのか教えてもらえますか?

テスト目的で使用しているデバイスは、最新のOTAアップデート(Android 2.3.6)を搭載したMotorola Atrix 4G(MB860)です。互換性の問題があるため、すべての開発はAPI 8(またはそれ以前)を使用して行う必要があります。

0 投票する
1 に答える
1531 参照

sockets - ユーザーモードからカーネルモードに入るさまざまな方法?NETLINK Socket はその 1 つですか?どのように?

ユーザーモードからカーネルモードに入るためにNETLINKソケットを使用する必要があります。ユーザーモードからカーネルモードへの両方のジャンプとして、NETLINKソケットを使用してシステムコール機能を実装するにはどうすればよいですかRGds、ソフティ

0 投票する
1 に答える
793 参照

linux - GDB を使用して netlink 通信をデバッグする

netlink ソケットを使用してカーネル モジュールと通信するマルチスレッド アプリケーションがあります。ユーザー モード アプリケーションのスレッドの 1 つがサーバーとして機能し、カーネル モジュールがクライアントとして機能します。大まかにカーネルコードは次のとおりです。

ユーザーモードアプリケーションがこのメッセージに応答すると、netlink コールバックで message_status 変数が更新されますしたがって、基本的には、メッセージを送信してから、最大タイムアウト jiffies で応答を待つという考え方です。

ここで、gdb を使用して、ユーザー モードで netlink サーバー スレッドによって呼び出される任意の関数にブレーク ポイントを追加すると、ブレーク ポイントにヒットすることはなく、カーネル ログに次のようなメッセージが殺到します。

返事が来る前に誰かが私たちを起こしてしまいました。残り時間 3499

返事が来る前に誰かが私たちを起こしてしまいました。残り時間 3499

返事が来る前に誰かが私たちを起こしてしまいました。残り時間 3499

返事が来る前に誰かが私たちを起こしてしまいました。残り時間 3499

..

..

返事が来る前に誰かが私たちを起こしてしまいました。残り時間 3498

やっと手に入るまで

応答がありません

カーネル スレッドがタイムアウトから復帰する原因と、ユーザー モード コードをデバッグする方法を教えてください。

PS: RHEL 6.0 で 2.6.32-71.el6.x86_64 を使用しています。

0 投票する
1 に答える
4595 参照

linux - netlink 経由で 2 つの Linux カーネル モジュール間で通信することは可能ですか?

ご存知のように、netlink はユーザー/カーネル空間の通信メカニズムです。

カーネル モジュールから別のカーネル モジュールに通信したい。別のカーネルモジュールには、すでに netlink インターフェースがあります。

ユーザー空間で行うように、カーネルモジュールからネットリンクに接続することは可能ですか?

0 投票する
1 に答える
1117 参照

linux-kernel - ネットフィルターの速度制限

1Gbit/sec ネットワークで netlink フィルター アプリケーションをテストしています。ユーザー空間関数が netlink ソケットに判定を送信しています。別のユーザー空間ルーチンは、netlink ソケットといくつかのカスタム フィルター関数からマークされたパケットの非同期読み取りを実行します。ビットレートが 300 Mbps を超える場合、netlink ソケット読み取りエラー「利用可能なバッファ領域がありません」が表示されます。私はそれをネットリンクのバッファオーバーフローと考えています。高速ネットワークのネットリンクのスループットを改善する方法について誰かが推奨できますか? 私のカーネルのバージョンは 2.6.38 です。

0 投票する
1 に答える
10140 参照

c - ネットリンクメッセージから現在のルートを抽出し、コードを添付

ネットリンクソケットでルートの変更を監視しようとしていますが、更新されたルートアドレスを取得するにはどうすればよいですか?

コード:

0 投票する
2 に答える
1510 参照

c - NETLINK_ROUTEオプションを介してNetlinkソケットを介して特定のインターフェイス(eth0またはeth1)のMTUサイズを設定できません

特定のインターフェイス(たとえばeth0またはeth1)のMTUサイズを1100に設定するプログラムを作成しました。また、リクエストメッセージは、オプションを介してNetlinkソケットを使用してユーザースペースから送信されNETLINK_ROUTEます。

メッセージはユーザースペースから正常に送信されますが、を確認したところifconfig eth0、MTUサイズはまだ古い値(1500)を示しています。正しく確認していますか?また、カーネルがMTUサイズを正しく設定しているかどうかをどのように知ることができますか?以下の私のプログラムを見つけて、間違っている場合は修正してください。

0 投票する
3 に答える
3814 参照

linux - netlinkを使用してユーザースペースデーモンのカーネルarpテーブルを監視するにはどうすればよいですか?

RFC3549に従ってルートが変更された場合に、RTM_F_NOTIFYフラグを指定した「NETLINK_ROUTE」ソケットを使用してユーザーに通知できることはわかっています。しかし、arpテーブルが変更されたときにユーザーに通知する方法が1つ見つかりません。

PS:Linuxカーネル3.0.6を使用しています