- //f->match = nla_data(tb[TCA_CANPRIO_MATCH]);
- f->canid = nla_get_u32(tb[TCA_CANPRIO_MATCH]);
- f->canid_mask = nla_get_u32(tb[TCA_CANPRIO_MATCH_MASK]);
- printk(" can ID to match = 0x%x with mask 0x%x\n", f->canid, f->canid_mask);
+ canprio_rules = nla_data(tb[TCA_CANPRIO_RULES]);
+ canprio_rules_count = (nla_len(tb[TCA_CANPRIO_RULES]) / sizeof(struct canprio_rule));
+ printk(" rules_count = %u\n", canprio_rules_count);
+
+ for (i = 0; i < canprio_rules_count; i++) {
+ if (canprio_rules[i].canid & CAN_EFF_FLAG) {
+ eff_match_add(f, canprio_rules[i].canid, canprio_rules[i].canid_mask);
+ } else {
+ sff_match_add(f, canprio_rules[i].canid, canprio_rules[i].canid_mask);
+ }
+
+ printk(" can ID to match = 0x%x with mask 0x%x\n",
+ canprio_rules[i].canid, canprio_rules[i].canid_mask);
+ }