• David Ahern's avatar
    netfilter: Update ip_route_me_harder to consider L3 domain · 6d8b49c3
    David Ahern authored
    ip_route_me_harder is not considering the L3 domain and sending lookups
    to the wrong table. For example consider the following output rule:
    
    iptables -I OUTPUT -p tcp --dport 12345 -j REJECT --reject-with tcp-reset
    
    using perf to analyze lookups via the fib_table_lookup tracepoint shows:
    
    vrf-test  1187 [001] 46887.295927: fib:fib_table_lookup: table 255 oif 0 iif 0 src 0.0.0.0 dst 10.100.1.254 tos 0 scope 0 flags 0
            ffffffff8143922c perf_trace_fib_table_lookup ([kernel.kallsyms])
            ffffffff81493aac fib_table_lookup ([kernel.kallsyms])
            ffffffff8148dda3 __inet_dev_addr_type ([kernel.kallsyms])
            ffffffff8148ddf6 inet_addr_type ([kernel.kallsyms])
            ffffffff8149e344 ip_route_me_harder ([kernel.kallsyms])
    
    and
    
    vrf-test  1187 [001] 46887.295933: fib:fib_table_lookup: table 255 oif 0 iif 1 src 10.100.1.254 dst 10.100.1.2 tos 0 scope 0 flags
            ffffffff8143922c perf_trace_fib_table_lookup ([kernel.kallsyms])
          ...
    6d8b49c3
netfilter.c 5.3 KB