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