aboutgitcodebugslistschat
path: root/passt.c
diff options
context:
space:
mode:
authorLaurent Vivier <lvivier@redhat.com>2024-11-22 17:43:34 +0100
committerStefano Brivio <sbrivio@redhat.com>2024-11-27 16:47:32 +0100
commit28997fcb29b560fc0dcfd91bad5eece3ded5eb72 (patch)
tree34aad38ecc628c37bb88413a3c809498c45ae9cb /passt.c
parentb2e62f7e85ac77a91daf5d77b7f32198ef0e59c2 (diff)
downloadpasst-28997fcb29b560fc0dcfd91bad5eece3ded5eb72.tar
passt-28997fcb29b560fc0dcfd91bad5eece3ded5eb72.tar.gz
passt-28997fcb29b560fc0dcfd91bad5eece3ded5eb72.tar.bz2
passt-28997fcb29b560fc0dcfd91bad5eece3ded5eb72.tar.lz
passt-28997fcb29b560fc0dcfd91bad5eece3ded5eb72.tar.xz
passt-28997fcb29b560fc0dcfd91bad5eece3ded5eb72.tar.zst
passt-28997fcb29b560fc0dcfd91bad5eece3ded5eb72.zip
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> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> [sbrivio: as suggested by lvivier, include <netinet/if_ether.h> before including <linux/if_ether.h> as C libraries such as musl __UAPI_DEF_ETHHDR in <netinet/if_ether.h> if they already have a definition of struct ethhdr] Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'passt.c')
-rw-r--r--passt.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/passt.c b/passt.c
index 8a37407..957f3d0 100644
--- a/passt.c
+++ b/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");
@@ -347,6 +350,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);