|
@@ -208,7 +208,6 @@ ip:
|
|
|
case htons(ETH_P_IPV6): {
|
|
|
const struct ipv6hdr *iph;
|
|
|
struct ipv6hdr _iph;
|
|
|
- __be32 flow_label;
|
|
|
|
|
|
ipv6:
|
|
|
iph = __skb_header_pointer(skb, nhoff, sizeof(_iph), data, hlen, &_iph);
|
|
@@ -230,8 +229,12 @@ ipv6:
|
|
|
key_control->addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS;
|
|
|
}
|
|
|
|
|
|
- flow_label = ip6_flowlabel(iph);
|
|
|
- if (flow_label) {
|
|
|
+ if ((dissector_uses_key(flow_dissector,
|
|
|
+ FLOW_DISSECTOR_KEY_FLOW_LABEL) ||
|
|
|
+ (flags & FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL)) &&
|
|
|
+ ip6_flowlabel(iph)) {
|
|
|
+ __be32 flow_label = ip6_flowlabel(iph);
|
|
|
+
|
|
|
if (dissector_uses_key(flow_dissector,
|
|
|
FLOW_DISSECTOR_KEY_FLOW_LABEL)) {
|
|
|
key_tags = skb_flow_dissector_target(flow_dissector,
|