Message ID | 20171026230611.14269-1-fw@strlen.de |
---|---|
Headers | show |
Series | rework dependency removal | expand |
On Fri, Oct 27, 2017 at 01:06:03AM +0200, Florian Westphal wrote: > This series resolves a few shortcomings with the current dependency > removal. > > Problem is that the current approach sometimes can remove dependencies > that are required, i.e. where the removal does change the rule. > > Examples: > inet t .. meta nfproto ipv6 tcp dport 22 or > inet t .. ip protocol tcp tcp dport 22 > are reduced to 'tcp dport 22'. OK, this is wrong, indeed. > ip6 nexthdr icmpv6 icmpv6 type echo-request > becomes 'ipv6 type echo-request' (which is not exactly the same, > the implicit dependency nft adds is 'meta l4proto', which skips > most extension headers). This dependency removal is wrong too indeed and I agree it needs to be fixed. What I don't still is why patch 1/8 is expanding icmp type echo-request to show explicit "ether type ip icmp type echo-request" when listing the ruleset. I mean: -icmp type echo-request;ok +icmp type echo-request;ok;ether type ip icmp type echo-request -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Pablo Neira Ayuso <pablo@netfilter.org> wrote: > What I don't still is why patch 1/8 is expanding icmp type > echo-request to show explicit "ether type ip icmp type echo-request" > when listing the ruleset. > > I mean: > > -icmp type echo-request;ok > +icmp type echo-request;ok;ether type ip icmp type echo-request Correct, this is redundant, the 'ether type ip' could be removed here. But it would need more work to achive this, f.e. by tracking not the last but all seen dependencies per-base and doing the removal only after seeing all consecutive expression statements. At the moment, when 'remove ether type ip' decision is made, we only know that the next expression is 'meta l4proto'. But that is not enough to know if the dependency is implicit or not. Another soltution would be to pass the relational expression, and then extract rhs too. That would allow to see the 'icmp' in 'meta l4proto icmp' (and then remove the dep because icmp implies ipv4). However, as icmp is the only case where we can do the removal I think its currently not super urgent to make these changes. Does that explanation help? I would re-word the commit message accordingly. -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html