cls_flower.c (28f2aff1caa4997f58ca31179cad1b4a84a62827) cls_flower.c (8a9093c79863b58cc2f9874d7ae788f0d622a596)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * net/sched/cls_flower.c Flower classifier
4 *
5 * Copyright (c) 2015 Jiri Pirko <jiri@resnulli.us>
6 */
7
8#include <linux/kernel.h>

--- 291 unchanged lines hidden (view full) ---

300{
301 struct cls_fl_head *head = rcu_dereference_bh(tp->root);
302 struct fl_flow_key skb_mkey;
303 struct fl_flow_key skb_key;
304 struct fl_flow_mask *mask;
305 struct cls_fl_filter *f;
306
307 list_for_each_entry_rcu(mask, &head->masks, list) {
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * net/sched/cls_flower.c Flower classifier
4 *
5 * Copyright (c) 2015 Jiri Pirko <jiri@resnulli.us>
6 */
7
8#include <linux/kernel.h>

--- 291 unchanged lines hidden (view full) ---

300{
301 struct cls_fl_head *head = rcu_dereference_bh(tp->root);
302 struct fl_flow_key skb_mkey;
303 struct fl_flow_key skb_key;
304 struct fl_flow_mask *mask;
305 struct cls_fl_filter *f;
306
307 list_for_each_entry_rcu(mask, &head->masks, list) {
308 flow_dissector_init_keys(&skb_key.control, &skb_key.basic);
308 fl_clear_masked_range(&skb_key, mask);
309
310 skb_flow_dissect_meta(skb, &mask->dissector, &skb_key);
311 /* skb_flow_dissect() does not set n_proto in case an unknown
312 * protocol, so do it rather here.
313 */
314 skb_key.basic.n_proto = skb->protocol;
315 skb_flow_dissect_tunnel_info(skb, &mask->dissector, &skb_key);

--- 2516 unchanged lines hidden ---
309 fl_clear_masked_range(&skb_key, mask);
310
311 skb_flow_dissect_meta(skb, &mask->dissector, &skb_key);
312 /* skb_flow_dissect() does not set n_proto in case an unknown
313 * protocol, so do it rather here.
314 */
315 skb_key.basic.n_proto = skb->protocol;
316 skb_flow_dissect_tunnel_info(skb, &mask->dissector, &skb_key);

--- 2516 unchanged lines hidden ---