static const unsigned char new_state[16] = {
   /* current state:        new state:      action:     */
-  /* (Invalid)         */ TCP_CLOSE,
-  /* TCP_ESTABLISHED   */ TCP_FIN_WAIT1 | TCP_ACTION_FIN,
-  /* TCP_SYN_SENT      */ TCP_CLOSE,
-  /* TCP_SYN_RECV      */ TCP_FIN_WAIT1 | TCP_ACTION_FIN,
-  /* TCP_FIN_WAIT1     */ TCP_FIN_WAIT1,
-  /* TCP_FIN_WAIT2     */ TCP_FIN_WAIT2,
-  /* TCP_TIME_WAIT     */ TCP_CLOSE,
-  /* TCP_CLOSE         */ TCP_CLOSE,
-  /* TCP_CLOSE_WAIT    */ TCP_LAST_ACK  | TCP_ACTION_FIN,
-  /* TCP_LAST_ACK      */ TCP_LAST_ACK,
-  /* TCP_LISTEN                */ TCP_CLOSE,
-  /* TCP_CLOSING       */ TCP_CLOSING,
+  [0 /* (Invalid) */]  = TCP_CLOSE,
+  [TCP_ESTABLISHED]    = TCP_FIN_WAIT1 | TCP_ACTION_FIN,
+  [TCP_SYN_SENT]       = TCP_CLOSE,
+  [TCP_SYN_RECV]       = TCP_FIN_WAIT1 | TCP_ACTION_FIN,
+  [TCP_FIN_WAIT1]      = TCP_FIN_WAIT1,
+  [TCP_FIN_WAIT2]      = TCP_FIN_WAIT2,
+  [TCP_TIME_WAIT]      = TCP_CLOSE,
+  [TCP_CLOSE]          = TCP_CLOSE,
+  [TCP_CLOSE_WAIT]     = TCP_LAST_ACK  | TCP_ACTION_FIN,
+  [TCP_LAST_ACK]       = TCP_LAST_ACK,
+  [TCP_LISTEN]         = TCP_CLOSE,
+  [TCP_CLOSING]                = TCP_CLOSING,
+  [TCP_NEW_SYN_RECV]   = TCP_CLOSE,    /* should not happen ! */
 };
 
 static int tcp_close_state(struct sock *sk)