Lines Matching refs:pktopt

171 static int ip6_pcbopt(int optname, u_char *buf, int len, struct ip6_pktopts **pktopt, int uproto);
172 static int ip6_getpcbopt(struct ip6_pktopts *pktopt, int optname, struct sockopt *sopt);
2605 struct ip6_pktopts **pktopt,
2610 struct ip6_pktopts *opt = *pktopt;
2627 *pktopt = NULL;
2645 *pktopt = opt;
2665 ip6_pcbopt(int optname, u_char *buf, int len, struct ip6_pktopts **pktopt,
2670 opt = *pktopt;
2676 *pktopt = opt;
2683 ip6_getpcbopt(struct ip6_pktopts *pktopt, int optname, struct sockopt *sopt)
2697 if (pktopt && pktopt->ip6po_pktinfo)
2698 optdata = (void *)pktopt->ip6po_pktinfo;
2707 if (pktopt && pktopt->ip6po_tclass >= 0)
2708 optdata = (void *)&pktopt->ip6po_tclass;
2714 if (pktopt && pktopt->ip6po_hbh) {
2715 optdata = (void *)pktopt->ip6po_hbh;
2716 ip6e = (struct ip6_ext *)pktopt->ip6po_hbh;
2721 if (pktopt && pktopt->ip6po_rthdr) {
2722 optdata = (void *)pktopt->ip6po_rthdr;
2723 ip6e = (struct ip6_ext *)pktopt->ip6po_rthdr;
2728 if (pktopt && pktopt->ip6po_dest1) {
2729 optdata = (void *)pktopt->ip6po_dest1;
2730 ip6e = (struct ip6_ext *)pktopt->ip6po_dest1;
2735 if (pktopt && pktopt->ip6po_dest2) {
2736 optdata = (void *)pktopt->ip6po_dest2;
2737 ip6e = (struct ip6_ext *)pktopt->ip6po_dest2;
2742 if (pktopt && pktopt->ip6po_nexthop) {
2743 optdata = (void *)pktopt->ip6po_nexthop;
2744 optdatalen = pktopt->ip6po_nexthop->sa_len;
2748 if (pktopt)
2749 optdata = (void *)&pktopt->ip6po_minmtu;
2755 if (pktopt && ((pktopt->ip6po_flags) & IP6PO_DONTFRAG))
2763 if (pktopt)
2764 optdata = (void *)&pktopt->ip6po_prefer_tempaddr;
2782 ip6_clearpktopts(struct ip6_pktopts *pktopt, int optname)
2784 if (pktopt == NULL)
2788 if (pktopt->ip6po_pktinfo)
2789 FREE(pktopt->ip6po_pktinfo, M_IP6OPT);
2790 pktopt->ip6po_pktinfo = NULL;
2793 pktopt->ip6po_hlim = -1;
2795 pktopt->ip6po_tclass = -1;
2797 if (pktopt->ip6po_nextroute.ro_rt) {
2798 rtfree(pktopt->ip6po_nextroute.ro_rt);
2799 pktopt->ip6po_nextroute.ro_rt = NULL;
2801 if (pktopt->ip6po_nexthop)
2802 FREE(pktopt->ip6po_nexthop, M_IP6OPT);
2803 pktopt->ip6po_nexthop = NULL;
2806 if (pktopt->ip6po_hbh)
2807 FREE(pktopt->ip6po_hbh, M_IP6OPT);
2808 pktopt->ip6po_hbh = NULL;
2811 if (pktopt->ip6po_dest1)
2812 FREE(pktopt->ip6po_dest1, M_IP6OPT);
2813 pktopt->ip6po_dest1 = NULL;
2816 if (pktopt->ip6po_rhinfo.ip6po_rhi_rthdr)
2817 FREE(pktopt->ip6po_rhinfo.ip6po_rhi_rthdr, M_IP6OPT);
2818 pktopt->ip6po_rhinfo.ip6po_rhi_rthdr = NULL;
2819 if (pktopt->ip6po_route.ro_rt) {
2820 rtfree(pktopt->ip6po_route.ro_rt);
2821 pktopt->ip6po_route.ro_rt = NULL;
2825 if (pktopt->ip6po_dest2)
2826 FREE(pktopt->ip6po_dest2, M_IP6OPT);
2827 pktopt->ip6po_dest2 = NULL;
2901 ip6_freepcbopts(struct ip6_pktopts *pktopt)
2903 if (pktopt == NULL)
2906 ip6_clearpktopts(pktopt, -1);
2908 FREE(pktopt, M_IP6OPT);