session: generate wrong thread errors instead of crashing

Change-Id: I7e59ae718d2722c49d42b22a0874e1645a191e89
Signed-off-by: Florin Coras <fcoras@cisco.com>
diff --git a/src/vnet/sctp/sctp_error.def b/src/vnet/sctp/sctp_error.def
index 7326301..b95b71a 100644
--- a/src/vnet/sctp/sctp_error.def
+++ b/src/vnet/sctp/sctp_error.def
@@ -13,6 +13,8 @@
  * limitations under the License.
  */
 sctp_error (NONE, "no error")
+sctp_error (WRONG_WORKER, "Wrong worker thread")
+sctp_error (FILTERED, "Packets filtered")
 sctp_error (PKTS_SENT, "Packets sent")
 sctp_error (INVALID_CONNECTION, "Invalid connection")
 sctp_error (INVALID_TAG, "Invalid verification tag")
@@ -47,5 +49,4 @@
 sctp_error (UNKNOWN_CHUNK, "Unrecognized / unknown chunk or chunk-state mismatch")
 sctp_error (BUNDLING_VIOLATION, "Bundling not allowed")
 sctp_error (PUNT, "Packets punted")
-sctp_error (FILTERED, "Packets filtered")
 sctp_error (MAX_CONNECTIONS, "Reached max supported subconnection")
diff --git a/src/vnet/sctp/sctp_input.c b/src/vnet/sctp/sctp_input.c
index 4454f99..88e4eab 100644
--- a/src/vnet/sctp/sctp_input.c
+++ b/src/vnet/sctp/sctp_input.c
@@ -2114,7 +2114,7 @@
 {
   u32 n_left_from, next_index, *from, *to_next;
   u32 my_thread_index = vm->thread_index;
-  u8 is_filtered;
+  u8 result;
   sctp_main_t *tm = vnet_get_sctp_main ();
 
   from = vlib_frame_vector_args (from_frame);
@@ -2175,7 +2175,7 @@
 							  sctp_hdr->src_port,
 							  TRANSPORT_PROTO_SCTP,
 							  my_thread_index,
-							  &is_filtered);
+							  &result);
 	    }
 	  else
 	    {
@@ -2198,7 +2198,7 @@
 							  sctp_hdr->src_port,
 							  TRANSPORT_PROTO_SCTP,
 							  my_thread_index,
-							  &is_filtered);
+							  &result);
 	    }
 
 	  /* Length check */
@@ -2256,10 +2256,10 @@
 	    }
 	  else
 	    {
-	      if (is_filtered)
+	      if (result)
 		{
 		  next0 = SCTP_INPUT_NEXT_DROP;
-		  error0 = SCTP_ERROR_FILTERED;
+		  error0 = SCTP_ERROR_NONE + result;
 		}
 	      else if ((is_ip4 && tm->punt_unknown4) ||
 		       (!is_ip4 && tm->punt_unknown6))