net: Remove the deprecated "vlan" parameter

It's been marked as deprecated since QEMU v2.9.0, so that should have
been enough time for everybody to either just drop unnecessary "vlan=0"
parameters, to switch to the modern -device + -netdev syntax for connecting
guest NICs with host network backends, or to switch to the "hubport" netdev
in case hubs are really wanted instead.

Buglink: https://bugs.launchpad.net/qemu/+bug/658904
Signed-off-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
Thomas Huth 2018-04-30 20:02:23 +02:00 committed by Jason Wang
parent 9d94619189
commit af1a5c3eb4
8 changed files with 22 additions and 130 deletions

View File

@ -277,9 +277,6 @@ devices and ne2k_isa are.
Some PCI devices aren't available with -net nic, e.g. i82558a. Some PCI devices aren't available with -net nic, e.g. i82558a.
To connect to a VLAN instead of an ordinary host part, replace
netdev=NET-ID by vlan=VLAN.
=== Graphics Devices === === Graphics Devices ===
Host and guest part of graphics devices have always been separate. Host and guest part of graphics devices have always been separate.

View File

@ -321,86 +321,6 @@ const PropertyInfo qdev_prop_netdev = {
.set = set_netdev, .set = set_netdev,
}; };
/* --- vlan --- */
static int print_vlan(DeviceState *dev, Property *prop, char *dest, size_t len)
{
NetClientState **ptr = qdev_get_prop_ptr(dev, prop);
if (*ptr) {
int id;
if (!net_hub_id_for_client(*ptr, &id)) {
return snprintf(dest, len, "%d", id);
}
}
return snprintf(dest, len, "<null>");
}
static void get_vlan(Object *obj, Visitor *v, const char *name, void *opaque,
Error **errp)
{
DeviceState *dev = DEVICE(obj);
Property *prop = opaque;
NetClientState **ptr = qdev_get_prop_ptr(dev, prop);
int32_t id = -1;
if (*ptr) {
int hub_id;
if (!net_hub_id_for_client(*ptr, &hub_id)) {
id = hub_id;
}
}
visit_type_int32(v, name, &id, errp);
}
static void set_vlan(Object *obj, Visitor *v, const char *name, void *opaque,
Error **errp)
{
DeviceState *dev = DEVICE(obj);
Property *prop = opaque;
NICPeers *peers_ptr = qdev_get_prop_ptr(dev, prop);
NetClientState **ptr = &peers_ptr->ncs[0];
Error *local_err = NULL;
int32_t id;
NetClientState *hubport;
if (dev->realized) {
qdev_prop_set_after_realize(dev, name, errp);
return;
}
visit_type_int32(v, name, &id, &local_err);
if (local_err) {
error_propagate(errp, local_err);
return;
}
if (id == -1) {
*ptr = NULL;
return;
}
if (*ptr) {
error_set_from_qdev_prop_error(errp, -EINVAL, dev, prop, name);
return;
}
hubport = net_hub_port_find(id);
if (!hubport) {
error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
name, prop->info->name);
return;
}
*ptr = hubport;
}
const PropertyInfo qdev_prop_vlan = {
.name = "int32",
.description = "Integer VLAN id to connect to",
.print = print_vlan,
.get = get_vlan,
.set = set_vlan,
};
void qdev_prop_set_drive(DeviceState *dev, const char *name, void qdev_prop_set_drive(DeviceState *dev, const char *name,
BlockBackend *value, Error **errp) BlockBackend *value, Error **errp)

View File

