Prepare for DPDK 19.08 support
[samplevnf.git] / VNFs / vFW / main.c
1 /*
2 // Copyright (c) 2017 Intel Corporation
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //      http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 */
16
17 #include "app.h"
18 #include <civetweb.h>
19
20 static struct app_params app;
21 extern void rest_api_vfw_init(struct mg_context *ctx, struct app_params *app);
22
23 int
24 main(int argc, char **argv)
25 {
26         struct mg_context *ctx = NULL;
27         rte_openlog_stream(stderr);
28
29         /* Config */
30         app_config_init(&app);
31
32         app_config_args(&app, argc, argv);
33
34         if (is_rest_support()) {
35                 /* initialize the rest api */
36                 set_vnf_type("VFW");
37                 ctx = rest_api_init(&app);
38         }
39
40         app_config_preproc(&app);
41
42         app_config_parse(&app, app.parser_file);
43
44         app_config_check(&app);
45
46         /* Timer subsystem init*/
47         rte_timer_subsystem_init();
48
49         /* Init */
50         app_init(&app);
51
52         if (is_rest_support() && (ctx != NULL)) {
53                 /* rest api's for cgnapt */
54                 rest_api_vfw_init(ctx, &app);
55         }
56
57         /* Run-time */
58         rte_eal_mp_remote_launch(
59                 app_thread,
60                 (void *) &app,
61                 CALL_MASTER);
62
63         if (is_rest_support() && (ctx != NULL)) {
64                 mg_stop(ctx);
65                 printf("Civet server stopped.\n");
66         }
67
68         return 0;
69 }