Hi, this series is intended to avoid false-positives which match truncated packets against flower classifiers which match on: * zero L4 ports or; * zero ICMP code or type
This requires updating the flow dissector to return an error in such cases and updating flower to not match on the result of a failed dissection. In the case of UDP this results in a behavioural change to users of flow_keys_dissector_keys[] and flow_keys_dissector_symmetric_keys[] - dissection will fail on truncated packets where the IP protocol of the packets indicates ports should be present (according to skb_flow_get_ports()). The last patch of the series builds on the above to allow users to specify a policy for how to handle packets whose dissection fails. I will separately provide RFC patches to iproute2 to allow exercising the last patch. Simon Horman (4): flow dissector: return error on port dissection under-run flow dissector: return error on icmp dissection under-run net/sched: cls_flower: do not match if dissection fails net/sched: cls_flower: allow control of tree traversal on packet parse errors include/linux/skbuff.h | 11 +++-- include/uapi/linux/pkt_cls.h | 2 + net/core/flow_dissector.c | 105 ++++++++++++++++++++++++------------------- net/sched/cls_flower.c | 47 ++++++++++++++----- 4 files changed, 107 insertions(+), 58 deletions(-) -- 2.12.2.816.g2cccc81164