Lines Matching refs:match
144 struct prestera_acl_match *r_match = &rule->re_key.match;
147 struct flow_match_meta match;
150 flow_rule_match_meta(f_rule, &match);
152 if (match.mask->l2_miss) {
153 NL_SET_ERR_MSG_MOD(f->common.extack, "Can't match on \"l2_miss\"");
157 if (match.mask->ingress_ifindex != 0xFFFFFFFF) {
164 match.key->ingress_ifindex);
167 "Can't find specified ingress port to match on");
173 "Can't match on switchdev ingress port");
196 struct flow_dissector *dissector = f_rule->match.dissector;
197 struct prestera_acl_match *r_match = &rule->re_key.match;
228 struct flow_match_control match;
230 flow_rule_match_control(f_rule, &match);
231 addr_type = match.key->addr_type;
233 if (flow_rule_has_control_flags(match.mask->flags,
239 struct flow_match_basic match;
241 flow_rule_match_basic(f_rule, &match);
242 n_proto_key = match.key->n_proto;
243 n_proto_mask = match.mask->n_proto;
245 if (ntohs(match.key->n_proto) == ETH_P_ALL) {
253 rule_match_set(r_match->key, IP_PROTO, match.key->ip_proto);
254 rule_match_set(r_match->mask, IP_PROTO, match.mask->ip_proto);
255 ip_proto = match.key->ip_proto;
259 struct flow_match_eth_addrs match;
261 flow_rule_match_eth_addrs(f_rule, &match);
265 ETH_DMAC_0, &match.key->dst[0], 4);
267 ETH_DMAC_1, &match.key->dst[4], 2);
270 ETH_DMAC_0, &match.mask->dst[0], 4);
272 ETH_DMAC_1, &match.mask->dst[4], 2);
276 ETH_SMAC_0, &match.key->src[0], 4);
278 ETH_SMAC_1, &match.key->src[4], 2);
281 ETH_SMAC_0, &match.mask->src[0], 4);
283 ETH_SMAC_1, &match.mask->src[4], 2);
287 struct flow_match_ipv4_addrs match;
289 flow_rule_match_ipv4_addrs(f_rule, &match);
291 rule_match_set(r_match->key, IP_SRC, match.key->src);
292 rule_match_set(r_match->mask, IP_SRC, match.mask->src);
294 rule_match_set(r_match->key, IP_DST, match.key->dst);
295 rule_match_set(r_match->mask, IP_DST, match.mask->dst);
299 struct flow_match_ports match;
308 flow_rule_match_ports(f_rule, &match);
310 rule_match_set(r_match->key, L4_PORT_SRC, match.key->src);
311 rule_match_set(r_match->mask, L4_PORT_SRC, match.mask->src);
313 rule_match_set(r_match->key, L4_PORT_DST, match.key->dst);
314 rule_match_set(r_match->mask, L4_PORT_DST, match.mask->dst);
318 struct flow_match_ports_range match;
321 flow_rule_match_ports_range(f_rule, &match);
324 tp_key = htonl(ntohs(match.key->tp_min.src) |
325 (ntohs(match.key->tp_max.src) << 16));
326 tp_mask = htonl(ntohs(match.mask->tp_min.src) |
327 (ntohs(match.mask->tp_max.src) << 16));
332 tp_key = htonl(ntohs(match.key->tp_min.dst) |
333 (ntohs(match.key->tp_max.dst) << 16));
334 tp_mask = htonl(ntohs(match.mask->tp_min.dst) |
335 (ntohs(match.mask->tp_max.dst) << 16));
341 struct flow_match_vlan match;
343 flow_rule_match_vlan(f_rule, &match);
345 if (match.mask->vlan_id != 0) {
346 __be16 key = cpu_to_be16(match.key->vlan_id);
347 __be16 mask = cpu_to_be16(match.mask->vlan_id);
353 rule_match_set(r_match->key, VLAN_TPID, match.key->vlan_tpid);
354 rule_match_set(r_match->mask, VLAN_TPID, match.mask->vlan_tpid);
358 struct flow_match_icmp match;
360 flow_rule_match_icmp(f_rule, &match);
362 rule_match_set(r_match->key, ICMP_TYPE, match.key->type);
363 rule_match_set(r_match->mask, ICMP_TYPE, match.mask->type);
365 rule_match_set(r_match->key, ICMP_CODE, match.key->code);
366 rule_match_set(r_match->mask, ICMP_CODE, match.mask->code);
513 err = prestera_acl_ruleset_keymask_set(ruleset, rule.re_key.match.mask);