On 05/10/2011 02:51 AM, Rob Landley wrote:
> Until recently, -net options used to add interfaces to linux in the same
> order they went on the command line, so the first one you listed on the
> qemu command line would become eth0, the second -net became eth1, and so
> on.  Now they're added in _reverse_ order, so the _last_ one on the
> command line is eth0.
> 
> I bisected the behavior change to commit
> 60c07d933c66c4b30a83b7ccbc8a0cb3df1b2d0e but don't understand why it
> changes this behavior.  (Probably making udev do something stupid, but
> it happens consistently both before and after...)
> 
> Rob

I poked at this a bit more, and got the problem to be more explicit:

$ ~/qemu/x86_64-softmmu/qemu-system-x86_64 -m 512 \
  -kernel ~/linux/arch/x86/boot/bzImage -no-reboot -hda squeeze.ext3 \
  -append "root=/dev/hda rw" \
  -net nic,model=e1000,macaddr=52:54:00:11:11:11 -net user \
  -redir tcp:9876::22 \
  -net nic,model=e1000,macaddr=52:54:00:22:22:22 \
  -net tap,ifname=kvm0,script=no,downscript=no

Before the above commit the 11:11:11 interface becomes -net user (and
thus dhclient works on it), and the 22:22:22 interface becomes -net tap
and needs a static IP.

After the above commit, 22:22:22 gets 10.0.2.16 (instead of 10.0.2.15),
and 11:11:11 doesn't respond to dhcp.

Would anyone like to explain what's going on, and what I _should_ be
doing here to get predictable behavior?  I deleted
/etc/udev/rules.d/70-persistent-net.rules when it first started
misbehaving, but that's not it.  The association between -net nic and
-net user/tap no longer seems to be in the order the command line
options go.

Rob

Reply via email to