#include <unistd.h>
#include <getopt.h>
+#include <rte_launch.h>
#include <rte_eal.h>
#include "cli.h"
#include "conn.h"
+#include "kni.h"
+#include "link.h"
+#include "mempool.h"
+#include "pipeline.h"
+#include "swq.h"
+#include "tap.h"
+#include "thread.h"
+#include "tmgr.h"
static const char usage[] =
"%s EAL_ARGS -- [-h HOST] [-p PORT] [-s SCRIPT]\n";
return status;
};
+ /* Mempool */
+ status = mempool_init();
+ if (status) {
+ printf("Error: Mempool initialization failed (%d)\n", status);
+ return status;
+ }
+
+ /* Link */
+ status = link_init();
+ if (status) {
+ printf("Error: Link initialization failed (%d)\n", status);
+ return status;
+ }
+
+ /* SWQ */
+ status = swq_init();
+ if (status) {
+ printf("Error: SWQ initialization failed (%d)\n", status);
+ return status;
+ }
+
+ /* Traffic Manager */
+ status = tmgr_init();
+ if (status) {
+ printf("Error: TMGR initialization failed (%d)\n", status);
+ return status;
+ }
+
+ /* TAP */
+ status = tap_init();
+ if (status) {
+ printf("Error: TAP initialization failed (%d)\n", status);
+ return status;
+ }
+
+ /* KNI */
+ status = kni_init();
+ if (status) {
+ printf("Error: KNI initialization failed (%d)\n", status);
+ return status;
+ }
+
+ /* Action */
+ status = port_in_action_profile_init();
+ if (status) {
+ printf("Error: Input port action profile initialization failed (%d)\n", status);
+ return status;
+ }
+
+ status = table_action_profile_init();
+ if (status) {
+ printf("Error: Action profile initialization failed (%d)\n",
+ status);
+ return status;
+ }
+
+ /* Pipeline */
+ status = pipeline_init();
+ if (status) {
+ printf("Error: Pipeline initialization failed (%d)\n", status);
+ return status;
+ }
+
+ /* Thread */
+ status = thread_init();
+ if (status) {
+ printf("Error: Thread initialization failed (%d)\n", status);
+ return status;
+ }
+
+ rte_eal_mp_remote_launch(
+ thread_main,
+ NULL,
+ SKIP_MASTER);
+
/* Script */
if (app.script_name)
cli_script_process(app.script_name,
conn_poll_for_conn(conn);
conn_poll_for_msg(conn);
+
+ kni_handle_request();
}
}