From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39949) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W0pCp-0006yG-P3 for qemu-devel@nongnu.org; Wed, 08 Jan 2014 04:13:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W0pCe-0008B3-Vk for qemu-devel@nongnu.org; Wed, 08 Jan 2014 04:13:42 -0500 Received: from e28smtp06.in.ibm.com ([122.248.162.6]:46906) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W0pCa-00086x-O8 for qemu-devel@nongnu.org; Wed, 08 Jan 2014 04:13:32 -0500 Received: from /spool/local by e28smtp06.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 8 Jan 2014 14:43:15 +0530 Received: from d28relay02.in.ibm.com (d28relay02.in.ibm.com [9.184.220.59]) by d28dlp03.in.ibm.com (Postfix) with ESMTP id 794E81258051 for ; Wed, 8 Jan 2014 14:44:43 +0530 (IST) Received: from d28av01.in.ibm.com (d28av01.in.ibm.com [9.184.220.63]) by d28relay02.in.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id s089D67842860582 for ; Wed, 8 Jan 2014 14:43:06 +0530 Received: from d28av01.in.ibm.com (localhost [127.0.0.1]) by d28av01.in.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id s089DCbe015207 for ; Wed, 8 Jan 2014 14:43:12 +0530 From: Lei Li Date: Wed, 8 Jan 2014 17:12:52 +0800 Message-Id: <1389172376-30636-3-git-send-email-lilei@linux.vnet.ibm.com> In-Reply-To: <1389172376-30636-1-git-send-email-lilei@linux.vnet.ibm.com> References: <1389172376-30636-1-git-send-email-lilei@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH 2/6] qemu-bridge-helper: replace send_fd with qemu_send_with_fd List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: pbonzini@redhat.com, mohan@in.ibm.com, Lei Li Signed-off-by: Lei Li --- Makefile | 2 +- qemu-bridge-helper.c | 31 +++---------------------------- 2 files changed, 4 insertions(+), 29 deletions(-) diff --git a/Makefile b/Makefile index bdff4e4..6850f35 100644 --- a/Makefile +++ b/Makefile @@ -195,7 +195,7 @@ qemu-img$(EXESUF): qemu-img.o $(block-obj-y) libqemuutil.a libqemustub.a qemu-nbd$(EXESUF): qemu-nbd.o $(block-obj-y) libqemuutil.a libqemustub.a qemu-io$(EXESUF): qemu-io.o $(block-obj-y) libqemuutil.a libqemustub.a -qemu-bridge-helper$(EXESUF): qemu-bridge-helper.o +qemu-bridge-helper$(EXESUF): qemu-bridge-helper.o libqemuutil.a fsdev/virtfs-proxy-helper$(EXESUF): fsdev/virtfs-proxy-helper.o fsdev/virtio-9p-marshal.o libqemuutil.a libqemustub.a fsdev/virtfs-proxy-helper$(EXESUF): LIBS += -lcap diff --git a/qemu-bridge-helper.c b/qemu-bridge-helper.c index 6a0974e..8303b6b 100644 --- a/qemu-bridge-helper.c +++ b/qemu-bridge-helper.c @@ -40,6 +40,7 @@ #endif #include "qemu/queue.h" +#include "qemu/fd-exchange.h" #include "net/tap-linux.h" @@ -174,33 +175,6 @@ static void prep_ifreq(struct ifreq *ifr, const char *ifname) snprintf(ifr->ifr_name, IFNAMSIZ, "%s", ifname); } -static int send_fd(int c, int fd) -{ - char msgbuf[CMSG_SPACE(sizeof(fd))]; - struct msghdr msg = { - .msg_control = msgbuf, - .msg_controllen = sizeof(msgbuf), - }; - struct cmsghdr *cmsg; - struct iovec iov; - char req[1] = { 0x00 }; - - cmsg = CMSG_FIRSTHDR(&msg); - cmsg->cmsg_level = SOL_SOCKET; - cmsg->cmsg_type = SCM_RIGHTS; - cmsg->cmsg_len = CMSG_LEN(sizeof(fd)); - msg.msg_controllen = cmsg->cmsg_len; - - iov.iov_base = req; - iov.iov_len = sizeof(req); - - msg.msg_iov = &iov; - msg.msg_iovlen = 1; - memcpy(CMSG_DATA(cmsg), &fd, sizeof(fd)); - - return sendmsg(c, &msg, 0); -} - #ifdef CONFIG_LIBCAP static int drop_privileges(void) { @@ -239,6 +213,7 @@ int main(int argc, char **argv) ACLList acl_list; int access_allowed, access_denied; int ret = EXIT_SUCCESS; + char req[1] = { 0x00 }; #ifdef CONFIG_LIBCAP /* if we're run from an suid binary, immediately drop privileges preserving @@ -424,7 +399,7 @@ int main(int argc, char **argv) } /* write fd to the domain socket */ - if (send_fd(unixfd, fd) == -1) { + if (qemu_send_with_fd(unixfd, fd, &req, sizeof(req)) == -1) { fprintf(stderr, "failed to write fd to unix socket: %s\n", strerror(errno)); ret = EXIT_FAILURE; -- 1.7.7.6