1 #ifndef __TCP_OUT_H_
2 #define __TCP_OUT_H_
3 
4 #include "mtcp.h"
5 #include "tcp_stream.h"
6 
7 enum ack_opt
8 {
9 	ACK_OPT_NOW,
10 	ACK_OPT_AGGREGATE,
11 	ACK_OPT_WACK
12 };
13 
14 int
15 SendTCPPacketStandalone(struct mtcp_manager *mtcp,
16 		uint32_t saddr, uint16_t sport, uint32_t daddr, uint16_t dport,
17 		uint32_t seq, uint32_t ack_seq, uint16_t window, uint8_t flags,
18 		uint8_t *payload, uint16_t payloadlen,
19 		uint32_t cur_ts, uint32_t echo_ts, uint16_t ip_id);
20 
21 int
22 SendTCPPacket(struct mtcp_manager *mtcp, tcp_stream *cur_stream,
23 		uint32_t cur_ts, uint8_t flags, uint8_t *payload, uint16_t payloadlen);
24 
25 extern inline int
26 WriteTCPControlList(mtcp_manager_t mtcp,
27 		struct mtcp_sender *sender, uint32_t cur_ts, int thresh);
28 
29 extern inline int
30 WriteTCPDataList(mtcp_manager_t mtcp,
31 		struct mtcp_sender *sender, uint32_t cur_ts, int thresh);
32 
33 extern inline int
34 WriteTCPACKList(mtcp_manager_t mtcp,
35 		struct mtcp_sender *sender, uint32_t cur_ts, int thresh);
36 
37 extern inline void
38 AddtoControlList(mtcp_manager_t mtcp, tcp_stream *cur_stream, uint32_t cur_ts);
39 
40 extern inline void
41 AddtoSendList(mtcp_manager_t mtcp, tcp_stream *cur_stream);
42 
43 extern inline void
44 RemoveFromControlList(mtcp_manager_t mtcp, tcp_stream *cur_stream);
45 
46 extern inline void
47 RemoveFromSendList(mtcp_manager_t mtcp, tcp_stream *cur_stream);
48 
49 extern inline void
50 RemoveFromACKList(mtcp_manager_t mtcp, tcp_stream *cur_stream);
51 
52 extern inline void
53 EnqueueACK(mtcp_manager_t mtcp,
54 		tcp_stream *cur_stream, uint32_t cur_ts, uint8_t opt);
55 
56 extern inline void
57 DumpControlList(mtcp_manager_t mtcp, struct mtcp_sender *sender);
58 
59 void
60 UpdatePassiveSendTCPContext(mtcp_manager_t mtcp, struct tcp_stream *cur_stream,
61 			    struct pkt_ctx *pctx);
62 
63 void
64 PostSendTCPAction(mtcp_manager_t mtcp, struct pkt_ctx *pctx,
65 		  struct tcp_stream *recvside_stream,
66 		  struct tcp_stream *sendside_stream);
67 
68 #endif /* __TCP_OUT_H_ */
69