mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 07:13:54 -06:00
sockets: add AF_VSOCK support
Add the AF_VSOCK address family so that qemu-ga will be able to use virtio-vsock. The AF_VSOCK address family uses <cid, port> address tuples. The cid is the unique identifier comparable to an IP address. AF_VSOCK does not use name resolution so it's easy to convert between struct sockaddr_vm and strings. This patch defines a VsockSocketAddress instead of trying to piggy-back on InetSocketAddress. This is cleaner in the long run since it avoids lots of IPv4 vs IPv6 vs vsock special casing. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> * treat trailing commas as garbage when parsing (Eric Blake) * add configure check instead of checking AF_VSOCK directly Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
This commit is contained in:
parent
f06b2031a3
commit
6a02c8069f
3 changed files with 280 additions and 1 deletions
31
configure
vendored
31
configure
vendored
|
@ -4674,6 +4674,33 @@ if compile_prog "" "" ; then
|
|||
have_rtnetlink=yes
|
||||
fi
|
||||
|
||||
##########################################
|
||||
# check for usable AF_VSOCK environment
|
||||
have_af_vsock=no
|
||||
cat > $TMPC << EOF
|
||||
#include <errno.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#if !defined(AF_VSOCK)
|
||||
# error missing AF_VSOCK flag
|
||||
#endif
|
||||
#include <linux/vm_sockets.h>
|
||||
int main(void) {
|
||||
int sock, ret;
|
||||
struct sockaddr_vm svm;
|
||||
socklen_t len = sizeof(svm);
|
||||
sock = socket(AF_VSOCK, SOCK_STREAM, 0);
|
||||
ret = getpeername(sock, (struct sockaddr *)&svm, &len);
|
||||
if ((ret == -1) && (errno == ENOTCONN)) {
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
EOF
|
||||
if compile_prog "" "" ; then
|
||||
have_af_vsock=yes
|
||||
fi
|
||||
|
||||
#################################################
|
||||
# Sparc implicitly links with --relax, which is
|
||||
# incompatible with -r, so --no-relax should be
|
||||
|
@ -5662,6 +5689,10 @@ if test "$replication" = "yes" ; then
|
|||
echo "CONFIG_REPLICATION=y" >> $config_host_mak
|
||||
fi
|
||||
|
||||
if test "$have_af_vsock" = "yes" ; then
|
||||
echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
|
||||
fi
|
||||
|
||||
# Hold two types of flag:
|
||||
# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
|
||||
# a thread we have a handle to
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue