mirror of
https://github.com/GNS3/gns3-server
synced 2024-11-12 19:38:57 +00:00
Check for valid FR or ATM switch mappings. Fixes #300.
This commit is contained in:
parent
c992cabb28
commit
a779fa7462
@ -51,10 +51,14 @@ class ATMSwitch(Device):
|
||||
|
||||
def __json__(self):
|
||||
|
||||
mappings = {}
|
||||
for source, destination in self._mappings.items():
|
||||
mappings[str(source)] = str(destination)
|
||||
|
||||
return {"name": self.name,
|
||||
"device_id": self.id,
|
||||
"project_id": self.project.id,
|
||||
"mappings": self._mappings}
|
||||
"mappings": mappings}
|
||||
|
||||
@asyncio.coroutine
|
||||
def create(self):
|
||||
@ -199,6 +203,8 @@ class ATMSwitch(Device):
|
||||
|
||||
pvc_entry = re.compile(r"""^([0-9]*):([0-9]*):([0-9]*)$""")
|
||||
for source, destination in mappings.items():
|
||||
if not isinstance(source, str) or not isinstance(destination, str):
|
||||
raise DynamipsError("Invalid ATM mappings")
|
||||
match_source_pvc = pvc_entry.search(source)
|
||||
match_destination_pvc = pvc_entry.search(destination)
|
||||
if match_source_pvc and match_destination_pvc:
|
||||
|
@ -50,10 +50,14 @@ class FrameRelaySwitch(Device):
|
||||
|
||||
def __json__(self):
|
||||
|
||||
mappings = {}
|
||||
for source, destination in self._mappings.items():
|
||||
mappings[str(source)] = str(destination)
|
||||
|
||||
return {"name": self.name,
|
||||
"device_id": self.id,
|
||||
"project_id": self.project.id,
|
||||
"mappings": self._mappings}
|
||||
"mappings": mappings}
|
||||
|
||||
@asyncio.coroutine
|
||||
def create(self):
|
||||
@ -191,6 +195,8 @@ class FrameRelaySwitch(Device):
|
||||
"""
|
||||
|
||||
for source, destination in mappings.items():
|
||||
if not isinstance(source, str) or not isinstance(destination, str):
|
||||
raise DynamipsError("Invalid Frame-Relay mappings")
|
||||
source_port, source_dlci = map(int, source.split(':'))
|
||||
destination_port, destination_dlci = map(int, destination.split(':'))
|
||||
if self.has_port(destination_port):
|
||||
|
Loading…
Reference in New Issue
Block a user