176404edcSAsim Jamshed #ifndef __TCP_OUT_H_ 276404edcSAsim Jamshed #define __TCP_OUT_H_ 376404edcSAsim Jamshed 476404edcSAsim Jamshed #include "mtcp.h" 576404edcSAsim Jamshed #include "tcp_stream.h" 676404edcSAsim Jamshed 776404edcSAsim Jamshed enum ack_opt 876404edcSAsim Jamshed { 976404edcSAsim Jamshed ACK_OPT_NOW, 1076404edcSAsim Jamshed ACK_OPT_AGGREGATE, 1176404edcSAsim Jamshed ACK_OPT_WACK 1276404edcSAsim Jamshed }; 1376404edcSAsim Jamshed 1476404edcSAsim Jamshed int 1576404edcSAsim Jamshed SendTCPPacketStandalone(struct mtcp_manager *mtcp, 1676404edcSAsim Jamshed uint32_t saddr, uint16_t sport, uint32_t daddr, uint16_t dport, 1776404edcSAsim Jamshed uint32_t seq, uint32_t ack_seq, uint16_t window, uint8_t flags, 1876404edcSAsim Jamshed uint8_t *payload, uint16_t payloadlen, 19*a834ea89SAsim Jamshed uint32_t cur_ts, uint32_t echo_ts, uint16_t ip_id, int8_t in_ifidx); 2076404edcSAsim Jamshed 2176404edcSAsim Jamshed int 2276404edcSAsim Jamshed SendTCPPacket(struct mtcp_manager *mtcp, tcp_stream *cur_stream, 2376404edcSAsim Jamshed uint32_t cur_ts, uint8_t flags, uint8_t *payload, uint16_t payloadlen); 2476404edcSAsim Jamshed 2576404edcSAsim Jamshed extern inline int 2676404edcSAsim Jamshed WriteTCPControlList(mtcp_manager_t mtcp, 2776404edcSAsim Jamshed struct mtcp_sender *sender, uint32_t cur_ts, int thresh); 2876404edcSAsim Jamshed 2976404edcSAsim Jamshed extern inline int 3076404edcSAsim Jamshed WriteTCPDataList(mtcp_manager_t mtcp, 3176404edcSAsim Jamshed struct mtcp_sender *sender, uint32_t cur_ts, int thresh); 3276404edcSAsim Jamshed 3376404edcSAsim Jamshed extern inline int 3476404edcSAsim Jamshed WriteTCPACKList(mtcp_manager_t mtcp, 3576404edcSAsim Jamshed struct mtcp_sender *sender, uint32_t cur_ts, int thresh); 3676404edcSAsim Jamshed 3776404edcSAsim Jamshed extern inline void 3876404edcSAsim Jamshed AddtoControlList(mtcp_manager_t mtcp, tcp_stream *cur_stream, uint32_t cur_ts); 3976404edcSAsim Jamshed 4076404edcSAsim Jamshed extern inline void 4176404edcSAsim Jamshed AddtoSendList(mtcp_manager_t mtcp, tcp_stream *cur_stream); 4276404edcSAsim Jamshed 4376404edcSAsim Jamshed extern inline void 4476404edcSAsim Jamshed RemoveFromControlList(mtcp_manager_t mtcp, tcp_stream *cur_stream); 4576404edcSAsim Jamshed 4676404edcSAsim Jamshed extern inline void 4776404edcSAsim Jamshed RemoveFromSendList(mtcp_manager_t mtcp, tcp_stream *cur_stream); 4876404edcSAsim Jamshed 4976404edcSAsim Jamshed extern inline void 5076404edcSAsim Jamshed RemoveFromACKList(mtcp_manager_t mtcp, tcp_stream *cur_stream); 5176404edcSAsim Jamshed 5276404edcSAsim Jamshed extern inline void 5376404edcSAsim Jamshed EnqueueACK(mtcp_manager_t mtcp, 5476404edcSAsim Jamshed tcp_stream *cur_stream, uint32_t cur_ts, uint8_t opt); 5576404edcSAsim Jamshed 5676404edcSAsim Jamshed extern inline void 5776404edcSAsim Jamshed DumpControlList(mtcp_manager_t mtcp, struct mtcp_sender *sender); 5876404edcSAsim Jamshed 5976404edcSAsim Jamshed void 6076404edcSAsim Jamshed UpdatePassiveSendTCPContext(mtcp_manager_t mtcp, struct tcp_stream *cur_stream, 6176404edcSAsim Jamshed struct pkt_ctx *pctx); 6276404edcSAsim Jamshed 6376404edcSAsim Jamshed void 6476404edcSAsim Jamshed PostSendTCPAction(mtcp_manager_t mtcp, struct pkt_ctx *pctx, 6576404edcSAsim Jamshed struct tcp_stream *recvside_stream, 6676404edcSAsim Jamshed struct tcp_stream *sendside_stream); 6776404edcSAsim Jamshed 6876404edcSAsim Jamshed #endif /* __TCP_OUT_H_ */ 69