mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-18 00:10:04 +00:00
emulators/qemu52: Moved to emulators/qemu5
- Has been updated to 5.2.0. - This is the last version of 5.X.X branch of qemu and part of updating emulators/qemu to latest 6.X.X branch. - Added a stripped down version of qemu5-nox11 with FLAVORS - Removed some reference to oszoo.org which no longer hosts qemu images and is totally an irrelevent site
This commit is contained in:
parent
1606be25e2
commit
05ef481d14
1
MOVED
1
MOVED
@ -16598,3 +16598,4 @@ astro/boinc-astropulse||2021-11-04|boinc-setiathome removed, no longer needed
|
||||
multimedia/celluloid-devel|multimedia/celluloid|2021-11-05|Out of date: use multimedia/celluloid for now
|
||||
devel/zmusic|audio/zmusic|2021-11-10|Category change
|
||||
emulators/i386-wine-devel||2021-11-16|Removed: obsolete, emulators/wine-devel provides i386 support
|
||||
emulators/qemu52|emulators/qemu5|2021-11-16|Has expired
|
||||
|
19
UPDATING
19
UPDATING
@ -5,6 +5,25 @@ they are unavoidable.
|
||||
You should get into the habit of checking this file for changes each time
|
||||
you update your ports collection, before attempting any port upgrades.
|
||||
|
||||
20201116:
|
||||
AFFECTS: users of emulators/qemu50
|
||||
AUTHOR: bofh@FreeBSD.org
|
||||
|
||||
emulators/qemu50 has been moved to emulators/qemu5 and updated to 5.2.0
|
||||
which is the last version from 5.X.X branch. This is done in preparation
|
||||
of updating emulators/qemu into latest 6.X bgranch. If someone wants to
|
||||
stick with 5.X.X branch please use one of the following command:
|
||||
|
||||
# pkg install qemu5
|
||||
or
|
||||
# portmaster -o emulators/qemu50 emulators/qemu5
|
||||
|
||||
This version also introduces a stripped nox11 version which can be
|
||||
installed with:
|
||||
# pkg install qemu5-nox11
|
||||
or
|
||||
# portmaster emulators/qemu5@nox11
|
||||
|
||||
20211115:
|
||||
AFFECTS: AFFECTS: users of *-emacs2x-* packages
|
||||
AUTHOR: jrm@FreeBSD.org
|
||||
|
@ -110,7 +110,7 @@
|
||||
SUBDIR += qemu-utils
|
||||
SUBDIR += qemu41
|
||||
SUBDIR += qemu42
|
||||
SUBDIR += qemu50
|
||||
SUBDIR += qemu5
|
||||
SUBDIR += qmc2
|
||||
SUBDIR += quasi88
|
||||
SUBDIR += riscv-isa-sim
|
||||
|
@ -1,114 +1,119 @@
|
||||
# Created by: Juergen Lock <nox@jelal.kn-bremen.de>
|
||||
|
||||
PORTNAME= qemu
|
||||
PORTVERSION= 5.0.0
|
||||
PORTREVISION= 1
|
||||
DISTVERSION= 5.2.0
|
||||
CATEGORIES= emulators
|
||||
PKGNAMESUFFIX= 5
|
||||
MASTER_SITES= https://download.qemu.org/
|
||||
PKGNAMESUFFIX= 50
|
||||
DIST_SUBDIR= qemu/${PORTVERSION}
|
||||
|
||||
PATCH_SITES= https://github.com/${PORTNAME}/${PORTNAME}/commit/
|
||||
|
||||
MAINTAINER= bofh@FreeBSD.org
|
||||
COMMENT= QEMU CPU Emulator - 5.0.X branch
|
||||
COMMENT= QEMU CPU Emulator - 5.X.X branch
|
||||
|
||||
LICENSE= GPLv2
|
||||
|
||||
ONLY_FOR_ARCHS= amd64 i386 powerpc powerpc64 powerpc64le
|
||||
ONLY_FOR_ARCHS= i386 amd64 powerpc powerpc64 powerpc64 powerpc64le
|
||||
|
||||
BUILD_DEPENDS= sphinx-build:textproc/py-sphinx \
|
||||
bash:shells/bash
|
||||
LIB_DEPENDS= libnettle.so:security/nettle \
|
||||
libfontconfig.so:x11-fonts/fontconfig \
|
||||
libfreetype.so:print/freetype2 \
|
||||
libepoxy.so:graphics/libepoxy \
|
||||
libpcre2-8.so:devel/pcre2
|
||||
libpcre2-8.so:devel/pcre2 \
|
||||
libzstd.so:archivers/zstd
|
||||
|
||||
USES= bison compiler:c11 cpe gmake gnome iconv:wchar_t perl5 \
|
||||
FLAVORS= default nox11
|
||||
default_CONFLICTS_INSTALL= qemu*
|
||||
nox11_PKGNAMESUFFIX= 5-nox11
|
||||
nox11_CONFLICTS_INSTALL= qemu*
|
||||
nox11_COMMENT= (without X11)
|
||||
|
||||
USES= bison compiler:c11 cpe gmake gnome iconv:wchar_t ninja perl5 \
|
||||
pkgconfig python:build tar:xz xorg
|
||||
USE_GNOME= cairo glib20 libxml2
|
||||
USE_PERL5= build
|
||||
USE_PYTHON= distutils noflavors
|
||||
USE_XORG= pixman
|
||||
|
||||
PATCHFILES+= 55765822804f.patch:-p1
|
||||
PATCHFILES+= aa4d30f6618d.patch:-p1
|
||||
|
||||
#BROKEN_powerpc64= fails to compile: In function aio_bh_poll: internal compiler error: Segmentation fault
|
||||
|
||||
#.if !defined(PKGNAMESUFFIX) || (${PKGNAMESUFFIX} != "-utils" && ${PKGNAMESUFFIX} != "-guest-agent")
|
||||
#.endif
|
||||
|
||||
HAS_CONFIGURE= yes
|
||||
MAKE_ENV+= BSD_MAKE="${MAKE}" V=1
|
||||
|
||||
OPTIONS_DEFINE= SAMBA X11 GTK3 OPENGL GNUTLS SASL JPEG PNG CURL \
|
||||
VDE CDROM_DMA PCAP USBREDIR X86_TARGETS \
|
||||
STATIC_LINK DOCS NCURSES
|
||||
SAMBA_DESC= samba dependency (for -smb)
|
||||
GNUTLS_DESC= gnutls dependency (vnc encryption)
|
||||
SASL_DESC= cyrus-sasl dependency (vnc encryption)
|
||||
JPEG_DESC= jpeg dependency (vnc lossy compression)
|
||||
PNG_DESC= png dependency (vnc compression)
|
||||
CDROM_DMA_DESC= IDE CDROM DMA
|
||||
PCAP_DESC= pcap dependency (networking with bpf)
|
||||
USBREDIR_DESC= usb device network redirection (experimental!)
|
||||
X86_TARGETS_DESC= Build only x86 system targets
|
||||
STATIC_LINK_DESC= Statically link the executables
|
||||
VDE_DESC= vde dependency (for vde networking)
|
||||
OPTIONS_DEFAULT=X11 GTK3 OPENGL GNUTLS SASL JPEG PNG CDROM_DMA CURL PCAP NCURSES VDE
|
||||
PORTSCOUT= limit:^5\.
|
||||
|
||||
OPTIONS_SINGLE= NCURSES
|
||||
OPTIONS_SINGLE_NCURSES= NCURSES_DEFAULT NCURSES_BASE NCURSES_PORT
|
||||
OPTIONS_DEFINE= SAMBA X11 GTK3 OPENGL GNUTLS SASL JPEG PNG CURL VDE \
|
||||
CDROM_DMA USBREDIR X86_TARGETS STATIC_LINK DOCS CAPSTONE
|
||||
OPTIONS_DEFAULT=X11 GTK3 OPENGL GNUTLS SASL JPEG PNG CDROM_DMA CURL NCURSES_DEFAULT VDE \
|
||||
CAPSTONE
|
||||
.if ${FLAVOR:U} == nox11
|
||||
OPTIONS_EXCLUDE:= GTK3 X11
|
||||
.endif
|
||||
OPTIONS_SUB= yes
|
||||
X11_USE= SDL=sdl2 XORG=x11,xext GNOME=gdkpixbuf2
|
||||
X11_USES= sdl
|
||||
X11_CONFIGURE_ENABLE= sdl
|
||||
CAPSTONE_DESC= Disassembly framework support
|
||||
CDROM_DMA_DESC= IDE CDROM DMA
|
||||
GNUTLS_DESC= gnutls dependency (vnc encryption)
|
||||
JPEG_DESC= jpeg dependency (vnc lossy compression)
|
||||
NCURSES_DEFAULT_DESC= Depend on ncurses (ports if installed, otherwise base)
|
||||
NCURSES_BASE_DESC= Depend on ncurses in base
|
||||
NCURSES_PORT_DESC= Depend on devel/ncurses in ports
|
||||
PNG_DESC= png dependency (vnc compression)
|
||||
SAMBA_DESC= samba dependency (for -smb)
|
||||
SASL_DESC= cyrus-sasl dependency (vnc encryption)
|
||||
STATIC_LINK_DESC= Statically link the executables
|
||||
USBREDIR_DESC= usb device network redirection (experimental!)
|
||||
VDE_DESC= vde dependency (for vde networking)
|
||||
X86_TARGETS_DESC= Build only x86 system targets
|
||||
CAPSTONE_CONFIGURE_ON= --enable-capstone=system --extra-cflags=-I${LOCALBASE}/include/capstone
|
||||
CAPSTONE_CONFIGURE_OFF= --disable-capstone
|
||||
CAPSTONE_LIB_DEPENDS= libcapstone.so:devel/capstone4
|
||||
CURL_CONFIGURE_OFF= --disable-curl
|
||||
CURL_LIB_DEPENDS= libcurl.so:ftp/curl
|
||||
DOCS_CONFIGURE_ENABLE= docs
|
||||
DOCS_USES= makeinfo
|
||||
GNUTLS_CONFIGURE_OFF= --disable-gnutls
|
||||
GNUTLS_LIB_DEPENDS= libgnutls.so:security/gnutls
|
||||
GTK3_CONFIGURE_OFF= --disable-gtk --disable-vte
|
||||
GTK3_LIB_DEPENDS= libxkbcommon.so:x11/libxkbcommon
|
||||
GTK3_USE= GNOME=gdkpixbuf2,gtk30,vte3 XORG=x11,xext
|
||||
GTK3_USES= gettext gl
|
||||
GTK3_CONFIGURE_OFF= --disable-gtk --disable-vte
|
||||
GNUTLS_LIB_DEPENDS= libgnutls.so:security/gnutls
|
||||
GNUTLS_CONFIGURE_OFF= --disable-gnutls
|
||||
SASL_LIB_DEPENDS= libsasl2.so:security/cyrus-sasl2
|
||||
SASL_CONFIGURE_OFF= --disable-vnc-sasl
|
||||
JPEG_USES= jpeg
|
||||
JPEG_CONFIGURE_OFF= --disable-vnc-jpeg
|
||||
PNG_LIB_DEPENDS= libpng.so:graphics/png
|
||||
PNG_CONFIGURE_OFF= --disable-vnc-png
|
||||
CURL_LIB_DEPENDS= libcurl.so:ftp/curl
|
||||
CURL_CONFIGURE_OFF= --disable-curl
|
||||
JPEG_USES= jpeg
|
||||
NCURSES_DEFAULT_USES= ncurses
|
||||
NCURSES_BASE_USES= ncurses:base
|
||||
NCURSES_PORT_USES= ncurses:port
|
||||
OPENGL_CONFIGURE_OFF= --disable-opengl
|
||||
OPENGL_USE= GL=gl
|
||||
OPENGL_USES= gl
|
||||
OPENGL_CONFIGURE_OFF= --disable-opengl
|
||||
USBREDIR_BUILD_DEPENDS= usbredir>=0.6:net/usbredir
|
||||
USBREDIR_RUN_DEPENDS= usbredir>=0.6:net/usbredir
|
||||
USBREDIR_CONFIGURE_OFF= --disable-usb-redir
|
||||
PCAP_CONFIGURE_ON= --enable-pcap
|
||||
#PCAP_EXTRA_PATCHES= ${FILESDIR}/pcap-patch-qapi_net.json ${FILESDIR}/pcap-patch-net_net.c \
|
||||
# ${FILESDIR}/pcap-patch-net_clients.h
|
||||
VDE_LIB_DEPENDS= libvdeplug.so:net/vde2
|
||||
VDE_CONFIGURE_OFF= --disable-vde
|
||||
PNG_CONFIGURE_OFF= --disable-vnc-png
|
||||
PNG_LIB_DEPENDS= libpng.so:graphics/png
|
||||
SAMBA_CONFIGURE_ON= --smbd=${LOCALBASE}/sbin/smbd
|
||||
SASL_CONFIGURE_OFF= --disable-vnc-sasl
|
||||
SAMBA_USES= samba:run # smbd
|
||||
SASL_LIB_DEPENDS= libsasl2.so:security/cyrus-sasl2
|
||||
STATIC_LINK_CONFIGURE_ON= --static
|
||||
STATIC_LINK_PREVENTS= GTK3 X11
|
||||
STATIC_LINK_PREVENTS_MSG= X11 ui cannot be built static
|
||||
NCURSES_USES= ncurses:base
|
||||
SAMBA_USES= samba:run # smbd
|
||||
SAMBA_CONFIGURE_ON= --smbd=${LOCALBASE}/sbin/smbd
|
||||
DOCS_BUILD_DEPENDS= texi2html:textproc/texi2html \
|
||||
sphinx-build:textproc/py-sphinx
|
||||
DOCS_USES= makeinfo
|
||||
DOCS_MAKE_ARGS_OFF= NOPORTDOCS=1
|
||||
USBREDIR_BUILD_DEPENDS= usbredir>=0.6:net/usbredir
|
||||
USBREDIR_CONFIGURE_OFF= --disable-usb-redir
|
||||
USBREDIR_RUN_DEPENDS= usbredir>=0.6:net/usbredir
|
||||
VDE_CONFIGURE_OFF= --disable-vde
|
||||
VDE_LIB_DEPENDS= libvdeplug.so:net/vde2
|
||||
X11_CONFIGURE_ENABLE= sdl
|
||||
X11_USE= SDL=sdl2 XORG=x11,xext GNOME=gdkpixbuf2
|
||||
X11_USES= sdl
|
||||
|
||||
PORTDOCS= docs index.html interop/.buildinfo interop/* qemu-ga-ref.html qemu-ga-ref.txt \
|
||||
qemu-qmp-ref.html qemu-qmp-ref.txt specs/.buildinfo specs/* system/.buildinfo \
|
||||
system/* tools/.buildinfo tools/* user/.buildinfo user/*
|
||||
PORTDOCS= docs index.html interop/.buildinfo interop/* \
|
||||
specs/.buildinfo specs/* system/.buildinfo system/* \
|
||||
tools/.buildinfo tools/* user/.buildinfo user/*
|
||||
|
||||
WITHOUT_CPU_CFLAGS=yes #to avoid problems with register allocation
|
||||
CFLAGS:= ${CFLAGS:C/-fno-tree-vrp//}
|
||||
CFLAGS_amd64= -fPIC
|
||||
CFLAGS_powerpc= -D_CALL_SYSV
|
||||
CONFIGURE_ARGS= --localstatedir=/var \
|
||||
CONFIGURE_ARGS= --localstatedir=/var --extra-ldflags=-L\"/usr/lib\" \
|
||||
--extra-ldflags=-L\"${LOCALBASE}/lib\" --enable-debug \
|
||||
--prefix=${PREFIX} --cc=${CC} --enable-netmap --enable-docs --disable-kvm \
|
||||
--prefix=${PREFIX} --cc=${CC} --enable-netmap --disable-kvm \
|
||||
--disable-linux-user --disable-linux-aio --disable-xen \
|
||||
--enable-debug-info --python=${PYTHON_CMD} \
|
||||
--extra-cflags=-I${WRKSRC}\ -I${LOCALBASE}/include\ -DPREFIX=\\\"\"${PREFIX}\\\"\"
|
||||
INSTALLS_ICONS= yes
|
||||
|
||||
.include <bsd.port.options.mk>
|
||||
|
||||
@ -122,7 +127,6 @@ MAKE_ARGS+= ARCH=x86_64
|
||||
|
||||
.if ${ARCH} == "powerpc"
|
||||
MAKE_ARGS+= ARCH=ppc
|
||||
USE_GCC= yes
|
||||
.endif
|
||||
|
||||
.if ${ARCH} == "powerpc64"
|
||||
@ -135,28 +139,15 @@ CONFIGURE_ARGS+= --sparc_cpu=v9
|
||||
|
||||
PLIST_SUB+= LINUXBOOT_DMA=""
|
||||
|
||||
# -lprocstat actually only _needs_ -lelf after r249666 or r250870 (MFC)
|
||||
# but it shouldn't matter much
|
||||
post-patch:
|
||||
# @${REINPLACE_CMD} -e '/LIBS/s|-lprocstat|-lprocstat -lelf|' \
|
||||
# -e '/libusb/s/ --atleast-version=1\.0\.[0-9]*//' \
|
||||
# ${WRKSRC}/configure
|
||||
# @${REINPLACE_CMD} -E \
|
||||
# -e "s|^(CFLAGS=).*|\1${CFLAGS} -fno-strict-aliasing -I.|" \
|
||||
# -e "s|^(LDFLAGS=).*|\1${LDFLAGS}|" \
|
||||
# ${WRKSRC}/Makefile
|
||||
|
||||
post-patch-CDROM_DMA-off:
|
||||
@${REINPLACE_CMD} -e '/USE_DMA_CDROM/d' ${WRKSRC}/include/hw/ide/internal.h
|
||||
|
||||
# XXX need to disable usb host code on head while it's not ported to the
|
||||
# new usb stack yet
|
||||
post-configure:
|
||||
@${REINPLACE_CMD} -E \
|
||||
-e "s|^(HOST_USB=)bsd|\1stub|" \
|
||||
${WRKSRC}/config-host.mak
|
||||
do-build:
|
||||
cd ${WRKSRC} && ${GMAKE}
|
||||
|
||||
do-install:
|
||||
cd ${WRKSRC} && ${SETENV} DESTDIR=${STAGEDIR} ${GMAKE} install
|
||||
|
||||
.if !target(post-install)
|
||||
post-install:
|
||||
${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifup.sample ${STAGEDIR}${PREFIX}/etc
|
||||
${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifdown.sample ${STAGEDIR}${PREFIX}/etc
|
||||
@ -164,6 +155,5 @@ post-install:
|
||||
|
||||
post-install-DOCS-on:
|
||||
@(cd ${WRKSRC} && ${COPYTREE_SHARE} docs ${STAGEDIR}${DOCSDIR}/)
|
||||
.endif
|
||||
|
||||
.include <bsd.port.mk>
|
3
emulators/qemu5/distinfo
Normal file
3
emulators/qemu5/distinfo
Normal file
@ -0,0 +1,3 @@
|
||||
TIMESTAMP = 1621458334
|
||||
SHA256 (qemu/5.2.0/qemu-5.2.0.tar.xz) = cb18d889b628fbe637672b0326789d9b0e3b8027e0445b936537c78549df17bc
|
||||
SIZE (qemu/5.2.0/qemu-5.2.0.tar.xz) = 106902800
|
45
emulators/qemu5/files/patch-configure
Normal file
45
emulators/qemu5/files/patch-configure
Normal file
@ -0,0 +1,45 @@
|
||||
--- configure.orig 2020-12-08 16:59:44 UTC
|
||||
+++ configure
|
||||
@@ -1545,7 +1545,7 @@ if test "$mingw32" = "yes" ; then
|
||||
sysconfdir="$prefix"
|
||||
local_statedir="$prefix"
|
||||
else
|
||||
- mandir="${mandir:-$prefix/share/man}"
|
||||
+ mandir="${mandir:-$prefix/man}"
|
||||
datadir="${datadir:-$prefix/share}"
|
||||
docdir="${docdir:-$prefix/share/doc}"
|
||||
bindir="${bindir:-$prefix/bin}"
|
||||
@@ -3114,6 +3114,14 @@ if check_include "sys/signal.h" ; then
|
||||
fi
|
||||
|
||||
##########################################
|
||||
+# getifaddrs (for tests/test-io-channel-socket )
|
||||
+
|
||||
+have_ifaddrs_h=yes
|
||||
+if ! check_include "ifaddrs.h" ; then
|
||||
+ have_ifaddrs_h=no
|
||||
+fi
|
||||
+
|
||||
+##########################################
|
||||
# VTE probe
|
||||
|
||||
if test "$vte" != "no"; then
|
||||
@@ -4538,7 +4546,7 @@ fi
|
||||
|
||||
# check for libusb
|
||||
if test "$libusb" != "no" ; then
|
||||
- if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
|
||||
+ if $pkg_config libusb-1.0; then
|
||||
libusb="yes"
|
||||
libusb_cflags=$($pkg_config --cflags libusb-1.0)
|
||||
libusb_libs=$($pkg_config --libs libusb-1.0)
|
||||
@@ -6225,6 +6233,9 @@ fi
|
||||
# if this macro is set.
|
||||
if test "$have_fsxattr" = "yes" ; then
|
||||
echo "HAVE_FSXATTR=y" >> $config_host_mak
|
||||
+fi
|
||||
+if test "$have_ifaddrs_h" = "yes" ; then
|
||||
+ echo "HAVE_IFADDRS_H=y" >> $config_host_mak
|
||||
fi
|
||||
if test "$have_copy_file_range" = "yes" ; then
|
||||
echo "HAVE_COPY_FILE_RANGE=y" >> $config_host_mak
|
@ -1,7 +0,0 @@
|
||||
TIMESTAMP = 1595103965
|
||||
SHA256 (qemu/5.0.0/qemu-5.0.0.tar.xz) = 2f13a92a0fa5c8b69ff0796b59b86b080bbb92ebad5d301a7724dd06b5e78cb6
|
||||
SIZE (qemu/5.0.0/qemu-5.0.0.tar.xz) = 62426192
|
||||
SHA256 (qemu/5.0.0/55765822804f.patch) = 10c2cc93ad01b02d854e26a9e445ba22bb5434dda1ef25baeb979be6292fa8ef
|
||||
SIZE (qemu/5.0.0/55765822804f.patch) = 2271
|
||||
SHA256 (qemu/5.0.0/aa4d30f6618d.patch) = eeddc5f5e08a460d2c133b4193d115fa1f00f206e0833f33ec66379981473efe
|
||||
SIZE (qemu/5.0.0/aa4d30f6618d.patch) = 2211
|
@ -1,166 +0,0 @@
|
||||
--- configure.orig 2020-04-28 16:49:25 UTC
|
||||
+++ configure
|
||||
@@ -408,7 +408,7 @@ LDFLAGS_SHARED="-shared"
|
||||
modules="no"
|
||||
module_upgrades="no"
|
||||
prefix="/usr/local"
|
||||
-mandir="\${prefix}/share/man"
|
||||
+mandir="\${prefix}/man"
|
||||
datadir="\${prefix}/share"
|
||||
firmwarepath="\${prefix}/share/qemu-firmware"
|
||||
qemu_docdir="\${prefix}/share/doc/qemu"
|
||||
@@ -493,6 +493,9 @@ numa=""
|
||||
tcmalloc="no"
|
||||
jemalloc="no"
|
||||
replication="yes"
|
||||
+pcap="no"
|
||||
+pcap_create="no"
|
||||
+bpf="no"
|
||||
vxhs=""
|
||||
bochs="yes"
|
||||
cloop="yes"
|
||||
@@ -1168,6 +1171,10 @@ for opt do
|
||||
;;
|
||||
--enable-vnc-png) vnc_png="yes"
|
||||
;;
|
||||
+ --enable-pcap) pcap="yes"
|
||||
+ ;;
|
||||
+ --disable-pcap) pcap="no"
|
||||
+ ;;
|
||||
--disable-slirp) slirp="no"
|
||||
;;
|
||||
--enable-slirp=git) slirp="git"
|
||||
@@ -3137,6 +3144,14 @@ if ! check_include "ifaddrs.h" ; then
|
||||
fi
|
||||
|
||||
##########################################
|
||||
+# getifaddrs (for tests/test-io-channel-socket )
|
||||
+
|
||||
+have_ifaddrs_h=yes
|
||||
+if ! check_include "ifaddrs.h" ; then
|
||||
+ have_ifaddrs_h=no
|
||||
+fi
|
||||
+
|
||||
+##########################################
|
||||
# VTE probe
|
||||
|
||||
if test "$vte" != "no"; then
|
||||
@@ -3806,7 +3821,7 @@ for i in $glib_modules; do
|
||||
glib_libs=$($pkg_config --libs $i)
|
||||
QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS"
|
||||
LIBS="$glib_libs $LIBS"
|
||||
- libs_qga="$glib_libs $libs_qga"
|
||||
+ libs_qga="$glib_libs -lintl $libs_qga"
|
||||
else
|
||||
error_exit "glib-$glib_req_ver $i is required to compile QEMU"
|
||||
fi
|
||||
@@ -4957,14 +4972,6 @@ if test "$docs" != "no" ; then
|
||||
fi
|
||||
if has makeinfo && has pod2man && test "$sphinx_ok" = "yes"; then
|
||||
docs=yes
|
||||
- else
|
||||
- if test "$docs" = "yes" ; then
|
||||
- if has $sphinx_build && test "$sphinx_ok" != "yes"; then
|
||||
- echo "Warning: $sphinx_build exists but it is either too old or uses too old a Python version" >&2
|
||||
- fi
|
||||
- feature_not_found "docs" "Install texinfo, Perl/perl-podlators and a Python 3 version of python-sphinx"
|
||||
- fi
|
||||
- docs=no
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -5098,7 +5105,7 @@ fi
|
||||
|
||||
# check for libusb
|
||||
if test "$libusb" != "no" ; then
|
||||
- if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
|
||||
+ if $pkg_config libusb-1.0; then
|
||||
libusb="yes"
|
||||
libusb_cflags=$($pkg_config --cflags libusb-1.0)
|
||||
libusb_libs=$($pkg_config --libs libusb-1.0)
|
||||
@@ -5501,7 +5508,51 @@ if test "$debug_stack_usage" = "yes"; then
|
||||
fi
|
||||
fi
|
||||
|
||||
+##########################################
|
||||
+# pcap probe
|
||||
|
||||
+if test "$pcap" = "yes" -a "$pcap" != "no"; then
|
||||
+ cat > $TMPC << EOF
|
||||
+#include <pcap.h>
|
||||
+int main(void) { return (pcap_lib_version() == (char *)0 ? 1 : 0); }
|
||||
+EOF
|
||||
+ if test "$mingw32" = "no" ; then
|
||||
+ libpcap=-lpcap
|
||||
+ else
|
||||
+ libpcap=-lwpcap
|
||||
+ fi
|
||||
+ if compile_prog "" "$libpcap" ; then
|
||||
+ :
|
||||
+ else
|
||||
+ echo
|
||||
+ echo "Error: Could not find pcap"
|
||||
+ echo "Make sure to have the pcap libs and headers installed."
|
||||
+ echo
|
||||
+ exit 1
|
||||
+ fi
|
||||
+ cat > $TMPC << EOF
|
||||
+#include <pcap.h>
|
||||
+int main(void)
|
||||
+{
|
||||
+ char errbuf[PCAP_ERRBUF_SIZE];
|
||||
+ return (pcap_create("foo", errbuf) == (pcap_t *)0 ? 1 : 0);
|
||||
+}
|
||||
+EOF
|
||||
+ if compile_prog "" "$libpcap" ; then
|
||||
+ pcap_create="yes"
|
||||
+ fi
|
||||
+ cat > $TMPC << EOF
|
||||
+#define PCAP_DONT_INCLUDE_PCAP_BPF_H
|
||||
+#include <pcap.h>
|
||||
+#include <net/bpf.h>
|
||||
+int main(void) { return (BPF_MAJOR_VERSION); }
|
||||
+EOF
|
||||
+ if compile_prog ; then
|
||||
+ bpf="yes"
|
||||
+ fi
|
||||
+ libs_softmmu="$libpcap $libs_softmmu"
|
||||
+fi # test "$pcap"
|
||||
+
|
||||
##########################################
|
||||
# check if we have open_by_handle_at
|
||||
|
||||
@@ -6627,6 +6678,7 @@ echo "Audio drivers $audio_drv_list"
|
||||
echo "Block whitelist (rw) $block_drv_rw_whitelist"
|
||||
echo "Block whitelist (ro) $block_drv_ro_whitelist"
|
||||
echo "VirtFS support $virtfs"
|
||||
+echo "pcap support $pcap"
|
||||
echo "Multipath support $mpath"
|
||||
echo "VNC support $vnc"
|
||||
if test "$vnc" = "yes" ; then
|
||||
@@ -6864,6 +6916,15 @@ fi
|
||||
if test "$want_tools" = "yes" ; then
|
||||
echo "CONFIG_TOOLS=y" >> $config_host_mak
|
||||
fi
|
||||
+if test "$pcap" = "yes" ; then
|
||||
+ echo "CONFIG_PCAP=y" >> $config_host_mak
|
||||
+ if test "$pcap_create" = "yes" ; then
|
||||
+ echo "CONFIG_PCAP_CREATE=y" >> $config_host_mak
|
||||
+ fi
|
||||
+ if test "$bpf" = "yes" ; then
|
||||
+ echo "CONFIG_BPF=y" >> $config_host_mak
|
||||
+ fi
|
||||
+fi
|
||||
if test "$slirp" != "no"; then
|
||||
echo "CONFIG_SLIRP=y" >> $config_host_mak
|
||||
echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
|
||||
@@ -7120,6 +7181,9 @@ fi
|
||||
# if this macro is set.
|
||||
if test "$have_fsxattr" = "yes" ; then
|
||||
echo "HAVE_FSXATTR=y" >> $config_host_mak
|
||||
+fi
|
||||
+if test "$have_ifaddrs_h" = "yes" ; then
|
||||
+ echo "HAVE_IFADDRS_H=y" >> $config_host_mak
|
||||
fi
|
||||
if test "$have_copy_file_range" = "yes" ; then
|
||||
echo "HAVE_COPY_FILE_RANGE=y" >> $config_host_mak
|
@ -1,13 +0,0 @@
|
||||
--- include/net/net.h.orig 2020-04-28 16:49:24 UTC
|
||||
+++ include/net/net.h
|
||||
@@ -208,8 +208,8 @@ void netdev_add(QemuOpts *opts, Error **errp);
|
||||
int net_hub_id_for_client(NetClientState *nc, int *id);
|
||||
NetClientState *net_hub_port_find(int hub_id);
|
||||
|
||||
-#define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup"
|
||||
-#define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown"
|
||||
+#define DEFAULT_NETWORK_SCRIPT PREFIX "/etc/qemu-ifup"
|
||||
+#define DEFAULT_NETWORK_DOWN_SCRIPT PREFIX "/etc/qemu-ifdown"
|
||||
#define DEFAULT_BRIDGE_HELPER CONFIG_QEMU_HELPERDIR "/qemu-bridge-helper"
|
||||
#define DEFAULT_BRIDGE_INTERFACE "br0"
|
||||
|
@ -1,41 +0,0 @@
|
||||
--- include/qemu/atomic.h.orig 2020-04-28 16:49:24 UTC
|
||||
+++ include/qemu/atomic.h
|
||||
@@ -228,10 +228,12 @@
|
||||
/* And even shorter names that return void. */
|
||||
#define atomic_inc(ptr) ((void) __atomic_fetch_add(ptr, 1, __ATOMIC_SEQ_CST))
|
||||
#define atomic_dec(ptr) ((void) __atomic_fetch_sub(ptr, 1, __ATOMIC_SEQ_CST))
|
||||
+#ifndef __cplusplus
|
||||
#define atomic_add(ptr, n) ((void) __atomic_fetch_add(ptr, n, __ATOMIC_SEQ_CST))
|
||||
#define atomic_sub(ptr, n) ((void) __atomic_fetch_sub(ptr, n, __ATOMIC_SEQ_CST))
|
||||
#define atomic_and(ptr, n) ((void) __atomic_fetch_and(ptr, n, __ATOMIC_SEQ_CST))
|
||||
#define atomic_or(ptr, n) ((void) __atomic_fetch_or(ptr, n, __ATOMIC_SEQ_CST))
|
||||
+#endif
|
||||
#define atomic_xor(ptr, n) ((void) __atomic_fetch_xor(ptr, n, __ATOMIC_SEQ_CST))
|
||||
|
||||
#else /* __ATOMIC_RELAXED */
|
||||
@@ -406,10 +408,12 @@
|
||||
|
||||
#define atomic_inc_fetch(ptr) __sync_add_and_fetch(ptr, 1)
|
||||
#define atomic_dec_fetch(ptr) __sync_add_and_fetch(ptr, -1)
|
||||
+#ifndef __cplusplus
|
||||
#define atomic_add_fetch(ptr, n) __sync_add_and_fetch(ptr, n)
|
||||
#define atomic_sub_fetch(ptr, n) __sync_sub_and_fetch(ptr, n)
|
||||
#define atomic_and_fetch(ptr, n) __sync_and_and_fetch(ptr, n)
|
||||
#define atomic_or_fetch(ptr, n) __sync_or_and_fetch(ptr, n)
|
||||
+#endif
|
||||
#define atomic_xor_fetch(ptr, n) __sync_xor_and_fetch(ptr, n)
|
||||
|
||||
#define atomic_cmpxchg(ptr, old, new) __sync_val_compare_and_swap(ptr, old, new)
|
||||
@@ -418,10 +422,12 @@
|
||||
/* And even shorter names that return void. */
|
||||
#define atomic_inc(ptr) ((void) __sync_fetch_and_add(ptr, 1))
|
||||
#define atomic_dec(ptr) ((void) __sync_fetch_and_add(ptr, -1))
|
||||
+#ifndef __cplusplus
|
||||
#define atomic_add(ptr, n) ((void) __sync_fetch_and_add(ptr, n))
|
||||
#define atomic_sub(ptr, n) ((void) __sync_fetch_and_sub(ptr, n))
|
||||
#define atomic_and(ptr, n) ((void) __sync_fetch_and_and(ptr, n))
|
||||
#define atomic_or(ptr, n) ((void) __sync_fetch_and_or(ptr, n))
|
||||
+#endif
|
||||
#define atomic_xor(ptr, n) ((void) __sync_fetch_and_xor(ptr, n))
|
||||
|
||||
#endif /* __ATOMIC_RELAXED */
|
@ -1,13 +0,0 @@
|
||||
--- net/clients.h.orig 2018-04-24 16:30:47 UTC
|
||||
+++ net/clients.h
|
||||
@@ -61,4 +61,10 @@ int net_init_netmap(const Netdev *netdev, const char *
|
||||
int net_init_vhost_user(const Netdev *netdev, const char *name,
|
||||
NetClientState *peer, Error **errp);
|
||||
|
||||
+#ifdef CONFIG_PCAP
|
||||
+int net_init_pcap(const Netdev *netdev, const char *name,
|
||||
+ NetClientState *peer, Error **errp);
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
#endif /* QEMU_NET_CLIENTS_H */
|
@ -1,250 +0,0 @@
|
||||
--- net/net.c.orig 2018-04-24 16:30:47 UTC
|
||||
+++ net/net.c
|
||||
@@ -52,6 +52,11 @@
|
||||
#include "net/filter.h"
|
||||
#include "qapi/string-output-visitor.h"
|
||||
|
||||
+#include <sys/ioctl.h>
|
||||
+#ifdef __FreeBSD__
|
||||
+#include <net/if.h>
|
||||
+#endif
|
||||
+
|
||||
/* Net bridge is currently not supported for W32. */
|
||||
#if !defined(_WIN32)
|
||||
# define CONFIG_NET_BRIDGE
|
||||
@@ -929,7 +934,225 @@ static int net_init_nic(const Netdev *netdev, const ch
|
||||
return idx;
|
||||
}
|
||||
|
||||
+#if defined(CONFIG_PCAP)
|
||||
+#if defined(CONFIG_BPF)
|
||||
+#define PCAP_DONT_INCLUDE_PCAP_BPF_H
|
||||
+#include <net/bpf.h>
|
||||
+#endif
|
||||
+#include <pcap.h>
|
||||
|
||||
+struct PCAPState {
|
||||
+ NetClientState nc;
|
||||
+ pcap_t *handle;
|
||||
+ int max_eth_frame_size;
|
||||
+};
|
||||
+
|
||||
+static ssize_t pcap_receive(NetClientState *nc, const uint8_t *buf, size_t size)
|
||||
+{
|
||||
+ struct PCAPState *s = DO_UPCAST(struct PCAPState, nc, nc);
|
||||
+
|
||||
+ return pcap_inject(s->handle, (u_char*)buf, size);
|
||||
+}
|
||||
+
|
||||
+static void pcap_callback(u_char *user, struct pcap_pkthdr *phdr, u_char *pdata
|
||||
+ )
|
||||
+{
|
||||
+ NetClientState *nc = (NetClientState *)user;
|
||||
+
|
||||
+ int len = phdr->len;
|
||||
+#ifdef __FreeBSD__
|
||||
+ struct PCAPState *s = DO_UPCAST(struct PCAPState, nc, nc);
|
||||
+ int max_eth_frame_size = s->max_eth_frame_size;
|
||||
+
|
||||
+ if (len > max_eth_frame_size) {
|
||||
+ fprintf(stderr,
|
||||
+ "pcap_send: packet size > %d (%d), truncating\n",
|
||||
+ max_eth_frame_size, len);
|
||||
+ len = max_eth_frame_size;
|
||||
+ }
|
||||
+#endif
|
||||
+ qemu_send_packet(nc, pdata, len);
|
||||
+}
|
||||
+
|
||||
+static void pcap_send(void *opaque)
|
||||
+{
|
||||
+ struct PCAPState *s = (struct PCAPState *)opaque;
|
||||
+
|
||||
+ for (;;) {
|
||||
+ if (pcap_dispatch(s->handle, 0, (pcap_handler)&pcap_callback, (u_char *)&s->nc) >= 0)
|
||||
+ break;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void pcap_cleanup(NetClientState *nc)
|
||||
+{
|
||||
+ struct PCAPState *s = DO_UPCAST(struct PCAPState, nc, nc);
|
||||
+
|
||||
+ qemu_purge_queued_packets(nc);
|
||||
+ pcap_close(s->handle);
|
||||
+}
|
||||
+
|
||||
+static NetClientInfo net_pcap_info = {
|
||||
+ .type = NET_CLIENT_DRIVER_PCAP,
|
||||
+ .size = sizeof(struct PCAPState),
|
||||
+ .receive = pcap_receive,
|
||||
+// .receive_raw = pcap_receive_raw,
|
||||
+// .receive_iov = pcap_receive_iov,
|
||||
+// .poll = pcap_poll,
|
||||
+ .cleanup = pcap_cleanup,
|
||||
+};
|
||||
+/*
|
||||
+ * ... -net pcap,ifname="..."
|
||||
+ */
|
||||
+
|
||||
+int net_init_pcap(const Netdev *netdev,
|
||||
+ const char *name, NetClientState *peer, Error **errp)
|
||||
+{
|
||||
+ const NetdevPcapOptions *pcap_opts;
|
||||
+ NetClientState *nc;
|
||||
+ struct PCAPState *s;
|
||||
+ const char *ifname;
|
||||
+ char errbuf[PCAP_ERRBUF_SIZE];
|
||||
+#if defined(_WIN32)
|
||||
+ HANDLE h;
|
||||
+#endif
|
||||
+ int i;
|
||||
+
|
||||
+ assert(netdev->type == NET_CLIENT_DRIVER_PCAP);
|
||||
+ pcap_opts = &netdev->u.pcap;
|
||||
+ if (!pcap_opts->has_ifname)
|
||||
+ return -1;
|
||||
+
|
||||
+ ifname = pcap_opts->ifname;
|
||||
+
|
||||
+ /* create the object */
|
||||
+ nc = qemu_new_net_client(&net_pcap_info, peer, "pcap", ifname);
|
||||
+ s = DO_UPCAST(struct PCAPState, nc, nc);
|
||||
+
|
||||
+ if (ifname == NULL && (ifname = pcap_lookupdev(errbuf)) == NULL) {
|
||||
+ fprintf(stderr, "qemu: pcap_create: %s\n", errbuf);
|
||||
+ goto fail;
|
||||
+ }
|
||||
+
|
||||
+#ifdef __FreeBSD__
|
||||
+ /*
|
||||
+ * We want to avoid passing oversize packets to the guest, which
|
||||
+ * at least on FreeBSD can happen if the host interface uses tso
|
||||
+ * (seen with an em(4) in this case) - so find out the host
|
||||
+ * interface's mtu and assume the guest is configured the same.
|
||||
+ */
|
||||
+ s->max_eth_frame_size = 1514;
|
||||
+ i = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
+ if (i >= 0) {
|
||||
+ struct ifreq ifr;
|
||||
+
|
||||
+ (void) memset(&ifr, 0, sizeof(ifr));
|
||||
+ strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
|
||||
+ if (ioctl(i, SIOCGIFMTU, &ifr) != -1)
|
||||
+ s->max_eth_frame_size = ifr.ifr_mtu + 14;
|
||||
+ close(i);
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+#if defined(CONFIG_PCAP_CREATE) || defined(_WIN32)
|
||||
+ /*
|
||||
+ * Create pcap handle for the device, set promiscuous mode and activate.
|
||||
+ */
|
||||
+ s->handle = (void *)pcap_create(ifname, errbuf);
|
||||
+ if (!s->handle) {
|
||||
+ fprintf(stderr, "qemu: pcap_create: %s\n", errbuf);
|
||||
+ goto fail;
|
||||
+ }
|
||||
+ if (pcap_set_promisc(s->handle, 1) != 0) {
|
||||
+ pcap_perror(s->handle, (char *)"qemu: pcap_set_promisc:");
|
||||
+ goto fail;
|
||||
+ }
|
||||
+ if (pcap_activate(s->handle) != 0) {
|
||||
+ pcap_perror(s->handle, (char *)"qemu: pcap_activate:");
|
||||
+ goto fail;
|
||||
+ }
|
||||
+#else
|
||||
+ /* Attempt to connect device. */
|
||||
+ s->handle = (void *)pcap_open_live(ifname, 65535, 1, 0, errbuf);
|
||||
+ if (!s->handle) {
|
||||
+ fprintf(stderr, "qemu: pcap_open_live: %s\n", errbuf);
|
||||
+ goto fail;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+ /* Set non-blocking mode. */
|
||||
+ if (pcap_setnonblock(s->handle, 1, errbuf) < 0) {
|
||||
+ fprintf(stderr, "qemu: pcap_setnonblock: %s\n", errbuf);
|
||||
+ goto fail;
|
||||
+ }
|
||||
+
|
||||
+#if defined(_WIN32)
|
||||
+ /*
|
||||
+ * Tell the kernel that the packet has to be seen immediately.
|
||||
+ */
|
||||
+ if (pcap_setmintocopy(s->handle, 0) < 0) {
|
||||
+ fprintf(stderr, "qemu: pcap failed to set immediate mode\n");
|
||||
+ goto fail;
|
||||
+ }
|
||||
+#else /* !_WIN32 */
|
||||
+#if defined(CONFIG_BPF)
|
||||
+#if defined(BIOCIMMEDIATE)
|
||||
+ /*
|
||||
+ * Tell the kernel that the packet has to be seen immediately.
|
||||
+ */
|
||||
+ {
|
||||
+ unsigned int one = 1;
|
||||
+ if (ioctl(pcap_fileno(s->handle), BIOCIMMEDIATE, &one) < 0) {
|
||||
+ fprintf(stderr, "qemu: pcap failed to set immediate mode\n");
|
||||
+ goto fail;
|
||||
+ }
|
||||
+ }
|
||||
+#endif /* BIOCIMMEDIATE */
|
||||
+#if defined(BIOCFEEDBACK)
|
||||
+ /*
|
||||
+ * Tell the kernel that the sent packet has to be fed back.
|
||||
+ * This is necessary to connect host and guest.
|
||||
+ */
|
||||
+ {
|
||||
+ unsigned int one = 1;
|
||||
+ if (ioctl(pcap_fileno(s->handle), BIOCFEEDBACK, &one) < 0) {
|
||||
+ fprintf(stderr, "qemu: pcap failed to set feedback mode\n");
|
||||
+ goto fail;
|
||||
+ }
|
||||
+ }
|
||||
+#endif /* BIOCFEEDBACK */
|
||||
+#endif /* CONFIG_BPF */
|
||||
+#endif /* _WIN32 */
|
||||
+
|
||||
+ snprintf(s->nc.info_str, sizeof(s->nc.info_str), "pcap redirector");
|
||||
+
|
||||
+#if defined(_WIN32)
|
||||
+ if ((h = pcap_getevent(s->handle)) == NULL) {
|
||||
+ fprintf(stderr, "qemu: pcap_getevent failed\n");
|
||||
+ goto fail;
|
||||
+ }
|
||||
+ qemu_add_wait_object(h, pcap_send, s);
|
||||
+#else /* !_WIN32 */
|
||||
+ if ((i = pcap_get_selectable_fd(s->handle)) < 0) {
|
||||
+ fprintf(stderr, "qemu: pcap_get_selectable_fd failed\n");
|
||||
+ goto fail;
|
||||
+ }
|
||||
+ qemu_set_fd_handler(i, pcap_send, NULL, s);
|
||||
+#endif /* _WIN32 */
|
||||
+
|
||||
+ return 0;
|
||||
+
|
||||
+fail:
|
||||
+ if (s) {
|
||||
+ if (s->handle)
|
||||
+ pcap_close(s->handle);
|
||||
+ }
|
||||
+
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
static int (* const net_client_init_fun[NET_CLIENT_DRIVER__MAX])(
|
||||
const Netdev *netdev,
|
||||
const char *name,
|
||||
@@ -955,6 +1178,9 @@ static int (* const net_client_init_fun[NET_CLIENT_DRI
|
||||
#endif
|
||||
#ifdef CONFIG_L2TPV3
|
||||
[NET_CLIENT_DRIVER_L2TPV3] = net_init_l2tpv3,
|
||||
+#endif
|
||||
+#ifdef CONFIG_PCAP
|
||||
+ [NET_CLIENT_DRIVER_PCAP] = net_init_pcap,
|
||||
#endif
|
||||
};
|
||||
|
@ -1,56 +0,0 @@
|
||||
--- qapi/net.json.orig 2018-04-24 16:30:47 UTC
|
||||
+++ qapi/net.json
|
||||
@@ -388,6 +388,19 @@
|
||||
'*helper': 'str' } }
|
||||
|
||||
##
|
||||
+# @NetdevPcapOptions:
|
||||
+#
|
||||
+# Use ifname as a source to capture
|
||||
+#
|
||||
+# @ifname: #required to determine which interface to capture
|
||||
+#
|
||||
+# Since: 1.2
|
||||
+##
|
||||
+{ 'struct': 'NetdevPcapOptions',
|
||||
+ 'data': {
|
||||
+ '*ifname': 'str' } }
|
||||
+
|
||||
+##
|
||||
# @NetdevHubPortOptions:
|
||||
#
|
||||
# Connect two or more net clients through a software hub.
|
||||
@@ -454,7 +467,7 @@
|
||||
##
|
||||
{ 'enum': 'NetClientDriver',
|
||||
'data': [ 'none', 'nic', 'user', 'tap', 'l2tpv3', 'socket', 'vde',
|
||||
- 'bridge', 'hubport', 'netmap', 'vhost-user' ] }
|
||||
+ 'bridge', 'hubport', 'netmap', 'vhost-user', 'pcap' ] }
|
||||
|
||||
##
|
||||
# @Netdev:
|
||||
@@ -478,6 +491,7 @@
|
||||
'user': 'NetdevUserOptions',
|
||||
'tap': 'NetdevTapOptions',
|
||||
'l2tpv3': 'NetdevL2TPv3Options',
|
||||
+ 'pcap': 'NetdevPcapOptions',
|
||||
'socket': 'NetdevSocketOptions',
|
||||
'vde': 'NetdevVdeOptions',
|
||||
'bridge': 'NetdevBridgeOptions',
|
||||
@@ -514,7 +528,7 @@
|
||||
##
|
||||
{ 'enum': 'NetLegacyOptionsType',
|
||||
'data': ['none', 'nic', 'user', 'tap', 'l2tpv3', 'socket', 'vde',
|
||||
- 'bridge', 'netmap', 'vhost-user'] }
|
||||
+ 'bridge', 'netmap', 'vhost-user', 'pcap'] }
|
||||
|
||||
##
|
||||
# @NetLegacyOptions:
|
||||
@@ -532,6 +546,7 @@
|
||||
'user': 'NetdevUserOptions',
|
||||
'tap': 'NetdevTapOptions',
|
||||
'l2tpv3': 'NetdevL2TPv3Options',
|
||||
+ 'pcap': 'NetdevPcapOptions',
|
||||
'socket': 'NetdevSocketOptions',
|
||||
'vde': 'NetdevVdeOptions',
|
||||
'bridge': 'NetdevBridgeOptions',
|
Loading…
Reference in New Issue
Block a user