examples/ip_pipeline: link routing output ports to devices
[dpdk.git] / examples / ip_pipeline / init.c
index b2eafe3..7120bab 100644 (file)
@@ -1196,7 +1196,7 @@ app_init_msgq(struct app_params *app)
        }
 }
 
-static void app_pipeline_params_get(struct app_params *app,
+void app_pipeline_params_get(struct app_params *app,
        struct app_pipeline_params *p_in,
        struct pipeline_params *p_out)
 {
@@ -1204,6 +1204,8 @@ static void app_pipeline_params_get(struct app_params *app,
 
        snprintf(p_out->name, PIPELINE_NAME_SIZE, "%s", p_in->name);
 
+       snprintf(p_out->type, PIPELINE_TYPE_SIZE, "%s", p_in->type);
+
        p_out->socket_id = (int) p_in->socket_id;
 
        p_out->log_level = app->log_level;
@@ -1498,6 +1500,27 @@ app_init_pipelines(struct app_params *app)
        }
 }
 
+static void
+app_post_init_pipelines(struct app_params *app)
+{
+       uint32_t p_id;
+
+       for (p_id = 0; p_id < app->n_pipelines; p_id++) {
+               struct app_pipeline_params *params =
+                       &app->pipeline_params[p_id];
+               struct app_pipeline_data *data = &app->pipeline_data[p_id];
+               int status;
+
+               if (data->ptype->fe_ops->f_post_init == NULL)
+                       continue;
+
+               status = data->ptype->fe_ops->f_post_init(data->fe);
+               if (status)
+                       rte_panic("Pipeline instance \"%s\" front-end "
+                               "post-init error\n", params->name);
+       }
+}
+
 static void
 app_init_threads(struct app_params *app)
 {
@@ -1601,6 +1624,13 @@ int app_init(struct app_params *app)
        return 0;
 }
 
+int app_post_init(struct app_params *app)
+{
+       app_post_init_pipelines(app);
+
+       return 0;
+}
+
 static int
 app_pipeline_type_cmd_push(struct app_params *app,
        struct pipeline_type *ptype)