11573Srgrimes/* SPDX-License-Identifier: GPL-2.0 */
21573Srgrimes/* Copyright (c) 2023 Meta Platforms, Inc. and affiliates. */
31573Srgrimes
41573Srgrimes/* Define states of a socket to tracking messages sending to and from the
51573Srgrimes * socket.
61573Srgrimes *
71573Srgrimes * These states are based on rfc9293 with some modifications to support
81573Srgrimes * tracking of messages sent out from a socket. For example, when a SYN is
91573Srgrimes * received, a new socket is transiting to the SYN_RECV state defined in
101573Srgrimes * rfc9293. But, we put it in SYN_RECV_SENDING_SYN_ACK state and when
111573Srgrimes * SYN-ACK is sent out, it moves to SYN_RECV state. With this modification,
121573Srgrimes * we can track the message sent out from a socket.
131573Srgrimes */
141573Srgrimes
151573Srgrimes#ifndef __CGROUP_TCP_SKB_H__
161573Srgrimes#define __CGROUP_TCP_SKB_H__
171573Srgrimes
181573Srgrimesenum {
191573Srgrimes	INIT,
201573Srgrimes	CLOSED,
211573Srgrimes	SYN_SENT,
221573Srgrimes	SYN_RECV_SENDING_SYN_ACK,
231573Srgrimes	SYN_RECV,
241573Srgrimes	ESTABLISHED,
251573Srgrimes	FIN_WAIT1,
261573Srgrimes	FIN_WAIT2,
271573Srgrimes	CLOSE_WAIT_SENDING_ACK,
281573Srgrimes	CLOSE_WAIT,
291573Srgrimes	CLOSING,
301573Srgrimes	LAST_ACK,
311573Srgrimes	TIME_WAIT_SENDING_ACK,
321573Srgrimes	TIME_WAIT,
331573Srgrimes};
341573Srgrimes
351573Srgrimes#endif /* __CGROUP_TCP_SKB_H__ */
361573Srgrimes