search for: msg_iovlen

Displaying 20 results from an estimated 79 matches for "msg_iovlen".

2010 Apr 26
1
valgrind ipconfig work
.../packet.c +++ b/usr/kinit/ipconfig/packet.c @@ -114,16 +114,18 @@ static char *ntoa(uint32_t addr) int packet_send(struct netdev *dev, struct iovec *iov, int iov_len) { struct sockaddr_ll sll; - struct msghdr msg = { - .msg_name = &sll, - .msg_namelen = sizeof(sll), - .msg_iov = iov, - .msg_iovlen = iov_len, - .msg_control = NULL, - .msg_controllen = 0, - .msg_flags = 0 - }; int i, len = 0; + struct msghdr msg; + + memset(&sll, 0, sizeof(sll)); + + msg.msg_name = &sll; + msg.msg_namelen = sizeof(sll); + msg.msg_iov = iov; + msg.msg_iovlen = iov_len; + msg.msg_control = NULL; + m...
2015 Dec 10
2
[PATCH] Receive multiple packets at a time
...nt num = 1, i; + +#ifdef HAVE_RECVMMSG + for(i = 0; i < MAX_MSG; i++) + { + msg[i].msg_hdr.msg_name = &from[i].sa; + msg[i].msg_hdr.msg_namelen = sizeof(from[i]); + iov[i].iov_base = &pkt[i].seqno; + iov[i].iov_len = MAXSIZE; + msg[i].msg_hdr.msg_iov = &iov[i]; + msg[i].msg_hdr.msg_iovlen = 1; + msg[i].msg_hdr.msg_control = NULL; + msg[i].msg_hdr.msg_controllen = 0; + } + num = recvmmsg(listen_socket[sock].udp, msg, MAX_MSG, MSG_DONTWAIT, NULL); +#else + pkt[0].len = recvfrom(listen_socket[sock].udp, (char *) &pkt[0].seqno, MAXSIZE, 0, &from[0].sa, &fromlen); +#endif +...
2010 Nov 29
1
[PATCH] vhost: fix typos in comment
...) move_iovec_hdr(vq->iov, vq->hdr, vhost_hlen, in); else /* Copy the header for use in VIRTIO_NET_F_MRG_RXBUF: - * needed because sendmsg can modify msg_iov. */ + * needed because recvmsg can modify msg_iov. */ copy_iovec_hdr(vq->iov, vq->hdr, sock_hlen, in); msg.msg_iovlen = in; err = sock->ops->recvmsg(NULL, sock, &msg, diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h index 073d06a..2af44b7 100644 --- a/drivers/vhost/vhost.h +++ b/drivers/vhost/vhost.h @@ -102,7 +102,7 @@ struct vhost_virtqueue { * flush the vhost_work instead of synchroniz...
2010 Nov 29
1
[PATCH] vhost: fix typos in comment
...) move_iovec_hdr(vq->iov, vq->hdr, vhost_hlen, in); else /* Copy the header for use in VIRTIO_NET_F_MRG_RXBUF: - * needed because sendmsg can modify msg_iov. */ + * needed because recvmsg can modify msg_iov. */ copy_iovec_hdr(vq->iov, vq->hdr, sock_hlen, in); msg.msg_iovlen = in; err = sock->ops->recvmsg(NULL, sock, &msg, diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h index 073d06a..2af44b7 100644 --- a/drivers/vhost/vhost.h +++ b/drivers/vhost/vhost.h @@ -102,7 +102,7 @@ struct vhost_virtqueue { * flush the vhost_work instead of synchroniz...
2010 Mar 03
1
[RFC][ PATCH 3/3] vhost-net: Add mergeable RX buffer support to vhost-net
...ame = NULL, @@ -110,6 +90,7 @@ size_t len, total_len = 0; int err, wmem; struct socket *sock = rcu_dereference(vq->private_data); + if (!sock) return; @@ -166,11 +147,11 @@ /* Skip header. TODO: support TSO. */ msg.msg_iovlen = out; head.iov_len = len = iov_length(vq->iov, out); + /* Sanity check */ if (!len) { vq_err(vq, "Unexpected header len for TX: " - "%zd expected %zd\n", -...
2010 Mar 03
1
[RFC][ PATCH 3/3] vhost-net: Add mergeable RX buffer support to vhost-net
...ame = NULL, @@ -110,6 +90,7 @@ size_t len, total_len = 0; int err, wmem; struct socket *sock = rcu_dereference(vq->private_data); + if (!sock) return; @@ -166,11 +147,11 @@ /* Skip header. TODO: support TSO. */ msg.msg_iovlen = out; head.iov_len = len = iov_length(vq->iov, out); + /* Sanity check */ if (!len) { vq_err(vq, "Unexpected header len for TX: " - "%zd expected %zd\n", -...
2014 Mar 27
1
[PATCH net] vhost: fix total length when packets are too short
...vhost_discard_vq_desc(vq, headcount); @@ -587,6 +593,14 @@ static void handle_rx(struct vhost_net *net) /* On error, stop handling until the next kick. */ if (unlikely(headcount < 0)) break; + /* On overrun, truncate and discard */ + if (unlikely(headcount > UIO_MAXIOV)) { + msg.msg_iovlen = 1; + err = sock->ops->recvmsg(NULL, sock, &msg, + 1, MSG_DONTWAIT | MSG_TRUNC); + pr_debug("Discarded rx packet: len %zd\n", sock_len); + continue; + } /* OK, now we need to know about added descriptors. */ if (!headcount) { if (unlikely(vhost_enable_not...
2014 Mar 27
1
[PATCH net] vhost: fix total length when packets are too short
...vhost_discard_vq_desc(vq, headcount); @@ -587,6 +593,14 @@ static void handle_rx(struct vhost_net *net) /* On error, stop handling until the next kick. */ if (unlikely(headcount < 0)) break; + /* On overrun, truncate and discard */ + if (unlikely(headcount > UIO_MAXIOV)) { + msg.msg_iovlen = 1; + err = sock->ops->recvmsg(NULL, sock, &msg, + 1, MSG_DONTWAIT | MSG_TRUNC); + pr_debug("Discarded rx packet: len %zd\n", sock_len); + continue; + } /* OK, now we need to know about added descriptors. */ if (!headcount) { if (unlikely(vhost_enable_not...
2015 Dec 10
3
[PATCH] Receive multiple packets at a time
..._hdr.msg_name = &from[i].sa; > msg[i].msg_hdr.msg_namelen = sizeof(from[i]); > iov[i].iov_base = &pkt[i].seqno; > iov[i].iov_len = MAXSIZE; > msg[i].msg_hdr.msg_iov = &iov[i]; > msg[i].msg_hdr.msg_iovlen = 1; > msg[i].msg_hdr.msg_control = NULL; > msg[i].msg_hdr.msg_controllen = 0; > } Also, this is interesting. We should either reduce MAX_MSG to, say, 64, or even 16, and/or initialize this array statically (except of iov.iov_len). There's just...
2009 Sep 11
1
[PATCH] guestfish: Redirect stdout when executing remote commands
...== cmptr) { + perror ("malloc"); + exit (1); + } + } + + /* Don't specify a source */ + msg.msg_name = NULL; + msg.msg_namelen = 0; + + /* Initialise the msghdr to receive zero byte */ + iov[0].iov_base = buf; + iov[0].iov_len = 1; + msg.msg_iov = iov; + msg.msg_iovlen = 1; + + /* Initialise the control data */ + msg.msg_control = cmptr; + msg.msg_controllen = controllen; + + /* Read a message from the socket */ + ssize_t n = recvmsg (s, &msg, 0); + if (n < 0) { + perror ("recvmsg stdout fd"); + exit (1); + } + + h = CMSG_FIRS...
2015 Feb 26
4
Call for testing: OpenSSH 6.8
...ontrollen = sizeof(cmsgbuf.buf); + cmsg = CMSG_FIRSTHDR(&msg); cmsg->cmsg_len = CMSG_LEN(sizeof(int)); cmsg->cmsg_level = SOL_SOCKET; cmsg->cmsg_type = SCM_RIGHTS; *(int *)CMSG_DATA(cmsg) = nfd; +#endif - iov.iov_base = &c; - iov.iov_len = 1; - mh.msg_iov = &iov; - mh.msg_iovlen = 1; + vec.iov_base = &ch; + vec.iov_len = 1; + msg.msg_iov = &vec; + msg.msg_iovlen = 1; bzero(&pfd, sizeof(pfd)); pfd.fd = STDOUT_FILENO; for (;;) { - r = sendmsg(STDOUT_FILENO, &mh, 0); + r = sendmsg(STDOUT_FILENO, &msg, 0); if (r == -1) { if (errno == EAGAIN...
2015 Feb 25
2
Call for testing: OpenSSH 6.8
On 24/02/15 21:56, Tim Rice wrote: > On Wed, 25 Feb 2015, Damien Miller wrote: > > | On Tue, 24 Feb 2015, Tom G. Christensen wrote: > | > | > I've switched to HEAD in the git repo and it now builds on Solaris > | > 2.6, 7, 8 and 9 but the testsuite still cannot be built due to the > | > missing <err.h>. > > The err.h issue is fixes but there still
2010 Mar 03
1
[RFC][ PATCH 2/3] vhost-net: handle vnet_hdr processing for MRG_RX_BUF
...msg.msg_iov[1].iov_len -= vq->guest_hlen; + out++; + } + } /* Skip header. TODO: support TSO. */ - s = move_iovec_hdr(vq->iov, vq->hdr, hdr_size, out); msg.msg_iovlen = out; head.iov_len = len = iov_length(vq->iov, out); /* Sanity check */ if (!len) { vq_err(vq, "Unexpected header len for TX: " "%zd expected %zd\n", -...
2010 Mar 03
1
[RFC][ PATCH 2/3] vhost-net: handle vnet_hdr processing for MRG_RX_BUF
...msg.msg_iov[1].iov_len -= vq->guest_hlen; + out++; + } + } /* Skip header. TODO: support TSO. */ - s = move_iovec_hdr(vq->iov, vq->hdr, hdr_size, out); msg.msg_iovlen = out; head.iov_len = len = iov_length(vq->iov, out); /* Sanity check */ if (!len) { vq_err(vq, "Unexpected header len for TX: " "%zd expected %zd\n", -...
2010 Mar 03
1
[RFC][ PATCH 1/3] vhost-net: support multiple buffer heads in receiver
...if (wmem >= sock->sk->sk_sndbuf * 3 / 4) { tx_poll_start(net, sock); @@ -152,7 +151,7 @@ /* Skip header. TODO: support TSO. */ s = move_iovec_hdr(vq->iov, vq->hdr, hdr_size, out); msg.msg_iovlen = out; - len = iov_length(vq->iov, out); + head.iov_len = len = iov_length(vq->iov, out); /* Sanity check */ if (!len) { vq_err(vq, "Unexpected header len for TX: " @@ -163,14 +162,14 @@...
2010 Mar 03
1
[RFC][ PATCH 1/3] vhost-net: support multiple buffer heads in receiver
...if (wmem >= sock->sk->sk_sndbuf * 3 / 4) { tx_poll_start(net, sock); @@ -152,7 +151,7 @@ /* Skip header. TODO: support TSO. */ s = move_iovec_hdr(vq->iov, vq->hdr, hdr_size, out); msg.msg_iovlen = out; - len = iov_length(vq->iov, out); + head.iov_len = len = iov_length(vq->iov, out); /* Sanity check */ if (!len) { vq_err(vq, "Unexpected header len for TX: " @@ -163,14 +162,14 @@...
2009 Nov 04
0
PATCH: fast copy of files in local server mode
...ghdr *control_message = NULL; + char buffer[CMSG_SPACE(sizeof(int))], data[1]; + int ret; + + memset(&message, 0, sizeof(struct msghdr)); + memset(buffer, 0, CMSG_SPACE(sizeof(int))); + + data[0] = 'F'; + iov[0].iov_base = data; + iov[0].iov_len = 1; + + message.msg_iov = iov; + message.msg_iovlen = 1; + + message.msg_control = buffer; + message.msg_controllen = CMSG_SPACE(sizeof(int)); + + control_message = CMSG_FIRSTHDR(&message); + control_message->cmsg_level = SOL_SOCKET; + control_message->cmsg_type = SCM_RIGHTS; + control_message->cmsg_len = CMSG_LEN(sizeof(int)); + + *((i...
2010 Apr 19
2
[PATCH v4] Add mergeable RX bufs support to vhost
...omic_read(&sock->sk->sk_wmem_alloc); @@ -154,20 +154,20 @@ static void handle_tx(struct vhost_net * break; } /* Skip header. TODO: support TSO. */ - s = move_iovec_hdr(vq->iov, vq->hdr, hdr_size, out); + s = move_iovec_hdr(vq->iov, vq->hdr, vhost_hlen, out); msg.msg_iovlen = out; len = iov_length(vq->iov, out); /* Sanity check */ if (!len) { vq_err(vq, "Unexpected header len for TX: " "%zd expected %zd\n", - iov_length(vq->hdr, s), hdr_size); + iov_length(vq->hdr, s), vhost_hlen); break; }...
2010 Apr 19
2
[PATCH v4] Add mergeable RX bufs support to vhost
...omic_read(&sock->sk->sk_wmem_alloc); @@ -154,20 +154,20 @@ static void handle_tx(struct vhost_net * break; } /* Skip header. TODO: support TSO. */ - s = move_iovec_hdr(vq->iov, vq->hdr, hdr_size, out); + s = move_iovec_hdr(vq->iov, vq->hdr, vhost_hlen, out); msg.msg_iovlen = out; len = iov_length(vq->iov, out); /* Sanity check */ if (!len) { vq_err(vq, "Unexpected header len for TX: " "%zd expected %zd\n", - iov_length(vq->hdr, s), hdr_size); + iov_length(vq->hdr, s), vhost_hlen); break; }...
2010 Apr 26
1
[PATCH v6] Add mergeable rx buffer support to vhost_net
...omic_read(&sock->sk->sk_wmem_alloc); @@ -155,20 +155,20 @@ static void handle_tx(struct vhost_net * break; } /* Skip header. TODO: support TSO. */ - s = move_iovec_hdr(vq->iov, vq->hdr, hdr_size, out); + s = move_iovec_hdr(vq->iov, vq->hdr, vhost_hlen, out); msg.msg_iovlen = out; len = iov_length(vq->iov, out); /* Sanity check */ if (!len) { vq_err(vq, "Unexpected header len for TX: " "%zd expected %zd\n", - iov_length(vq->hdr, s), hdr_size); + iov_length(vq->hdr, s), vhost_hlen); break; }...