Lines Matching full:match
307 const struct flow_match_meta *match, in mlxsw_sp_flower_parse_meta_iif() argument
313 if (!match->mask->ingress_ifindex) in mlxsw_sp_flower_parse_meta_iif()
316 if (match->mask->ingress_ifindex != 0xFFFFFFFF) { in mlxsw_sp_flower_parse_meta_iif()
322 match->key->ingress_ifindex); in mlxsw_sp_flower_parse_meta_iif()
324 NL_SET_ERR_MSG_MOD(extack, "Can't find specified ingress port to match on"); in mlxsw_sp_flower_parse_meta_iif()
329 NL_SET_ERR_MSG_MOD(extack, "Can't match on non-mlxsw ingress port"); in mlxsw_sp_flower_parse_meta_iif()
335 NL_SET_ERR_MSG_MOD(extack, "Can't match on a port from different device"); in mlxsw_sp_flower_parse_meta_iif()
352 struct flow_match_meta match; in mlxsw_sp_flower_parse_meta() local
357 flow_rule_match_meta(rule, &match); in mlxsw_sp_flower_parse_meta()
360 match.key->l2_miss, match.mask->l2_miss); in mlxsw_sp_flower_parse_meta()
362 return mlxsw_sp_flower_parse_meta_iif(rulei, block, &match, in mlxsw_sp_flower_parse_meta()
369 struct flow_match_ipv4_addrs match; in mlxsw_sp_flower_parse_ipv4() local
371 flow_rule_match_ipv4_addrs(f->rule, &match); in mlxsw_sp_flower_parse_ipv4()
374 (char *) &match.key->src, in mlxsw_sp_flower_parse_ipv4()
375 (char *) &match.mask->src, 4); in mlxsw_sp_flower_parse_ipv4()
377 (char *) &match.key->dst, in mlxsw_sp_flower_parse_ipv4()
378 (char *) &match.mask->dst, 4); in mlxsw_sp_flower_parse_ipv4()
384 struct flow_match_ipv6_addrs match; in mlxsw_sp_flower_parse_ipv6() local
386 flow_rule_match_ipv6_addrs(f->rule, &match); in mlxsw_sp_flower_parse_ipv6()
389 &match.key->src.s6_addr[0x0], in mlxsw_sp_flower_parse_ipv6()
390 &match.mask->src.s6_addr[0x0], 4); in mlxsw_sp_flower_parse_ipv6()
392 &match.key->src.s6_addr[0x4], in mlxsw_sp_flower_parse_ipv6()
393 &match.mask->src.s6_addr[0x4], 4); in mlxsw_sp_flower_parse_ipv6()
395 &match.key->src.s6_addr[0x8], in mlxsw_sp_flower_parse_ipv6()
396 &match.mask->src.s6_addr[0x8], 4); in mlxsw_sp_flower_parse_ipv6()
398 &match.key->src.s6_addr[0xC], in mlxsw_sp_flower_parse_ipv6()
399 &match.mask->src.s6_addr[0xC], 4); in mlxsw_sp_flower_parse_ipv6()
401 &match.key->dst.s6_addr[0x0], in mlxsw_sp_flower_parse_ipv6()
402 &match.mask->dst.s6_addr[0x0], 4); in mlxsw_sp_flower_parse_ipv6()
404 &match.key->dst.s6_addr[0x4], in mlxsw_sp_flower_parse_ipv6()
405 &match.mask->dst.s6_addr[0x4], 4); in mlxsw_sp_flower_parse_ipv6()
407 &match.key->dst.s6_addr[0x8], in mlxsw_sp_flower_parse_ipv6()
408 &match.mask->dst.s6_addr[0x8], 4); in mlxsw_sp_flower_parse_ipv6()
410 &match.key->dst.s6_addr[0xC], in mlxsw_sp_flower_parse_ipv6()
411 &match.mask->dst.s6_addr[0xC], 4); in mlxsw_sp_flower_parse_ipv6()
420 struct flow_match_ports match; in mlxsw_sp_flower_parse_ports() local
431 flow_rule_match_ports(rule, &match); in mlxsw_sp_flower_parse_ports()
433 ntohs(match.key->dst), in mlxsw_sp_flower_parse_ports()
434 ntohs(match.mask->dst)); in mlxsw_sp_flower_parse_ports()
436 ntohs(match.key->src), in mlxsw_sp_flower_parse_ports()
437 ntohs(match.mask->src)); in mlxsw_sp_flower_parse_ports()
447 struct flow_match_ports_range match; in mlxsw_sp_flower_parse_ports_range() local
458 flow_rule_match_ports_range(rule, &match); in mlxsw_sp_flower_parse_ports_range()
460 if (match.mask->tp_min.src) { in mlxsw_sp_flower_parse_ports_range()
462 .min = ntohs(match.key->tp_min.src), in mlxsw_sp_flower_parse_ports_range()
463 .max = ntohs(match.key->tp_max.src), in mlxsw_sp_flower_parse_ports_range()
479 if (match.mask->tp_min.dst) { in mlxsw_sp_flower_parse_ports_range()
481 .min = ntohs(match.key->tp_min.dst), in mlxsw_sp_flower_parse_ports_range()
482 .max = ntohs(match.key->tp_max.dst), in mlxsw_sp_flower_parse_ports_range()
509 struct flow_match_tcp match; in mlxsw_sp_flower_parse_tcp() local
520 flow_rule_match_tcp(rule, &match); in mlxsw_sp_flower_parse_tcp()
522 if (match.mask->flags & htons(0x0E00)) { in mlxsw_sp_flower_parse_tcp()
523 NL_SET_ERR_MSG_MOD(f->common.extack, "TCP flags match not supported on reserved bits"); in mlxsw_sp_flower_parse_tcp()
524 dev_err(mlxsw_sp->bus_info->dev, "TCP flags match not supported on reserved bits\n"); in mlxsw_sp_flower_parse_tcp()
529 ntohs(match.key->flags), in mlxsw_sp_flower_parse_tcp()
530 ntohs(match.mask->flags)); in mlxsw_sp_flower_parse_tcp()
540 struct flow_match_ip match; in mlxsw_sp_flower_parse_ip() local
551 flow_rule_match_ip(rule, &match); in mlxsw_sp_flower_parse_ip()
554 match.key->ttl, match.mask->ttl); in mlxsw_sp_flower_parse_ip()
557 match.key->tos & 0x3, in mlxsw_sp_flower_parse_ip()
558 match.mask->tos & 0x3); in mlxsw_sp_flower_parse_ip()
561 match.key->tos >> 2, in mlxsw_sp_flower_parse_ip()
562 match.mask->tos >> 2); in mlxsw_sp_flower_parse_ip()
573 struct flow_dissector *dissector = rule->match.dissector; in mlxsw_sp_flower_parse()
604 struct flow_match_control match; in mlxsw_sp_flower_parse() local
606 flow_rule_match_control(rule, &match); in mlxsw_sp_flower_parse()
607 addr_type = match.key->addr_type; in mlxsw_sp_flower_parse()
609 if (flow_rule_has_control_flags(match.mask->flags, in mlxsw_sp_flower_parse()
615 struct flow_match_basic match; in mlxsw_sp_flower_parse() local
617 flow_rule_match_basic(rule, &match); in mlxsw_sp_flower_parse()
618 n_proto_key = ntohs(match.key->n_proto); in mlxsw_sp_flower_parse()
619 n_proto_mask = ntohs(match.mask->n_proto); in mlxsw_sp_flower_parse()
629 ip_proto = match.key->ip_proto; in mlxsw_sp_flower_parse()
632 match.key->ip_proto, in mlxsw_sp_flower_parse()
633 match.mask->ip_proto); in mlxsw_sp_flower_parse()
637 struct flow_match_eth_addrs match; in mlxsw_sp_flower_parse() local
639 flow_rule_match_eth_addrs(rule, &match); in mlxsw_sp_flower_parse()
642 match.key->dst, in mlxsw_sp_flower_parse()
643 match.mask->dst, 2); in mlxsw_sp_flower_parse()
646 match.key->dst + 2, in mlxsw_sp_flower_parse()
647 match.mask->dst + 2, 4); in mlxsw_sp_flower_parse()
650 match.key->src, in mlxsw_sp_flower_parse()
651 match.mask->src, 2); in mlxsw_sp_flower_parse()
654 match.key->src + 2, in mlxsw_sp_flower_parse()
655 match.mask->src + 2, 4); in mlxsw_sp_flower_parse()
659 struct flow_match_vlan match; in mlxsw_sp_flower_parse() local
661 flow_rule_match_vlan(rule, &match); in mlxsw_sp_flower_parse()
663 match.mask->vlan_id) { in mlxsw_sp_flower_parse()
673 if (match.mask->vlan_id != 0) in mlxsw_sp_flower_parse()
676 match.key->vlan_id, in mlxsw_sp_flower_parse()
677 match.mask->vlan_id); in mlxsw_sp_flower_parse()
678 if (match.mask->vlan_priority != 0) in mlxsw_sp_flower_parse()
681 match.key->vlan_priority, in mlxsw_sp_flower_parse()
682 match.mask->vlan_priority); in mlxsw_sp_flower_parse()