mirror of
https://passt.top/passt
synced 2025-05-24 02:05:33 +02:00
vhost-user: add vhost-user
add virtio and vhost-user functions to connect with QEMU. $ ./passt --vhost-user and # qemu-system-x86_64 ... -m 4G \ -object memory-backend-memfd,id=memfd0,share=on,size=4G \ -numa node,memdev=memfd0 \ -chardev socket,id=chr0,path=/tmp/passt_1.socket \ -netdev vhost-user,id=netdev0,chardev=chr0 \ -device virtio-net,mac=9a:2b:2c:2d:2e:2f,netdev=netdev0 \ ... Signed-off-by: Laurent Vivier <lvivier@redhat.com>
This commit is contained in:
parent
007af94bb9
commit
92fe7e967a
24 changed files with 1412 additions and 54 deletions
9
passt.c
9
passt.c
|
@ -50,6 +50,7 @@
|
|||
#include "log.h"
|
||||
#include "tcp_splice.h"
|
||||
#include "ndp.h"
|
||||
#include "vu_common.h"
|
||||
|
||||
#define EPOLL_EVENTS 8
|
||||
|
||||
|
@ -72,6 +73,8 @@ char *epoll_type_str[] = {
|
|||
[EPOLL_TYPE_TAP_PASTA] = "/dev/net/tun device",
|
||||
[EPOLL_TYPE_TAP_PASST] = "connected qemu socket",
|
||||
[EPOLL_TYPE_TAP_LISTEN] = "listening qemu socket",
|
||||
[EPOLL_TYPE_VHOST_CMD] = "vhost-user command socket",
|
||||
[EPOLL_TYPE_VHOST_KICK] = "vhost-user kick socket",
|
||||
};
|
||||
static_assert(ARRAY_SIZE(epoll_type_str) == EPOLL_NUM_TYPES,
|
||||
"epoll_type_str[] doesn't match enum epoll_type");
|
||||
|
@ -346,6 +349,12 @@ loop:
|
|||
case EPOLL_TYPE_PING:
|
||||
icmp_sock_handler(&c, ref);
|
||||
break;
|
||||
case EPOLL_TYPE_VHOST_CMD:
|
||||
vu_control_handler(c.vdev, c.fd_tap, eventmask);
|
||||
break;
|
||||
case EPOLL_TYPE_VHOST_KICK:
|
||||
vu_kick_cb(c.vdev, ref, &now);
|
||||
break;
|
||||
default:
|
||||
/* Can't happen */
|
||||
ASSERT(0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue