bundles/systemd-networkd: generate unique mac address for vlan interfaces
This commit is contained in:
parent
ac58f2a10c
commit
0d1a220b7b
2 changed files with 8 additions and 1 deletions
|
@ -1,6 +1,7 @@
|
||||||
[NetDev]
|
[NetDev]
|
||||||
Name=${interface}
|
Name=${interface}
|
||||||
Kind=vlan
|
Kind=vlan
|
||||||
|
MACAddress=${mac}
|
||||||
|
|
||||||
[VLAN]
|
[VLAN]
|
||||||
Id=${vlan}
|
Id=${vlan}
|
||||||
|
|
|
@ -25,6 +25,9 @@ directories = {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mac_host_prefix = '%04x' % (node.magic_number % 65534)
|
||||||
|
generated_mac = f'52:54:00:{mac_host_prefix[0:2]}:{mac_host_prefix[2:4]}:{{}}'
|
||||||
|
|
||||||
# Don't use .get() here. We might end up with a node without a network
|
# Don't use .get() here. We might end up with a node without a network
|
||||||
# config!
|
# config!
|
||||||
for interface, config in node.metadata['interfaces'].items():
|
for interface, config in node.metadata['interfaces'].items():
|
||||||
|
@ -36,12 +39,15 @@ for interface, config in node.metadata['interfaces'].items():
|
||||||
template = 'template-iface-nodhcp.network'
|
template = 'template-iface-nodhcp.network'
|
||||||
|
|
||||||
if '.' in interface:
|
if '.' in interface:
|
||||||
|
vlan_id = int(interface.split('.')[1])
|
||||||
|
vlan_hex = '%02x' % (vlan_id % 255)
|
||||||
files[f'/etc/systemd/network/{interface}.netdev'] = {
|
files[f'/etc/systemd/network/{interface}.netdev'] = {
|
||||||
'source': 'template-iface-vlan.netdev',
|
'source': 'template-iface-vlan.netdev',
|
||||||
'content_type': 'mako',
|
'content_type': 'mako',
|
||||||
'context': {
|
'context': {
|
||||||
'interface': interface,
|
'interface': interface,
|
||||||
'vlan': interface.split('.')[1],
|
'vlan': vlan_id,
|
||||||
|
'mac': generated_mac.format(vlan_hex)
|
||||||
},
|
},
|
||||||
'needed_by': {
|
'needed_by': {
|
||||||
'svc_systemd:systemd-networkd',
|
'svc_systemd:systemd-networkd',
|
||||||
|
|
Loading…
Reference in a new issue