/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ /*** This file is part of systemd. Copyright (C) 2014 Tom Gundersen Copyright (C) 2014 Susant Sahani systemd is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. systemd is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ #pragma once #define LLDP_MULTICAST_ADDR { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x0e } #define ETHERTYPE_LLDP 0x88cc /* IEEE 802.3AB Clause 9: TLV Types */ typedef enum LLDPTypes { LLDP_TYPE_END = 0, LLDP_TYPE_CHASSIS_ID = 1, LLDP_TYPE_PORT_ID = 2, LLDP_TYPE_TTL = 3, LLDP_TYPE_PORT_DESCRIPTION = 4, LLDP_TYPE_SYSTEM_NAME = 5, LLDP_TYPE_SYSTEM_DESCRIPTION = 6, LLDP_TYPE_SYSTEM_CAPABILITIES = 7, LLDP_TYPE_MGMT_ADDRESS = 8, LLDP_TYPE_PRIVATE = 127, _LLDP_TYPE_MAX, _LLDP_TYPE_INVALID = -1, } LLDPTypes; /* IEEE 802.3AB Clause 9.5.2: Chassis subtypes */ typedef enum LLDPChassisSubtypes { LLDP_CHASSIS_SUBTYPE_RESERVED = 0, LLDP_CHASSIS_SUBTYPE_CHASSIS_COMPONENT = 1, LLDP_CHASSIS_SUBTYPE_INTERFACE_ALIAS = 2, LLDP_CHASSIS_SUBTYPE_PORT_COMPONENT = 3, LLDP_CHASSIS_SUBTYPE_MAC_ADDRESS = 4, LLDP_CHASSIS_SUBTYPE_NETWORK_ADDRESS = 5, LLDP_CHASSIS_SUBTYPE_INTERFACE_NAME = 6, LLDP_CHASSIS_SUBTYPE_LOCALLY_ASSIGNED = 7, _LLDP_CHASSIS_SUBTYPE_MAX, _LLDP_CHASSIS_SUBTYPE_INVALID = -1, } LLDPChassisSubtypes; /* IEEE 802.3AB Clause 9.5.3: Port subtype */ typedef enum LLDPPortSubtypes { LLDP_PORT_SUBTYPE_RESERVED = 0, LLDP_PORT_SUBTYPE_INTERFACE_ALIAS = 1, LLDP_PORT_SUBTYPE_PORT_COMPONENT = 2, LLDP_PORT_SUBTYPE_MAC_ADDRESS = 3, LLDP_PORT_SUBTYPE_NETWORK = 4, LLDP_PORT_SUBTYPE_INTERFACE_NAME = 5, LLDP_PORT_SUBTYPE_AGENT_CIRCUIT_ID = 6, LLDP_PORT_SUBTYPE_LOCALLY_ASSIGNED = 7, _LLDP_PORT_SUBTYPE_MAX, _LLDP_PORT_SUBTYPE_INVALID = -1 } LLDPPortSubtypes; typedef enum LLDPSystemCapabilities { LLDP_SYSTEM_CAPABILITIES_OTHER = 1 << 0, LLDP_SYSTEM_CAPABILITIES_REPEATER = 1 << 1, LLDP_SYSTEM_CAPABILITIES_BRIDGE = 1 << 2, LLDP_SYSTEM_CAPABILITIES_WLAN_AP = 1 << 3, LLDP_SYSTEM_CAPABILITIES_ROUTER = 1 << 4, LLDP_SYSTEM_CAPABILITIES_PHONE = 1 << 5, LLDP_SYSTEM_CAPABILITIES_DOCSIS = 1 << 6, LLDP_SYSTEM_CAPABILITIES_STATION = 1 << 7, LLDP_SYSTEM_CAPABILITIES_CVLAN = 1 << 8, LLDP_SYSTEM_CAPABILITIES_SVLAN = 1 << 9, LLDP_SYSTEM_CAPABILITIES_TPMR = 1 << 10, _LLDP_SYSTEM_CAPABILITIES_MAX, _LLDP_SYSTEM_CAPABILITIES_INVALID = -1, } LLDPSystemCapabilities; typedef enum LLDPMedSubtype { LLDP_MED_SUBTYPE_RESERVED = 0, LLDP_MED_SUBTYPE_CAPABILITIES = 1, LLDP_MED_SUBTYPE_NETWORK_POLICY = 2, LLDP_MED_SUBTYPE_LOCATION_ID = 3, LLDP_MED_SUBTYPE_EXTENDED_PVMDI = 4, LLDP_MED_SUBTYPE_INV_HWREV = 5, LLDP_MED_SUBTYPE_INV_FWREV = 6, LLDP_MED_SUBTYPE_INV_SWREV = 7, LLDP_MED_SUBTYPE_INV_SERIAL = 8, LLDP_MED_SUBTYPE_INV_MANUFACTURER = 9, LLDP_MED_SUBTYPE_INV_MODELNAME = 10, LLDP_MED_SUBTYPE_INV_ASSETID = 11, _LLDP_MED_SUBTYPE_MAX, _LLDP_MED_SUBTYPE_INVALID = -1, } LLDPMedSubtype; typedef enum LLDPMedCapability { LLDP_MED_CAPABILITY_CAPAPILITIES = 1 << 0, LLDP_MED_CAPABILITY_NETWORK_POLICY = 1 << 1, LLDP_MED_CAPABILITY_LOCATION_ID = 1 << 2, LLDP_MED_CAPABILITY_EXTENDED_PSE = 1 << 3, LLDP_MED_CAPABILITY_EXTENDED_PD = 1 << 4, LLDP_MED_CAPABILITY_INVENTORY = 1 << 5, LLDP_MED_CAPABILITY_MAX, LLDP_MED_CAPABILITY_INVALID = -1, } LLDPMedCapability;