1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-12-25 00:08:11 +00:00

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 shlex
import asyncio import asyncio
import socket import socket
import random
import gns3server import gns3server
from gns3server.utils import parse_version from gns3server.utils import parse_version
@ -493,9 +494,9 @@ class QemuVM(BaseVM):
""" """
if not mac_address: 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: 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, log.info('QEMU VM "{name}" [{id}]: MAC address changed to {mac_addr}'.format(name=self._name,
id=self._id, id=self._id,

View File

@ -30,19 +30,20 @@ def force_unix_path(path):
return posixpath.normpath(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 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 :returns: Integer
""" """
return int(macaddress.replace(":", ""), 16) return int(mac_address.replace(":", ""), 16)
def int_to_macaddress(integer): 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)) return ":".join(textwrap.wrap("%012x" % (integer), width=2))