qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2] net/net: Change the default mac address of n


From: mike
Subject: Re: [Qemu-devel] [PATCH v2] net/net: Change the default mac address of nic
Date: Tue, 15 Oct 2013 16:23:20 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130805 Thunderbird/17.0.8

On 10/15/2013 02:05 PM, Stefan Weil wrote:
Am 15.10.2013 07:57, schrieb mike:
On 10/15/2013 01:07 PM, Stefan Weil wrote:
Am 15.10.2013 06:17, schrieb Mike Qiu:
Changelog to v1:
     Find remainder of macaddr->a[5] by modulo 256,
     otherwise it may be overflow by add index++.

The default mac address is 52:54:00:12:34:56 + index, this will
cause problem that when we boot up more than one guest with all
mac addresses unset by default, assume that each guest has one
nic. In this situation, all the guest's nic has the same mac address.

This patch is to solve this bug.

Signed-off-by: Mike Qiu <address@hidden>
---
   net/net.c | 9 ++++++---
   1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/net/net.c b/net/net.c
index c330c9a..9e72764 100644
--- a/net/net.c
+++ b/net/net.c
@@ -21,6 +21,8 @@
    * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN
    * THE SOFTWARE.
    */
+#include <time.h>
+
   #include "config-host.h"
     #include "net/net.h"
@@ -147,12 +149,13 @@ void qemu_macaddr_default_if_unset(MACAddr
*macaddr)
         if (memcmp(macaddr, &zero, sizeof(zero)) != 0)
           return;
+    srand((unsigned)time(NULL));
       macaddr->a[0] = 0x52;
       macaddr->a[1] = 0x54;
       macaddr->a[2] = 0x00;
-    macaddr->a[3] = 0x12;
-    macaddr->a[4] = 0x34;
-    macaddr->a[5] = 0x56 + index++;
+    macaddr->a[3] = rand() % 256;
+    macaddr->a[4] = rand() % 256;
+    macaddr->a[5] = (rand() % 256 + index++) % 256;
   }
     /**
There is no overflow which must be handled because a[5] is an uint8_t
value, so the assignment automatically limits the range to 0...255.
OK, you are right, but I think we'd better to ensure this,
even though a[5] is an uint8_t.
Is it reasonable to get a random mac address in your guest? I don't
think so. It would no longer be possible to connect to a guest using
ssh, restart that guest and connect again with ssh.
Why not? I have do the experiment, after reboot, the mac is not changed.
and the ip address always the same.

And can be login to the guest after reboot.
"restart" means terminate QEMU and start it again.
OK,  qemu support the mac address unset right ?
So it may be a joke if just can start only one VM with mac address unset :).

In your case, also can use monitor to get the mac address, simply 'info network' :)
Then you can do as if you set the mac address.

Thanks
Mike







reply via email to

[Prev in Thread] Current Thread [Next in Thread]