Lines Matching defs:opt
412 * The mbuf opt, if present, will not be freed.
423 ip6_output(struct mbuf *m0, struct ip6_pktopts *opt,
508 if (opt) {
510 MAKE_EXTHDR(opt->ip6po_hbh, &exthdrs.ip6e_hbh, optlen);
513 if (opt->ip6po_rthdr) {
539 MAKE_EXTHDR(opt->ip6po_dest1, &exthdrs.ip6e_dest1,
543 MAKE_EXTHDR(opt->ip6po_rthdr, &exthdrs.ip6e_rthdr, optlen);
553 MAKE_EXTHDR(opt->ip6po_dest2, &exthdrs.ip6e_dest2, optlen);
642 if (opt && opt->ip6po_rthdr)
643 ro = &opt->ip6po_route;
656 if (opt && opt->ip6po_tclass >= 0) {
664 ip6->ip6_flow |= htonl((opt->ip6po_tclass & mask) << 20);
668 if (opt && opt->ip6po_hlim != -1)
669 ip6->ip6_hlim = opt->ip6po_hlim & 0xff;
717 error = in6_selectroute(&dst_sa, opt, im6o, ro, &ifp,
865 if (opt && opt->ip6po_nextroute.ro_nh) {
871 dst = (struct sockaddr_in6 *)opt->ip6po_nexthop;
971 else if (opt && opt->ip6po_minmtu == IP6PO_MINMTU_ALL)
974 (opt == NULL ||
975 opt->ip6po_minmtu != IP6PO_MINMTU_DISABLE)) {
1145 if ((opt && (opt->ip6po_flags & IP6PO_DONTFRAG)) || tso)
2496 struct ip6_pktopts *opt = *pktopt;
2501 if (opt) {
2503 if (opt->ip6po_pktinfo || opt->ip6po_nexthop ||
2504 opt->ip6po_hbh || opt->ip6po_dest1 || opt->ip6po_dest2 ||
2505 opt->ip6po_rhinfo.ip6po_rhi_rthdr)
2508 ip6_clearpktopts(opt, -1);
2510 opt = malloc(sizeof(*opt), M_IP6OPT, M_NOWAIT);
2511 if (opt == NULL)
2519 * whether the opt is just created or given.
2521 free(opt, M_IP6OPT);
2526 if ((error = ip6_setpktopts(m, opt, NULL, (td != NULL) ?
2528 ip6_clearpktopts(opt, -1); /* XXX: discard all options */
2529 free(opt, M_IP6OPT);
2532 *pktopt = opt;
2541 ip6_initpktopts(struct ip6_pktopts *opt)
2544 bzero(opt, sizeof(*opt));
2545 opt->ip6po_hlim = -1; /* -1 means default hop limit */
2546 opt->ip6po_tclass = -1; /* -1 means default traffic class */
2547 opt->ip6po_minmtu = IP6PO_MINMTU_MCASTONLY;
2548 opt->ip6po_prefer_tempaddr = IP6PO_TEMPADDR_SYSTEM;
2555 struct ip6_pktopts *opt;
2564 opt = *pktopt;
2566 return (ip6_setpktopt(optname, buf, len, opt, cred, 1, 0, uproto));
2819 ip6_setpktopts(struct mbuf *control, struct ip6_pktopts *opt,
2824 if (control == NULL || opt == NULL)
2827 ip6_initpktopts(opt);
2840 if ((error = copypktopts(opt, stickyopt, M_NOWAIT)) != 0)
2865 cm->cmsg_len - CMSG_LEN(0), opt, cred, 0, 1, uproto);
2883 ip6_setpktopt(int optname, u_char *buf, int len, struct ip6_pktopts *opt,
2948 if (optname == IPV6_PKTINFO && opt->ip6po_pktinfo &&
2951 ip6_clearpktopts(opt, optname);
2993 if (opt->ip6po_pktinfo == NULL) {
2994 opt->ip6po_pktinfo = malloc(sizeof(*pktinfo),
2996 if (opt->ip6po_pktinfo == NULL)
2999 bcopy(pktinfo, opt->ip6po_pktinfo, sizeof(*pktinfo));
3021 opt->ip6po_hlim = *hlimp;
3035 opt->ip6po_tclass = tclass;
3048 ip6_clearpktopts(opt, IPV6_NEXTHOP);
3081 ip6_clearpktopts(opt, IPV6_NEXTHOP);
3082 opt->ip6po_nexthop = malloc(*buf, M_IP6OPT, M_NOWAIT);
3083 if (opt->ip6po_nexthop == NULL)
3085 bcopy(buf, opt->ip6po_nexthop, *buf);
3106 ip6_clearpktopts(opt, IPV6_HOPOPTS);
3119 ip6_clearpktopts(opt, IPV6_HOPOPTS);
3120 opt->ip6po_hbh = malloc(hbhlen, M_IP6OPT, M_NOWAIT);
3121 if (opt->ip6po_hbh == NULL)
3123 bcopy(hbh, opt->ip6po_hbh, hbhlen);
3142 ip6_clearpktopts(opt, optname);
3172 if (opt->ip6po_rthdr == NULL)
3173 newdest = &opt->ip6po_dest1;
3175 newdest = &opt->ip6po_dest2;
3178 newdest = &opt->ip6po_dest1;
3181 newdest = &opt->ip6po_dest2;
3186 ip6_clearpktopts(opt, optname);
3202 ip6_clearpktopts(opt, IPV6_RTHDR);
3228 ip6_clearpktopts(opt, IPV6_RTHDR);
3229 opt->ip6po_rthdr = malloc(rthlen, M_IP6OPT, M_NOWAIT);
3230 if (opt->ip6po_rthdr == NULL)
3232 bcopy(rth, opt->ip6po_rthdr, rthlen);
3246 opt->ip6po_minmtu = minmtupolicy;
3258 opt->ip6po_flags &= ~IP6PO_DONTFRAG;
3260 opt->ip6po_flags |= IP6PO_DONTFRAG;
3272 opt->ip6po_prefer_tempaddr = preftemp;