Allow mac to be set up loopbacks, iff not multicast
This commit is contained in:
@ -14,6 +14,7 @@
|
||||
import logging
|
||||
import config.lcp as lcp
|
||||
import config.address as address
|
||||
import config.mac as mac
|
||||
|
||||
def get_loopbacks(yaml):
|
||||
""" Return a list of all loopbacks. """
|
||||
@ -73,5 +74,8 @@ def validate_loopbacks(yaml):
|
||||
if not address.is_allowed(yaml, ifname, iface['addresses'], a):
|
||||
msgs.append("loopback %s IP address %s conflicts with another" % (ifname, a))
|
||||
result = False
|
||||
if 'mac' in iface and mac.is_multicast(iface['mac']):
|
||||
msgs.append("loopback %s MAC address %s cannot be multicast" % (ifname, iface['mac']))
|
||||
result = False
|
||||
|
||||
return result, msgs
|
||||
|
@ -29,6 +29,7 @@ bridgedomain-settings:
|
||||
---
|
||||
loopback:
|
||||
description: str(exclude='\'"',len=64,required=False)
|
||||
mac: mac(required=False)
|
||||
lcp: str(max=15,matches='[a-z]+[a-z0-9-]*',required=False)
|
||||
mtu: int(min=128,max=9216,required=False)
|
||||
addresses: list(ip_interface(),min=1,max=6,required=False)
|
||||
|
17
unittest/yaml/error-loopback2.yaml
Normal file
17
unittest/yaml/error-loopback2.yaml
Normal file
@ -0,0 +1,17 @@
|
||||
test:
|
||||
description: "Loopback MAC address can't be multicast"
|
||||
errors:
|
||||
expected:
|
||||
- "loopback .* MAC address .* cannot be multicast"
|
||||
count: 1
|
||||
---
|
||||
loopbacks:
|
||||
loop0:
|
||||
description: "Cool, local MACs are fine"
|
||||
mac: 02:00:00:00:00:00
|
||||
loop1:
|
||||
description: "Cool, global unicast MACs are fine"
|
||||
mac: 04:00:00:00:00:00
|
||||
loop2:
|
||||
description: "Not cool, multicast MACs"
|
||||
mac: 01:00:00:00:00:00
|
Reference in New Issue
Block a user