aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2020-02-07 15:01:23 +0000
committerPeter Maydell <peter.maydell@linaro.org>2020-02-07 15:01:23 +0000
commit42ccca1bd9456568f996d5646b2001faac96944b (patch)
treee4237056312fb22b50f6700d7e874c6e47085578
parentb6bef1147f0f4edb7d8aac1e26d9511898ae854d (diff)
parent416b71906edfcf280ef31d0e5e607898330b6271 (diff)
downloadqemu-42ccca1bd9456568f996d5646b2001faac96944b.zip
qemu-42ccca1bd9456568f996d5646b2001faac96944b.tar.gz
qemu-42ccca1bd9456568f996d5646b2001faac96944b.tar.bz2
Merge remote-tracking branch 'remotes/berrange/tags/misc-fixes-pull-request' into staging
Misc fixes * Use correct constants for 'bool' type * Fix compatibility with noVNC in websocket impl * Remove inaccurate docs aout default NIC model # gpg: Signature made Fri 07 Feb 2020 12:23:53 GMT # gpg: using RSA key DAF3A6FDB26B62912D0E8E3FBE86EBB415104FDF # gpg: Good signature from "Daniel P. Berrange <dan@berrange.com>" [full] # gpg: aka "Daniel P. Berrange <berrange@redhat.com>" [full] # Primary key fingerprint: DAF3 A6FD B26B 6291 2D0E 8E3F BE86 EBB4 1510 4FDF * remotes/berrange/tags/misc-fixes-pull-request: docs: stop documenting the e1000 NIC model as the default authz: fix usage of bool in listfile.c io/channel-websock: treat 'binary' and no sub-protocol as the same Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--authz/listfile.c2
-rw-r--r--io/channel-websock.c36
-rw-r--r--qemu-options.hx12
3 files changed, 32 insertions, 18 deletions
diff --git a/authz/listfile.c b/authz/listfile.c
index e7a8c19..b71f57d 100644
--- a/authz/listfile.c
+++ b/authz/listfile.c
@@ -239,7 +239,7 @@ qauthz_list_file_init(Object *obj)
authz->file_watch = -1;
#ifdef CONFIG_INOTIFY1
- authz->refresh = TRUE;
+ authz->refresh = true;
#endif
}
diff --git a/io/channel-websock.c b/io/channel-websock.c
index fc36d44..47a0e94 100644
--- a/io/channel-websock.c
+++ b/io/channel-websock.c
@@ -49,13 +49,20 @@
"Server: QEMU VNC\r\n" \
"Date: %s\r\n"
+#define QIO_CHANNEL_WEBSOCK_HANDSHAKE_WITH_PROTO_RES_OK \
+ "HTTP/1.1 101 Switching Protocols\r\n" \
+ QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_COMMON \
+ "Upgrade: websocket\r\n" \
+ "Connection: Upgrade\r\n" \
+ "Sec-WebSocket-Accept: %s\r\n" \
+ "Sec-WebSocket-Protocol: binary\r\n" \
+ "\r\n"
#define QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_OK \
"HTTP/1.1 101 Switching Protocols\r\n" \
QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_COMMON \
"Upgrade: websocket\r\n" \
"Connection: Upgrade\r\n" \
"Sec-WebSocket-Accept: %s\r\n" \
- "Sec-WebSocket-Protocol: binary\r\n" \
"\r\n"
#define QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_NOT_FOUND \
"HTTP/1.1 404 Not Found\r\n" \
@@ -336,6 +343,7 @@ qio_channel_websock_find_header(QIOChannelWebsockHTTPHeader *hdrs,
static void qio_channel_websock_handshake_send_res_ok(QIOChannelWebsock *ioc,
const char *key,
+ const bool use_protocols,
Error **errp)
{
char combined_key[QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN +
@@ -361,8 +369,14 @@ static void qio_channel_websock_handshake_send_res_ok(QIOChannelWebsock *ioc,
}
date = qio_channel_websock_date_str();
- qio_channel_websock_handshake_send_res(
- ioc, QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_OK, date, accept);
+ if (use_protocols) {
+ qio_channel_websock_handshake_send_res(
+ ioc, QIO_CHANNEL_WEBSOCK_HANDSHAKE_WITH_PROTO_RES_OK,
+ date, accept);
+ } else {
+ qio_channel_websock_handshake_send_res(
+ ioc, QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_OK, date, accept);
+ }
g_free(date);
g_free(accept);
@@ -387,10 +401,6 @@ static void qio_channel_websock_handshake_process(QIOChannelWebsock *ioc,
protocols = qio_channel_websock_find_header(
hdrs, nhdrs, QIO_CHANNEL_WEBSOCK_HEADER_PROTOCOL);
- if (!protocols) {
- error_setg(errp, "Missing websocket protocol header data");
- goto bad_request;
- }
version = qio_channel_websock_find_header(
hdrs, nhdrs, QIO_CHANNEL_WEBSOCK_HEADER_VERSION);
@@ -430,10 +440,12 @@ static void qio_channel_websock_handshake_process(QIOChannelWebsock *ioc,
trace_qio_channel_websock_http_request(ioc, protocols, version,
host, connection, upgrade, key);
- if (!g_strrstr(protocols, QIO_CHANNEL_WEBSOCK_PROTOCOL_BINARY)) {
- error_setg(errp, "No '%s' protocol is supported by client '%s'",
- QIO_CHANNEL_WEBSOCK_PROTOCOL_BINARY, protocols);
- goto bad_request;
+ if (protocols) {
+ if (!g_strrstr(protocols, QIO_CHANNEL_WEBSOCK_PROTOCOL_BINARY)) {
+ error_setg(errp, "No '%s' protocol is supported by client '%s'",
+ QIO_CHANNEL_WEBSOCK_PROTOCOL_BINARY, protocols);
+ goto bad_request;
+ }
}
if (!g_str_equal(version, QIO_CHANNEL_WEBSOCK_SUPPORTED_VERSION)) {
@@ -467,7 +479,7 @@ static void qio_channel_websock_handshake_process(QIOChannelWebsock *ioc,
goto bad_request;
}
- qio_channel_websock_handshake_send_res_ok(ioc, key, errp);
+ qio_channel_websock_handshake_send_res_ok(ioc, key, !!protocols, errp);
return;
bad_request:
diff --git a/qemu-options.hx b/qemu-options.hx
index ff3e806..ac315c1 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -2428,8 +2428,7 @@ Use @option{model=help} to list the available device types.
The hardware MAC address can be set with @option{mac=@var{macaddr}}.
The following two example do exactly the same, to show how @option{-nic} can
-be used to shorten the command line length (note that the e1000 is the default
-on i386, so the @option{model=e1000} parameter could even be omitted here, too):
+be used to shorten the command line length:
@example
@value{qemu_system} -netdev user,id=n1,ipv6=off -device e1000,netdev=n1,mac=52:54:98:76:54:32
@value{qemu_system} -nic user,ipv6=off,model=e1000,mac=52:54:98:76:54:32
@@ -2843,9 +2842,12 @@ netdev with ID @var{nd} by using the @option{netdev=@var{nd}} option.
Legacy option to configure or create an on-board (or machine default) Network
Interface Card(NIC) and connect it either to the emulated hub with ID 0 (i.e.
the default hub), or to the netdev @var{nd}.
-The NIC is an e1000 by default on the PC target. Optionally, the MAC address
-can be changed to @var{mac}, the device address set to @var{addr} (PCI cards
-only), and a @var{name} can be assigned for use in monitor commands.
+If @var{model} is omitted, then the default NIC model associated with
+the machine type is used. Note that the default NIC model may change in
+future QEMU releases, so it is highly recommended to always specify a model.
+Optionally, the MAC address can be changed to @var{mac}, the device
+address set to @var{addr} (PCI cards only), and a @var{name} can be
+assigned for use in monitor commands.
Optionally, for PCI cards, you can specify the number @var{v} of MSI-X vectors
that the card should have; this option currently only affects virtio cards; set
@var{v} = 0 to disable MSI-X. If no @option{-net} option is specified, a single