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;
235 struct flow_match_basic match;
237 flow_rule_match_basic(f_rule, &match);
238 n_proto_key = match.key->n_proto;
239 n_proto_mask = match.mask->n_proto;
241 if (ntohs(match.key->n_proto) == ETH_P_ALL) {
249 rule_match_set(r_match->key, IP_PROTO, match.key->ip_proto);
250 rule_match_set(r_match->mask, IP_PROTO, match.mask->ip_proto);
251 ip_proto = match.key->ip_proto;
255 struct flow_match_eth_addrs match;
257 flow_rule_match_eth_addrs(f_rule, &match);
261 ETH_DMAC_0, &match.key->dst[0], 4);
263 ETH_DMAC_1, &match.key->dst[4], 2);
266 ETH_DMAC_0, &match.mask->dst[0], 4);
268 ETH_DMAC_1, &match.mask->dst[4], 2);
272 ETH_SMAC_0, &match.key->src[0], 4);
274 ETH_SMAC_1, &match.key->src[4], 2);
277 ETH_SMAC_0, &match.mask->src[0], 4);
279 ETH_SMAC_1, &match.mask->src[4], 2);
283 struct flow_match_ipv4_addrs match;
285 flow_rule_match_ipv4_addrs(f_rule, &match);
287 rule_match_set(r_match->key, IP_SRC, match.key->src);
288 rule_match_set(r_match->mask, IP_SRC, match.mask->src);
290 rule_match_set(r_match->key, IP_DST, match.key->dst);
291 rule_match_set(r_match->mask, IP_DST, match.mask->dst);
295 struct flow_match_ports match;
304 flow_rule_match_ports(f_rule, &match);
306 rule_match_set(r_match->key, L4_PORT_SRC, match.key->src);
307 rule_match_set(r_match->mask, L4_PORT_SRC, match.mask->src);
309 rule_match_set(r_match->key, L4_PORT_DST, match.key->dst);
310 rule_match_set(r_match->mask, L4_PORT_DST, match.mask->dst);
314 struct flow_match_ports_range match;
317 flow_rule_match_ports_range(f_rule, &match);
320 tp_key = htonl(ntohs(match.key->tp_min.src) |
321 (ntohs(match.key->tp_max.src) << 16));
322 tp_mask = htonl(ntohs(match.mask->tp_min.src) |
323 (ntohs(match.mask->tp_max.src) << 16));
328 tp_key = htonl(ntohs(match.key->tp_min.dst) |
329 (ntohs(match.key->tp_max.dst) << 16));
330 tp_mask = htonl(ntohs(match.mask->tp_min.dst) |
331 (ntohs(match.mask->tp_max.dst) << 16));
337 struct flow_match_vlan match;
339 flow_rule_match_vlan(f_rule, &match);
341 if (match.mask->vlan_id != 0) {
342 __be16 key = cpu_to_be16(match.key->vlan_id);
343 __be16 mask = cpu_to_be16(match.mask->vlan_id);
349 rule_match_set(r_match->key, VLAN_TPID, match.key->vlan_tpid);
350 rule_match_set(r_match->mask, VLAN_TPID, match.mask->vlan_tpid);
354 struct flow_match_icmp match;
356 flow_rule_match_icmp(f_rule, &match);
358 rule_match_set(r_match->key, ICMP_TYPE, match.key->type);
359 rule_match_set(r_match->mask, ICMP_TYPE, match.mask->type);
361 rule_match_set(r_match->key, ICMP_CODE, match.key->code);
362 rule_match_set(r_match->mask, ICMP_CODE, match.mask->code);
509 err = prestera_acl_ruleset_keymask_set(ruleset, rule.re_key.match.mask);