Lines Matching refs:pctx
26 DetectStreamType(mtcp_manager_t mtcp, struct pkt_ctx *pctx, in DetectStreamType() argument
50 if (!(ISSET_BPFFILTER(fcode) && pctx && in DetectStreamType()
51 EVAL_BPFFILTER(fcode, (uint8_t *)pctx->p.iph - sizeof(struct ethhdr), in DetectStreamType()
52 pctx->p.ip_len + sizeof(struct ethhdr)) == 0)) { in DetectStreamType()
88 CreateServerStream(mtcp_manager_t mtcp, int type, struct pkt_ctx *pctx) in CreateServerStream() argument
94 pctx->p.iph->daddr, pctx->p.tcph->dest, in CreateServerStream()
95 pctx->p.iph->saddr, pctx->p.tcph->source, NULL); in CreateServerStream()
101 cur_stream->rcvvar->irs = pctx->p.seq; in CreateServerStream()
102 cur_stream->sndvar->peer_wnd = pctx->p.window; in CreateServerStream()
105 ParseTCPOptions(cur_stream, pctx->p.cur_ts, (uint8_t *)pctx->p.tcph + in CreateServerStream()
106 TCP_HEADER_LEN, (pctx->p.tcph->doff << 2) - TCP_HEADER_LEN); in CreateServerStream()
112 CreateMonitorStream(mtcp_manager_t mtcp, struct pkt_ctx* pctx, in CreateMonitorStream() argument
118 stream = CreateDualTCPStream(mtcp, NULL, stream_type, pctx->p.iph->daddr, in CreateMonitorStream()
119 pctx->p.tcph->dest, pctx->p.iph->saddr, in CreateMonitorStream()
120 pctx->p.tcph->source, NULL); in CreateMonitorStream()
127 stream->rcvvar->irs = pctx->p.seq; in CreateMonitorStream()
128 stream->sndvar->peer_wnd = pctx->p.window; in CreateMonitorStream()
173 ParseTCPOptions(stream, pctx->p.cur_ts, in CreateMonitorStream()
174 (uint8_t *)pctx->p.tcph + TCP_HEADER_LEN, in CreateMonitorStream()
175 (pctx->p.tcph->doff << 2) - TCP_HEADER_LEN); in CreateMonitorStream()
181 FindStream(mtcp_manager_t mtcp, struct pkt_ctx *pctx, unsigned int *hash) in FindStream() argument
185 temp_stream.saddr = pctx->p.iph->daddr; in FindStream()
186 temp_stream.sport = pctx->p.tcph->dest; in FindStream()
187 temp_stream.daddr = pctx->p.iph->saddr; in FindStream()
188 temp_stream.dport = pctx->p.tcph->source; in FindStream()
196 CreateStream(mtcp_manager_t mtcp, struct pkt_ctx *pctx, unsigned int *hash) in CreateStream() argument
200 const struct iphdr *iph = pctx->p.iph; in CreateStream()
201 const struct tcphdr* tcph = pctx->p.tcph; in CreateStream()
206 stream_type = DetectStreamType(mtcp, pctx, iph->daddr, tcph->dest); in CreateStream()
210 DumpIPPacket(mtcp, iph, pctx->p.ip_len); in CreateStream()
217 cur_stream = CreateServerStream(mtcp, stream_type, pctx); in CreateStream()
221 DumpIPPacket(mtcp, iph, pctx->p.ip_len); in CreateStream()
231 pctx->p.iph->saddr, pctx->p.tcph->source, in CreateStream()
232 pctx->p.iph->daddr, pctx->p.tcph->dest, in CreateStream()
235 cur_stream = CreateMonitorStream(mtcp, pctx, stream_type, hash); in CreateStream()
240 DumpIPPacket(mtcp, iph, pctx->p.ip_len); in CreateStream()
252 DumpIPPacket(mtcp, iph, pctx->p.ip_len); in CreateStream()
259 FillPacketContextTCPInfo(struct pkt_ctx *pctx, struct tcphdr * tcph) in FillPacketContextTCPInfo() argument
261 pctx->p.tcph = tcph; in FillPacketContextTCPInfo()
262 pctx->p.payload = (uint8_t *)tcph + (tcph->doff << 2); in FillPacketContextTCPInfo()
263 pctx->p.payloadlen = pctx->p.ip_len - (pctx->p.payload - (u_char *)pctx->p.iph); in FillPacketContextTCPInfo()
264 pctx->p.seq = ntohl(tcph->seq); in FillPacketContextTCPInfo()
265 pctx->p.ack_seq = ntohl(tcph->ack_seq); in FillPacketContextTCPInfo()
266 pctx->p.window = ntohs(tcph->window); in FillPacketContextTCPInfo()
267 pctx->p.offset = 0; in FillPacketContextTCPInfo()
277 struct pkt_ctx *pctx) in HandleSockStream() argument
279 UpdateRecvTCPContext(mtcp, cur_stream, pctx); in HandleSockStream()
280 DoActionEndTCPPacket(mtcp, cur_stream, pctx); in HandleSockStream()
285 struct tcp_stream *recvside_stream, struct pkt_ctx *pctx, in UpdateMonitor() argument
290 assert(pctx); in UpdateMonitor()
295 sendside_stream->last_pkt_data, &(pctx.p)); in UpdateMonitor()
303 UpdatePassiveSendTCPContext(mtcp, sendside_stream, pctx); in UpdateMonitor()
310 pctx, sendside_stream->cb_events); in UpdateMonitor()
315 pctx, sendside_stream->cb_events); in UpdateMonitor()
325 pctx->p.iph->saddr, pctx->p.tcph->source, in UpdateMonitor()
326 pctx->p.iph->daddr, pctx->p.tcph->dest)) == NULL) { in UpdateMonitor()
331 recvside_stream->rcvvar->irs = pctx->p.seq; in UpdateMonitor()
332 recvside_stream->sndvar->peer_wnd = pctx->p.window; in UpdateMonitor()
336 ParseTCPOptions(recvside_stream, pctx->p.cur_ts, in UpdateMonitor()
337 (uint8_t *)pctx->p.tcph + TCP_HEADER_LEN, in UpdateMonitor()
338 (pctx->p.tcph->doff << 2) - TCP_HEADER_LEN); in UpdateMonitor()
342 PostSendTCPAction(mtcp, pctx, recvside_stream, sendside_stream); in UpdateMonitor()
348 PreRecvTCPEventPrediction(mtcp, pctx, recvside_stream); in UpdateMonitor()
354 UpdateRecvTCPContext(mtcp, recvside_stream, pctx); in UpdateMonitor()
356 UpdatePassiveRecvTCPContext(mtcp, recvside_stream, pctx); in UpdateMonitor()
362 pctx, recvside_stream->cb_events); in UpdateMonitor()
367 pctx, recvside_stream->cb_events); in UpdateMonitor()
379 struct tcp_stream *recvside_stream, struct pkt_ctx *pctx) in HandleMonitorStream() argument
381 UpdateMonitor(mtcp, sendside_stream, recvside_stream, pctx, true); in HandleMonitorStream()
386 DoActionEndTCPPacket(mtcp, recvside_stream, pctx); in HandleMonitorStream()
389 if (pctx->forward) in HandleMonitorStream()
390 ForwardIPPacket(mtcp, pctx); in HandleMonitorStream()
409 ProcessInTCPPacket(mtcp_manager_t mtcp, struct pkt_ctx *pctx) in ProcessInTCPPacket() argument
418 iph = pctx->p.iph; in ProcessInTCPPacket()
419 tcph = (struct tcphdr *)((u_char *)pctx->p.iph + (pctx->p.iph->ihl << 2)); in ProcessInTCPPacket()
421 FillPacketContextTCPInfo(pctx, tcph); in ProcessInTCPPacket()
427 pctx, MOS_ON_PKT_IN); in ProcessInTCPPacket()
429 if (pctx->p.ip_len < ((iph->ihl + tcph->doff) << 2)) in ProcessInTCPPacket()
433 if (TCPCalcChecksum((uint16_t *)pctx->p.tcph, in ProcessInTCPPacket()
434 (tcph->doff << 2) + pctx->p.payloadlen, in ProcessInTCPPacket()
435 iph->saddr, pctx->p.iph->daddr)) { in ProcessInTCPPacket()
438 (tcph->doff << 2) + pctx->p.payloadlen, in ProcessInTCPPacket()
440 if (pctx->forward && mtcp->num_msp) in ProcessInTCPPacket()
441 ForwardIPPacket(mtcp, pctx); in ProcessInTCPPacket()
448 cur_stream = FindStream(mtcp, pctx, &hash); in ProcessInTCPPacket()
460 cur_stream = CreateStream(mtcp, pctx, &hash); in ProcessInTCPPacket()
469 pctx->p.offset = (uint64_t)seq2loff(cur_stream->rcvvar->rcvbuf, in ProcessInTCPPacket()
470 pctx->p.seq, cur_stream->rcvvar->irs + 1); in ProcessInTCPPacket()
473 HandleSockStream(mtcp, cur_stream, pctx); in ProcessInTCPPacket()
476 HandleMonitorStream(mtcp, cur_stream, cur_stream->pair_stream, pctx); in ProcessInTCPPacket()
490 if (!(ISSET_BPFFILTER(fcode) && pctx && in ProcessInTCPPacket()
491 EVAL_BPFFILTER(fcode, (uint8_t *)pctx->p.iph - sizeof(struct ethhdr), in ProcessInTCPPacket()
492 pctx->p.ip_len + sizeof(struct ethhdr)) == 0)) { in ProcessInTCPPacket()
494 pctx, events); in ProcessInTCPPacket()
505 0, pctx->p.seq + pctx->p.payloadlen + 1, 0, in ProcessInTCPPacket()
507 NULL, 0, pctx->p.cur_ts, 0, 0, -1); in ProcessInTCPPacket()
508 } else if (pctx->forward) { in ProcessInTCPPacket()
510 ForwardIPPacket(mtcp, pctx); in ProcessInTCPPacket()