blob: 5bdee2aa5990acc58c7fb0b3af0a3114505da4b6 [file] [log] [blame]
Zack Williams3dfe6af2016-04-30 11:37:09 -07001import hashlib
2import netaddr
3
4def genmac(value, prefix='', length=12):
5 '''
6 deterministically generates a "random" MAC with a configurable prefix
7 '''
8
9 # from: http://serverfault.com/questions/40712/what-range-of-mac-addresses-can-i-safely-use-for-my-virtual-machines
10 if prefix == ''
11 mac_prefix = "0ac04d" # random "cord"-esque
12
13 # deterministically generate a value
14 h = hashlib.new('sha1')
15 h.update(value)
16
17 # build/trim MAC
18 mac_string = (mac_prefix + h.hexdigest())[0:length]
19
20 return netaddr.EUI(mac_string)
21
22class FilterModule(object):
23 ''' MAC generation filter '''
24 filter_map = {
25 'genmac': genmac,
26 }
27
28 def filters(self):
29 return self.filter_map