|
@@ -926,40 +926,7 @@ static const char *statename[]={
|
|
"Close Wait","Last ACK","Listen","Closing"
|
|
"Close Wait","Last ACK","Listen","Closing"
|
|
};
|
|
};
|
|
#endif
|
|
#endif
|
|
-
|
|
|
|
-static inline void tcp_set_state(struct sock *sk, int state)
|
|
|
|
-{
|
|
|
|
- int oldstate = sk->sk_state;
|
|
|
|
-
|
|
|
|
- switch (state) {
|
|
|
|
- case TCP_ESTABLISHED:
|
|
|
|
- if (oldstate != TCP_ESTABLISHED)
|
|
|
|
- TCP_INC_STATS(TCP_MIB_CURRESTAB);
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case TCP_CLOSE:
|
|
|
|
- if (oldstate == TCP_CLOSE_WAIT || oldstate == TCP_ESTABLISHED)
|
|
|
|
- TCP_INC_STATS(TCP_MIB_ESTABRESETS);
|
|
|
|
-
|
|
|
|
- sk->sk_prot->unhash(sk);
|
|
|
|
- if (inet_csk(sk)->icsk_bind_hash &&
|
|
|
|
- !(sk->sk_userlocks & SOCK_BINDPORT_LOCK))
|
|
|
|
- inet_put_port(&tcp_hashinfo, sk);
|
|
|
|
- /* fall through */
|
|
|
|
- default:
|
|
|
|
- if (oldstate==TCP_ESTABLISHED)
|
|
|
|
- TCP_DEC_STATS(TCP_MIB_CURRESTAB);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /* Change state AFTER socket is unhashed to avoid closed
|
|
|
|
- * socket sitting in hash tables.
|
|
|
|
- */
|
|
|
|
- sk->sk_state = state;
|
|
|
|
-
|
|
|
|
-#ifdef STATE_TRACE
|
|
|
|
- SOCK_DEBUG(sk, "TCP sk=%p, State %s -> %s\n",sk, statename[oldstate],statename[state]);
|
|
|
|
-#endif
|
|
|
|
-}
|
|
|
|
|
|
+extern void tcp_set_state(struct sock *sk, int state);
|
|
|
|
|
|
extern void tcp_done(struct sock *sk);
|
|
extern void tcp_done(struct sock *sk);
|
|
|
|
|