Patchwork net: fix default MAC assignment for hotplugged NICs

login
register
mail settings
Submitter Marcelo Tosatti
Date July 28, 2011, 3:12 p.m.
Message ID <20110728151216.GA18809@amt.cnet>
Download mbox | patch
Permalink /patch/107269/
State New
Headers show

Comments

Marcelo Tosatti - July 28, 2011, 3:12 p.m.
The index for assignment of default MAC address is duplicated:
qemu_macaddr_default_if_unset has its own variable and net_init_nic uses
the nic table index.

This leads to assignment of same MAC addresses to NICs initialized via
command line and hotplugged ones.

Fix by not assigning default MAC address in net_init_nic, leaving
that job to qemu_macaddr_default_if_unset.

Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Reported-by: Amos Kong <akong@redhat.com>
BZ: https://bugzilla.redhat.com/show_bug.cgi?id=712046
Peter Maydell - July 28, 2011, 3:22 p.m.
On 28 July 2011 16:12, Marcelo Tosatti <mtosatti@redhat.com> wrote:
>
> The index for assignment of default MAC address is duplicated:
> qemu_macaddr_default_if_unset has its own variable and net_init_nic uses
> the nic table index.

Isn't this already fixed by commit 6eed18568d ?

-- PMM
Marcelo Tosatti - July 28, 2011, 3:26 p.m.
On Thu, Jul 28, 2011 at 04:22:09PM +0100, Peter Maydell wrote:
> On 28 July 2011 16:12, Marcelo Tosatti <mtosatti@redhat.com> wrote:
> >
> > The index for assignment of default MAC address is duplicated:
> > qemu_macaddr_default_if_unset has its own variable and net_init_nic uses
> > the nic table index.
> 
> Isn't this already fixed by commit 6eed18568d ?
> 
> -- PMM

Yes, thanks for pointing out.

Patch

diff --git a/net.c b/net.c
index 66123ad..f34400c 100644
--- a/net.c
+++ b/net.c
@@ -776,13 +776,6 @@  static int net_init_nic(QemuOpts *opts,
         nd->devaddr = qemu_strdup(qemu_opt_get(opts, "addr"));
     }
 
-    nd->macaddr[0] = 0x52;
-    nd->macaddr[1] = 0x54;
-    nd->macaddr[2] = 0x00;
-    nd->macaddr[3] = 0x12;
-    nd->macaddr[4] = 0x34;
-    nd->macaddr[5] = 0x56 + idx;
-
     if (qemu_opt_get(opts, "macaddr") &&
         net_parse_macaddr(nd->macaddr, qemu_opt_get(opts, "macaddr")) < 0) {
         error_report("invalid syntax for ethernet address");