*------------------------------------------------------------------
*/
+#define _GNU_SOURCE
#include <stdint.h>
#include <net/if.h>
#include <sys/types.h>
#include <sys/timerfd.h>
#include <sys/epoll.h>
#include <signal.h>
+#include <linux/memfd.h>
/* memif protocol msg, ring and descriptor definitions */
#include <memif.h>
MEMIF_DEFAULT_SOCKET_FILENAME, sfl);
}
- if (args->secret)
+ if ((l = strlen ((char *) args->secret)) > 0)
{
- l = strlen ((char *) args->secret);
strncpy ((char *) conn->args.secret, (char *) args->secret, l);
}
sun.sun_family = AF_UNIX;
- strncpy (sun.sun_path, conn->args.socket_filename,
+ strncpy (sun.sun_path, (char*) conn->args.socket_filename,
sizeof (sun.sun_path) - 1);
if (connect (sockfd, (struct sockaddr *) &sun,
if (c->fd > 0)
{
- memif_msg_send_disconnect (c->fd, "interface deleted", 0);
+ memif_msg_send_disconnect (c->fd, (uint8_t *) "interface deleted", 0);
lm->control_fd_update (c->fd, MEMIF_FD_EVENT_DEL);
close (c->fd);
}
*count_out = 0;
ring_size = (1 << mq->log2_ring_size);
- ns = ring->tail - mq->last_tail;
- mq->last_tail += ns;
slot = (c->args.is_master) ? ring->tail : ring->head;
slot += mq->alloc_bufs;
/* can only be called by slave */
- ns = ring_size - ring->head + mq->alloc_bufs + mq->last_tail;
+ ns = ring_size - (ring->head + mq->alloc_bufs) + ring->tail;
b0 = bufs;
*count_out = 0;
ring_size = (1 << mq->log2_ring_size);
- ns = ring->tail - mq->last_tail;
- mq->last_tail += ns;
slot = (c->args.is_master) ? ring->tail : ring->head;
slot += mq->alloc_bufs;
if (c->args.is_master)
- ns = ring->head + mq->alloc_bufs - ring->tail;
+ ns = ring->head - (ring->tail + mq->alloc_bufs);
else
- ns = ring_size - ring->head + mq->alloc_bufs + mq->last_tail;
+ ns = ring_size - (ring->head + mq->alloc_bufs) + ring->tail;
while (count && ns)
{
*count_out += 1;
mq->alloc_bufs++;
ns--;
- count--;
ring->desc[b0->desc_index & mask].flags |=
MEMIF_DESC_FLAG_NEXT;
if (headroom)
{
- slot = (c->args.is_master) ? ring->head : ring->tail;
+ slot = ring->head;
while (slot < head)
{
uint16_t x =
l1 = strlen ((char *) c->args.interface_name);
if (l0 + l1 < buflen)
{
- md->if_name = strcpy (buf + l0, (char *) c->args.interface_name);
+ md->if_name = (uint8_t *) strcpy (buf + l0, (char *) c->args.interface_name);
l0 += l1 + 1;
}
else
l1 = strlen ((char *) lm->app_name);
if (l0 + l1 < buflen)
{
- md->inst_name = strcpy (buf + l0, (char *) lm->app_name);
+ md->inst_name = (uint8_t *) strcpy (buf + l0, (char *) lm->app_name);
l0 += l1 + 1;
}
else
l1 = strlen ((char *) c->remote_if_name);
if (l0 + l1 < buflen)
{
- md->remote_if_name = strcpy (buf + l0, (char *) c->remote_if_name);
+ md->remote_if_name = (uint8_t *) strcpy (buf + l0, (char *) c->remote_if_name);
l0 += l1 + 1;
}
else
l1 = strlen ((char *) c->remote_name);
if (l0 + l1 < buflen)
{
- md->remote_inst_name = strcpy (buf + l0, (char *) c->remote_name);
+ md->remote_inst_name = (uint8_t *) strcpy (buf + l0, (char *) c->remote_name);
l0 += l1 + 1;
}
else
md->id = c->args.interface_id;
- if (c->args.secret)
+ if (strlen((char *) c->args.secret) > 0)
{
l1 = strlen ((char *) c->args.secret);
if (l0 + l1 < buflen)
{
- md->secret = strcpy (buf + l0, (char *) c->args.secret);
+ md->secret = (uint8_t *) strcpy (buf + l0, (char *) c->args.secret);
l0 += l1 + 1;
}
else
if (l0 + l1 < buflen)
{
md->socket_filename =
- strcpy (buf + l0, (char *) c->args.socket_filename);
+ (uint8_t *) strcpy (buf + l0, (char *) c->args.socket_filename);
l0 += l1 + 1;
}
else