test mbuf attach
[dpdk.git] / examples / ip_pipeline / main.c
index 456f016..97d1e91 100644 (file)
@@ -8,13 +8,20 @@
 #include <unistd.h>
 #include <getopt.h>
 
+#include <rte_launch.h>
 #include <rte_eal.h>
 
 #include "cli.h"
 #include "conn.h"
+#include "kni.h"
+#include "cryptodev.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";
@@ -183,6 +190,68 @@ main(int argc, char **argv)
                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;
+       }
+
+       /* Sym Crypto */
+       status = cryptodev_init();
+       if (status) {
+               printf("Error: Cryptodev 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,
@@ -194,5 +263,7 @@ main(int argc, char **argv)
                conn_poll_for_conn(conn);
 
                conn_poll_for_msg(conn);
+
+               kni_handle_request();
        }
 }