Lines Matching refs:ixa
708 ip_xmit_attr_t *ixa; in iptun_bind() local
718 ixa = conn_get_ixa(connp, B_FALSE); in iptun_bind()
719 if (ixa == NULL) in iptun_bind()
723 ixa->ixa_flags |= IXAF_PMTU_DISCOVERY; in iptun_bind()
741 ixa->ixa_flags |= IXAF_IS_IPV4; in iptun_bind()
752 ixa->ixa_flags &= ~IXAF_IS_IPV4; in iptun_bind()
765 ixa->ixa_flags |= IXAF_IS_IPV4; in iptun_bind()
781 ip_attr_newdst(ixa); in iptun_bind()
793 ixa->ixa_flags |= IXAF_DONTFRAG | IXAF_PMTU_IPV4_DF; in iptun_bind()
796 error = ip_attr_connect(connp, ixa, &connp->conn_saddr_v6, in iptun_bind()
808 ixa->ixa_flags |= IXAF_VERIFY_PMTU; in iptun_bind()
830 oldixa = conn_replace_ixa(connp, ixa); in iptun_bind()
840 (void) iptun_update_mtu(iptun, ixa, 0); in iptun_bind()
846 ixa_refrele(ixa); in iptun_bind()
1730 iptun_get_dst_pmtu(iptun_t *iptun, ip_xmit_attr_t *ixa) in iptun_get_dst_pmtu() argument
1743 if (ixa == NULL) { in iptun_get_dst_pmtu()
1744 ixa = conn_get_ixa(connp, B_FALSE); in iptun_get_dst_pmtu()
1745 if (ixa == NULL) in iptun_get_dst_pmtu()
1753 if (ixa->ixa_ire != NULL) { in iptun_get_dst_pmtu()
1754 pmtu = ip_get_pmtu(ixa); in iptun_get_dst_pmtu()
1760 if (ixa->ixa_flags & IXAF_PMTU_TOO_SMALL) { in iptun_get_dst_pmtu()
1762 ixa->ixa_flags &= ~IXAF_DONTFRAG; in iptun_get_dst_pmtu()
1764 ixa->ixa_flags |= IXAF_DONTFRAG; in iptun_get_dst_pmtu()
1767 ixa->ixa_flags &= ~IXAF_PMTU_IPV4_DF; in iptun_get_dst_pmtu()
1772 ixa_refrele(ixa); in iptun_get_dst_pmtu()
1781 iptun_update_dst_pmtu(iptun_t *iptun, ip_xmit_attr_t *ixa) in iptun_update_dst_pmtu() argument
1791 if (ixa == NULL) { in iptun_update_dst_pmtu()
1792 ixa = conn_get_ixa(connp, B_FALSE); in iptun_update_dst_pmtu()
1793 if (ixa == NULL) in iptun_update_dst_pmtu()
1801 if (ixa->ixa_ire != NULL) { in iptun_update_dst_pmtu()
1802 pmtu = ip_get_pmtu(ixa); in iptun_update_dst_pmtu()
1806 ixa->ixa_fragsize = ixa->ixa_pmtu = pmtu; in iptun_update_dst_pmtu()
1812 if (ixa->ixa_flags & IXAF_PMTU_TOO_SMALL) { in iptun_update_dst_pmtu()
1814 ixa->ixa_flags &= ~IXAF_DONTFRAG; in iptun_update_dst_pmtu()
1816 ixa->ixa_flags |= IXAF_DONTFRAG; in iptun_update_dst_pmtu()
1819 ixa->ixa_flags &= ~IXAF_PMTU_IPV4_DF; in iptun_update_dst_pmtu()
1824 ixa_refrele(ixa); in iptun_update_dst_pmtu()
1843 iptun_notify(void *arg, ip_xmit_attr_t *ixa, ixa_notify_type_t ntype, in iptun_notify() argument
1850 (void) iptun_update_mtu(iptun, ixa, narg); in iptun_notify()
1954 iptun_get_maxmtu(iptun_t *iptun, ip_xmit_attr_t *ixa, uint32_t new_pmtu) in iptun_get_maxmtu() argument
1969 if ((pmtu = iptun_get_dst_pmtu(iptun, ixa)) == 0) { in iptun_get_maxmtu()
2022 iptun_update_mtu(iptun_t *iptun, ip_xmit_attr_t *ixa, uint32_t new_pmtu) in iptun_update_mtu() argument
2027 iptun_update_dst_pmtu(iptun, ixa); in iptun_update_mtu()
2037 newmtu = iptun_get_maxmtu(iptun, ixa, new_pmtu); in iptun_update_mtu()
2923 ipha_t *inner4, ip6_t *inner6, ip_xmit_attr_t *ixa) in iptun_out_process_ipv4() argument
2944 if (ixa->ixa_flags & IXAF_PMTU_IPV4_DF) in iptun_out_process_ipv4()
2959 ixa->ixa_flags &= ~IXAF_DONTFRAG; in iptun_out_process_ipv4()
2960 } else if (!(ixa->ixa_flags & IXAF_PMTU_TOO_SMALL) && in iptun_out_process_ipv4()
2962 ixa->ixa_flags |= IXAF_DONTFRAG; in iptun_out_process_ipv4()
2965 ixa->ixa_ip_hdr_length = IPH_HDR_LENGTH(outer4); in iptun_out_process_ipv4()
2966 ixa->ixa_pktlen = msgdsize(mp); in iptun_out_process_ipv4()
2967 ixa->ixa_protocol = outer4->ipha_protocol; in iptun_out_process_ipv4()
2969 outer4->ipha_length = htons(ixa->ixa_pktlen); in iptun_out_process_ipv4()
3020 ipha_t *inner4, ip6_t *inner6, ip_xmit_attr_t *ixa) in iptun_out_process_ipv6() argument
3049 0, offset, ixa->ixa_tsl); in iptun_out_process_ipv6()
3077 ixa->ixa_ip_hdr_length = sizeof (iptun_ipv6hdrs_t); in iptun_out_process_ipv6()
3078 ixa->ixa_protocol = v6hdrs->it6h_encaplim.iel_destopt.ip6d_nxt; in iptun_out_process_ipv6()
3080 ixa->ixa_ip_hdr_length = sizeof (ip6_t); in iptun_out_process_ipv6()
3081 ixa->ixa_protocol = outer6->ip6_nxt; in iptun_out_process_ipv6()
3088 ixa->ixa_flags &= ~IXAF_DONTFRAG; in iptun_out_process_ipv6()
3089 else if (!(ixa->ixa_flags & IXAF_PMTU_TOO_SMALL)) in iptun_out_process_ipv6()
3090 ixa->ixa_flags |= IXAF_DONTFRAG; in iptun_out_process_ipv6()
3092 ixa->ixa_pktlen = msgdsize(mp); in iptun_out_process_ipv6()
3093 outer6->ip6_plen = htons(ixa->ixa_pktlen - sizeof (ip6_t)); in iptun_out_process_ipv6()
3108 ip_xmit_attr_t *ixa; in iptun_output() local
3131 ixa = conn_get_ixa_exclusive(connp); in iptun_output()
3138 ixa = conn_get_ixa(connp, B_FALSE); in iptun_output()
3140 if (ixa == NULL) { in iptun_output()
3149 if (ixa->ixa_ire == NULL) { in iptun_output()
3150 error = ip_attr_connect(connp, ixa, &connp->conn_saddr_v6, in iptun_output()
3154 if (ixa->ixa_ire != NULL && in iptun_output()
3162 ixa_refrele(ixa); in iptun_output()
3169 iptun_output_common(iptun, ixa, mp); in iptun_output()
3170 ixa_refrele(ixa); in iptun_output()
3182 ip_xmit_attr_t *ixa; in iptun_output_6to4() local
3204 ixa = conn_get_ixa_exclusive(connp); in iptun_output_6to4()
3211 ixa = conn_get_ixa(connp, B_FALSE); in iptun_output_6to4()
3213 if (ixa == NULL) { in iptun_output_6to4()
3220 need_connect = (ixa->ixa_ire == NULL); in iptun_output_6to4()
3223 ip_attr_newdst(ixa); in iptun_output_6to4()
3243 error = ip_attr_connect(connp, ixa, &connp->conn_saddr_v6, in iptun_output_6to4()
3246 if (ixa->ixa_ire != NULL && in iptun_output_6to4()
3254 ixa_refrele(ixa); in iptun_output_6to4()
3261 iptun_output_common(iptun, ixa, mp); in iptun_output_6to4()
3268 oldixa = conn_replace_ixa(connp, ixa); in iptun_output_6to4()
3273 ixa_refrele(ixa); in iptun_output_6to4()
3286 iptun_output_check_label(mblk_t **mpp, ip_xmit_attr_t *ixa) in iptun_output_check_label() argument
3304 ip_xmit_attr_restore_tsl(ixa, cr); in iptun_output_check_label()
3310 if (ixa->ixa_flags & IXAF_IS_IPV4) { in iptun_output_check_label()
3315 err = tsol_check_label_v4(ixa->ixa_tsl, in iptun_output_check_label()
3316 ixa->ixa_zoneid, mpp, CONN_MAC_DEFAULT, B_FALSE, in iptun_output_check_label()
3317 ixa->ixa_ipst, &effective_tsl); in iptun_output_check_label()
3329 err = tsol_check_label_v6(ixa->ixa_tsl, in iptun_output_check_label()
3330 ixa->ixa_zoneid, mpp, CONN_MAC_DEFAULT, B_FALSE, in iptun_output_check_label()
3331 ixa->ixa_ipst, &effective_tsl); in iptun_output_check_label()
3341 ip_xmit_attr_replace_tsl(ixa, effective_tsl); in iptun_output_check_label()
3343 ixa->ixa_pktlen += adjust; in iptun_output_check_label()
3344 ixa->ixa_ip_hdr_length += adjust; in iptun_output_check_label()
3350 iptun_output_common(iptun_t *iptun, ip_xmit_attr_t *ixa, mblk_t *mp) in iptun_output_common() argument
3360 ASSERT(ixa->ixa_ire != NULL); in iptun_output_common()
3370 iaflags_t dontfrag = ixa->ixa_flags & IXAF_DONTFRAG; in iptun_output_common()
3375 ixa); in iptun_output_common()
3378 ixa); in iptun_output_common()
3389 outer6, outer_hlen, ixa); in iptun_output_common()
3400 error = iptun_output_check_label(&mp, ixa); in iptun_output_common()
3425 atomic_add_64(&iptun->iptun_obytes, ixa->ixa_pktlen); in iptun_output_common()
3439 ixa->ixa_pktlen = msgdsize(newmp); in iptun_output_common()
3440 if (ixa->ixa_pktlen <= minmtu) in iptun_output_common()
3441 ixa->ixa_flags &= ~IXAF_DONTFRAG; in iptun_output_common()
3445 atomic_add_64(&iptun->iptun_obytes, ixa->ixa_pktlen); in iptun_output_common()
3447 error = conn_ip_output(newmp, ixa); in iptun_output_common()
3450 ixa->ixa_flags |= dontfrag; in iptun_output_common()
3454 (void) iptun_update_mtu(iptun, ixa, 0); in iptun_output_common()
3463 ASSERT(ixa->ixa_ipsec_policy == NULL); in iptun_output_common()
3464 mp = ip_output_attach_policy(mp, outer4, outer6, NULL, ixa); in iptun_output_common()
3475 error = iptun_output_check_label(&mp, ixa); in iptun_output_common()
3484 atomic_add_64(&iptun->iptun_obytes, ixa->ixa_pktlen); in iptun_output_common()
3486 error = conn_ip_output(mp, ixa); in iptun_output_common()
3489 (void) iptun_update_mtu(iptun, ixa, 0); in iptun_output_common()
3492 if (ixa->ixa_flags & IXAF_IPSEC_SECURE) in iptun_output_common()
3493 ipsec_out_release_refs(ixa); in iptun_output_common()