+#ifdef IKE_NAT_T
+ /*
+ * Hack to fix encmode, we may have detected a nat since
+ * we last set pr->encmode. We need to fix this if
+ * we now have a NAT. NAT-T doesn't work with AH.
+ */
+ if (iph2->ph1 && natd_hasnat(iph2->ph1) &&
+ b->proto_id != IPSECDOI_PROTO_IPSEC_AH)
+ {
+ switch (b->encmode)
+ {
+ case IPSECDOI_ATTR_ENC_MODE_TUNNEL:
+ b->encmode = IPSECDOI_ATTR_ENC_MODE_UDP_TUNNEL;
+ break;
+ case IPSECDOI_ATTR_ENC_MODE_TRNS:
+ b->encmode = IPSECDOI_ATTR_ENC_MODE_UDP_TRNS;
+ break;
+ }
+ }
+#endif
+