/Linux-v5.10/Documentation/bpf/ |
D | prog_flow_dissector.rst | 10 Flow dissector is a routine that parses metadata out of the packets. It's 13 BPF flow dissector is an attempt to reimplement C-based flow dissector logic 20 BPF flow dissector programs operate on an ``__sk_buff``. However, only the 22 ``flow_keys`` is ``struct bpf_flow_keys`` and contains flow dissector input 31 Flow dissector BPF program should fill out the rest of the ``struct 42 dissector looks like:: 49 +-- flow dissector starts here 58 In case of VLAN, flow dissector can be called with the two different states. 67 +-- flow dissector starts here 86 +-- flow dissector starts here [all …]
|
/Linux-v5.10/drivers/net/ethernet/stmicro/stmmac/ |
D | stmmac_tc.c | 401 struct flow_dissector *dissector = rule->match.dissector; in tc_add_basic_flow() local 405 if (!dissector_uses_key(dissector, FLOW_DISSECTOR_KEY_BASIC)) in tc_add_basic_flow() 418 struct flow_dissector *dissector = rule->match.dissector; in tc_add_ip4_flow() local 425 if (!dissector_uses_key(dissector, FLOW_DISSECTOR_KEY_IPV4_ADDRS)) in tc_add_ip4_flow() 453 struct flow_dissector *dissector = rule->match.dissector; in tc_add_ports_flow() local 461 if (!dissector_uses_key(dissector, FLOW_DISSECTOR_KEY_PORTS)) in tc_add_ports_flow()
|
D | stmmac_selftests.c | 1337 struct flow_dissector *dissector; in __stmmac_test_l3filt() local 1353 dissector = kzalloc(sizeof(*dissector), GFP_KERNEL); in __stmmac_test_l3filt() 1354 if (!dissector) { in __stmmac_test_l3filt() 1359 dissector->used_keys |= (1 << FLOW_DISSECTOR_KEY_IPV4_ADDRS); in __stmmac_test_l3filt() 1360 dissector->offset[FLOW_DISSECTOR_KEY_IPV4_ADDRS] = 0; in __stmmac_test_l3filt() 1378 rule->match.dissector = dissector; in __stmmac_test_l3filt() 1417 kfree(dissector); in __stmmac_test_l3filt() 1463 struct flow_dissector *dissector; in __stmmac_test_l4filt() local 1479 dissector = kzalloc(sizeof(*dissector), GFP_KERNEL); in __stmmac_test_l4filt() 1480 if (!dissector) { in __stmmac_test_l4filt() [all …]
|
/Linux-v5.10/net/netfilter/ |
D | nf_tables_offload.c | 24 flow->rule->match.dissector = &flow->match.dissector; in nft_flow_rule_alloc() 38 if (match->dissector.used_keys & BIT(FLOW_DISSECTOR_KEY_CONTROL)) in nft_flow_rule_set_addr_type() 43 match->dissector.used_keys |= BIT(FLOW_DISSECTOR_KEY_CONTROL); in nft_flow_rule_set_addr_type() 44 match->dissector.offset[FLOW_DISSECTOR_KEY_CONTROL] = in nft_flow_rule_set_addr_type()
|
D | nf_flow_table_offload.c | 28 (__match)->dissector.offset[__type] = \ 76 match->dissector.used_keys |= enc_keys; in nf_flow_rule_lwt_match() 124 match->dissector.used_keys |= BIT(key->control.addr_type); in nf_flow_rule_match() 131 match->dissector.used_keys |= BIT(FLOW_DISSECTOR_KEY_TCP); in nf_flow_rule_match() 147 match->dissector.used_keys |= BIT(FLOW_DISSECTOR_KEY_META) | in nf_flow_rule_match() 595 flow_rule->rule->match.dissector = &flow_rule->match.dissector; in nf_flow_offload_rule_alloc()
|
D | nft_cmp.c | 132 flow->match.dissector.used_keys |= BIT(reg->key); in __nft_cmp_offload() 133 flow->match.dissector.offset[reg->key] = reg->base_offset; in __nft_cmp_offload()
|
/Linux-v5.10/net/ethtool/ |
D | ioctl.c | 2866 struct flow_dissector dissector; member 2893 flow->rule->match.dissector = &match->dissector; in ethtool_rx_flow_rule_create() 2943 match->dissector.used_keys |= in ethtool_rx_flow_rule_create() 2945 match->dissector.offset[FLOW_DISSECTOR_KEY_IPV4_ADDRS] = in ethtool_rx_flow_rule_create() 2958 match->dissector.used_keys |= in ethtool_rx_flow_rule_create() 2960 match->dissector.offset[FLOW_DISSECTOR_KEY_PORTS] = in ethtool_rx_flow_rule_create() 2966 match->dissector.used_keys |= in ethtool_rx_flow_rule_create() 2968 match->dissector.offset[FLOW_DISSECTOR_KEY_IP] = in ethtool_rx_flow_rule_create() 2995 match->dissector.used_keys |= in ethtool_rx_flow_rule_create() 2997 match->dissector.offset[FLOW_DISSECTOR_KEY_IPV6_ADDRS] = in ethtool_rx_flow_rule_create() [all …]
|
/Linux-v5.10/drivers/net/ethernet/mscc/ |
D | ocelot_flower.c | 425 struct flow_dissector *dissector = rule->match.dissector; in ocelot_flower_parse_key() local 431 if (dissector->used_keys & in ocelot_flower_parse_key() 476 if ((dissector->used_keys & in ocelot_flower_parse_key()
|
/Linux-v5.10/include/net/netfilter/ |
D | nf_tables_offload.h | 53 struct flow_dissector dissector; member
|
D | nf_flow_table.h | 38 struct flow_dissector dissector; member
|
/Linux-v5.10/drivers/net/dsa/sja1105/ |
D | sja1105_flower.c | 200 struct flow_dissector *dissector = rule->match.dissector; in sja1105_flower_parse_key() local 206 if (dissector->used_keys & in sja1105_flower_parse_key()
|
/Linux-v5.10/net/sched/ |
D | cls_flower.c | 82 struct flow_dissector dissector; member 92 struct flow_dissector dissector; member 313 skb_flow_dissect_meta(skb, &mask->dissector, &skb_key); in fl_classify() 318 skb_flow_dissect_tunnel_info(skb, &mask->dissector, &skb_key); in fl_classify() 319 skb_flow_dissect_ct(skb, &mask->dissector, &skb_key, in fl_classify() 322 skb_flow_dissect_hash(skb, &mask->dissector, &skb_key); in fl_classify() 323 skb_flow_dissect(skb, &mask->dissector, &skb_key, 0); in fl_classify() 449 cls_flower.rule->match.dissector = &f->mask->dissector; in fl_hw_replace_filter() 1703 static void fl_init_dissector(struct flow_dissector *dissector, in fl_init_dissector() argument 1758 skb_flow_dissector_init(dissector, keys, cnt); in fl_init_dissector() [all …]
|
/Linux-v5.10/drivers/net/ethernet/mellanox/mlxsw/ |
D | spectrum_flower.c | 404 struct flow_dissector *dissector = rule->match.dissector; in mlxsw_sp_flower_parse() local 411 if (dissector->used_keys & in mlxsw_sp_flower_parse()
|
/Linux-v5.10/drivers/net/ethernet/netronome/nfp/flower/ |
D | offload.c | 247 struct flow_dissector *dissector = rule->match.dissector; in nfp_flower_calculate_key_layers() local 255 if (dissector->used_keys & ~NFP_FLOWER_WHITELIST_DISSECTOR) { in nfp_flower_calculate_key_layers() 261 if (dissector->used_keys & NFP_FLOWER_WHITELIST_TUN_DISSECTOR && in nfp_flower_calculate_key_layers() 262 (dissector->used_keys & NFP_FLOWER_WHITELIST_TUN_DISSECTOR_V6_R) in nfp_flower_calculate_key_layers() 264 (dissector->used_keys & NFP_FLOWER_WHITELIST_TUN_DISSECTOR_R) in nfp_flower_calculate_key_layers()
|
/Linux-v5.10/include/net/ |
D | flow_offload.h | 10 struct flow_dissector *dissector; member 387 return dissector_uses_key(rule->match.dissector, key); in flow_rule_match_key()
|
/Linux-v5.10/drivers/net/ethernet/chelsio/cxgb4/ |
D | cxgb4_tc_flower.c | 311 struct flow_dissector *dissector = rule->match.dissector; in cxgb4_validate_flow_match() local 315 if (dissector->used_keys & in cxgb4_validate_flow_match() 325 dissector->used_keys); in cxgb4_validate_flow_match()
|
/Linux-v5.10/drivers/net/ethernet/broadcom/bnxt/ |
D | bnxt_tc.c | 372 struct flow_dissector *dissector = rule->match.dissector; in bnxt_tc_parse_flow() local 375 if ((dissector->used_keys & BIT(FLOW_DISSECTOR_KEY_CONTROL)) == 0 || in bnxt_tc_parse_flow() 376 (dissector->used_keys & BIT(FLOW_DISSECTOR_KEY_BASIC)) == 0) { in bnxt_tc_parse_flow() 378 dissector->used_keys); in bnxt_tc_parse_flow()
|
/Linux-v5.10/drivers/net/ethernet/qlogic/qede/ |
D | qede_filter.c | 1832 struct flow_dissector *dissector = rule->match.dissector; in qede_parse_flow_attr() local 1838 if (dissector->used_keys & in qede_parse_flow_attr() 1845 dissector->used_keys); in qede_parse_flow_attr()
|
/Linux-v5.10/drivers/net/ethernet/freescale/enetc/ |
D | enetc_qos.c | 1343 struct flow_dissector *dissector = rule->match.dissector; in enetc_config_clsflower() local 1358 fwd = enetc_check_flow_actions(actions, dissector->used_keys); in enetc_config_clsflower()
|
/Linux-v5.10/net/core/ |
D | flow_offload.c | 32 struct flow_dissector *__d = (__m)->dissector; \
|
/Linux-v5.10/drivers/net/ethernet/intel/iavf/ |
D | iavf_main.c | 2702 struct flow_dissector *dissector = rule->match.dissector; in iavf_parse_cls_flower() local 2711 if (dissector->used_keys & in iavf_parse_cls_flower() 2721 dissector->used_keys); in iavf_parse_cls_flower()
|
/Linux-v5.10/drivers/net/ethernet/mellanox/mlx5/core/ |
D | en_tc.c | 1935 skb_flow_dissector_target(__rule->match.dissector,\ 2244 struct flow_dissector *dissector = rule->match.dissector; in __parse_cls_flower() local 2252 if (dissector->used_keys & in __parse_cls_flower() 2275 dissector->used_keys); in __parse_cls_flower()
|
/Linux-v5.10/drivers/net/ethernet/intel/igb/ |
D | igb_main.c | 2580 struct flow_dissector *dissector = rule->match.dissector; in igb_parse_cls_flower() local 2583 if (dissector->used_keys & in igb_parse_cls_flower()
|
/Linux-v5.10/drivers/net/ethernet/intel/i40e/ |
D | i40e_main.c | 7819 struct flow_dissector *dissector = rule->match.dissector; in i40e_parse_cls_flower() local 7824 if (dissector->used_keys & in i40e_parse_cls_flower() 7834 dissector->used_keys); in i40e_parse_cls_flower()
|
/Linux-v5.10/Documentation/networking/ |
D | filter.rst | 628 extension, PTP dissector/classifier, and much more. They are all internally
|