On Wed, Nov 09, 2016 at 10:24:40AM -0800, David Ahern wrote: > 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]) > ffffffff81493aac fib_table_lookup ([kernel.kallsyms]) > ffffffff814998ff fib4_rule_action ([kernel.kallsyms]) > ffffffff81437f35 fib_rules_lookup ([kernel.kallsyms]) > ffffffff81499758 __fib_lookup ([kernel.kallsyms]) > ffffffff8144f010 fib_lookup.constprop.34 ([kernel.kallsyms]) > ffffffff8144f759 __ip_route_output_key_hash ([kernel.kallsyms]) > ffffffff8144fc6a ip_route_output_flow ([kernel.kallsyms]) > ffffffff8149e39b ip_route_me_harder ([kernel.kallsyms]) > > In both cases the lookups are directed to table 255 rather than the > table associated with the device via the L3 domain. Update both > lookups to pull the L3 domain from the dst currently attached to the > skb. Applied. -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html