net: tracepoint: using sock_set_state tracepoint to trace SCTP state transition
authorYafang Shao <laoar.shao@gmail.com>
Wed, 20 Dec 2017 03:12:54 +0000 (11:12 +0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 20 Dec 2017 19:00:25 +0000 (14:00 -0500)
With changes in inet_ files, SCTP state transitions are traced with
inet_sock_set_state tracepoint.
As SCTP state names, i.e. SCTP_SS_CLOSED, SCTP_SS_ESTABLISHED,
have the same value with TCP state names. So the output info still print
the TCP state names, that makes the code easy.

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/endpointola.c
net/sctp/sm_sideeffect.c
net/sctp/socket.c

index ee1e601..8b31468 100644 (file)
@@ -232,7 +232,7 @@ void sctp_endpoint_free(struct sctp_endpoint *ep)
 {
        ep->base.dead = true;
 
-       ep->base.sk->sk_state = SCTP_SS_CLOSED;
+       inet_sk_set_state(ep->base.sk, SCTP_SS_CLOSED);
 
        /* Unlink this endpoint, so we can't find it again! */
        sctp_unhash_endpoint(ep);
index 16ddf2c..b71e7fb 100644 (file)
@@ -878,12 +878,12 @@ static void sctp_cmd_new_state(struct sctp_cmd_seq *cmds,
                 * successfully completed a connect() call.
                 */
                if (sctp_state(asoc, ESTABLISHED) && sctp_sstate(sk, CLOSED))
-                       sk->sk_state = SCTP_SS_ESTABLISHED;
+                       inet_sk_set_state(sk, SCTP_SS_ESTABLISHED);
 
                /* Set the RCV_SHUTDOWN flag when a SHUTDOWN is received. */
                if (sctp_state(asoc, SHUTDOWN_RECEIVED) &&
                    sctp_sstate(sk, ESTABLISHED)) {
-                       sk->sk_state = SCTP_SS_CLOSING;
+                       inet_sk_set_state(sk, SCTP_SS_CLOSING);
                        sk->sk_shutdown |= RCV_SHUTDOWN;
                }
        }
index 5e4100d..aadcd42 100644 (file)
@@ -1544,7 +1544,7 @@ static void sctp_close(struct sock *sk, long timeout)
 
        lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
        sk->sk_shutdown = SHUTDOWN_MASK;
-       sk->sk_state = SCTP_SS_CLOSING;
+       inet_sk_set_state(sk, SCTP_SS_CLOSING);
 
        ep = sctp_sk(sk)->ep;
 
@@ -4657,7 +4657,7 @@ static void sctp_shutdown(struct sock *sk, int how)
        if (how & SEND_SHUTDOWN && !list_empty(&ep->asocs)) {
                struct sctp_association *asoc;
 
-               sk->sk_state = SCTP_SS_CLOSING;
+               inet_sk_set_state(sk, SCTP_SS_CLOSING);
                asoc = list_entry(ep->asocs.next,
                                  struct sctp_association, asocs);
                sctp_primitive_SHUTDOWN(net, asoc, NULL);
@@ -7513,13 +7513,13 @@ static int sctp_listen_start(struct sock *sk, int backlog)
         * sockets.
         *
         */
-       sk->sk_state = SCTP_SS_LISTENING;
+       inet_sk_set_state(sk, SCTP_SS_LISTENING);
        if (!ep->base.bind_addr.port) {
                if (sctp_autobind(sk))
                        return -EAGAIN;
        } else {
                if (sctp_get_port(sk, inet_sk(sk)->inet_num)) {
-                       sk->sk_state = SCTP_SS_CLOSED;
+                       inet_sk_set_state(sk, SCTP_SS_CLOSED);
                        return -EADDRINUSE;
                }
        }
@@ -8542,10 +8542,10 @@ static void sctp_sock_migrate(struct sock *oldsk, struct sock *newsk,
         * is called, set RCV_SHUTDOWN flag.
         */
        if (sctp_state(assoc, CLOSED) && sctp_style(newsk, TCP)) {
-               newsk->sk_state = SCTP_SS_CLOSED;
+               inet_sk_set_state(newsk, SCTP_SS_CLOSED);
                newsk->sk_shutdown |= RCV_SHUTDOWN;
        } else {
-               newsk->sk_state = SCTP_SS_ESTABLISHED;
+               inet_sk_set_state(newsk, SCTP_SS_ESTABLISHED);
        }
 
        release_sock(newsk);