@ -29,7 +29,6 @@ extern const PropertyInfo qdev_prop_bios_chs_trans;
extern const PropertyInfo qdev_prop_fdc_drive_type; extern const PropertyInfo qdev_prop_fdc_drive_type;
extern const PropertyInfo qdev_prop_drive; extern const PropertyInfo qdev_prop_drive;
extern const PropertyInfo qdev_prop_netdev; extern const PropertyInfo qdev_prop_netdev;
extern const PropertyInfo qdev_prop_vlan;
extern const PropertyInfo qdev_prop_pci_devfn; extern const PropertyInfo qdev_prop_pci_devfn;
extern const PropertyInfo qdev_prop_blocksize; extern const PropertyInfo qdev_prop_blocksize;
extern const PropertyInfo qdev_prop_pci_host_devaddr; extern const PropertyInfo qdev_prop_pci_host_devaddr;
@ -195,8 +194,6 @@ extern const PropertyInfo qdev_prop_off_auto_pcibar;
DEFINE_PROP(_n, _s, _f, qdev_prop_string, char*) DEFINE_PROP(_n, _s, _f, qdev_prop_string, char*)
#define DEFINE_PROP_NETDEV(_n, _s, _f) \ #define DEFINE_PROP_NETDEV(_n, _s, _f) \
DEFINE_PROP(_n, _s, _f, qdev_prop_netdev, NICPeers) DEFINE_PROP(_n, _s, _f, qdev_prop_netdev, NICPeers)
#define DEFINE_PROP_VLAN(_n, _s, _f) \
DEFINE_PROP(_n, _s, _f, qdev_prop_vlan, NICPeers)
#define DEFINE_PROP_DRIVE(_n, _s, _f) \ #define DEFINE_PROP_DRIVE(_n, _s, _f) \
DEFINE_PROP(_n, _s, _f, qdev_prop_drive, BlockBackend *) DEFINE_PROP(_n, _s, _f, qdev_prop_drive, BlockBackend *)
#define DEFINE_PROP_MACADDR(_n, _s, _f) \ #define DEFINE_PROP_MACADDR(_n, _s, _f) \

View File

@ -37,7 +37,6 @@ typedef struct NICConf {
#define DEFINE_NIC_PROPERTIES(_state, _conf) \ #define DEFINE_NIC_PROPERTIES(_state, _conf) \
DEFINE_PROP_MACADDR("mac", _state, _conf.macaddr), \ DEFINE_PROP_MACADDR("mac", _state, _conf.macaddr), \
DEFINE_PROP_VLAN("vlan", _state, _conf.peers), \
DEFINE_PROP_NETDEV("netdev", _state, _conf.peers) DEFINE_PROP_NETDEV("netdev", _state, _conf.peers)

View File

@ -965,7 +965,6 @@ static int net_client_init1(const void *object, bool is_netdev, Error **errp)
const Netdev *netdev; const Netdev *netdev;
const char *name; const char *name;
NetClientState *peer = NULL; NetClientState *peer = NULL;
static bool vlan_warned;
if (is_netdev) { if (is_netdev) {
netdev = object; netdev = object;
@ -1036,15 +1035,10 @@ static int net_client_init1(const void *object, bool is_netdev, Error **errp)
return -1; return -1;
} }
/* Do not add to a vlan if it's a nic with a netdev= parameter. */ /* Do not add to a hub if it's a nic with a netdev= parameter. */
if (netdev->type != NET_CLIENT_DRIVER_NIC || if (netdev->type != NET_CLIENT_DRIVER_NIC ||
!opts->u.nic.has_netdev) { !opts->u.nic.has_netdev) {
peer = net_hub_add_port(net->has_vlan ? net->vlan : 0, NULL, NULL); peer = net_hub_add_port(0, NULL, NULL);
}
if (net->has_vlan && !vlan_warned) {
error_report("'vlan' is deprecated. Please use 'netdev' instead.");
vlan_warned = true;
} }
} }
@ -1365,7 +1359,7 @@ void qmp_set_link(const char *name, bool up, Error **errp)
* If the peer is a HUBPORT or a backend, we do not change the * If the peer is a HUBPORT or a backend, we do not change the
* link status. * link status.
* *
* This behavior is compatible with qemu vlans where there could be * This behavior is compatible with qemu hubs where there could be
* multiple clients that can still communicate with each other in * multiple clients that can still communicate with each other in
* disconnected mode. For now maintain this compatibility. * disconnected mode. For now maintain this compatibility.
*/ */

View File

