- src_address /* changed member */ );
- ip0->checksum = ip_csum_fold (sum0);
-
- if (PREDICT_TRUE (proto0 == NAT_PROTOCOL_TCP))
- {
- if (tcp0->flags & TCP_FLAG_SYN)
- ses0->state = DET44_SESSION_TCP_SYN_SENT;
- else if (tcp0->flags & TCP_FLAG_ACK
- && ses0->state == DET44_SESSION_TCP_SYN_SENT)
- ses0->state = DET44_SESSION_TCP_ESTABLISHED;
- else if (tcp0->flags & TCP_FLAG_FIN
- && ses0->state == DET44_SESSION_TCP_ESTABLISHED)
- ses0->state = DET44_SESSION_TCP_FIN_WAIT;
- else if (tcp0->flags & TCP_FLAG_ACK
- && ses0->state == DET44_SESSION_TCP_FIN_WAIT)
- snat_det_ses_close (mp0, ses0);
- else if (tcp0->flags & TCP_FLAG_FIN
- && ses0->state == DET44_SESSION_TCP_CLOSE_WAIT)
- ses0->state = DET44_SESSION_TCP_LAST_ACK;
- else if (tcp0->flags == 0
- && ses0->state == DET44_SESSION_UNKNOWN)
- ses0->state = DET44_SESSION_TCP_ESTABLISHED;
-
- sum0 = tcp0->checksum;
- sum0 = ip_csum_update (sum0, old_addr0.as_u32, new_addr0.as_u32,
- ip4_header_t,
- dst_address /* changed member */ );
- sum0 = ip_csum_update (sum0, old_port0, new_port0,
- ip4_header_t /* cheat */ ,
- length /* changed member */ );
- mss_clamping (dm->mss_clamping, tcp0, &sum0);
- tcp0->checksum = ip_csum_fold (sum0);
- }
- else
- {
- ses0->state = DET44_SESSION_UDP_ACTIVE;
-
- if (PREDICT_FALSE (udp0->checksum))
- {
- sum0 = udp0->checksum;
- sum0 =
- ip_csum_update (sum0, old_addr0.as_u32, new_addr0.as_u32,
- ip4_header_t,
- dst_address /* changed member */ );
- sum0 =
- ip_csum_update (sum0, old_port0, new_port0,
- ip4_header_t /* cheat */ ,
- length /* changed member */ );
- udp0->checksum = ip_csum_fold (sum0);
- }
- }
-
- switch (ses0->state)
- {
- case DET44_SESSION_UDP_ACTIVE:
- ses0->expire = now + dm->timeouts.udp;
- break;
- case DET44_SESSION_TCP_SYN_SENT:
- case DET44_SESSION_TCP_FIN_WAIT:
- case DET44_SESSION_TCP_CLOSE_WAIT:
- case DET44_SESSION_TCP_LAST_ACK:
- ses0->expire = now + dm->timeouts.tcp.transitory;
- break;
- case DET44_SESSION_TCP_ESTABLISHED:
- ses0->expire = now + dm->timeouts.tcp.established;
- break;
- }
+ dst_address /* changed member */ );
+ sum0 = ip_csum_update (sum0, old_port0, new_port0,
+ ip4_header_t /* cheat */ ,
+ length /* changed member */ );
+ mss_clamping (dm->mss_clamping, tcp0, &sum0);
+ tcp0->checksum = ip_csum_fold (sum0);
+ }
+ else
+ {
+ ses0->state = DET44_SESSION_UDP_ACTIVE;