問題タブ [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 ソケットを使用してカーネルモジュールと通信するには?
netlink を使用してユーザー プロセスと通信する Linux カーネル モジュールを作成しようとしています。通信したいユーザープログラムはソケットを使用してのみ通信し、それを追加ioctl()
または何かに変更できないため、netlinkを使用しています。
問題は、その方法を理解できないことです。私はグーグルで検索しましたが、私が見つけたすべての例はこのような古いものであり、現在のカーネル バージョンでは無効になっています。this SO questionも見ましたが、ここのサンプルではソケット操作にlibnlを使用していますが、標準のソケット関数 (によって定義されています) に固執したいと思いますsys/socket.h
。それで、いくつかのチュートリアルやガイド、またはnetlinkのインターフェースと使用法を理解するのに役立つ何かに私を案内してくれる人がいますか. ユーザープログラムのソケットからカーネルのソケットへの接続を確立し、ユーザープロセスからカーネルにデータを送信し、カーネルから受信する方法の非常に基本的な例にすぎません。
また、カーネルコードを見るように言わないでください。私はすでにそれをやっていますが、それには多くの時間がかかり、あまり残っていません.
更新:
多くの試行錯誤の後、ユーザー プログラムからカーネルにメッセージを送信する次のコードがありますが、カーネルからユーザー プログラムへのメッセージ、つまり使用netlink_unicast()
が機能していません。機能しないだけでなく、呼び出しによってシステムがハングし、マシンを再起動する必要があります。誰かが見て、私が何をしているのか教えてもらえますか。このnetlink_unicast()
呼び出しは、次のコードでコメント化されています。カーネルからユーザー プログラムへのメッセージに対しては、コメントを解除する必要があります。
ユーザープログラム
カーネルコード
linux - インターフェイスに関する詳細情報のクエリと変更
次のタスクを実行する必要があります。
- インターフェイスを一覧表示する
- IPv6 アドレスの設定/削除/一覧表示
- ルーティング エントリの追加/削除
私の知る限り、使用できませんioctl
。ネットリンクを使用する必要があります。問題は、それを使用する方法の適切な説明が見つからなかったことです (ほとんどの netlink チュートリアルは、接続の作成方法に集中しています)。strace
また、有用であるとは証明されませんでした。
linux - NetLink メッセージ メモリの問題
ユーザー空間からカーネルにメッセージを送信しようとしています。netlink ソケット経由で正常に送信できます。しかし、私が書いたカーネル関数でメッセージを解放する必要があるのか 、それともネットリンクソケットAPIがメモリの割り当てを解除しているのかを知りたいですか?
また、/proc/net/netlink では、Drop カウントが増加し続けていることがわかります。このカウントは何を意味しますか?
c - ネットリンクソケット
ユーザー空間からカーネル空間に構造体のリスト/配列を送信しようとしています。Linkに似て いる そこで推奨されているように、私が見つけたlinkのソケットを使用することを考えています。この行にメッセージが設定されています
私は試した
それは私にエラーを与えました:代入の左オペランドとして左辺値が必要です。
ネットリンクを使用して配列/リストを送信するようにこれを変更するにはどうすればよいですか? この方法で送信できない場合、他にどのように簡単に送信できますか?
アップデート
私の構造
他のシステムコールがそのリストにアクセスできるように、これらの配列/リストをカーネルメモリに割り当てる必要があります。
c - ネットリンクとのカーネル空間ユーザー空間通信
私の目的は、カーネル空間から常にアクセスできるように、常にカーネル メモリに配列またはリストを保持することです。これを行うために、ここで推奨されているように netlink ソケットを使用しています。文字列を送信する方法を示すこの例に従います。ソケット内の構造体の配列または構造体のリストを送信する方法がわかりません。
netlink を使用してリストまたは配列を送信することは可能ですか?
macos - MAC OS X の NETLINK Sockets API に相当するものを知っている人はいますか?
MAC OS X の NETLINK Sockets API に相当するものを知っている人はいますか? Linux アプリケーションを MAC OS X に移植しようとしていますが、MACOS で同様のものを見つけることができませんでした。
アプリケーションでネットワーク アダプタへの非同期アクセスを提供する必要があります。
一定の秒数ごとに構成の変更などについてネットワークアダプターをポーリングすることは、私にとって便利なソリューションではありません。NETLINK ソケット API は、何か興味深いことが起こったときにのみ通知を受信する方法を提供します。
NETLINK は Linux カーネルとユーザー空間の間で通信するための Linux 固有のものであることは知っていますが、MACOS の下に NETLINK のようなものが存在する可能性があります。
カーネルと通信する唯一のツールが表示されます – sysctl()
誰か情報を持っていますか?
python - PYTHON のカーネル空間からのデータに NETLINK ソケットを使用するにはどうすればよいですか?
PYTHON のカーネル空間からのデータに NETLINK ソケットを使用するにはどうすればよいですか?
linux - RTNETLINK の回答: そのようなファイルやディレクトリはありません
このコマンドを実行すると:
私は得る
のカーネルとnetfilters
、のすべてのネットワーク オプションを構成しましたmenuconfig
。
このエラーが発生する理由がわかりません。私はiproute2-2.6.23
Fedora 8を使用しています。
これはラップトップでは正常に機能していましたが、デスクトップ PC では機能しませんでしたか?
linux - ネットリンクソケットの問題:カーネルのフリーズ
ネットリンクソケットを使用してユーザースペースとカーネルスペースの間でメッセージを交換しようとしています...ユーザースペースからカーネルスペースにメッセージを送信するとすべて正常に機能しますが、カーネルスペースから返信しようとするとシステムがフリーズします。特に、netlink_unicast関数を使用してメッセージを作成し、ユーザースペースに送信する関数をワークキューでスケジュールします...ここにいくつかのカーネルコードがあります:
コメントしようとしても、netlink_unicastカーネルへの呼び出しはフリーズしません。ユーザースペースからメッセージを正しく送信できます。同じコードが過去にうまく機能したことを覚えています。今ではこの奇妙なエラーに非常に驚いています。
何か案が?
皆さん、ありがとうございました!
netlink_unicast呼び出しの後にkfree_skb呼び出しを削除しようとしましたが、すべてが機能します...では、なぜシステムがその呼び出しでハングするのですか?割り当てられたsk_buffをどこで解放する必要がありますか?