X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Fip_pipeline%2Fmain.c;h=a44cf9a3f96c03f1b179c68ae8d7dea43cd44c1e;hb=1cf62d96850b54a96d20ac173229814292fedb9f;hp=e19412f6383bb6b42e0d0b16fed24e04d0f9c59a;hpb=62814bc2e923b3d1867a93a1a4cd6073f5065e41;p=dpdk.git diff --git a/examples/ip_pipeline/main.c b/examples/ip_pipeline/main.c index e19412f638..a44cf9a3f9 100644 --- a/examples/ip_pipeline/main.c +++ b/examples/ip_pipeline/main.c @@ -1,171 +1,35 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2010-2015 Intel Corporation */ -#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 - -#include "main.h" - -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; -} +static struct app_params app; int -app_lcore_main_loop(__attribute__((unused)) void *arg) +main(int argc, char **argv) { - 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); -#ifdef RTE_MBUF_REFCNT - 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; -#else - rte_exit(EXIT_FAILURE, - "mbuf chaining not present in build\n"); -#endif + /* 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; }