^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * INET An implementation of the TCP/IP protocol suite for the LINUX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * operating system. INET is implemented using the BSD Socket
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * interface as the means of communication with the user level.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * Definitions for the TCP protocol sk_state field.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #ifndef _LINUX_TCP_STATES_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #define _LINUX_TCP_STATES_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) enum {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) TCP_ESTABLISHED = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) TCP_SYN_SENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) TCP_SYN_RECV,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) TCP_FIN_WAIT1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) TCP_FIN_WAIT2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) TCP_TIME_WAIT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) TCP_CLOSE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) TCP_CLOSE_WAIT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) TCP_LAST_ACK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) TCP_LISTEN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) TCP_CLOSING, /* Now a valid state */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) TCP_NEW_SYN_RECV,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) TCP_MAX_STATES /* Leave at the end! */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #define TCP_STATE_MASK 0xF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define TCP_ACTION_FIN (1 << TCP_CLOSE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) enum {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) TCPF_ESTABLISHED = (1 << TCP_ESTABLISHED),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) TCPF_SYN_SENT = (1 << TCP_SYN_SENT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) TCPF_SYN_RECV = (1 << TCP_SYN_RECV),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) TCPF_FIN_WAIT1 = (1 << TCP_FIN_WAIT1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) TCPF_FIN_WAIT2 = (1 << TCP_FIN_WAIT2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) TCPF_TIME_WAIT = (1 << TCP_TIME_WAIT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) TCPF_CLOSE = (1 << TCP_CLOSE),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) TCPF_CLOSE_WAIT = (1 << TCP_CLOSE_WAIT),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) TCPF_LAST_ACK = (1 << TCP_LAST_ACK),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) TCPF_LISTEN = (1 << TCP_LISTEN),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) TCPF_CLOSING = (1 << TCP_CLOSING),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) TCPF_NEW_SYN_RECV = (1 << TCP_NEW_SYN_RECV),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) #endif /* _LINUX_TCP_STATES_H */