1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2010-2018 Intel Corporation
22 static const char usage[] =
23 "%s EAL_ARGS -- [-h HOST] [-p PORT] [-s SCRIPT]\n";
25 static const char welcome[] =
27 "Welcome to IP Pipeline!\n"
30 static const char prompt[] = "pipeline> ";
32 static struct app_params {
33 struct conn_params conn;
41 .buf_size = 1024 * 1024,
42 .msg_in_len_max = 1024,
43 .msg_out_len_max = 1024 * 1024,
44 .msg_handle = cli_process,
50 parse_args(int argc, char **argv)
52 char *app_name = argv[0];
53 struct option lgopts[] = {
56 int opt, option_index;
57 int h_present, p_present, s_present, n_args, i;
59 /* Skip EAL input args */
61 for (i = 0; i < n_args; i++)
62 if (strcmp(argv[i], "--") == 0) {
76 while ((opt = getopt_long(argc, argv, "h:p:s:", lgopts, &option_index))
81 printf("Error: Multiple -h arguments\n");
86 if (!strlen(optarg)) {
87 printf("Error: Argument for -h not provided\n");
91 app.conn.addr = strdup(optarg);
92 if (app.conn.addr == NULL) {
93 printf("Error: Not enough memory\n");
100 printf("Error: Multiple -p arguments\n");
105 if (!strlen(optarg)) {
106 printf("Error: Argument for -p not provided\n");
110 app.conn.port = (uint16_t) atoi(optarg);
115 printf("Error: Multiple -s arguments\n");
120 if (!strlen(optarg)) {
121 printf("Error: Argument for -s not provided\n");
125 app.script_name = strdup(optarg);
126 if (app.script_name == NULL) {
127 printf("Error: Not enough memory\n");
133 printf(usage, app_name);
137 optind = 1; /* reset getopt lib */
143 main(int argc, char **argv)
148 /* Parse application arguments */
149 status = parse_args(argc, argv);
154 status = rte_eal_init(argc, argv);
156 printf("Error: EAL initialization failed (%d)\n", status);
161 conn = conn_init(&app.conn);
163 printf("Error: Connectivity initialization failed (%d)\n",
169 status = mempool_init();
171 printf("Error: Mempool initialization failed (%d)\n", status);
176 status = link_init();
178 printf("Error: Link initialization failed (%d)\n", status);
185 printf("Error: SWQ initialization failed (%d)\n", status);
189 /* Traffic Manager */
190 status = tmgr_init();
192 printf("Error: TMGR initialization failed (%d)\n", status);
199 printf("Error: TAP initialization failed (%d)\n", status);
206 printf("Error: KNI initialization failed (%d)\n", status);
211 status = port_in_action_profile_init();
213 printf("Error: Input port action profile initialization failed (%d)\n", status);
217 status = table_action_profile_init();
219 printf("Error: Action profile initialization failed (%d)\n",
226 cli_script_process(app.script_name,
227 app.conn.msg_in_len_max,
228 app.conn.msg_out_len_max);
232 conn_poll_for_conn(conn);
234 conn_poll_for_msg(conn);
236 kni_handle_request();