+void vl_api_rpc_call_main_thread (void *fp, u8 * data, u32 data_length);
+
+static clib_error_t *
+call_tap_read_ready (clib_file_t * uf)
+{
+ /* nothing to do */
+ return 0;
+}
+
+static void
+tap_delete_if_cp (u32 * sw_if_index)
+{
+ vlib_main_t *vm = vlib_get_main ();
+ tap_delete_if (vm, *sw_if_index);
+}
+
+/*
+ * Tap clean-up routine:
+ * Linux side of tap interface can be deleted i.e. tap is
+ * attached to container and if someone will delete this
+ * container, will also removes tap interface. While VPP
+ * will have other side of tap. This function will RPC
+ * main thread to call the tap_delete_if to cleanup tap.
+ */
+static clib_error_t *
+call_tap_error_ready (clib_file_t * uf)
+{
+ vl_api_rpc_call_main_thread (tap_delete_if_cp, (u8 *) & uf->private_data,
+ sizeof (uf->private_data));
+ return 0;
+}
+