aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Herbert2015-09-01 09:24:30 -0700
committerDavid S. Miller2015-09-01 15:06:23 -0700
commit8306b688f1a6621b9efe3b0d827e26750528b12a (patch)
tree81725f39b3e3905ec73e817ccdeeda187a298325
parentb840f28b908da0239c8c5d9c8cae362ad21cda97 (diff)
flow_dissector: Add flag to stop parsing at L3
Add an input flag to flow dissector on rather dissection should be stopped when an L3 packet is encountered. This would be useful if a caller just wanted to get IP addresses of the outermost header (e.g. to do an L3 hash). Signed-off-by: Tom Herbert <tom@herbertland.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/net/flow_dissector.h1
-rw-r--r--net/core/flow_dissector.c6
2 files changed, 7 insertions, 0 deletions
diff --git a/include/net/flow_dissector.h b/include/net/flow_dissector.h
index 34102270b086..bb81e3b576e7 100644
--- a/include/net/flow_dissector.h
+++ b/include/net/flow_dissector.h
@@ -125,6 +125,7 @@ enum flow_dissector_key_id {
};
#define FLOW_DISSECTOR_F_PARSE_1ST_FRAG BIT(0)
+#define FLOW_DISSECTOR_F_STOP_AT_L3 BIT(1)
struct flow_dissector_key {
enum flow_dissector_key_id key_id;
diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c
index 907de2f68b1f..94fd841f341f 100644
--- a/net/core/flow_dissector.c
+++ b/net/core/flow_dissector.c
@@ -200,6 +200,9 @@ ip:
}
}
+ if (flags & FLOW_DISSECTOR_F_STOP_AT_L3)
+ goto out_good;
+
break;
}
case htons(ETH_P_IPV6): {
@@ -238,6 +241,9 @@ ipv6:
}
}
+ if (flags & FLOW_DISSECTOR_F_STOP_AT_L3)
+ goto out_good;
+
break;
}
case htons(ETH_P_8021AD):