diff options
Diffstat (limited to 'src/vpp')
-rw-r--r-- | src/vpp/api/types.c | 49 | ||||
-rw-r--r-- | src/vpp/vnet/main.c | 26 |
2 files changed, 39 insertions, 36 deletions
diff --git a/src/vpp/api/types.c b/src/vpp/api/types.c index a30736fbb9f..92bbdb30ac9 100644 --- a/src/vpp/api/types.c +++ b/src/vpp/api/types.c @@ -88,8 +88,7 @@ format_vl_api_prefix (u8 * s, va_list * args) { const vl_api_prefix_t *pfx = va_arg (*args, vl_api_prefix_t *); - s = format (s, "%U/%d", format_vl_api_address, - &pfx->address, pfx->len); + s = format (s, "%U/%u", format_vl_api_address, &pfx->address, pfx->len); return s; } @@ -106,7 +105,7 @@ u8 * format_vl_api_version (u8 * s, va_list * args) { vl_api_version_t *ver = va_arg (*args, vl_api_version_t *); - s = format(s, "%d.%d.%d", ver->major, ver->minor, ver->patch); + s = format (s, "%u.%u.%u", ver->major, ver->minor, ver->patch); if (ver->pre_release[0] != 0) { s = format(s, "-%v", ver->pre_release); @@ -176,13 +175,14 @@ unformat_vl_api_ip6_address (unformat_input_t * input, va_list * args) } uword -unformat_vl_api_prefix (unformat_input_t * input, va_list * args) +unformat_vl_api_prefix (unformat_input_t *input, va_list *args) { - vl_api_prefix_t *pfx = va_arg (*args, vl_api_prefix_t *); + vl_api_prefix_t *pfx = va_arg (*args, vl_api_prefix_t *); + + if (unformat (input, "%U/%U", unformat_vl_api_address, &pfx->address, + unformat_u8, &pfx->len)) + return (1); - if (unformat (input, "%U/%d", unformat_vl_api_address, &pfx->address, - &pfx->len)) - return (1); return (0); } @@ -191,14 +191,14 @@ unformat_vl_api_mprefix (unformat_input_t * input, va_list * args) { vl_api_mprefix_t *pfx = va_arg (*args, vl_api_mprefix_t *); - if (unformat (input, "%U/%d", - unformat_vl_api_ip4_address, &pfx->grp_address.ip4, - &pfx->grp_address_length)) - pfx->af = ADDRESS_IP4; - else if (unformat (input, "%U/%d", - unformat_vl_api_ip6_address, &pfx->grp_address.ip6, - &pfx->grp_address_length)) - pfx->af = ADDRESS_IP6; + if (unformat (input, "%U/%U", unformat_vl_api_ip4_address, + &pfx->grp_address.ip4, unformat_u16, + &pfx->grp_address_length)) + pfx->af = ADDRESS_IP4; + else if (unformat (input, "%U/%U", unformat_vl_api_ip6_address, + &pfx->grp_address.ip6, unformat_u16, + &pfx->grp_address_length)) + pfx->af = ADDRESS_IP6; else if (unformat (input, "%U %U", unformat_vl_api_ip4_address, &pfx->src_address.ip4, unformat_vl_api_ip4_address, &pfx->grp_address.ip4)) @@ -235,17 +235,14 @@ unformat_vl_api_mprefix (unformat_input_t * input, va_list * args) uword unformat_vl_api_version (unformat_input_t * input, va_list * args) { -vl_api_version_t *ver = va_arg (*args, vl_api_version_t *); + vl_api_version_t *ver = va_arg (*args, vl_api_version_t *); -if (unformat (input, "%d.%d.%d-%s+%s", ver->major, ver->minor, ver->patch, ver->pre_release, ver->build_metadata - )) - return (1); -else if (unformat (input, "%d.%d.%d-%s", ver->major, ver->minor, ver->patch, ver->pre_release - )) - return (1); -else if (unformat (input, "%d.%d.%d", ver->major, ver->minor, ver->patch - )) - return (1); + if (unformat (input, "%u.%u.%u-%s+%s", ver->major, ver->minor, ver->patch, + ver->pre_release, ver->build_metadata) || + unformat (input, "%u.%u.%u-%s", ver->major, ver->minor, ver->patch, + ver->pre_release) || + unformat (input, "%u.%u.%u", ver->major, ver->minor, ver->patch)) + return (1); return (0); } diff --git a/src/vpp/vnet/main.c b/src/vpp/vnet/main.c index 71434a9c065..c57efd59a62 100644 --- a/src/vpp/vnet/main.c +++ b/src/vpp/vnet/main.c @@ -22,6 +22,8 @@ #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> @@ -43,25 +45,26 @@ 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/" CLIB_LIB_DIR "/vpp_plugins", path, path); @@ -71,6 +74,9 @@ vpp_find_plugin_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 |