Re: [PATCH 1/5][RFC] virtio-net: Allow setting the MAC address via set_config

Mark McLoughlin
2009-01-09T11:38:18Z

On Wed, 2009-01-07 at 10:37 -0700, Alex Williamson wrote:
> virtio-net: Allow setting the MAC address via set_config

This will basically never happen with QEMU, right?

We always set the MAC address - even if not supplied on the command line
- and the guest will never override that.

> Rename get_config for simplicity
>
> Signed-off-by: Alex Williamson <alex.williamson@hp.com>
> ---
>
> hw/virtio-net.c | 21 +++++++++++++++++++--
> 1 files changed, 19 insertions(+), 2 deletions(-)
>
> diff --git a/hw/virtio-net.c b/hw/virtio-net.c
> index 2c41b3e..bfb7510 100644
> --- a/hw/virtio-net.c
> +++ b/hw/virtio-net.c
> @@ -38,7 +38,7 @@ static VirtIONet *to_virtio_net(VirtIODevice *vdev)
> return (VirtIONet *)vdev;
> }
>
> -static void virtio_net_update_config(VirtIODevice *vdev, uint8_t
> *config)
> +static void virtio_net_get_config(VirtIODevice *vdev, uint8_t *config)

Yay :-)

> {
> VirtIONet *n = to_virtio_net(vdev);
> struct virtio_net_config netcfg;
> @@ -48,6 +48,22 @@ static void virtio_net_update_config(VirtIODevice
> *vdev, uint8_t *config)
> memcpy(config, &netcfg, sizeof(netcfg));
> }
>
> +static void virtio_net_set_config(VirtIODevice *vdev, const uint8_t
> *config)
> +{
> + VirtIONet *n = to_virtio_net(vdev);
> + struct virtio_net_config netcfg;
> +
> + memcpy(&netcfg, config, sizeof(netcfg));
> +
> + if (memcmp(netcfg.mac, n->mac, 6)) {
> + memcpy(n->mac, netcfg.mac, 6);
> + snprintf(n->vc->info_str, sizeof(n->vc->info_str),
> + "virtio macaddr=%02x:%02x:%02x:%02x:%02x:%02x",
> + n->mac[0], n->mac[1], n->mac[2],
> + n->mac[3], n->mac[4], n->mac[5]);

There's qemu_format_nic_info_str() now.

Cheers,
Mark.