diff options
Diffstat (limited to 'src/vpp/vnet')
-rw-r--r-- | src/vpp/vnet/config.h.in | 4 | ||||
-rw-r--r-- | src/vpp/vnet/main.c | 71 |
2 files changed, 52 insertions, 23 deletions
diff --git a/src/vpp/vnet/config.h.in b/src/vpp/vnet/config.h.in index 5f2749d2c34..e8548c9b492 100644 --- a/src/vpp/vnet/config.h.in +++ b/src/vpp/vnet/config.h.in @@ -17,6 +17,8 @@ #define included_vpp_vnet_config_h #define VPP_SANITIZE_ADDR_OPTIONS "@VPP_SANITIZE_ADDR_OPTIONS@" -#define VPP_IP_FIB_MTRIE_16 "@VPP_IP_FIB_MTRIE_16@" +#cmakedefine VPP_IP_FIB_MTRIE_16 +#cmakedefine VPP_TCP_DEBUG_ALWAYS +#cmakedefine VPP_SESSION_DEBUG #endif diff --git a/src/vpp/vnet/main.c b/src/vpp/vnet/main.c index bf1eb7a1d1d..c57efd59a62 100644 --- a/src/vpp/vnet/main.c +++ b/src/vpp/vnet/main.c @@ -15,9 +15,15 @@ #define _GNU_SOURCE #include <pthread.h> +#ifdef __FreeBSD__ +#include <pthread_np.h> +#endif /* __FreeBSD__ */ #include <sched.h> +#include <vppinfra/clib.h> #include <vppinfra/cpu.h> +#include <vppinfra/bitmap.h> +#include <vppinfra/unix.h> #include <vlib/vlib.h> #include <vlib/unix/unix.h> #include <vlib/threads.h> @@ -25,7 +31,7 @@ #include <vnet/ethernet/ethernet.h> #include <vpp/app/version.h> #include <vpp/vnet/config.h> -#include <vpp/api/vpe_msg_enum.h> +#include <vlibmemory/memclnt.api_enum.h> /* To get the last static message id */ #include <limits.h> /* @@ -39,36 +45,38 @@ static void vpp_find_plugin_path () { extern char *vat_plugin_path; - char *p, path[PATH_MAX]; - int rv; - u8 *s; + char *p; + u8 *s, *path; /* find executable path */ - if ((rv = readlink ("/proc/self/exe", path, PATH_MAX - 1)) == -1) + path = os_get_exec_path (); + + if (!path) return; - /* readlink doesn't provide null termination */ - path[rv] = 0; + /* add null termination */ + vec_add1 (path, 0); /* strip filename */ - if ((p = strrchr (path, '/')) == 0) - return; + if ((p = strrchr ((char *) path, '/')) == 0) + goto done; *p = 0; /* strip bin/ */ - if ((p = strrchr (path, '/')) == 0) - return; + if ((p = strrchr ((char *) path, '/')) == 0) + goto done; *p = 0; - s = format (0, "%s/lib/" CLIB_TARGET_TRIPLET "/vpp_plugins:" - "%s/lib/vpp_plugins", path, path); + s = format (0, "%s/" CLIB_LIB_DIR "/vpp_plugins", path, path); vec_add1 (s, 0); vlib_plugin_path = (char *) s; - s = format (0, "%s/lib/" CLIB_TARGET_TRIPLET "/vpp_api_test_plugins:" - "%s/lib/vpp_api_test_plugins", path, path); + s = format (0, "%s/" CLIB_LIB_DIR "/vpp_api_test_plugins", path, path); vec_add1 (s, 0); vat_plugin_path = (char *) s; + +done: + vec_free (path); } static void @@ -111,9 +119,10 @@ main (int argc, char *argv[]) u8 *sizep; u32 size; clib_mem_page_sz_t main_heap_log2_page_sz = CLIB_MEM_PAGE_SZ_DEFAULT; + clib_mem_page_sz_t default_log2_hugepage_sz = CLIB_MEM_PAGE_SZ_UNKNOWN; unformat_input_t input, sub_input; u8 *s = 0, *v = 0; - int main_core = 1; + int main_core = ~0; cpu_set_t cpuset; void *main_heap; @@ -269,6 +278,10 @@ main (int argc, char *argv[]) main_core = x; } } + else if (!strncmp (argv[i], "interactive", 11)) + unix_main.flags |= UNIX_FLAG_INTERACTIVE; + else if (!strncmp (argv[i], "nosyslog", 8)) + unix_main.flags |= UNIX_FLAG_NOSYSLOG; } defaulted: @@ -291,6 +304,10 @@ defaulted: unformat_log2_page_size, &main_heap_log2_page_sz)) ; + else if (unformat (&sub_input, "default-hugepage-size %U", + unformat_log2_page_size, + &default_log2_hugepage_sz)) + ; else { fformat (stderr, "unknown 'memory' config input '%U'\n", @@ -313,12 +330,21 @@ defaulted: unformat_free (&input); /* set process affinity for main thread */ - CPU_ZERO (&cpuset); - CPU_SET (main_core, &cpuset); - pthread_setaffinity_np (pthread_self (), sizeof (cpu_set_t), &cpuset); + if (main_core != ~0) + { + CPU_ZERO (&cpuset); + CPU_SET (main_core, &cpuset); + if (pthread_setaffinity_np (pthread_self (), sizeof (cpu_set_t), + &cpuset)) + { + clib_unix_error ( + "pthread_setaffinity_np() on cpu %d failed for main thread", + main_core); + } + } /* Set up the plugin message ID allocator right now... */ - vl_msg_api_set_first_available_msg_id (VL_MSG_FIRST_AVAILABLE); + vl_msg_api_set_first_available_msg_id (VL_MSG_MEMCLNT_LAST + 1); /* destroy temporary heap and create main one */ clib_mem_destroy (); @@ -329,6 +355,9 @@ defaulted: /* Figure out which numa runs the main thread */ __os_numa_index = clib_get_current_numa_node (); + if (default_log2_hugepage_sz != CLIB_MEM_PAGE_SZ_UNKNOWN) + clib_mem_set_log2_default_hugepage_size (default_log2_hugepage_sz); + /* and use the main heap as that numa's numa heap */ clib_mem_set_per_numa_heap (main_heap); vlib_main_init (); @@ -489,14 +518,12 @@ show_bihash_command_fn (vlib_main_t * vm, return 0; } -/* *INDENT-OFF* */ VLIB_CLI_COMMAND (show_bihash_command, static) = { .path = "show bihash", .short_help = "show bihash", .function = show_bihash_command_fn, }; -/* *INDENT-ON* */ #ifdef CLIB_SANITIZE_ADDR /* default options for Address Sanitizer */ |