| /linux/Documentation/bpf/ |
| H A 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/net/netfilter/ |
| H A 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_ULL(FLOW_DISSECTOR_KEY_CONTROL)) in nft_flow_rule_set_addr_type() 43 match->dissector.used_keys |= BIT_ULL(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() 62 if (match->dissector.used_keys & BIT_ULL(FLOW_DISSECTOR_KEY_VLAN) && in nft_flow_rule_transfer_vlan() 71 match->dissector.offset[FLOW_DISSECTOR_KEY_CVLAN] = in nft_flow_rule_transfer_vlan() 73 match->dissector.used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_CVLAN); in nft_flow_rule_transfer_vlan() 74 } else if (match->dissector.used_keys & in nft_flow_rule_transfer_vlan() 82 match->dissector.offset[FLOW_DISSECTOR_KEY_VLAN] = in nft_flow_rule_transfer_vlan() 84 match->dissector.used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_VLAN); in nft_flow_rule_transfer_vlan()
|
| H A D | nf_flow_table_offload.c | 33 (__match)->dissector.offset[__type] = \ 81 match->dissector.used_keys |= enc_keys; in nf_flow_rule_lwt_match() 170 match->dissector.used_keys |= BIT_ULL(key->control.addr_type); in nf_flow_rule_match() 177 match->dissector.used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_TCP); in nf_flow_rule_match() 189 match->dissector.used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_META) | in nf_flow_rule_match() 201 match->dissector.used_keys |= BIT_ULL(FLOW_DISSECTOR_KEY_PORTS); in nf_flow_rule_match() 817 flow_rule->rule->match.dissector = &flow_rule->match.dissector; in nf_flow_offload_rule_alloc()
|
| /linux/drivers/net/ethernet/stmicro/stmmac/ |
| H A D | stmmac_tc.c | 455 struct flow_dissector *dissector = rule->match.dissector; in tc_add_basic_flow() local 459 if (!dissector_uses_key(dissector, FLOW_DISSECTOR_KEY_BASIC)) in tc_add_basic_flow() 473 struct flow_dissector *dissector = rule->match.dissector; in tc_add_ip4_flow() local 480 if (!dissector_uses_key(dissector, FLOW_DISSECTOR_KEY_IPV4_ADDRS)) in tc_add_ip4_flow() 508 struct flow_dissector *dissector = rule->match.dissector; in tc_add_ports_flow() local 516 if (!dissector_uses_key(dissector, FLOW_DISSECTOR_KEY_PORTS)) in tc_add_ports_flow() 658 struct flow_dissector *dissector = rule->match.dissector; in tc_add_vlan_flow() local 673 if (!dissector_uses_key(dissector, FLOW_DISSECTOR_KEY_VLAN)) in tc_add_vlan_flow() 729 struct flow_dissector *dissector = rule->match.dissector; in tc_add_ethtype_flow() local 740 if (!dissector_uses_key(dissector, FLOW_DISSECTOR_KEY_BASIC)) in tc_add_ethtype_flow()
|
| H A D | stmmac_selftests.c | 1336 struct flow_dissector *dissector; in __stmmac_test_l3filt() local 1352 dissector = kzalloc_obj(*dissector); in __stmmac_test_l3filt() 1353 if (!dissector) { in __stmmac_test_l3filt() 1358 dissector->used_keys |= (1ULL << FLOW_DISSECTOR_KEY_IPV4_ADDRS); in __stmmac_test_l3filt() 1359 dissector->offset[FLOW_DISSECTOR_KEY_IPV4_ADDRS] = 0; in __stmmac_test_l3filt() 1377 rule->match.dissector = dissector; in __stmmac_test_l3filt() 1416 kfree(dissector); in __stmmac_test_l3filt() 1462 struct flow_dissector *dissector; in __stmmac_test_l4filt() local 1478 dissector = kzalloc_obj(*dissector); in __stmmac_test_l4filt() 1479 if (!dissector) { in __stmmac_test_l4filt() [all …]
|
| /linux/drivers/net/dsa/microchip/ |
| H A D | ksz9477_tc_flower.c | 115 struct flow_dissector *dissector = rule->match.dissector; in ksz9477_flower_parse_key() local 118 if (dissector->used_keys & in ksz9477_flower_parse_key()
|
| /linux/drivers/net/ethernet/netronome/nfp/flower/ |
| H A D | conntrack.c | 59 struct flow_dissector *dissector = rule->match.dissector; in is_pre_ct_flow() local 64 if (dissector->used_keys & BIT_ULL(FLOW_DISSECTOR_KEY_CT)) { in is_pre_ct_flow() 91 struct flow_dissector *dissector = rule->match.dissector; in is_post_ct_flow() local 97 if (dissector->used_keys & BIT_ULL(FLOW_DISSECTOR_KEY_CT)) { in is_post_ct_flow() 242 ovlp_keys = entry1->rule->match.dissector->used_keys & in nfp_ct_merge_check() 243 entry2->rule->match.dissector->used_keys; in nfp_ct_merge_check() 587 struct flow_dissector *dissector = post_ct_entry->rule->match.dissector; in nfp_ct_check_meta() local 593 if (ct_met && (dissector->used_keys & BIT_ULL(FLOW_DISSECTOR_KEY_CT))) { in nfp_ct_check_meta() 1509 memcpy(&nft_match->dissector, flow->rule->match.dissector, in nfp_fl_ct_add_flow() 1510 sizeof(nft_match->dissector)); in nfp_fl_ct_add_flow() [all …]
|
| H A D | offload.c | 245 struct flow_dissector *dissector = rule->match.dissector; in nfp_flower_calculate_key_layers() local 253 if (dissector->used_keys & ~NFP_FLOWER_WHITELIST_DISSECTOR) { in nfp_flower_calculate_key_layers() 259 if (dissector->used_keys & NFP_FLOWER_WHITELIST_TUN_DISSECTOR && in nfp_flower_calculate_key_layers() 260 (dissector->used_keys & NFP_FLOWER_WHITELIST_TUN_DISSECTOR_V6_R) in nfp_flower_calculate_key_layers() 262 (dissector->used_keys & NFP_FLOWER_WHITELIST_TUN_DISSECTOR_R) in nfp_flower_calculate_key_layers() 1305 struct flow_dissector *dissector = rule->match.dissector; in offload_pre_check() local 1308 if (dissector->used_keys & BIT_ULL(FLOW_DISSECTOR_KEY_CT)) { in offload_pre_check()
|
| /linux/drivers/net/ethernet/freescale/dpaa2/ |
| H A D | dpaa2-switch-flower.c | 15 struct flow_dissector *dissector = rule->match.dissector; in dpaa2_switch_flower_parse_key() local 19 if (dissector->used_keys & in dpaa2_switch_flower_parse_key() 541 struct flow_dissector *dissector = rule->match.dissector; in dpaa2_switch_flower_parse_mirror_key() local 545 if (dissector->used_keys & in dpaa2_switch_flower_parse_mirror_key()
|
| /linux/drivers/net/ethernet/sfc/ |
| H A D | tc_conntrack.c | 96 struct flow_dissector *dissector = fr->match.dissector; in efx_tc_ct_parse_match() local 123 if (dissector->used_keys & in efx_tc_ct_parse_match() 133 dissector->used_keys); in efx_tc_ct_parse_match()
|
| H A D | tc.c | 243 struct flow_dissector *dissector = rule->match.dissector; in efx_tc_flower_parse_match() local 281 if (dissector->used_keys & in efx_tc_flower_parse_match() 300 dissector->used_keys); in efx_tc_flower_parse_match() 309 if (dissector->used_keys & in efx_tc_flower_parse_match() 317 dissector->used_keys); in efx_tc_flower_parse_match() 363 if (dissector->used_keys & in efx_tc_flower_parse_match() 368 dissector->used_keys); in efx_tc_flower_parse_match() 424 } else if (dissector->used_keys & in efx_tc_flower_parse_match() 432 dissector->used_keys); in efx_tc_flower_parse_match()
|
| /linux/net/sched/ |
| H A D | cls_flower.c | 98 struct flow_dissector dissector; 108 struct flow_dissector dissector; 335 skb_flow_dissect_meta(skb, &mask->dissector, &skb_key); in fl_classify() 340 skb_flow_dissect_tunnel_info(skb, &mask->dissector, &skb_key); in fl_classify() 341 skb_flow_dissect_ct(skb, &mask->dissector, &skb_key, in fl_classify() 345 skb_flow_dissect_hash(skb, &mask->dissector, &skb_key); in fl_classify() 346 skb_flow_dissect(skb, &mask->dissector, &skb_key, in fl_classify() 475 cls_flower.rule->match.dissector = &f->mask->dissector; in fl_hw_replace_filter() 2161 static void fl_init_dissector(struct flow_dissector *dissector, 102 struct flow_dissector dissector; global() member 112 struct flow_dissector dissector; global() member 2165 fl_init_dissector(struct flow_dissector * dissector,struct fl_flow_key * mask) fl_init_dissector() argument [all...] |
| /linux/drivers/net/dsa/sja1105/ |
| H A D | sja1105_flower.c | 201 struct flow_dissector *dissector = rule->match.dissector; in sja1105_flower_parse_key() local 207 if (dissector->used_keys & in sja1105_flower_parse_key()
|
| /linux/drivers/net/ethernet/marvell/prestera/ |
| H A D | prestera_flower.c | 196 struct flow_dissector *dissector = f_rule->match.dissector; in prestera_flower_parse() local 204 if (dissector->used_keys & in prestera_flower_parse()
|
| /linux/drivers/net/ethernet/mscc/ |
| H A D | ocelot_flower.c | 607 struct flow_dissector *dissector = rule->match.dissector; in ocelot_flower_parse_key() local 613 if (dissector->used_keys & in ocelot_flower_parse_key() 670 if ((dissector->used_keys & in ocelot_flower_parse_key()
|
| /linux/drivers/net/ethernet/chelsio/cxgb4/ |
| H A D | cxgb4_tc_flower.c | 300 struct flow_dissector *dissector = rule->match.dissector; in cxgb4_validate_flow_match() local 304 if (dissector->used_keys & in cxgb4_validate_flow_match() 315 dissector->used_keys); in cxgb4_validate_flow_match()
|
| /linux/drivers/net/ethernet/mellanox/mlxsw/ |
| H A D | spectrum_flower.c | 573 struct flow_dissector *dissector = rule->match.dissector; in mlxsw_sp_flower_parse() local 580 if (dissector->used_keys & in mlxsw_sp_flower_parse()
|
| /linux/drivers/net/ethernet/intel/ice/ |
| H A D | ice_tc_lib.c | 1644 struct flow_dissector *dissector; in ice_parse_cls_flower() local 1647 dissector = rule->match.dissector; in ice_parse_cls_flower() 1649 if (dissector->used_keys & in ice_parse_cls_flower() 1692 } else if (dissector->used_keys & in ice_parse_cls_flower()
|
| /linux/drivers/net/ethernet/broadcom/bnxt/ |
| H A D | bnxt_tc.c | 374 struct flow_dissector *dissector = rule->match.dissector; in bnxt_tc_parse_flow() local 377 if ((dissector->used_keys & BIT_ULL(FLOW_DISSECTOR_KEY_CONTROL)) == 0 || in bnxt_tc_parse_flow() 378 (dissector->used_keys & BIT_ULL(FLOW_DISSECTOR_KEY_BASIC)) == 0) { in bnxt_tc_parse_flow() 380 dissector->used_keys); in bnxt_tc_parse_flow()
|
| /linux/drivers/net/ethernet/ti/ |
| H A D | am65-cpsw-qos.c | 1029 struct flow_dissector *dissector = rule->match.dissector; in am65_cpsw_qos_clsflower_add_policer() local 1035 if (dissector->used_keys & in am65_cpsw_qos_clsflower_add_policer()
|
| /linux/include/net/netfilter/ |
| H A D | nf_flow_table.h | 42 struct flow_dissector dissector; member
|
| /linux/drivers/net/ethernet/qlogic/qede/ |
| H A D | qede_filter.c | 1831 struct flow_dissector *dissector = rule->match.dissector; in qede_parse_flow_attr() local 1837 if (dissector->used_keys & in qede_parse_flow_attr() 1844 dissector->used_keys); in qede_parse_flow_attr()
|
| /linux/drivers/net/ethernet/freescale/enetc/ |
| H A D | enetc_qos.c | 1398 struct flow_dissector *dissector = rule->match.dissector; in enetc_config_clsflower() local 1413 fwd = enetc_check_flow_actions(actions, dissector->used_keys); in enetc_config_clsflower()
|
| /linux/net/core/ |
| H A D | flow_offload.c | 51 struct flow_dissector *__d = (__m)->dissector; \
|
| /linux/drivers/net/dsa/ocelot/ |
| H A D | felix_vsc9959.c | 1761 struct flow_dissector *dissector = rule->match.dissector; in vsc9959_stream_identify() local 1763 if (dissector->used_keys & in vsc9959_stream_identify()
|