[PATCH 1/1]: Test tree update (was Re: [PATCH 3/10]: Dedicated auxiliary states to support passive-close)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[DCCP]: More informative state names

This realises a naming scheme due to Arnaldo Carvalho de Melo (many thanks), which
assigns more informative/declarative names to the auxiliary and intermediate states
PASSIVE_1/2i - which exist to facilitate passive-Close:

	s/PASSIVE_1/DCCP_PASSIVE_CLOSE/g;	/* any node receiving a Close */
	s/PASSIVE_2/DCCP_PASSIVE_CLOSEREQ/g;	/* when client receives CloseReq */

In addition, to better separate between sending and receiving a CloseReq,

   	s/CLOSEREQ/DCCP_ACTIVE_CLOSEREQ/g;	/* server sending a CloseReq */

However, for pretty-printing and system logs, the name of the last state remains
at `CLOSEREQ', for consistency.

Signed-off-by: Gerrit Renker <gerrit@xxxxxxxxxxxxxx>
---
 include/linux/dccp.h |   34 +++++++++++++++++-----------------
 net/dccp/input.c     |   13 ++++++-------
 net/dccp/proto.c     |   34 +++++++++++++++++-----------------
 3 files changed, 40 insertions(+), 41 deletions(-)

--- a/include/linux/dccp.h
+++ b/include/linux/dccp.h
@@ -246,33 +246,33 @@ enum dccp_state {
 	 *     (in this case, SOCK_DONE == 0).
 	 *  c. Server decides to hold TIMEWAIT state & performs an active-close.
 	 * To avoid erasing receive queues too early, the transitional states
-	 * PASSIVE_1 (from OPEN => CLOSED) and PASSIVE_2 (from (PART)OPEN to
-	 * CLOSING, corresponds to (b) above) are used.
+	 * PASSIVE_CLOSE (from OPEN => CLOSED) and PASSIVE_CLOSEREQ (from
+	 * (PART)OPEN to CLOSING, corresponds to (b) above) are used.
 	 */
-	DCCP_CLOSEREQ	= TCP_FIN_WAIT1,
-	DCCP_PASSIVE_1	= TCP_CLOSE_WAIT,	/* any node receiving a Close */
-	DCCP_CLOSING	= TCP_CLOSING,
-	DCCP_TIME_WAIT	= TCP_TIME_WAIT,
-	DCCP_CLOSED	= TCP_CLOSE,
+	DCCP_ACTIVE_CLOSEREQ	= TCP_FIN_WAIT1,
+	DCCP_PASSIVE_CLOSE	= TCP_CLOSE_WAIT,
+	DCCP_CLOSING		= TCP_CLOSING,
+	DCCP_TIME_WAIT		= TCP_TIME_WAIT,
+	DCCP_CLOSED		= TCP_CLOSE,
 	/* Everything below here is specific to DCCP only */
 	DCCP_INTRINSICS = TCP_MAX_STATES,
 	DCCP_PARTOPEN,
-	DCCP_PASSIVE_2,				/* client receiving CloseReq  */
+	DCCP_PASSIVE_CLOSEREQ,
 	DCCP_MAX_STATES
 };
 
 #define DCCP_STATE_MASK 0x1f
 
 enum {
-	DCCPF_OPEN	 = TCPF_ESTABLISHED,
-	DCCPF_REQUESTING = TCPF_SYN_SENT,
-	DCCPF_LISTEN	 = TCPF_LISTEN,
-	DCCPF_RESPOND	 = TCPF_SYN_RECV,
-	DCCPF_CLOSEREQ	 = TCPF_FIN_WAIT1,
-	DCCPF_CLOSING	 = TCPF_CLOSING,
-	DCCPF_TIME_WAIT	 = TCPF_TIME_WAIT,
-	DCCPF_CLOSED	 = TCPF_CLOSE,
-	DCCPF_PARTOPEN	 = (1 << (u8)DCCP_PARTOPEN),
+	DCCPF_OPEN	      = TCPF_ESTABLISHED,
+	DCCPF_REQUESTING      = TCPF_SYN_SENT,
+	DCCPF_LISTEN	      = TCPF_LISTEN,
+	DCCPF_RESPOND	      = TCPF_SYN_RECV,
+	DCCPF_ACTIVE_CLOSEREQ = TCPF_FIN_WAIT1,
+	DCCPF_CLOSING	      = TCPF_CLOSING,
+	DCCPF_TIME_WAIT	      = TCPF_TIME_WAIT,
+	DCCPF_CLOSED	      = TCPF_CLOSE,
+	DCCPF_PARTOPEN	      = (1 << (u8)DCCP_PARTOPEN),
 };
 
 static inline struct dccp_hdr *dccp_hdr(const struct sk_buff *skb)
--- a/net/dccp/input.c
+++ b/net/dccp/input.c
@@ -31,8 +31,7 @@ static void dccp_fin(struct sock *sk, st
 
 static void dccp_rcv_close(struct sock *sk, struct sk_buff *skb)
 {
-	if (sk->sk_state == DCCP_CLOSEREQ) {
-		/* Server performed active close */
+	if (sk->sk_state == DCCP_ACTIVE_CLOSEREQ) {
 		dccp_send_reset(sk, DCCP_RESET_CODE_CLOSED);
 		dccp_done(sk);
 	} else {
@@ -42,9 +41,9 @@ static void dccp_rcv_close(struct sock *
 		 * application bug, the input queue may not be emptied at all.
 		 * In this case we wait until the peer sends the terminal Reset.
 		 */
-		if (sk->sk_state != DCCP_PASSIVE_1) {
+		if (sk->sk_state != DCCP_PASSIVE_CLOSE) {
 			dccp_fin(sk, skb);
-			dccp_set_state(sk, DCCP_PASSIVE_1);
+			dccp_set_state(sk, DCCP_PASSIVE_CLOSE);
 		}
 		sk_wake_async(sk, 1, POLL_HUP);
 	}
@@ -63,10 +62,10 @@ static void dccp_rcv_closereq(struct soc
 		return;
 	}
 
-	/* Do not enqueue CloseReq twice: see comments above for PASSIVE_1 */
-	if (sk->sk_state != DCCP_PASSIVE_2) {
+	/* Do not enqueue CloseReq twice: see comment above for PASSIVE_CLOSE */
+	if (sk->sk_state != DCCP_PASSIVE_CLOSEREQ) {
 		dccp_fin(sk, skb);
-		dccp_set_state(sk, DCCP_PASSIVE_2);
+		dccp_set_state(sk, DCCP_PASSIVE_CLOSEREQ);
 	}
 	sk_wake_async(sk, 1, POLL_HUP);
 }
--- a/net/dccp/proto.c
+++ b/net/dccp/proto.c
@@ -75,7 +75,7 @@ void dccp_set_state(struct sock *sk, con
 
 	case DCCP_CLOSED:
 		if (oldstate == DCCP_CLOSING  ||
-		    oldstate == DCCP_CLOSEREQ || oldstate == DCCP_OPEN)
+		    oldstate == DCCP_ACTIVE_CLOSEREQ || oldstate == DCCP_OPEN)
 			DCCP_INC_STATS(DCCP_MIB_ESTABRESETS);
 
 		sk->sk_prot->unhash(sk);
@@ -137,17 +137,17 @@ EXPORT_SYMBOL_GPL(dccp_packet_name);
 const char *dccp_state_name(const int state)
 {
 	static char *dccp_state_names[] = {
-	[DCCP_OPEN]	  = "OPEN",
-	[DCCP_REQUESTING] = "REQUESTING",
-	[DCCP_PARTOPEN]	  = "PARTOPEN",
-	[DCCP_LISTEN]	  = "LISTEN",
-	[DCCP_RESPOND]	  = "RESPOND",
-	[DCCP_CLOSING]	  = "CLOSING",
-	[DCCP_CLOSEREQ]	  = "CLOSEREQ",
-	[DCCP_PASSIVE_1]  = "PASSIVE_1",
-	[DCCP_PASSIVE_2]  = "PASSIVE_2",
-	[DCCP_TIME_WAIT]  = "TIME_WAIT",
-	[DCCP_CLOSED]	  = "CLOSED",
+	[DCCP_OPEN]		= "OPEN",
+	[DCCP_REQUESTING]	= "REQUESTING",
+	[DCCP_PARTOPEN]		= "PARTOPEN",
+	[DCCP_LISTEN]		= "LISTEN",
+	[DCCP_RESPOND]		= "RESPOND",
+	[DCCP_CLOSING]		= "CLOSING",
+	[DCCP_ACTIVE_CLOSEREQ]	= "CLOSEREQ",
+	[DCCP_PASSIVE_CLOSE]	= "PASSIVE_CLOSE",
+	[DCCP_PASSIVE_CLOSEREQ]	= "PASSIVE_CLOSEREQ",
+	[DCCP_TIME_WAIT]	= "TIME_WAIT",
+	[DCCP_CLOSED]		= "CLOSED",
 	};
 
 	if (state >= DCCP_MAX_STATES)
@@ -850,12 +850,12 @@ EXPORT_SYMBOL_GPL(inet_dccp_listen);
 void dccp_handle_passive_close(struct sock *sk)
 {
 	switch (sk->sk_state) {
-	case DCCP_PASSIVE_1:
+	case DCCP_PASSIVE_CLOSE:
 		/* Node (client or server) has received Close packet. */
 		dccp_set_state(sk, DCCP_CLOSED);
 		dccp_send_reset(sk, DCCP_RESET_CODE_CLOSED);
 		break;
-	case DCCP_PASSIVE_2:
+	case DCCP_PASSIVE_CLOSEREQ:
 		/*
 		 * Client passive-close by receiving a CloseReq packet.
 		 * We need to set `active' when sending the Close, since 8.3 in
@@ -878,8 +878,8 @@ static void dccp_handle_close(struct soc
 	switch (sk->sk_state) {
 	case DCCP_CLOSED:
 		return;
-	case DCCP_PASSIVE_1:
-	case DCCP_PASSIVE_2:
+	case DCCP_PASSIVE_CLOSE:
+	case DCCP_PASSIVE_CLOSEREQ:
 		dccp_handle_passive_close(sk);
 		break;
 	case DCCP_PARTOPEN:
@@ -897,7 +897,7 @@ static void dccp_handle_close(struct soc
 		dccp_send_close(sk, 1);
 
 		if (dccp_sk(sk)->dccps_role == DCCP_ROLE_SERVER)
-			next_state = DCCP_CLOSEREQ;
+			next_state = DCCP_ACTIVE_CLOSEREQ;
 		else
 			next_state = DCCP_CLOSING;
 		/* fall through */
-
To unsubscribe from this list: send the line "unsubscribe dccp" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [IETF DCCP]     [Linux Networking]     [Git]     [Security]     [Linux Assembly]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux