Linux netns: グローバルなNet Namespace

グローバルなnsproxyに設定するNet Namespaceの変数のinit_nsめも

これはコンパイル時にはリストしか初期化していないので、その他のデータはカーネルの起動時に初期化してます。

 35 struct net init_net = {
 36         .dev_base_head = LIST_HEAD_INIT(init_net.dev_base_head),
 37 };

グローバルなNet Namespaceの初期化はnet_ns_init()で行います。 net_ns_init()で行う主要な処理はこちらの記事で書いたものを使用します。

kernhack.hatenablog.com

たとえば、net_generic構造体の設定、register_pernet_subsys()でコンストラクタ・デストラクタの登録などです。 その他にsetup_net()によるリストや参照カウンタ等の設定もありますが、これはこちらの記事で調べています。

kernhack.hatenablog.com

というわけで、init_nsに関してはこれと言った特別なことはしていませんでした。