/*----------------------------------------------------------------------------*/ static inline int HandleActiveOpen(mtcp_manager_t mtcp, tcp_stream *cur_stream, uint32_t cur_ts, struct tcphdr *tcph, uint32_t seq, uint32_t ack_seq, uint16_t window) { cur_stream->rcvvar->irs = seq; cur_stream->snd_nxt = ack_seq; cur_stream->sndvar->peer_wnd = window; cur_stream->rcvvar->snd_wl1 = cur_stream->rcvvar->irs - 1; cur_stream->rcv_nxt = cur_stream->rcvvar->irs + 1; cur_stream->rcvvar->last_ack_seq = ack_seq; ParseTCPOptions(cur_stream, cur_ts, (uint8_t *)tcph + TCP_HEADER_LEN, (tcph->doff << 2) - TCP_HEADER_LEN); cur_stream->sndvar->cwnd = ((cur_stream->sndvar->cwnd == 1)? (cur_stream->sndvar->mss * 2): cur_stream->sndvar->mss); cur_stream->sndvar->ssthresh = cur_stream->sndvar->mss * 10; UpdateRetransmissionTimer(mtcp, cur_stream, cur_ts); return TRUE; }
/*----------------------------------------------------------------------------*/ static inline int HandleActiveOpen(mtcp_manager_t mtcp, tcp_stream *cur_stream, struct pkt_ctx *pctx) { const struct tcphdr* tcph = pctx->p.tcph; cur_stream->rcvvar->irs = pctx->p.seq; cur_stream->snd_nxt = pctx->p.ack_seq; cur_stream->sndvar->peer_wnd = pctx->p.window; cur_stream->rcvvar->snd_wl1 = cur_stream->rcvvar->irs - 1; cur_stream->rcv_nxt = cur_stream->rcvvar->irs + 1; cur_stream->rcvvar->last_ack_seq = pctx->p.ack_seq; ParseTCPOptions(cur_stream, pctx->p.cur_ts, (uint8_t *)tcph + TCP_HEADER_LEN, (tcph->doff << 2) - TCP_HEADER_LEN); cur_stream->sndvar->cwnd = ((cur_stream->sndvar->cwnd == 1)? (cur_stream->sndvar->mss * 2): cur_stream->sndvar->mss); cur_stream->sndvar->ssthresh = cur_stream->sndvar->mss * 10; if (HAS_STREAM_TYPE(cur_stream, MOS_SOCK_STREAM)) UpdateRetransmissionTimer(mtcp, cur_stream, pctx->p.cur_ts); return TRUE; }