Randomize the 4th and 5th bytes when provided with a base mac address. Fixes #522.

This commit is contained in:
grossmj 2016-05-27 23:00:05 -06:00
parent 8e3e3c08f8
commit 914fe7e750
2 changed files with 8 additions and 6 deletions

View File

@ -28,6 +28,7 @@ import subprocess
import shlex
import asyncio
import socket
import random
import gns3server
from gns3server.utils import parse_version
@ -493,9 +494,9 @@ class QemuVM(BaseVM):
"""
if not mac_address:
self._mac_address = "00:00:ab:%s:%s:00" % (self.id[-4:-2], self.id[-2:])
self._mac_address = "12:34:%02x:%02x:%02x:00" % (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
else:
self._mac_address = mac_address
self._mac_address = mac_address[:8] + ":%02x:%02x:00" % (random.randint(0, 255), random.randint(0, 255))
log.info('QEMU VM "{name}" [{id}]: MAC address changed to {mac_addr}'.format(name=self._name,
id=self._id,

View File

@ -30,19 +30,20 @@ def force_unix_path(path):
return posixpath.normpath(path)
def macaddress_to_int(macaddress):
def macaddress_to_int(mac_address):
"""
Convert a macaddress with the format 00:0c:29:11:b0:0a to a int
:param macaddress: The mac address
:param mac_address: The mac address
:returns: Integer
"""
return int(macaddress.replace(":", ""), 16)
return int(mac_address.replace(":", ""), 16)
def int_to_macaddress(integer):
"""
Convert an integer to a macaddress
Convert an integer to a mac address
"""
return ":".join(textwrap.wrap("%012x" % (integer), width=2))