summaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorTom Herbert <tom@quantonium.net>2017-09-01 14:04:11 -0700
committerDavid S. Miller <davem@davemloft.net>2017-09-05 11:40:08 -0700
commit3a1214e8b06317b4e71cd3a36344df87b7858e19 (patch)
treeeb04848adab6ac341a0b9dcbcd5e646ccf28e769 /include/net
parent2c08ab3f2504bc7ba816ce6fde051b8bd5f028e4 (diff)
downloadop-kernel-dev-3a1214e8b06317b4e71cd3a36344df87b7858e19.zip
op-kernel-dev-3a1214e8b06317b4e71cd3a36344df87b7858e19.tar.gz
flow_dissector: Cleanup control flow
__skb_flow_dissect is riddled with gotos that make discerning the flow, debugging, and extending the capability difficult. This patch reorganizes things so that we only perform goto's after the two main switch statements (no gotos within the cases now). It also eliminates several goto labels so that there are only two labels that can be target for goto. Reported-by: Alexander Popov <alex.popov@linux.com> Signed-off-by: Tom Herbert <tom@quantonium.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/flow_dissector.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/net/flow_dissector.h b/include/net/flow_dissector.h
index e2663e9..fc3dce7 100644
--- a/include/net/flow_dissector.h
+++ b/include/net/flow_dissector.h
@@ -19,6 +19,14 @@ struct flow_dissector_key_control {
#define FLOW_DIS_FIRST_FRAG BIT(1)
#define FLOW_DIS_ENCAPSULATION BIT(2)
+enum flow_dissect_ret {
+ FLOW_DISSECT_RET_OUT_GOOD,
+ FLOW_DISSECT_RET_OUT_BAD,
+ FLOW_DISSECT_RET_PROTO_AGAIN,
+ FLOW_DISSECT_RET_IPPROTO_AGAIN,
+ FLOW_DISSECT_RET_CONTINUE,
+};
+
/**
* struct flow_dissector_key_basic:
* @thoff: Transport header offset
OpenPOWER on IntegriCloud