ポリシーをルーティングするには、ルーティングテーブルをに追加する必要がありますが、どのように読み取ることが/etc/iproute2/rt_tables
できるのか疑問に思います。カーネルを読むか、またはiproute2ユーザースペースツールを読みますか?
答え1
これはiproute2
、コマンドラインで指定されたユーザーフレンドリーな名前をカーネルで使用される整数値に変換するユーティリティによって使用されるフラットファイルです。 「この名前はこの整数です」という一貫したマッピングを維持するために
答え2
これはカーネルによって直接実行されるのではなく、ユーザー空間ツールiproute2によって実行されます。その後、ユーザ空間ツールはシステムコールインタフェースを介してカーネルと対話する。
Routeコマンドのソースコードを調べるのは良い提案かもしれません。実際のカーネルパスアップデートのソースコードは src/linux/kernel_routes.c にあります。
ヘッダーファイル bit/ioctls.h は、カーネルのルーティングを操作するために必要な ioctl コマンドを宣言し、net/route.h ヘッダーファイルは、ルーティング情報をカーネルに渡すのに必要なデータ構造を指定します。