@ -209,7 +209,7 @@
## ##
# @NetdevTapOptions: # @NetdevTapOptions:
# #
# Connect the host TAP network interface name to the VLAN. # Used to configure a host TAP network interface backend.
# #
# @ifname: interface name # @ifname: interface name
# #
@ -267,8 +267,8 @@
## ##
# @NetdevSocketOptions: # @NetdevSocketOptions:
# #
# Connect the VLAN to a remote VLAN in another QEMU virtual machine using a TCP # Socket netdevs are used to establish a network connection to another
# socket connection. # QEMU virtual machine via a TCP socket.
# #
# @fd: file descriptor of an already opened socket # @fd: file descriptor of an already opened socket
# #
@ -296,7 +296,7 @@
## ##
# @NetdevL2TPv3Options: # @NetdevL2TPv3Options:
# #
# Connect the VLAN to Ethernet over L2TPv3 Static tunnel # Configure an Ethernet over L2TPv3 tunnel.
# #
# @src: source address # @src: source address
# #
@ -352,7 +352,7 @@
## ##
# @NetdevVdeOptions: # @NetdevVdeOptions:
# #
# Connect the VLAN to a vde switch running on the host. # Connect to a vde switch running on the host.
# #
# @sock: socket path # @sock: socket path
# #
@ -490,8 +490,6 @@
# #
# Captures the configuration of a network device; legacy. # Captures the configuration of a network device; legacy.
# #
# @vlan: vlan number
#
# @id: identifier for monitor commands # @id: identifier for monitor commands
# #
# @name: identifier for monitor commands, ignored if @id is present # @name: identifier for monitor commands, ignored if @id is present
@ -499,10 +497,11 @@
# @opts: device type specific properties (legacy) # @opts: device type specific properties (legacy)
# #
# Since: 1.2 # Since: 1.2
#
# 'vlan' - removed with 2.12
## ##
{ 'struct': 'NetLegacy', { 'struct': 'NetLegacy',
'data': { 'data': {
'*vlan': 'int32',
'*id': 'str', '*id': 'str',
'*name': 'str', '*name': 'str',
'opts': 'NetLegacyOptions' } } 'opts': 'NetLegacyOptions' } }

View File

@ -2855,15 +2855,6 @@ with ``-device ...,netdev=x''), or ``-nic user,smb=/some/dir''
(for embedded NICs). The new syntax allows different settings to be (for embedded NICs). The new syntax allows different settings to be
provided per NIC. provided per NIC.
@subsection -net vlan (since 2.9.0)
The ``-net vlan=NN'' argument was mostly used to attach separate
network backends to different virtual NICs. This is the default
behavior for ``-netdev'' and ``-nic''. You can connect multiple
``-netdev'' and ``-nic'' devices to the same network using the
"hubport" network backend, created with ``-netdev hubport,hubid=NN,...''
and ``-nic hubport,hubid=NN''.
@subsection -drive cyls=...,heads=...,secs=...,trans=... (since 2.10.0) @subsection -drive cyls=...,heads=...,secs=...,trans=... (since 2.10.0)
The drive geometry arguments are replaced by the the geometry arguments The drive geometry arguments are replaced by the the geometry arguments

View File

