Lines Matching refs:ep
126 struct encaptab *ep, *match; in encap4_input() local
148 LIST_FOREACH(ep, &encaptab, chain) { in encap4_input()
149 if (ep->af != AF_INET) in encap4_input()
151 if (ep->proto >= 0 && ep->proto != proto) in encap4_input()
153 if (ep->func) in encap4_input()
154 prio = (*ep->func)(m, off, proto, ep->arg); in encap4_input()
160 prio = mask_match(ep, (struct sockaddr *)&d, in encap4_input()
186 match = ep; in encap4_input()
218 struct encaptab *ep, *match; in encap6_input() local
238 LIST_FOREACH(ep, &encaptab, chain) { in encap6_input()
239 if (ep->af != AF_INET6) in encap6_input()
241 if (ep->proto >= 0 && ep->proto != proto) in encap6_input()
243 if (ep->func) in encap6_input()
244 prio = (*ep->func)(m, *offp, proto, ep->arg); in encap6_input()
250 prio = mask_match(ep, (struct sockaddr *)&d, in encap6_input()
259 match = ep; in encap6_input()
286 encap_add(struct encaptab *ep) in encap_add() argument
290 LIST_INSERT_HEAD(&encaptab, ep, chain); in encap_add()
303 struct encaptab *ep; in encap_attach() local
306 if (sp->sa_len > sizeof(ep->src) || dp->sa_len > sizeof(ep->dst)) in encap_attach()
315 LIST_FOREACH(ep, &encaptab, chain) { in encap_attach()
316 if (ep->af != af) in encap_attach()
318 if (ep->proto != proto) in encap_attach()
320 if (ep->src.ss_len != sp->sa_len || in encap_attach()
321 bcmp(&ep->src, sp, sp->sa_len) != 0 || in encap_attach()
322 bcmp(&ep->srcmask, sm, sp->sa_len) != 0) in encap_attach()
324 if (ep->dst.ss_len != dp->sa_len || in encap_attach()
325 bcmp(&ep->dst, dp, dp->sa_len) != 0 || in encap_attach()
326 bcmp(&ep->dstmask, dm, dp->sa_len) != 0) in encap_attach()
333 ep = malloc(sizeof(*ep), M_NETADDR, M_NOWAIT); /*XXX*/ in encap_attach()
334 if (ep == NULL) { in encap_attach()
338 bzero(ep, sizeof(*ep)); in encap_attach()
340 ep->af = af; in encap_attach()
341 ep->proto = proto; in encap_attach()
342 bcopy(sp, &ep->src, sp->sa_len); in encap_attach()
343 bcopy(sm, &ep->srcmask, sp->sa_len); in encap_attach()
344 bcopy(dp, &ep->dst, dp->sa_len); in encap_attach()
345 bcopy(dm, &ep->dstmask, dp->sa_len); in encap_attach()
346 ep->psw = psw; in encap_attach()
347 ep->arg = arg; in encap_attach()
349 encap_add(ep); in encap_attach()
351 return (ep); in encap_attach()
359 struct encaptab *ep; in encap_attach_func() local
365 ep = malloc(sizeof(*ep), M_NETADDR, M_NOWAIT); /*XXX*/ in encap_attach_func()
366 if (ep == NULL) in encap_attach_func()
368 bzero(ep, sizeof(*ep)); in encap_attach_func()
370 ep->af = af; in encap_attach_func()
371 ep->proto = proto; in encap_attach_func()
372 ep->func = func; in encap_attach_func()
373 ep->psw = psw; in encap_attach_func()
374 ep->arg = arg; in encap_attach_func()
377 encap_add(ep); in encap_attach_func()
379 return (ep); in encap_attach_func()
385 const struct encaptab *ep = cookie; in encap_detach() local
390 if (p == ep) { in encap_detach()
403 mask_match(const struct encaptab *ep, const struct sockaddr *sp, in mask_match() argument
415 if (sp->sa_family != ep->af || dp->sa_family != ep->af) in mask_match()
417 if (sp->sa_len != ep->src.ss_len || dp->sa_len != ep->dst.ss_len) in mask_match()
423 q = (const u_int8_t *)&ep->srcmask; in mask_match()
432 q = (const u_int8_t *)&ep->dstmask; in mask_match()
446 if (bcmp(&s, &ep->src, ep->src.ss_len) == 0 && in mask_match()
447 bcmp(&d, &ep->dst, ep->dst.ss_len) == 0) { in mask_match()