Lines Matching refs:pktopt
2249 ip6_pcbopts(struct ip6_pktopts **pktopt, struct mbuf *m, in ip6_pcbopts() argument
2252 struct ip6_pktopts *opt = *pktopt; in ip6_pcbopts()
2270 *pktopt = NULL; in ip6_pcbopts()
2288 *pktopt = opt; in ip6_pcbopts()
2308 ip6_pcbopt(int optname, u_char *buf, int len, struct ip6_pktopts **pktopt, in ip6_pcbopt() argument
2313 if (*pktopt == NULL) { in ip6_pcbopt()
2314 *pktopt = malloc(sizeof(struct ip6_pktopts), M_IP6OPT, in ip6_pcbopt()
2316 ip6_initpktopts(*pktopt); in ip6_pcbopt()
2318 opt = *pktopt; in ip6_pcbopt()
2324 ip6_getpcbopt(struct ip6_pktopts *pktopt, int optname, struct sockopt *sopt) in ip6_getpcbopt() argument
2338 if (pktopt && pktopt->ip6po_pktinfo) { in ip6_getpcbopt()
2339 bcopy(pktopt->ip6po_pktinfo, &null_pktinfo, in ip6_getpcbopt()
2349 if (pktopt && pktopt->ip6po_tclass >= 0) in ip6_getpcbopt()
2350 optdata = (void *)&pktopt->ip6po_tclass; in ip6_getpcbopt()
2356 if (pktopt && pktopt->ip6po_hbh) { in ip6_getpcbopt()
2357 optdata = (void *)pktopt->ip6po_hbh; in ip6_getpcbopt()
2358 ip6e = (struct ip6_ext *)pktopt->ip6po_hbh; in ip6_getpcbopt()
2363 if (pktopt && pktopt->ip6po_rthdr) { in ip6_getpcbopt()
2364 optdata = (void *)pktopt->ip6po_rthdr; in ip6_getpcbopt()
2365 ip6e = (struct ip6_ext *)pktopt->ip6po_rthdr; in ip6_getpcbopt()
2370 if (pktopt && pktopt->ip6po_dest1) { in ip6_getpcbopt()
2371 optdata = (void *)pktopt->ip6po_dest1; in ip6_getpcbopt()
2372 ip6e = (struct ip6_ext *)pktopt->ip6po_dest1; in ip6_getpcbopt()
2377 if (pktopt && pktopt->ip6po_dest2) { in ip6_getpcbopt()
2378 optdata = (void *)pktopt->ip6po_dest2; in ip6_getpcbopt()
2379 ip6e = (struct ip6_ext *)pktopt->ip6po_dest2; in ip6_getpcbopt()
2384 if (pktopt && pktopt->ip6po_nexthop) { in ip6_getpcbopt()
2385 optdata = (void *)pktopt->ip6po_nexthop; in ip6_getpcbopt()
2386 optdatalen = pktopt->ip6po_nexthop->sa_len; in ip6_getpcbopt()
2390 if (pktopt) in ip6_getpcbopt()
2391 optdata = (void *)&pktopt->ip6po_minmtu; in ip6_getpcbopt()
2397 if (pktopt && ((pktopt->ip6po_flags) & IP6PO_DONTFRAG)) in ip6_getpcbopt()
2405 if (pktopt) in ip6_getpcbopt()
2406 optdata = (void *)&pktopt->ip6po_prefer_tempaddr; in ip6_getpcbopt()
2424 ip6_clearpktopts(struct ip6_pktopts *pktopt, int optname) in ip6_clearpktopts() argument
2426 if (pktopt == NULL) in ip6_clearpktopts()
2430 if (pktopt->ip6po_pktinfo) in ip6_clearpktopts()
2431 free(pktopt->ip6po_pktinfo, M_IP6OPT); in ip6_clearpktopts()
2432 pktopt->ip6po_pktinfo = NULL; in ip6_clearpktopts()
2435 pktopt->ip6po_hlim = -1; in ip6_clearpktopts()
2437 pktopt->ip6po_tclass = -1; in ip6_clearpktopts()
2439 if (pktopt->ip6po_nextroute.ro_rt) { in ip6_clearpktopts()
2440 RTFREE(pktopt->ip6po_nextroute.ro_rt); in ip6_clearpktopts()
2441 pktopt->ip6po_nextroute.ro_rt = NULL; in ip6_clearpktopts()
2443 if (pktopt->ip6po_nexthop) in ip6_clearpktopts()
2444 free(pktopt->ip6po_nexthop, M_IP6OPT); in ip6_clearpktopts()
2445 pktopt->ip6po_nexthop = NULL; in ip6_clearpktopts()
2448 if (pktopt->ip6po_hbh) in ip6_clearpktopts()
2449 free(pktopt->ip6po_hbh, M_IP6OPT); in ip6_clearpktopts()
2450 pktopt->ip6po_hbh = NULL; in ip6_clearpktopts()
2453 if (pktopt->ip6po_dest1) in ip6_clearpktopts()
2454 free(pktopt->ip6po_dest1, M_IP6OPT); in ip6_clearpktopts()
2455 pktopt->ip6po_dest1 = NULL; in ip6_clearpktopts()
2458 if (pktopt->ip6po_rhinfo.ip6po_rhi_rthdr) in ip6_clearpktopts()
2459 free(pktopt->ip6po_rhinfo.ip6po_rhi_rthdr, M_IP6OPT); in ip6_clearpktopts()
2460 pktopt->ip6po_rhinfo.ip6po_rhi_rthdr = NULL; in ip6_clearpktopts()
2461 if (pktopt->ip6po_route.ro_rt) { in ip6_clearpktopts()
2462 RTFREE(pktopt->ip6po_route.ro_rt); in ip6_clearpktopts()
2463 pktopt->ip6po_route.ro_rt = NULL; in ip6_clearpktopts()
2467 if (pktopt->ip6po_dest2) in ip6_clearpktopts()
2468 free(pktopt->ip6po_dest2, M_IP6OPT); in ip6_clearpktopts()
2469 pktopt->ip6po_dest2 = NULL; in ip6_clearpktopts()
2544 ip6_freepcbopts(struct ip6_pktopts *pktopt) in ip6_freepcbopts() argument
2546 if (pktopt == NULL) in ip6_freepcbopts()
2549 ip6_clearpktopts(pktopt, -1); in ip6_freepcbopts()
2551 free(pktopt, M_IP6OPT); in ip6_freepcbopts()