問題タブ [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 - Netlink ソケットに登録されているコールバック関数以外の関数からメッセージを送受信する方法は?
次のカーネル モジュールで、syscall sys_open をフックし、Netlink ソケットを使用してファイル名をユーザー空間のプロセスに送信しようとすると、応答プロセスが msg を返し、msg に従って、カーネル モジュールがさらに処理を進めます。
ソースコード: foo.c
コールバック関数である関数 'hello_nl_recv_msg' はプロセスにメッセージを送受信しますが、関数 'my_sys_open' からユーザー空間のプロセスにメッセージ (つまりファイル名) を送信するにはどうすればよいですか? 応答を待つ方法は?
メイクファイル:
御時間ありがとうございます ;)
linux - NETLINK メッセージに MPLS 属性を追加する
最新の Linux カーネル 4.1.4 は MPLS データ パスをサポートしています。NETLINK ソケットを介してカーネルで MPLS ルーティング テーブルをプログラムできます。新しいアドレス ファミリは、socket.h で AF_MPLS として定義されます。
私はいくつかのコードを書いてみました -
ただし、Netlink 属性に MPLS ラベルを追加する方法がわかりません。
私を助けてください。
linux - MPLS 設定用の iproute2 コマンド
Linux カーネル 4.1 で iproute2 を使用して静的ラベル スイッチ MPLS ルートを管理する方法を理解しようとしています。
MPLS の iproute2 サポートが現在不完全である可能性があることは承知しています [2]。
iproute2-4.1.1 が現在何ができるかについて、誰かが光を当てることができますか?
これは私がこれまでに見つけたものです:
Documentation/networking/mpls-sysctl.txt
/proc/sys/net/mpls/platform_labels /proc/sys/net/mpls/conf//input
mpls モジュールのロード
sysctl サポートを探す
mpls サポートを有効にする
押す???(prefix-to-push アクションを追加する方法は?)
スワップ???(ラベル交換アクションを追加するには?)
ポップ???(ラベルポップアクションを追加するには?)
???
見せる???(ラベルスイッチされたルートを表示する方法は?)
???
誰かが私を助けることができます。前もって感謝します。
linux-kernel - カーネル内の FTN、ILM、および NHLFE
最新のカーネル 4.1 は MPLS データパスをサポートしています。IpRoute2 は、カーネルに mpls ルートを追加するコマンドも追加しています。
FTN(Fec to NHLFE)、ILM(Incoming Label Map)、NHLFE(Next hop label forwarding entry)を作成するiproutesコマンドとは?
上記の表を表示するコマンドは何ですか?
前もって感謝します。
android - Androidでプロセスを監視する方法
Androidのファイルシステムでプロセスのすべての書き込みをダンプできるかどうか誰かが知っていますか? または、少なくともプロセスが書き込むパスですか?
アプリケーションを監視したいと思います。dalvik マシンが netlink クラスを使用してカーネルと通信しているようですが、それを編集する必要がありますか?
c - Linux Kernel Generic Netlink - 同時実行ですか?
genl_register_family_with_ops
複数のコールバックを使用して汎用ネットリンク インターフェイスを登録したとします。
それに関する警告は表示されず、コールバックは連続して呼び出されると思いますが、コールバックがどのように呼び出されるかについての情報もありません。
登録した同じ汎用ネットリンク インターフェイスで複数のコールバックが同時に呼び出される可能性はありますか? コールバック間の同期は必要ですか?
質問を簡単にするために:
単一の netlink コールバックをプリエンプトしたり、2 つのコアで同時に実行したりできますか?
c - netlink_kernel_create 関数のエラー
Linux 開発の学習を始めたばかりで、トレーニング目的で単純なロード可能なカーネル モジュールを作成しました。次のコマンドを発行して追加しようとすると - make -C /lib/modules/$(uname -r)/build M=$PWD modules
次のエラーが表示されます。
エラー: 関数 'netlink_kernel_create' への引数が多すぎます nl_sk = netlink_kernel_create(&init_net, NETLINK_EXAMPLE, 0, recv_msg, NULL, THIS_MODULE);
sockets - カーネル空間に 32 を超えるネットリンク ソケットを設定できますか?
ユーザー空間と対話する必要があるカーネルモジュールがいくつかあります。したがって、各モジュールには Netlink ソケットがあります。
私の問題は、これらのソケットが互いに干渉することです。これは、それらのすべてが同じ Netlink アドレス ファミリに登録されているため (最初から利用できるアドレス ファミリが多くないためです。最大値は 32であり、半数以上がすでに予約されています)、また、それらすべてが同じ pid (カーネル pid - ゼロ)。
アドレスファミリ用のスペースがもっとあればいいのにと思います。または、さらに良いことに、ソケットを他の pid にバインドできればいいのにと思います。一度に 32 個のソケットしか開くことができないのに、なぜ Netlink がユーザーカーネルチャネルとして優先されるのでしょうか?
netlink アドレス (ポート) は 32 ビット整数で構成されます。ポート 0 (ゼロ) はカーネル用に予約されており、各 netlink プロトコル ファミリのカーネル側ソケットを参照します。他のポート番号は通常、ユーザー空間が所有するソケットを参照しますが、これは強制されません。
その最後の主張は今のところ嘘のようです. カーネルはpid として定数を使用し、より用途の広い関数をエクスポートしません:
カーネルを再コンパイルして、アドレス ファミリの制限を増やすことができると思います。しかし、これらはカーネル モジュールです。私はそれをする必要はありません。
何か不足していますか?
c - netlink ソケットで recv() が 0 を返す
2 つのホスト間のネットワーク ソケットでrecv()
は、反対側のピアが正常なシャットダウンを実行した場合、戻り値は 0 になります。
recv()
ユーザー空間でリッスンしているネットリンクソケット(ユーザー空間とカーネルの間で通信するため)で0を返すことの意味は何ですか? たとえば、タイプ RTM_NEWLINK およびファミリー NETLINK_ROUTE のカーネルからの netlink メッセージをリッスンしているユーザー空間で。
linux - 12 時間以上実行した後、Netlink を使用した Linux Netfilter がクラッシュしました
約 12 時間、netlink チャネルを介したユーザー通信でカーネル netfilter を実行したという Linux Ubuntu クラッシュ レポートを受け取りました。netlink は、カーネル netfilter からユーザー アプリケーションに定期的に (約 5 分) メッセージを送信するアラート チャネルとして使用されます。
クラッシュレポートは次のとおりです。
クラッシュの原因を解釈するのを手伝ってくれませんか!
これは私のnetfilterコードです:
nl_recv_msg コードは次のとおりです。