Lines Matching refs:mod

102 					  struct cf_mod *mod);
136 struct cf_mod mod; member
157 struct cf_mod *mod) { op ; }
159 MODFUNC(mod_and_id, cf->can_id &= mod->modframe.and.can_id)
160 MODFUNC(mod_and_dlc, cf->can_dlc &= mod->modframe.and.can_dlc)
161 MODFUNC(mod_and_data, *(u64 *)cf->data &= *(u64 *)mod->modframe.and.data)
162 MODFUNC(mod_or_id, cf->can_id |= mod->modframe.or.can_id)
163 MODFUNC(mod_or_dlc, cf->can_dlc |= mod->modframe.or.can_dlc)
164 MODFUNC(mod_or_data, *(u64 *)cf->data |= *(u64 *)mod->modframe.or.data)
165 MODFUNC(mod_xor_id, cf->can_id ^= mod->modframe.xor.can_id)
166 MODFUNC(mod_xor_dlc, cf->can_dlc ^= mod->modframe.xor.can_dlc)
167 MODFUNC(mod_xor_data, *(u64 *)cf->data ^= *(u64 *)mod->modframe.xor.data)
168 MODFUNC(mod_set_id, cf->can_id = mod->modframe.set.can_id)
169 MODFUNC(mod_set_dlc, cf->can_dlc = mod->modframe.set.can_dlc)
170 MODFUNC(mod_set_data, *(u64 *)cf->data = *(u64 *)mod->modframe.set.data)
395 if (gwj->mod.modfunc[0]) in can_can_gw_rcv()
418 while (modidx < MAX_MODFUNCTIONS && gwj->mod.modfunc[modidx]) in can_can_gw_rcv()
419 (*gwj->mod.modfunc[modidx++])(cf, &gwj->mod); in can_can_gw_rcv()
423 if (gwj->mod.csumfunc.crc8) in can_can_gw_rcv()
424 (*gwj->mod.csumfunc.crc8)(cf, &gwj->mod.csum.crc8); in can_can_gw_rcv()
426 if (gwj->mod.csumfunc.xor) in can_can_gw_rcv()
427 (*gwj->mod.csumfunc.xor)(cf, &gwj->mod.csum.xor); in can_can_gw_rcv()
524 if (gwj->mod.modtype.and) { in cgw_put_job()
525 memcpy(&mb.cf, &gwj->mod.modframe.and, sizeof(mb.cf)); in cgw_put_job()
526 mb.modtype = gwj->mod.modtype.and; in cgw_put_job()
531 if (gwj->mod.modtype.or) { in cgw_put_job()
532 memcpy(&mb.cf, &gwj->mod.modframe.or, sizeof(mb.cf)); in cgw_put_job()
533 mb.modtype = gwj->mod.modtype.or; in cgw_put_job()
538 if (gwj->mod.modtype.xor) { in cgw_put_job()
539 memcpy(&mb.cf, &gwj->mod.modframe.xor, sizeof(mb.cf)); in cgw_put_job()
540 mb.modtype = gwj->mod.modtype.xor; in cgw_put_job()
545 if (gwj->mod.modtype.set) { in cgw_put_job()
546 memcpy(&mb.cf, &gwj->mod.modframe.set, sizeof(mb.cf)); in cgw_put_job()
547 mb.modtype = gwj->mod.modtype.set; in cgw_put_job()
552 if (gwj->mod.uid) { in cgw_put_job()
553 if (nla_put_u32(skb, CGW_MOD_UID, gwj->mod.uid) < 0) in cgw_put_job()
557 if (gwj->mod.csumfunc.crc8) { in cgw_put_job()
559 &gwj->mod.csum.crc8) < 0) in cgw_put_job()
563 if (gwj->mod.csumfunc.xor) { in cgw_put_job()
565 &gwj->mod.csum.xor) < 0) in cgw_put_job()
632 static int cgw_parse_attr(struct nlmsghdr *nlh, struct cf_mod *mod, in cgw_parse_attr() argument
641 memset(mod, 0, sizeof(*mod)); in cgw_parse_attr()
660 canframecpy(&mod->modframe.and, &mb.cf); in cgw_parse_attr()
661 mod->modtype.and = mb.modtype; in cgw_parse_attr()
664 mod->modfunc[modidx++] = mod_and_id; in cgw_parse_attr()
667 mod->modfunc[modidx++] = mod_and_dlc; in cgw_parse_attr()
670 mod->modfunc[modidx++] = mod_and_data; in cgw_parse_attr()
676 canframecpy(&mod->modframe.or, &mb.cf); in cgw_parse_attr()
677 mod->modtype.or = mb.modtype; in cgw_parse_attr()
680 mod->modfunc[modidx++] = mod_or_id; in cgw_parse_attr()
683 mod->modfunc[modidx++] = mod_or_dlc; in cgw_parse_attr()
686 mod->modfunc[modidx++] = mod_or_data; in cgw_parse_attr()
692 canframecpy(&mod->modframe.xor, &mb.cf); in cgw_parse_attr()
693 mod->modtype.xor = mb.modtype; in cgw_parse_attr()
696 mod->modfunc[modidx++] = mod_xor_id; in cgw_parse_attr()
699 mod->modfunc[modidx++] = mod_xor_dlc; in cgw_parse_attr()
702 mod->modfunc[modidx++] = mod_xor_data; in cgw_parse_attr()
708 canframecpy(&mod->modframe.set, &mb.cf); in cgw_parse_attr()
709 mod->modtype.set = mb.modtype; in cgw_parse_attr()
712 mod->modfunc[modidx++] = mod_set_id; in cgw_parse_attr()
715 mod->modfunc[modidx++] = mod_set_dlc; in cgw_parse_attr()
718 mod->modfunc[modidx++] = mod_set_data; in cgw_parse_attr()
732 nla_memcpy(&mod->csum.crc8, tb[CGW_CS_CRC8], in cgw_parse_attr()
741 mod->csumfunc.crc8 = cgw_csum_crc8_rel; in cgw_parse_attr()
743 mod->csumfunc.crc8 = cgw_csum_crc8_pos; in cgw_parse_attr()
745 mod->csumfunc.crc8 = cgw_csum_crc8_neg; in cgw_parse_attr()
756 nla_memcpy(&mod->csum.xor, tb[CGW_CS_XOR], in cgw_parse_attr()
765 mod->csumfunc.xor = cgw_csum_xor_rel; in cgw_parse_attr()
767 mod->csumfunc.xor = cgw_csum_xor_pos; in cgw_parse_attr()
769 mod->csumfunc.xor = cgw_csum_xor_neg; in cgw_parse_attr()
773 nla_memcpy(&mod->uid, tb[CGW_MOD_UID], sizeof(u32)); in cgw_parse_attr()
816 struct cf_mod mod; in cgw_create_job() local
835 err = cgw_parse_attr(nlh, &mod, CGW_TYPE_CAN_CAN, &ccgw, &limhops); in cgw_create_job()
839 if (mod.uid) { in cgw_create_job()
846 if (gwj->mod.uid != mod.uid) in cgw_create_job()
855 memcpy(&gwj->mod, &mod, sizeof(mod)); in cgw_create_job()
877 memcpy(&gwj->mod, &mod, sizeof(mod)); in cgw_create_job()
929 struct cf_mod mod; in cgw_remove_job() local
948 err = cgw_parse_attr(nlh, &mod, CGW_TYPE_CAN_CAN, &ccgw, &limhops); in cgw_remove_job()
972 if (gwj->mod.uid || mod.uid) { in cgw_remove_job()
973 if (gwj->mod.uid != mod.uid) in cgw_remove_job()
977 if (memcmp(&gwj->mod, &mod, sizeof(mod))) in cgw_remove_job()