X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Fip_pipeline%2Fmain.c;h=4944dcfbde27395c70c3283012d9f4b54f3c8181;hb=39aad0e88c583c3e47cdc9729ae801d4769970fe;hp=eb750b6362a6ce8a22d89f90c038702f7aaeb56c;hpb=ff708facfcbf42f3dcb3c62d82ecd93e7b8c2506;p=dpdk.git diff --git a/examples/ip_pipeline/main.c b/examples/ip_pipeline/main.c index eb750b6362..4944dcfbde 100644 --- a/examples/ip_pipeline/main.c +++ b/examples/ip_pipeline/main.c @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. + * Copyright(c) 2010-2015 Intel Corporation. All rights reserved. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -31,135 +31,34 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include "app.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "main.h" +static struct app_params app; int main(int argc, char **argv) { - int ret; - - /* Init EAL */ - ret = rte_eal_init(argc, argv); - if (ret < 0) - return -1; - argc -= ret; - argv += ret; - - /* Parse application arguments (after the EAL ones) */ - ret = app_parse_args(argc, argv); - if (ret < 0) { - app_print_usage(argv[0]); - return -1; - } - - /* Init */ - app_init(); - - /* Launch per-lcore init on every lcore */ - rte_eal_mp_remote_launch(app_lcore_main_loop, NULL, CALL_MASTER); - - return 0; -} - -int -app_lcore_main_loop(__attribute__((unused)) void *arg) -{ - uint32_t core_id, i; + rte_openlog_stream(stderr); - core_id = rte_lcore_id(); + /* Config */ + app_config_init(&app); - for (i = 0; i < app.n_cores; i++) { - struct app_core_params *p = &app.cores[i]; + app_config_args(&app, argc, argv); - if (p->core_id != core_id) - continue; + app_config_preproc(&app); - switch (p->core_type) { - case APP_CORE_MASTER: - app_ping(); - app_main_loop_cmdline(); - return 0; - case APP_CORE_RX: - app_main_loop_pipeline_rx(); - /* app_main_loop_rx(); */ - return 0; - case APP_CORE_TX: - app_main_loop_pipeline_tx(); - /* app_main_loop_tx(); */ - return 0; - case APP_CORE_PT: - /* app_main_loop_pipeline_passthrough(); */ - app_main_loop_passthrough(); - return 0; - case APP_CORE_FC: - app_main_loop_pipeline_flow_classification(); - return 0; - case APP_CORE_FW: - case APP_CORE_RT: - app_main_loop_pipeline_routing(); - return 0; + app_config_parse(&app, app.parser_file); -#ifdef RTE_LIBRTE_ACL - app_main_loop_pipeline_firewall(); - return 0; -#else - rte_exit(EXIT_FAILURE, "ACL not present in build\n"); -#endif + app_config_check(&app); - case APP_CORE_IPV4_FRAG: - app_main_loop_pipeline_ipv4_frag(); - return 0; - case APP_CORE_IPV4_RAS: - app_main_loop_pipeline_ipv4_ras(); - return 0; + /* Init */ + app_init(&app); - default: - rte_panic("%s: Invalid core type for core %u\n", - __func__, i); - } - } + /* Run-time */ + rte_eal_mp_remote_launch( + app_thread, + (void *) &app, + CALL_MASTER); - rte_panic("%s: Algorithmic error\n", __func__); - return -1; + return 0; }