問題タブ [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.
c++ - C++ から netlink を使用する最良の方法は何ですか?
C++ でユーザー空間から netlink メッセージを送受信する最良の方法は何ですか? C は使いたくない。inet_diag モジュールと接続したい。
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 の出力:
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(またはそれ以前)を使用して行う必要があります。
sockets - ユーザーモードからカーネルモードに入るさまざまな方法?NETLINK Socket はその 1 つですか?どのように?
ユーザーモードからカーネルモードに入るためにNETLINKソケットを使用する必要があります。ユーザーモードからカーネルモードへの両方のジャンプとして、NETLINKソケットを使用してシステムコール機能を実装するにはどうすればよいですか?RGds、ソフティ
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 を使用しています。
linux - netlink 経由で 2 つの Linux カーネル モジュール間で通信することは可能ですか?
ご存知のように、netlink はユーザー/カーネル空間の通信メカニズムです。
カーネル モジュールから別のカーネル モジュールに通信したい。別のカーネルモジュールには、すでに netlink インターフェースがあります。
ユーザー空間で行うように、カーネルモジュールからネットリンクに接続することは可能ですか?
linux-kernel - ネットフィルターの速度制限
1Gbit/sec ネットワークで netlink フィルター アプリケーションをテストしています。ユーザー空間関数が netlink ソケットに判定を送信しています。別のユーザー空間ルーチンは、netlink ソケットといくつかのカスタム フィルター関数からマークされたパケットの非同期読み取りを実行します。ビットレートが 300 Mbps を超える場合、netlink ソケット読み取りエラー「利用可能なバッファ領域がありません」が表示されます。私はそれをネットリンクのバッファオーバーフローと考えています。高速ネットワークのネットリンクのスループットを改善する方法について誰かが推奨できますか? 私のカーネルのバージョンは 2.6.38 です。
c - ネットリンクメッセージから現在のルートを抽出し、コードを添付
ネットリンクソケットでルートの変更を監視しようとしていますが、更新されたルートアドレスを取得するにはどうすればよいですか?
コード:
c - NETLINK_ROUTEオプションを介してNetlinkソケットを介して特定のインターフェイス(eth0またはeth1)のMTUサイズを設定できません
特定のインターフェイス(たとえばeth0
またはeth1
)のMTUサイズを1100に設定するプログラムを作成しました。また、リクエストメッセージは、オプションを介してNetlinkソケットを使用してユーザースペースから送信されNETLINK_ROUTE
ます。
メッセージはユーザースペースから正常に送信されますが、を確認したところifconfig eth0
、MTUサイズはまだ古い値(1500)を示しています。正しく確認していますか?また、カーネルがMTUサイズを正しく設定しているかどうかをどのように知ることができますか?以下の私のプログラムを見つけて、間違っている場合は修正してください。
linux - netlinkを使用してユーザースペースデーモンのカーネルarpテーブルを監視するにはどうすればよいですか?
RFC3549に従ってルートが変更された場合に、RTM_F_NOTIFYフラグを指定した「NETLINK_ROUTE」ソケットを使用してユーザーに通知できることはわかっています。しかし、arpテーブルが変更されたときにユーザーに通知する方法が1つ見つかりません。
PS:Linuxカーネル3.0.6を使用しています