@ -2003,7 +2003,7 @@ DEF("netdev", HAS_ARG, QEMU_OPTION_netdev,
" configure a vhost-user network, backed by a chardev 'dev'\n" " configure a vhost-user network, backed by a chardev 'dev'\n"
#endif #endif
"-netdev hubport,id=str,hubid=n[,netdev=nd]\n" "-netdev hubport,id=str,hubid=n[,netdev=nd]\n"
" configure a hub port on QEMU VLAN 'n'\n", QEMU_ARCH_ALL) " configure a hub port on the hub with ID 'n'\n", QEMU_ARCH_ALL)
DEF("nic", HAS_ARG, QEMU_OPTION_nic, DEF("nic", HAS_ARG, QEMU_OPTION_nic,
"--nic [tap|bridge|" "--nic [tap|bridge|"
#ifdef CONFIG_SLIRP #ifdef CONFIG_SLIRP
@ -2028,10 +2028,9 @@ DEF("nic", HAS_ARG, QEMU_OPTION_nic,
" provided a 'user' network connection)\n", " provided a 'user' network connection)\n",
QEMU_ARCH_ALL) QEMU_ARCH_ALL)
DEF("net", HAS_ARG, QEMU_OPTION_net, DEF("net", HAS_ARG, QEMU_OPTION_net,
"-net nic[,vlan=n][,netdev=nd][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]\n" "-net nic[,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]\n"
" configure or create an on-board (or machine default) NIC and\n" " configure or create an on-board (or machine default) NIC and\n"
" connect it either to VLAN 'n' or the netdev 'nd' (for pluggable\n" " connect it to hub 0 (please use -nic unless you need a hub)\n"
" NICs please use '-device devtype,netdev=nd' instead)\n"
"-net [" "-net ["
#ifdef CONFIG_SLIRP #ifdef CONFIG_SLIRP
"user|" "user|"
@ -2044,7 +2043,7 @@ DEF("net", HAS_ARG, QEMU_OPTION_net,
#ifdef CONFIG_NETMAP #ifdef CONFIG_NETMAP
"netmap|" "netmap|"
#endif #endif
"socket][,vlan=n][,option][,option][,...]\n" "socket][,option][,option][,...]\n"
" old way to initialize a host network interface\n" " old way to initialize a host network interface\n"
" (use the -netdev option if possible instead)\n", QEMU_ARCH_ALL) " (use the -netdev option if possible instead)\n", QEMU_ARCH_ALL)
STEXI STEXI
@ -2462,17 +2461,14 @@ qemu -m 512 -object memory-backend-file,id=mem,size=512M,mem-path=/hugetlbfs,sha
Create a hub port on the emulated hub with ID @var{hubid}. Create a hub port on the emulated hub with ID @var{hubid}.
The hubport netdev lets you connect a NIC to a QEMU emulated hub instead of a The hubport netdev lets you connect a NIC to a QEMU emulated hub instead of a
single netdev. @code{-net} and @code{-device} with the parameter @option{vlan} single netdev. Alternatively, you can also connect the hubport to another
(deprecated), or @code{-nic hubport} can also be used to connect a netdev with ID @var{nd} by using the @option{netdev=@var{nd}} option.
network device or a NIC to a hub. Alternatively, you can also connect the
hubport to another netdev with ID @var{nd} by using the @option{netdev=@var{nd}}
option.
@item -net nic[,vlan=@var{n}][,netdev=@var{nd}][,macaddr=@var{mac}][,model=@var{type}] [,name=@var{name}][,addr=@var{addr}][,vectors=@var{v}] @item -net nic[,netdev=@var{nd}][,macaddr=@var{mac}][,model=@var{type}] [,name=@var{name}][,addr=@var{addr}][,vectors=@var{v}]
@findex -net @findex -net
Legacy option to configure or create an on-board (or machine default) Network Legacy option to configure or create an on-board (or machine default) Network
Interface Card(NIC) and connect it either to the emulated hub port ("vlan") Interface Card(NIC) and connect it either to the emulated hub with ID 0 (i.e.
with number @var{n} (@var{n} = 0 is the default), or to the netdev @var{nd}. the default hub), or to the netdev @var{nd}.
The NIC is an e1000 by default on the PC target. Optionally, the MAC address 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 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. only), and a @var{name} can be assigned for use in monitor commands.
@ -2482,11 +2478,10 @@ that the card should have; this option currently only affects virtio cards; set
NIC is created. QEMU can emulate several different models of network card. NIC is created. QEMU can emulate several different models of network card.
Use @code{-net nic,model=help} for a list of available devices for your target. Use @code{-net nic,model=help} for a list of available devices for your target.
@item -net user|tap|bridge|socket|l2tpv3|vde[,...][,vlan=@var{n}][,name=@var{name}] @item -net user|tap|bridge|socket|l2tpv3|vde[,...][,name=@var{name}]
Configure a host network backend (with the options corresponding to the same Configure a host network backend (with the options corresponding to the same
@option{-netdev} option) and connect it to the emulated hub ("vlan") with the @option{-netdev} option) and connect it to the emulated hub 0 (the default
number @var{n} (default is number 0). Use @var{name} to specify the name of the hub). Use @var{name} to specify the name of the hub port.
hub port.
ETEXI ETEXI
STEXI STEXI