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 <t...@herbertland.com>
---
 include/net/flow_dissector.h | 1 +
 net/core/flow_dissector.c    | 6 ++++++
 2 files changed, 7 insertions(+)

diff --git a/include/net/flow_dissector.h b/include/net/flow_dissector.h
index 3410227..bb81e3b 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 907de2f..94fd841 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):
-- 
1.8.1

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to