X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fmemif%2Fmemif.c;h=f976f16dec841f47ebda0e0b77f4582d9bb700f8;hb=10c5ff1;hp=e35a8dcb4a001abc586cd003214cd02455c582b0;hpb=7a40133d3355463368085c14f9fc4b4fd22d549a;p=vpp.git diff --git a/src/plugins/memif/memif.c b/src/plugins/memif/memif.c index e35a8dcb4a0..f976f16dec8 100644 --- a/src/plugins/memif/memif.c +++ b/src/plugins/memif/memif.c @@ -340,12 +340,12 @@ memif_init_regions_and_queues (memif_if_t * mif) /* *INDENT-OFF* */ vec_foreach (bp, buffer_main.buffer_pools) { - vlib_physmem_region_t *pr; - pr = vlib_physmem_get_region (vm, bp->physmem_region); + vlib_physmem_map_t *pm; + pm = vlib_physmem_get_map (vm, bp->physmem_map_index); vec_add2_aligned (mif->regions, r, 1, CLIB_CACHE_LINE_BYTES); - r->fd = pr->fd; - r->region_size = pr->size; - r->shm = pr->mem; + r->fd = pm->fd; + r->region_size = pm->n_pages << pm->log2_page_size; + r->shm = pm->base; r->is_external = 1; } /* *INDENT-ON* */ @@ -460,7 +460,7 @@ memif_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f) clib_error_t *err; sock = clib_mem_alloc (sizeof (clib_socket_t)); - memset (sock, 0, sizeof (clib_socket_t)); + clib_memset (sock, 0, sizeof (clib_socket_t)); while (1) { @@ -511,7 +511,7 @@ memif_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f) if (mif->flags & MEMIF_IF_FLAG_IS_SLAVE) { - memset (sock, 0, sizeof(clib_socket_t)); + clib_memset (sock, 0, sizeof(clib_socket_t)); sock->config = (char *) msf->filename; sock->flags = CLIB_SOCKET_F_IS_CLIENT| CLIB_SOCKET_F_SEQPACKET; @@ -576,7 +576,7 @@ memif_add_socket_file (u32 sock_id, u8 * socket_filename) } pool_get (mm->socket_files, msf); - memset (msf, 0, sizeof (memif_socket_file_t)); + clib_memset (msf, 0, sizeof (memif_socket_file_t)); msf->filename = socket_filename; msf->socket_id = sock_id; @@ -618,7 +618,6 @@ memif_delete_socket_file (u32 sock_id) int memif_socket_filename_add_del (u8 is_add, u32 sock_id, u8 * sock_filename) { - struct stat file_stat; char *dir = 0, *tmp; u32 idx = 0; @@ -680,8 +679,11 @@ memif_socket_filename_add_del (u8 is_add, u32 sock_id, u8 * sock_filename) vec_add1 (dir, '\0'); } - if (((dir == 0) || (stat (dir, &file_stat) == -1) - || (!S_ISDIR (file_stat.st_mode))) && (idx != 0)) + /* check dir existance and access rights for effective user/group IDs */ + if ((dir == NULL) + || + (faccessat ( /* ignored */ -1, dir, F_OK | R_OK | W_OK, AT_EACCESS) + < 0)) { vec_free (dir); return VNET_API_ERROR_INVALID_ARGUMENT; @@ -754,7 +756,7 @@ memif_delete_if (vlib_main_t * vm, memif_if_t * mif) } } - memset (mif, 0, sizeof (*mif)); + clib_memset (mif, 0, sizeof (*mif)); pool_put (mm->interfaces, mif); if (pool_elts (mm->interfaces) == 0) @@ -873,7 +875,7 @@ memif_create_if (vlib_main_t * vm, memif_create_if_args_t * args) } pool_get (mm->interfaces, mif); - memset (mif, 0, sizeof (*mif)); + clib_memset (mif, 0, sizeof (*mif)); mif->dev_instance = mif - mm->interfaces; mif->socket_file_index = msf - mm->socket_files; mif->id = args->id; @@ -942,7 +944,7 @@ memif_create_if (vlib_main_t * vm, memif_create_if_args_t * args) ASSERT (msf->sock == 0); msf->sock = s; - memset (s, 0, sizeof (clib_socket_t)); + clib_memset (s, 0, sizeof (clib_socket_t)); s->config = (char *) msf->filename; s->flags = CLIB_SOCKET_F_IS_SERVER | CLIB_SOCKET_F_ALLOW_GROUP_WRITE | @@ -1017,7 +1019,7 @@ memif_init (vlib_main_t * vm) { memif_main_t *mm = &memif_main; - memset (mm, 0, sizeof (memif_main_t)); + clib_memset (mm, 0, sizeof (memif_main_t)); mm->log_class = vlib_log_register_class ("memif_plugin", 0); memif_log_debug (0, "initialized");