tcp: rstreason: fully support in tcp_rcv_synsent_state_process()
authorJason Xing <kernelxing@tencent.com>
Fri, 10 May 2024 12:24:58 +0000 (20:24 +0800)
committerJakub Kicinski <kuba@kernel.org>
Tue, 14 May 2024 00:33:57 +0000 (17:33 -0700)
In this function, only updating the map can finish the job for socket
reset reason because the corresponding drop reasons are ready.

Signed-off-by: Jason Xing <kernelxing@tencent.com>
Link: https://lore.kernel.org/r/20240510122502.27850-2-kerneljasonxing@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/rstreason.h

index df3b6ac0c9b3fe233bd637ef51d564e57caa75b0..f87814a60205814aa2db3306c9b5504eb85125b6 100644 (file)
@@ -8,6 +8,8 @@
 #define DEFINE_RST_REASON(FN, FNe)     \
        FN(NOT_SPECIFIED)               \
        FN(NO_SOCKET)                   \
+       FN(TCP_INVALID_ACK_SEQUENCE)    \
+       FN(TCP_RFC7323_PAWS)            \
        FN(MPTCP_RST_EUNSPEC)           \
        FN(MPTCP_RST_EMPTCP)            \
        FN(MPTCP_RST_ERESOURCE)         \
@@ -37,6 +39,17 @@ enum sk_rst_reason {
        SK_RST_REASON_NOT_SPECIFIED,
        /** @SK_RST_REASON_NO_SOCKET: no valid socket that can be used */
        SK_RST_REASON_NO_SOCKET,
+       /**
+        * @SK_RST_REASON_TCP_INVALID_ACK_SEQUENCE: Not acceptable ACK SEQ
+        * field because ack sequence is not in the window between snd_una
+        * and snd_nxt
+        */
+       SK_RST_REASON_TCP_INVALID_ACK_SEQUENCE,
+       /**
+        * @SK_RST_REASON_TCP_RFC7323_PAWS: PAWS check, corresponding to
+        * LINUX_MIB_PAWSESTABREJECTED, LINUX_MIB_PAWSACTIVEREJECTED
+        */
+       SK_RST_REASON_TCP_RFC7323_PAWS,
 
        /* Copy from include/uapi/linux/mptcp.h.
         * These reset fields will not be changed since they adhere to
@@ -113,6 +126,10 @@ sk_rst_convert_drop_reason(enum skb_drop_reason reason)
                return SK_RST_REASON_NOT_SPECIFIED;
        case SKB_DROP_REASON_NO_SOCKET:
                return SK_RST_REASON_NO_SOCKET;
+       case SKB_DROP_REASON_TCP_INVALID_ACK_SEQUENCE:
+               return SK_RST_REASON_TCP_INVALID_ACK_SEQUENCE;
+       case SKB_DROP_REASON_TCP_RFC7323_PAWS:
+               return SK_RST_REASON_TCP_RFC7323_PAWS;
        default:
                /* If we don't have our own corresponding reason */
                return SK_RST_REASON_NOT_SPECIFIED;