1
0
mirror of https://github.com/GNS3/gns3-server synced 2025-01-12 17:10:55 +00:00

Returns the ports' adapter types and mac addresses when available.

This commit is contained in:
grossmj 2018-04-06 13:19:17 +07:00
parent adc2f69d5d
commit 7622c10cc9
4 changed files with 38 additions and 2 deletions

View File

@ -27,6 +27,8 @@ class Port:
self._port_number = port_number self._port_number = port_number
self._name = name self._name = name
self._short_name = short_name self._short_name = short_name
self._adapter_type = None
self._mac_address = None
self._link = None self._link = None
@property @property
@ -48,6 +50,22 @@ class Port:
def port_number(self): def port_number(self):
return self._port_number return self._port_number
@property
def adapter_type(self):
return self._adapter_type
@adapter_type.setter
def adapter_type(self, val):
self._adapter_type = val
@property
def mac_address(self):
return self._mac_address
@mac_address.setter
def mac_address(self, val):
self._mac_address = val
@property @property
def data_link_types(self): def data_link_types(self):
""" """
@ -81,5 +99,7 @@ class Port:
"data_link_types": self.data_link_types, "data_link_types": self.data_link_types,
"port_number": self._port_number, "port_number": self._port_number,
"adapter_number": self._adapter_number, "adapter_number": self._adapter_number,
"adapter_type": self._adapter_type,
"mac_address": self._mac_address,
"link_type": self.link_type "link_type": self.link_type
} }

View File

@ -17,6 +17,7 @@
import aiohttp import aiohttp
from gns3server.utils import macaddress_to_int, int_to_macaddress
from .atm_port import ATMPort from .atm_port import ATMPort
from .frame_relay_port import FrameRelayPort from .frame_relay_port import FrameRelayPort
from .gigabitethernet_port import GigabitEthernetPort from .gigabitethernet_port import GigabitEthernetPort
@ -92,6 +93,11 @@ class StandardPortFactory:
else: else:
segment_number += 1 segment_number += 1
port.adapter_type = custom_adapter_settings.get("adapter_type", properties.get("adapter_type", None))
mac_address = custom_adapter_settings.get("mac_address")
if not mac_address and "mac_address" in properties:
mac_address = int_to_macaddress(macaddress_to_int(properties["mac_address"]) + adapter_number)
port.mac_address = mac_address
ports.append(port) ports.append(port)
if len(ports): if len(ports):

View File

@ -219,6 +219,11 @@ NODE_OBJECT_SCHEMA = {
"type": "integer", "type": "integer",
"description": "Adapter slot" "description": "Adapter slot"
}, },
"adapter_type": {
"description": "Adapter type",
"type": ["string", "null"],
"minLength": 1,
},
"port_number": { "port_number": {
"type": "integer", "type": "integer",
"description": "Port slot" "description": "Port slot"
@ -229,9 +234,15 @@ NODE_OBJECT_SCHEMA = {
}, },
"data_link_types": { "data_link_types": {
"type": "object", "type": "object",
"description": "Available PCAP type for capture", "description": "Available PCAP types for capture",
"properties": {} "properties": {}
}, },
"mac_address": {
"description": "MAC address (if available)",
"type": ["string", "null"],
"minLength": 1,
"pattern": "^([0-9a-fA-F]{2}[:]){5}([0-9a-fA-F]{2})$"
},
}, },
"additionalProperties": False "additionalProperties": False
} }

View File

@ -17,7 +17,6 @@
import re import re
import os
import textwrap import textwrap
import posixpath import posixpath