mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-09-06 01:43:39 +00:00
slirp: add configure option to disable smbd
Replace Windows specific macro with a more generic feature detection macro. Allows slirp smb feature to be disabled manually as well. Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: Joelle van Dyne <j@getutm.app> Message-Id: <20210315180341.31638-5-j@getutm.app> [Use $default_feature as the default. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
4951967d84
commit
b8e0c4938b
26
configure
vendored
26
configure
vendored
|
@ -464,6 +464,7 @@ gettext="auto"
|
||||||
fuse="auto"
|
fuse="auto"
|
||||||
fuse_lseek="auto"
|
fuse_lseek="auto"
|
||||||
multiprocess="auto"
|
multiprocess="auto"
|
||||||
|
slirp_smbd="$default_feature"
|
||||||
|
|
||||||
malloc_trim="auto"
|
malloc_trim="auto"
|
||||||
gio="$default_feature"
|
gio="$default_feature"
|
||||||
|
@ -836,8 +837,6 @@ do
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
: ${smbd=${SMBD-/usr/sbin/smbd}}
|
|
||||||
|
|
||||||
# Default objcc to clang if available, otherwise use CC
|
# Default objcc to clang if available, otherwise use CC
|
||||||
if has clang; then
|
if has clang; then
|
||||||
objcc=clang
|
objcc=clang
|
||||||
|
@ -1570,6 +1569,10 @@ for opt do
|
||||||
;;
|
;;
|
||||||
--disable-gio) gio=no
|
--disable-gio) gio=no
|
||||||
;;
|
;;
|
||||||
|
--enable-slirp-smbd) slirp_smbd=yes
|
||||||
|
;;
|
||||||
|
--disable-slirp-smbd) slirp_smbd=no
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "ERROR: unknown option $opt"
|
echo "ERROR: unknown option $opt"
|
||||||
echo "Try '$0 --help' for more information"
|
echo "Try '$0 --help' for more information"
|
||||||
|
@ -1925,6 +1928,7 @@ disabled with --disable-FEATURE, default is enabled if available
|
||||||
fuse-lseek SEEK_HOLE/SEEK_DATA support for FUSE exports
|
fuse-lseek SEEK_HOLE/SEEK_DATA support for FUSE exports
|
||||||
multiprocess Out of process device emulation support
|
multiprocess Out of process device emulation support
|
||||||
gio libgio support
|
gio libgio support
|
||||||
|
slirp-smbd use smbd (at path --smbd=*) in slirp networking
|
||||||
|
|
||||||
NOTE: The object files are built at the place where configure is launched
|
NOTE: The object files are built at the place where configure is launched
|
||||||
EOF
|
EOF
|
||||||
|
@ -5261,6 +5265,19 @@ case "$slirp" in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# Check for slirp smbd dupport
|
||||||
|
: ${smbd=${SMBD-/usr/sbin/smbd}}
|
||||||
|
if test "$slirp_smbd" != "no" ; then
|
||||||
|
if test "$mingw32" = "yes" ; then
|
||||||
|
if test "$slirp_smbd" = "yes" ; then
|
||||||
|
error_exit "Host smbd not supported on this platform."
|
||||||
|
fi
|
||||||
|
slirp_smbd=no
|
||||||
|
else
|
||||||
|
slirp_smbd=yes
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
# check for usable __NR_keyctl syscall
|
# check for usable __NR_keyctl syscall
|
||||||
|
|
||||||
|
@ -5536,7 +5553,10 @@ fi
|
||||||
if test "$guest_agent" = "yes" ; then
|
if test "$guest_agent" = "yes" ; then
|
||||||
echo "CONFIG_GUEST_AGENT=y" >> $config_host_mak
|
echo "CONFIG_GUEST_AGENT=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
|
if test "$slirp_smbd" = "yes" ; then
|
||||||
|
echo "CONFIG_SLIRP_SMBD=y" >> $config_host_mak
|
||||||
|
echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
|
||||||
|
fi
|
||||||
if test "$vde" = "yes" ; then
|
if test "$vde" = "yes" ; then
|
||||||
echo "CONFIG_VDE=y" >> $config_host_mak
|
echo "CONFIG_VDE=y" >> $config_host_mak
|
||||||
echo "VDE_LIBS=$vde_libs" >> $config_host_mak
|
echo "VDE_LIBS=$vde_libs" >> $config_host_mak
|
||||||
|
|
|
@ -2469,7 +2469,7 @@ summary_info += {'genisoimage': config_host['GENISOIMAGE']}
|
||||||
if targetos == 'windows' and config_host.has_key('CONFIG_GUEST_AGENT')
|
if targetos == 'windows' and config_host.has_key('CONFIG_GUEST_AGENT')
|
||||||
summary_info += {'wixl': wixl.found() ? wixl.full_path() : false}
|
summary_info += {'wixl': wixl.found() ? wixl.full_path() : false}
|
||||||
endif
|
endif
|
||||||
if slirp_opt != 'disabled'
|
if slirp_opt != 'disabled' and 'CONFIG_SLIRP_SMBD' in config_host
|
||||||
summary_info += {'smbd': config_host['CONFIG_SMBD_COMMAND']}
|
summary_info += {'smbd': config_host['CONFIG_SMBD_COMMAND']}
|
||||||
endif
|
endif
|
||||||
summary(summary_info, bool_yn: true, section: 'Host binaries')
|
summary(summary_info, bool_yn: true, section: 'Host binaries')
|
||||||
|
|
16
net/slirp.c
16
net/slirp.c
|
@ -27,7 +27,7 @@
|
||||||
#include "net/slirp.h"
|
#include "net/slirp.h"
|
||||||
|
|
||||||
|
|
||||||
#ifndef _WIN32
|
#if defined(CONFIG_SLIRP_SMBD)
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -91,7 +91,7 @@ typedef struct SlirpState {
|
||||||
Slirp *slirp;
|
Slirp *slirp;
|
||||||
Notifier poll_notifier;
|
Notifier poll_notifier;
|
||||||
Notifier exit_notifier;
|
Notifier exit_notifier;
|
||||||
#ifndef _WIN32
|
#if defined(CONFIG_SLIRP_SMBD)
|
||||||
gchar *smb_dir;
|
gchar *smb_dir;
|
||||||
#endif
|
#endif
|
||||||
GSList *fwd;
|
GSList *fwd;
|
||||||
|
@ -104,7 +104,7 @@ static QTAILQ_HEAD(, SlirpState) slirp_stacks =
|
||||||
static int slirp_hostfwd(SlirpState *s, const char *redir_str, Error **errp);
|
static int slirp_hostfwd(SlirpState *s, const char *redir_str, Error **errp);
|
||||||
static int slirp_guestfwd(SlirpState *s, const char *config_str, Error **errp);
|
static int slirp_guestfwd(SlirpState *s, const char *config_str, Error **errp);
|
||||||
|
|
||||||
#ifndef _WIN32
|
#if defined(CONFIG_SLIRP_SMBD)
|
||||||
static int slirp_smb(SlirpState *s, const char *exported_dir,
|
static int slirp_smb(SlirpState *s, const char *exported_dir,
|
||||||
struct in_addr vserver_addr, Error **errp);
|
struct in_addr vserver_addr, Error **errp);
|
||||||
static void slirp_smb_cleanup(SlirpState *s);
|
static void slirp_smb_cleanup(SlirpState *s);
|
||||||
|
@ -377,7 +377,7 @@ static int net_slirp_init(NetClientState *peer, const char *model,
|
||||||
struct in6_addr ip6_prefix;
|
struct in6_addr ip6_prefix;
|
||||||
struct in6_addr ip6_host;
|
struct in6_addr ip6_host;
|
||||||
struct in6_addr ip6_dns;
|
struct in6_addr ip6_dns;
|
||||||
#ifndef _WIN32
|
#if defined(CONFIG_SLIRP_SMBD)
|
||||||
struct in_addr smbsrv = { .s_addr = 0 };
|
struct in_addr smbsrv = { .s_addr = 0 };
|
||||||
#endif
|
#endif
|
||||||
NetClientState *nc;
|
NetClientState *nc;
|
||||||
|
@ -487,7 +487,7 @@ static int net_slirp_init(NetClientState *peer, const char *model,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef _WIN32
|
#if defined(CONFIG_SLIRP_SMBD)
|
||||||
if (vsmbserver && !inet_aton(vsmbserver, &smbsrv)) {
|
if (vsmbserver && !inet_aton(vsmbserver, &smbsrv)) {
|
||||||
error_setg(errp, "Failed to parse SMB address");
|
error_setg(errp, "Failed to parse SMB address");
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -602,7 +602,7 @@ static int net_slirp_init(NetClientState *peer, const char *model,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifndef _WIN32
|
#if defined(CONFIG_SLIRP_SMBD)
|
||||||
if (smb_export) {
|
if (smb_export) {
|
||||||
if (slirp_smb(s, smb_export, smbsrv, errp) < 0) {
|
if (slirp_smb(s, smb_export, smbsrv, errp) < 0) {
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -794,7 +794,7 @@ void hmp_hostfwd_add(Monitor *mon, const QDict *qdict)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef _WIN32
|
#if defined(CONFIG_SLIRP_SMBD)
|
||||||
|
|
||||||
/* automatic user mode samba server configuration */
|
/* automatic user mode samba server configuration */
|
||||||
static void slirp_smb_cleanup(SlirpState *s)
|
static void slirp_smb_cleanup(SlirpState *s)
|
||||||
|
@ -909,7 +909,7 @@ static int slirp_smb(SlirpState* s, const char *exported_dir,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* !defined(_WIN32) */
|
#endif /* defined(CONFIG_SLIRP_SMBD) */
|
||||||
|
|
||||||
static int guestfwd_can_read(void *opaque)
|
static int guestfwd_can_read(void *opaque)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue