Files

41 lines
1.3 KiB
Python

"""
Fetch LLDP local system data from remote device.
"""
reverse_subtype_mapping = {
"chassis-component": 1,
"interface-alias": 2,
"port-component": 3,
"mac-address": 4,
"network-address": 5,
"interface-name": 6,
"local": 7 # 'local' maps to 7 as per LLDP spec
}
def get_remote_systems_data(target, port):
"""Fetch the full remote-systems-data list for a specific port"""
content = target.get_data("/ieee802-dot1ab-lldp:lldp")
if not content:
return []
for port_entry in content.get("lldp", {}).get("port", []):
if port_entry.get("name") == port:
return port_entry.get("remote-systems-data", [])
return []
def get_chassis_ids(target, port):
"""Fetch all LLDP chassis IDs for neighbors on a specific port"""
neighbors = get_remote_systems_data(target, port)
return [neighbor.get("chassis-id") for neighbor in neighbors if "chassis-id" in neighbor]
def get_chassis_ids_subtype(target, port):
"""Fetch all LLDP chassis ID subtypes for neighbors on a specific port and convert them to numbers."""
neighbors = get_remote_systems_data(target, port)
return [
reverse_subtype_mapping.get(neighbor.get("chassis-id-subtype"), 0) # Default to 0 if unknown
for neighbor in neighbors if "chassis-id-subtype" in neighbor
]