Lines Matching refs:mask
52 struct fl_flow_mask mask; member
72 static unsigned short int fl_mask_range(const struct fl_flow_mask *mask) in fl_mask_range() argument
74 return mask->range.end - mask->range.start; in fl_mask_range()
77 static void fl_mask_update_range(struct fl_flow_mask *mask) in fl_mask_update_range() argument
79 const u8 *bytes = (const u8 *) &mask->key; in fl_mask_update_range()
80 size_t size = sizeof(mask->key); in fl_mask_update_range()
83 for (i = 0; i < sizeof(mask->key); i++) { in fl_mask_update_range()
90 mask->range.start = rounddown(first, sizeof(long)); in fl_mask_update_range()
91 mask->range.end = roundup(last + 1, sizeof(long)); in fl_mask_update_range()
95 const struct fl_flow_mask *mask) in fl_key_get_start() argument
97 return (u8 *) key + mask->range.start; in fl_key_get_start()
101 struct fl_flow_mask *mask) in fl_set_masked_key() argument
103 const long *lkey = fl_key_get_start(key, mask); in fl_set_masked_key()
104 const long *lmask = fl_key_get_start(&mask->key, mask); in fl_set_masked_key()
105 long *lmkey = fl_key_get_start(mkey, mask); in fl_set_masked_key()
108 for (i = 0; i < fl_mask_range(mask); i += sizeof(long)) in fl_set_masked_key()
113 struct fl_flow_mask *mask) in fl_clear_masked_range() argument
115 memset(fl_key_get_start(key, mask), 0, fl_mask_range(mask)); in fl_clear_masked_range()
126 fl_clear_masked_range(&skb_key, &head->mask); in fl_classify()
134 fl_set_masked_key(&skb_mkey, &skb_key, &head->mask); in fl_classify()
137 fl_key_get_start(&skb_mkey, &head->mask), in fl_classify()
225 void *mask, int mask_type, int len) in fl_set_key_val() argument
231 memset(mask, 0xff, len); in fl_set_key_val()
233 memcpy(mask, nla_data(tb[mask_type]), len); in fl_set_key_val()
237 struct fl_flow_key *key, struct fl_flow_key *mask) in fl_set_key() argument
245 mask->indev_ifindex = 0xffffffff; in fl_set_key()
250 mask->eth.dst, TCA_FLOWER_KEY_ETH_DST_MASK, in fl_set_key()
253 mask->eth.src, TCA_FLOWER_KEY_ETH_SRC_MASK, in fl_set_key()
257 &mask->basic.n_proto, TCA_FLOWER_UNSPEC, in fl_set_key()
263 &mask->basic.ip_proto, TCA_FLOWER_UNSPEC, in fl_set_key()
270 &mask->ipv4.src, TCA_FLOWER_KEY_IPV4_SRC_MASK, in fl_set_key()
273 &mask->ipv4.dst, TCA_FLOWER_KEY_IPV4_DST_MASK, in fl_set_key()
278 &mask->ipv6.src, TCA_FLOWER_KEY_IPV6_SRC_MASK, in fl_set_key()
281 &mask->ipv6.dst, TCA_FLOWER_KEY_IPV6_DST_MASK, in fl_set_key()
287 &mask->tp.src, TCA_FLOWER_UNSPEC, in fl_set_key()
290 &mask->tp.dst, TCA_FLOWER_UNSPEC, in fl_set_key()
294 &mask->tp.src, TCA_FLOWER_UNSPEC, in fl_set_key()
297 &mask->tp.dst, TCA_FLOWER_UNSPEC, in fl_set_key()
321 struct fl_flow_mask *mask) in fl_init_hashtable() argument
324 head->ht_params.key_len = fl_mask_range(mask); in fl_init_hashtable()
325 head->ht_params.key_offset += mask->range.start; in fl_init_hashtable()
335 #define FL_KEY_IN_RANGE(mask, member) \ argument
336 (FL_KEY_MEMBER_OFFSET(member) <= (mask)->range.end && \
337 FL_KEY_MEMBER_END_OFFSET(member) >= (mask)->range.start)
346 #define FL_KEY_SET_IF_IN_RANGE(mask, keys, cnt, id, member) \ argument
348 if (FL_KEY_IN_RANGE(mask, member)) \
353 struct fl_flow_mask *mask) in fl_init_dissector() argument
360 FL_KEY_SET_IF_IN_RANGE(mask, keys, cnt, in fl_init_dissector()
362 FL_KEY_SET_IF_IN_RANGE(mask, keys, cnt, in fl_init_dissector()
364 FL_KEY_SET_IF_IN_RANGE(mask, keys, cnt, in fl_init_dissector()
366 FL_KEY_SET_IF_IN_RANGE(mask, keys, cnt, in fl_init_dissector()
373 struct fl_flow_mask *mask) in fl_check_assign_mask() argument
378 if (!fl_mask_eq(&head->mask, mask)) in fl_check_assign_mask()
387 err = fl_init_hashtable(head, mask); in fl_check_assign_mask()
390 memcpy(&head->mask, mask, sizeof(head->mask)); in fl_check_assign_mask()
393 fl_init_dissector(head, mask); in fl_check_assign_mask()
399 struct cls_fl_filter *f, struct fl_flow_mask *mask, in fl_set_parms() argument
416 err = fl_set_key(net, tb, &f->key, &mask->key); in fl_set_parms()
420 fl_mask_update_range(mask); in fl_set_parms()
421 fl_set_masked_key(&f->mkey, &f->key, mask); in fl_set_parms()
461 struct fl_flow_mask mask = {}; in fl_change() local
489 err = fl_set_parms(net, tp, fnew, &mask, base, tb, tca[TCA_RATE], ovr); in fl_change()
493 err = fl_check_assign_mask(head, &mask); in fl_change()
554 void *mask, int mask_type, int len) in fl_dump_key_val() argument
558 if (!memchr_inv(mask, 0, len)) in fl_dump_key_val()
564 err = nla_put(skb, mask_type, len, mask); in fl_dump_key_val()
577 struct fl_flow_key *key, *mask; in fl_dump() local
593 mask = &head->mask.key; in fl_dump()
595 if (mask->indev_ifindex) { in fl_dump()
604 mask->eth.dst, TCA_FLOWER_KEY_ETH_DST_MASK, in fl_dump()
607 mask->eth.src, TCA_FLOWER_KEY_ETH_SRC_MASK, in fl_dump()
610 &mask->basic.n_proto, TCA_FLOWER_UNSPEC, in fl_dump()
616 &mask->basic.ip_proto, TCA_FLOWER_UNSPEC, in fl_dump()
622 &mask->ipv4.src, TCA_FLOWER_KEY_IPV4_SRC_MASK, in fl_dump()
625 &mask->ipv4.dst, TCA_FLOWER_KEY_IPV4_DST_MASK, in fl_dump()
630 &mask->ipv6.src, TCA_FLOWER_KEY_IPV6_SRC_MASK, in fl_dump()
633 &mask->ipv6.dst, TCA_FLOWER_KEY_IPV6_DST_MASK, in fl_dump()
639 &mask->tp.src, TCA_FLOWER_UNSPEC, in fl_dump()
642 &mask->tp.dst, TCA_FLOWER_UNSPEC, in fl_dump()
647 &mask->tp.src, TCA_FLOWER_UNSPEC, in fl_dump()
650 &mask->tp.dst, TCA_FLOWER_UNSPEC, in fl_dump()