aboutgitcodebugslistschat
path: root/tcp.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 /tcp.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 'tcp.c')
-rw-r--r--tcp.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/tcp.c b/tcp.c
index e08ffd3..e197a1a 100644
--- a/tcp.c
+++ b/tcp.c
@@ -304,6 +304,7 @@
#include "flow_table.h"
#include "tcp_internal.h"
#include "tcp_buf.h"
+#include "tcp_vu.h"
/* MSS rounding: see SET_MSS() */
#define MSS_DEFAULT 536
@@ -1314,6 +1315,9 @@ int tcp_prepare_flags(const struct ctx *c, struct tcp_tap_conn *conn,
static int tcp_send_flag(const struct ctx *c, struct tcp_tap_conn *conn,
int flags)
{
+ if (c->mode == MODE_VU)
+ return tcp_vu_send_flag(c, conn, flags);
+
return tcp_buf_send_flag(c, conn, flags);
}
@@ -1707,6 +1711,9 @@ static int tcp_sock_consume(const struct tcp_tap_conn *conn, uint32_t ack_seq)
*/
static int tcp_data_from_sock(const struct ctx *c, struct tcp_tap_conn *conn)
{
+ if (c->mode == MODE_VU)
+ return tcp_vu_data_from_sock(c, conn);
+
return tcp_buf_data_from_sock(c, conn);
}