10

いくつかのカーネル モジュールを作成し、すべてのモジュールで最初 (または最後) に呼び出される netfilter フックになるように指定した場合、実際にはどのような順序で呼び出されるのでしょうか?

netfilter_ops_out.hook     = hook_func_out;
netfilter_ops_out.pf       = PF_INET;
netfilter_ops_out.hooknum  = NF_IP_LOCAL_OUT;
netfilter_ops_out.priority = NF_IP_PRI_FIRST;

ret = nf_register_hook(&netfilter_ops_out);
if (0 > ret) {
    printk("Error registering netfilter hook: %d\n", ret);
    return ret;
}    

netfilter_ops_in.hook      = hook_func_in;
netfilter_ops_in.pf        = PF_INET;
netfilter_ops_in.hooknum   = NF_IP_LOCAL_IN;
netfilter_ops_in.priority  = NF_IP_PRI_LAST;

ret = nf_register_hook(&netfilter_ops_in);
if (0 > ret) {
    printk("Error registering netfilter hook: %d\n", ret);
    return ret;
}    

実験的に、私は 2 つのモジュールを作成insmodし、それらを 2 つの異なる順序で編集しましたが、同じ結果が得られました。これは、「先着順」だけではないサブオーダーがあることを意味します。(これもアルファベット順ではありません…)

4

1 に答える 1