問題タブ [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.
linux - このマクロ _IOR(MY_MACIG, 0, int) の意味は何ですか?
カーネル空間との通信方法を確認するために、ioctl サンプル プログラムを調べていました。プログラムでは WRITE_IOCTL がコマンドとして使用されます
が何であるか理解できません_IOW(MY_MACIG, 1, int)
。これは、プログラムをダウンロードした場所からのリンクです。私を助けてください。
http://people.ee.ethz.ch/~arkeller/linux/multi/kernel_user_space_howto-4.html
c - PF_NETLINK ソケットをリッスンするときに、すべてのリンクおよびアドレス情報を取得します
関連する (私にとって) ネットワーク情報が変更されるたびに通知する平和なコードを作成しました (主に RTM_NEWADDR、RTM_DELADDR、RTM_NEWLINK、および RTM_DELLINK をリッスンします)。唯一の問題は、コードを初めて起動したときに、現在のステータス全体 (RTM_GETLINK と RTM_GETADDR) を取得したいことです。
RTM_GETLINK または RTM_GETADDR のいずれかをリクエストできます。
しかし、両方を同時にリクエストした場合:
IP情報しか取得できません。
リクエスト用とリッスン用に 2 つの異なるソケットを使用することになっていますか、それとも同じソケットですべてを行うことは可能ですか?
リクエストごとに送信を実行しようとしましたが、seq を使用して (2 番目のリクエストではそれを増やしています)、2 番目の応答の長さが 40 バイトしかないことがわかりました:(
もう少し分析すると、NLMSG_ERROR メッセージ タイプが表示されるようです。エラー コード -16 は、「デバイスまたはリソースがビジー状態」を意味します。
送信するたびにソケットを読み取れば、問題は発生しません。しかし、私はすべてのリクエストを実行してから、すべての返信を収集できるようにしたいと考えています...
android - カーネルに netlink ソケットを使用する方法 - ユーザー空間通信 Android
私のアプリがカーネルに関する情報を表示できるように、Androidがユーザー空間サービスと通信するためのカーネルモジュールを作成しようとしています。これまでのところ、Web で見つけたいくつかの例を試しましたが、どれも機能しません。アイデアは、カーネルが更新を送信し、サービスがそれらを取得することです。ioctl は、通信がイベント駆動型であり、カーネルから開始される必要があるため、ソリューションではありません。誰かがこれを行う方法を知っていれば、jni とカーネル モジュールの両方の C コードは素晴らしいでしょう。
c - C の Netlink を介したカーネルからユーザー空間へのマルチキャスト
Netlink を使用して、カーネルとユーザー空間の間で通信する簡単なプログラムを作成しようとしていました。基本的に、私が達成したかったのは次のとおりです。
- ユーザー空間プログラムは、ユーザー定義のマルチキャスト グループへのバインドを開始します。
- カーネルモジュールを挿入
- カーネル モジュールは、このマルチキャスト グループにメッセージを送信します
- ユーザー空間プログラムがメッセージを受信
これが私のコードです:
======ユーザー空間プログラム======
======カーネルモジュール======
カーネルモジュールは初期化中に一度だけメッセージを送信するため、最初にリッスンプログラムを実行してからモジュールを挿入しますが、常に次のエラーが発生します。
エラー ID を追跡すると、netlink/af_netlink.c の次のコードに反映されます。
delivery_failure ではないと思いますが、何らかの理由でまだ配信されていません。
著者のプログラムがルートの変更をリッスンし続けるこの例を参照していました。ユーザー定義のマルチキャスト グループを使用したいのですが。
何か案は?前もって感謝します!
linux-kernel - カーネルの netlink ソケット イベント リスナー
ユーザー空間アプリケーションとカーネル モジュール間の通信に netlink ソケットを使用しています。ただし、ユーザー アプリを閉じるときに、カーネルからユーザー アプリへのデータのルーティングを停止したいと考えています。netlink ソケットを使用するプロセスが終了したときに、カーネルでイベントを取得する方法はありますか?
c++ - C++ NetLink ソケット エラー
最近、C++ アプリケーションを再開しました。私はソケット用の NetLink と開発用の Visual Studio を使用しています。
小さなコードを作成しましたが、いくつかエラーが発生しました。NetLink からファイルを含め、ws2_32.lib を (リンカー/一般およびプラグマ コメントとして) 追加しましたが、まだ次のエラーが発生します。
私が使用しているコード(受け入れてみたかっただけです):
sockets - netlink ソケットのメッセージの長さが正しくありません
netlink ソケットを使用して、カーネル空間からユーザー空間にバイナリ データを送信しようとしました。How to use netlink socket to communicate with a kernel module?の例に従いました。
ただし、ユーザー空間の受信側では、受信したデータの長さがカーネル空間から送信されたものよりも大きくなっています。ただし、データは同じです。データにガベージ値が追加されます。
受信したデータの長さがカーネル空間から送信されたデータと同じになるという netlink ソケットの保証はありませんか?
linux - netlink scatter send がカーネルからのエラー応答を引き起こす (NLMSG_ERROR)
Netlink プロトコルを使用してタスク統計を収集するプログラムを作成しています。有効なパケットであると思われるものに対してカーネルがエラーで応答するため、あまり進んでいません。strace を使用して、プログラムの動作を正しく動作する iotop の動作と比較しました。
iotop からの strace の関連ビット:
私のプログラムからの strace 出力の対応する部分:
これらを再フォーマットすると、(16 進ダンプとして) 次のようになります (これらは異なる実行からのものであるため、pid 値は異なることに注意してください。ただし、再フォーマットされた strace 出力の残りの部分は同じです。)
2つの違いがあるように私には思えます。
iotop は pid に負の値を使用しているようです。私のプログラムもpidに負の数を送信するように変更を試みました。これは違いはありませんでした。
私はスキャッター/ギャザー アプローチを使用します: メモリの無駄が少なくなります (これは、私が考えているターゲット PC で制約される可能性があります)。ただし、リクエストごとに単一のバッファの送受信のみをサポートする Netlink コンポーネント (すべてではないにしても) がいくつかあると思われます。
Netlink がスキャッター/ギャザーを許可しているかどうか、または一度に 1 つの大きなバッファーですべての通信を行う必要があるかどうかを知っている人はいますか?