• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/sys/netinet6/

Lines Matching defs:opt

320  * The mbuf opt, if present, will not be freed.
334 ip6_output(struct mbuf *m0, struct ip6_pktopts *opt,
415 if (opt) {
417 MAKE_EXTHDR(opt->ip6po_hbh, &exthdrs.ip6e_hbh, optlen);
420 if (opt->ip6po_rthdr) {
446 MAKE_EXTHDR(opt->ip6po_dest1, &exthdrs.ip6e_dest1,
450 MAKE_EXTHDR(opt->ip6po_rthdr, &exthdrs.ip6e_rthdr, optlen);
460 MAKE_EXTHDR(opt->ip6po_dest2, &exthdrs.ip6e_dest2, optlen);
553 if (opt && opt->ip6po_rthdr)
554 ro = &opt->ip6po_route;
563 if (opt && opt->ip6po_tclass >= 0) {
571 ip6->ip6_flow |= htonl((opt->ip6po_tclass & mask) << 20);
575 if (opt && opt->ip6po_hlim != -1)
576 ip6->ip6_hlim = opt->ip6po_hlim & 0xff;
607 error = in6_selectroute_fib(&dst_sa, opt, im6o, ro, &ifp,
699 if (opt && opt->ip6po_nextroute.ro_rt) {
705 dst = (struct sockaddr_in6 *)opt->ip6po_nexthop;
802 else if (opt && opt->ip6po_minmtu == IP6PO_MINMTU_ALL)
805 (opt == NULL ||
806 opt->ip6po_minmtu != IP6PO_MINMTU_DISABLE)) {
965 if ((opt && (opt->ip6po_flags & IP6PO_DONTFRAG)) || tso)
2347 struct ip6_pktopts *opt = *pktopt;
2352 if (opt) {
2354 if (opt->ip6po_pktinfo || opt->ip6po_nexthop ||
2355 opt->ip6po_hbh || opt->ip6po_dest1 || opt->ip6po_dest2 ||
2356 opt->ip6po_rhinfo.ip6po_rhi_rthdr)
2359 ip6_clearpktopts(opt, -1);
2361 opt = malloc(sizeof(*opt), M_IP6OPT, M_NOWAIT);
2362 if (opt == NULL)
2370 * whether the opt is just created or given.
2372 free(opt, M_IP6OPT);
2377 if ((error = ip6_setpktopts(m, opt, NULL, (td != NULL) ?
2379 ip6_clearpktopts(opt, -1); /* XXX: discard all options */
2380 free(opt, M_IP6OPT);
2383 *pktopt = opt;
2392 ip6_initpktopts(struct ip6_pktopts *opt)
2395 bzero(opt, sizeof(*opt));
2396 opt->ip6po_hlim = -1; /* -1 means default hop limit */
2397 opt->ip6po_tclass = -1; /* -1 means default traffic class */
2398 opt->ip6po_minmtu = IP6PO_MINMTU_MCASTONLY;
2399 opt->ip6po_prefer_tempaddr = IP6PO_TEMPADDR_SYSTEM;
2406 struct ip6_pktopts *opt;
2415 opt = *pktopt;
2417 return (ip6_setpktopt(optname, buf, len, opt, cred, 1, 0, uproto));
2670 ip6_setpktopts(struct mbuf *control, struct ip6_pktopts *opt,
2675 if (control == NULL || opt == NULL)
2678 ip6_initpktopts(opt);
2691 if ((error = copypktopts(opt, stickyopt, M_NOWAIT)) != 0)
2716 cm->cmsg_len - CMSG_LEN(0), opt, cred, 0, 1, uproto);
2734 ip6_setpktopt(int optname, u_char *buf, int len, struct ip6_pktopts *opt,
2799 if (optname == IPV6_PKTINFO && opt->ip6po_pktinfo &&
2802 ip6_clearpktopts(opt, optname);
2844 if (opt->ip6po_pktinfo == NULL) {
2845 opt->ip6po_pktinfo = malloc(sizeof(*pktinfo),
2847 if (opt->ip6po_pktinfo == NULL)
2850 bcopy(pktinfo, opt->ip6po_pktinfo, sizeof(*pktinfo));
2872 opt->ip6po_hlim = *hlimp;
2886 opt->ip6po_tclass = tclass;
2900 ip6_clearpktopts(opt, IPV6_NEXTHOP);
2933 ip6_clearpktopts(opt, IPV6_NEXTHOP);
2934 opt->ip6po_nexthop = malloc(*buf, M_IP6OPT, M_NOWAIT);
2935 if (opt->ip6po_nexthop == NULL)
2937 bcopy(buf, opt->ip6po_nexthop, *buf);
2959 ip6_clearpktopts(opt, IPV6_HOPOPTS);
2972 ip6_clearpktopts(opt, IPV6_HOPOPTS);
2973 opt->ip6po_hbh = malloc(hbhlen, M_IP6OPT, M_NOWAIT);
2974 if (opt->ip6po_hbh == NULL)
2976 bcopy(hbh, opt->ip6po_hbh, hbhlen);
2996 ip6_clearpktopts(opt, optname);
3026 if (opt->ip6po_rthdr == NULL)
3027 newdest = &opt->ip6po_dest1;
3029 newdest = &opt->ip6po_dest2;
3032 newdest = &opt->ip6po_dest1;
3035 newdest = &opt->ip6po_dest2;
3040 ip6_clearpktopts(opt, optname);
3056 ip6_clearpktopts(opt, IPV6_RTHDR);
3082 ip6_clearpktopts(opt, IPV6_RTHDR);
3083 opt->ip6po_rthdr = malloc(rthlen, M_IP6OPT, M_NOWAIT);
3084 if (opt->ip6po_rthdr == NULL)
3086 bcopy(rth, opt->ip6po_rthdr, rthlen);
3100 opt->ip6po_minmtu = minmtupolicy;
3112 opt->ip6po_flags &= ~IP6PO_DONTFRAG;
3114 opt->ip6po_flags |= IP6PO_DONTFRAG;
3126 opt->ip6po_prefer_tempaddr = preftemp;