1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 1982, 1986, 1990, 1993 3 * The Regents of the University of California. 4 * Copyright(c) 2010-2014 Intel Corporation. 5 * All rights reserved. 6 */ 7 8 #ifndef _RTE_TCP_H_ 9 #define _RTE_TCP_H_ 10 11 /** 12 * @file 13 * 14 * TCP-related defines 15 */ 16 17 #include <stdint.h> 18 19 #include <rte_byteorder.h> 20 21 #ifdef __cplusplus 22 extern "C" { 23 #endif 24 25 /** 26 * TCP Header 27 */ 28 struct rte_tcp_hdr { 29 rte_be16_t src_port; /**< TCP source port. */ 30 rte_be16_t dst_port; /**< TCP destination port. */ 31 rte_be32_t sent_seq; /**< TX data sequence number. */ 32 rte_be32_t recv_ack; /**< RX data acknowledgment sequence number. */ 33 uint8_t data_off; /**< Data offset. */ 34 uint8_t tcp_flags; /**< TCP flags */ 35 rte_be16_t rx_win; /**< RX flow control window. */ 36 rte_be16_t cksum; /**< TCP checksum. */ 37 rte_be16_t tcp_urp; /**< TCP urgent pointer, if any. */ 38 } __rte_packed; 39 40 /** 41 * TCP Flags 42 */ 43 #define RTE_TCP_CWR_FLAG 0x80 /**< Congestion Window Reduced */ 44 #define RTE_TCP_ECE_FLAG 0x40 /**< ECN-Echo */ 45 #define RTE_TCP_URG_FLAG 0x20 /**< Urgent Pointer field significant */ 46 #define RTE_TCP_ACK_FLAG 0x10 /**< Acknowledgment field significant */ 47 #define RTE_TCP_PSH_FLAG 0x08 /**< Push Function */ 48 #define RTE_TCP_RST_FLAG 0x04 /**< Reset the connection */ 49 #define RTE_TCP_SYN_FLAG 0x02 /**< Synchronize sequence numbers */ 50 #define RTE_TCP_FIN_FLAG 0x01 /**< No more data from sender */ 51 52 #ifdef __cplusplus 53 } 54 #endif 55 56 #endif /* RTE_TCP_H_ */ 57