Lines Matching defs:im

42 static int check_match(struct net *net, struct em_ipt_match *im, int mdata_len)
52 mtpar.hook_mask = 1 << im->hook;
53 mtpar.family = im->match->family;
54 mtpar.match = im->match;
56 mtpar.matchinfo = (void *)im->match_data;
130 struct em_ipt_match *im = NULL;
160 im = kzalloc(sizeof(*im) + mdata_len, GFP_KERNEL);
161 if (!im) {
166 im->match = match;
167 im->hook = nla_get_u32(tb[TCA_EM_IPT_HOOK]);
168 im->nfproto = nfproto;
169 nla_memcpy(im->match_data, tb[TCA_EM_IPT_MATCH_DATA], mdata_len);
171 ret = check_match(net, im, mdata_len);
175 em->datalen = sizeof(*im) + mdata_len;
176 em->data = (unsigned long)im;
180 kfree(im);
187 struct em_ipt_match *im = (void *)em->data;
189 if (!im)
192 if (im->match->destroy) {
195 .match = im->match,
196 .matchinfo = im->match_data,
197 .family = im->match->family
199 im->match->destroy(&par);
201 module_put(im->match->me);
202 kfree(im);
208 const struct em_ipt_match *im = (const void *)em->data;
211 u8 nfproto = im->match->family;
237 nf_hook_state_init(&state, im->hook, nfproto,
240 acpar.match = im->match;
241 acpar.matchinfo = im->match_data;
244 ret = im->match->match(skb, &acpar);
252 struct em_ipt_match *im = (void *)em->data;
254 if (nla_put_string(skb, TCA_EM_IPT_MATCH_NAME, im->match->name) < 0)
256 if (nla_put_u32(skb, TCA_EM_IPT_HOOK, im->hook) < 0)
258 if (nla_put_u8(skb, TCA_EM_IPT_MATCH_REVISION, im->match->revision) < 0)
260 if (nla_put_u8(skb, TCA_EM_IPT_NFPROTO, im->nfproto) < 0)
263 im->match->usersize ?: im->match->matchsize,
264 im->match_data) < 0)