1 /* -*- mode: c; c-file-style: "openbsd" -*- */ 2 /* 3 * Copyright (c) 2008 Vincent Bernat <bernat@luffy.cx> 4 * 5 * Permission to use, copy, modify, and/or distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18 #ifndef _LLDP_H 19 #define _LLDP_H 20 21 /* Definitions prefixed by `LLDP_` are constants from LLDP 22 * specifications. Definitions prefixed by `LLDPD_` are custom 23 * constants that are useful in the context of lldpd and its clients. 24 */ 25 26 #define LLDP_TLV_ORG 127 27 #define LLDP_TLV_ORG_OUI_LEN 3 28 #define LLDP_TLV_ORG_OUI_INFO_MAXLEN 507 29 30 /* Chassis ID subtype */ 31 #define LLDP_CHASSISID_SUBTYPE_CHASSIS 1 32 #define LLDP_CHASSISID_SUBTYPE_IFALIAS 2 33 #define LLDP_CHASSISID_SUBTYPE_PORT 3 34 #define LLDP_CHASSISID_SUBTYPE_LLADDR 4 35 #define LLDP_CHASSISID_SUBTYPE_ADDR 5 36 #define LLDP_CHASSISID_SUBTYPE_IFNAME 6 37 #define LLDP_CHASSISID_SUBTYPE_LOCAL 7 38 39 /* Port ID subtype */ 40 #define LLDP_PORTID_SUBTYPE_UNKNOWN 0 41 #define LLDP_PORTID_SUBTYPE_IFALIAS 1 42 #define LLDP_PORTID_SUBTYPE_PORT 2 43 #define LLDP_PORTID_SUBTYPE_LLADDR 3 44 #define LLDP_PORTID_SUBTYPE_ADDR 4 45 #define LLDP_PORTID_SUBTYPE_IFNAME 5 46 #define LLDP_PORTID_SUBTYPE_AGENTCID 6 47 #define LLDP_PORTID_SUBTYPE_LOCAL 7 48 #define LLDP_PORTID_SUBTYPE_MAX LLDP_PORTID_SUBTYPE_LOCAL 49 50 /* Operational MAU Type field. See: https://www.iana.org/assignments/ianamau-mib/ianamau-mib */ 51 #define LLDP_DOT3_MAU_AUI 1 52 #define LLDP_DOT3_MAU_10BASE5 2 53 #define LLDP_DOT3_MAU_FOIRL 3 54 #define LLDP_DOT3_MAU_10BASE2 4 55 #define LLDP_DOT3_MAU_10BASET 5 56 #define LLDP_DOT3_MAU_10BASEFP 6 57 #define LLDP_DOT3_MAU_10BASEFB 7 58 #define LLDP_DOT3_MAU_10BASEFL 8 59 #define LLDP_DOT3_MAU_10BROAD36 9 60 #define LLDP_DOT3_MAU_10BASETHD 10 61 #define LLDP_DOT3_MAU_10BASETFD 11 62 #define LLDP_DOT3_MAU_10BASEFLHD 12 63 #define LLDP_DOT3_MAU_10BASEFLFD 13 64 #define LLDP_DOT3_MAU_100BASET4 14 65 #define LLDP_DOT3_MAU_100BASETXHD 15 66 #define LLDP_DOT3_MAU_100BASETXFD 16 67 #define LLDP_DOT3_MAU_100BASEFXHD 17 68 #define LLDP_DOT3_MAU_100BASEFXFD 18 69 #define LLDP_DOT3_MAU_100BASET2HD 19 70 #define LLDP_DOT3_MAU_100BASET2FD 20 71 #define LLDP_DOT3_MAU_1000BASEXHD 21 72 #define LLDP_DOT3_MAU_1000BASEXFD 22 73 #define LLDP_DOT3_MAU_1000BASELXHD 23 74 #define LLDP_DOT3_MAU_1000BASELXFD 24 75 #define LLDP_DOT3_MAU_1000BASESXHD 25 76 #define LLDP_DOT3_MAU_1000BASESXFD 26 77 #define LLDP_DOT3_MAU_1000BASECXHD 27 78 #define LLDP_DOT3_MAU_1000BASECXFD 28 79 #define LLDP_DOT3_MAU_1000BASETHD 29 80 #define LLDP_DOT3_MAU_1000BASETFD 30 81 #define LLDP_DOT3_MAU_10GIGBASEX 31 82 #define LLDP_DOT3_MAU_10GIGBASELX4 32 83 #define LLDP_DOT3_MAU_10GIGBASER 33 84 #define LLDP_DOT3_MAU_10GIGBASEER 34 85 #define LLDP_DOT3_MAU_10GIGBASELR 35 86 #define LLDP_DOT3_MAU_10GIGBASESR 36 87 #define LLDP_DOT3_MAU_10GIGBASEW 37 88 #define LLDP_DOT3_MAU_10GIGBASEEW 38 89 #define LLDP_DOT3_MAU_10GIGBASELW 39 90 #define LLDP_DOT3_MAU_10GIGBASESW 40 91 #define LLDP_DOT3_MAU_10GIGBASECX4 41 92 #define LLDP_DOT3_MAU_2BASETL 42 93 #define LLDP_DOT3_MAU_10PASSTS 43 94 #define LLDP_DOT3_MAU_100BASEBX10D 44 95 #define LLDP_DOT3_MAU_100BASEBX10U 45 96 #define LLDP_DOT3_MAU_100BASELX10 46 97 #define LLDP_DOT3_MAU_1000BASEBX10D 47 98 #define LLDP_DOT3_MAU_1000BASEBX10U 48 99 #define LLDP_DOT3_MAU_1000BASELX10 49 100 #define LLDP_DOT3_MAU_1000BASEPX10D 50 101 #define LLDP_DOT3_MAU_1000BASEPX10U 51 102 #define LLDP_DOT3_MAU_1000BASEPX20D 52 103 #define LLDP_DOT3_MAU_1000BASEPX20U 53 104 #define LLDP_DOT3_MAU_10GBASET 54 105 #define LLDP_DOT3_MAU_10GBASELRM 55 106 #define LLDP_DOT3_MAU_1000BASEKX 56 107 #define LLDP_DOT3_MAU_10GBASEKX4 57 108 #define LLDP_DOT3_MAU_10GBASEKR 58 109 #define LLDP_DOT3_MAU_10G1GBASEPRXD1 59 110 #define LLDP_DOT3_MAU_10G1GBASEPRXD2 60 111 #define LLDP_DOT3_MAU_10G1GBASEPRXD3 61 112 #define LLDP_DOT3_MAU_10G1GBASEPRXU1 62 113 #define LLDP_DOT3_MAU_10G1GBASEPRXU2 63 114 #define LLDP_DOT3_MAU_10G1GBASEPRXU3 64 115 #define LLDP_DOT3_MAU_10GBASEPRD1 65 116 #define LLDP_DOT3_MAU_10GBASEPRD2 66 117 #define LLDP_DOT3_MAU_10GBASEPRD3 67 118 #define LLDP_DOT3_MAU_10GBASEPRU1 68 119 #define LLDP_DOT3_MAU_10GBASEPRU3 69 120 #define LLDP_DOT3_MAU_40GBASEKR4 70 121 #define LLDP_DOT3_MAU_40GBASECR4 71 122 #define LLDP_DOT3_MAU_40GBASESR4 72 123 #define LLDP_DOT3_MAU_40GBASEFR 73 124 #define LLDP_DOT3_MAU_40GBASELR4 74 125 #define LLDP_DOT3_MAU_100GBASECR10 75 126 #define LLDP_DOT3_MAU_100GBASESR10 76 127 #define LLDP_DOT3_MAU_100GBASELR4 77 128 #define LLDP_DOT3_MAU_100GBASEER4 78 129 130 /* Dot3 Power Devicetype */ 131 #define LLDP_DOT3_POWER_PSE 1 132 #define LLDP_DOT3_POWER_PD 2 133 134 /* Dot3 Power Pairs (RFC 3621) */ 135 #define LLDP_DOT3_POWERPAIRS_SIGNAL 1 136 #define LLDP_DOT3_POWERPAIRS_SPARE 2 137 138 /* Dot3 Power type (for 802.3at) */ 139 #define LLDP_DOT3_POWER_8023AT_OFF 0 140 #define LLDP_DOT3_POWER_8023AT_TYPE1 1 141 #define LLDP_DOT3_POWER_8023AT_TYPE2 2 142 143 /* 802.3bt additions */ 144 #define LLDP_DOT3_POWER_8023BT_OFF 0 145 #define LLDP_DOT3_POWER_8023BT_TYPE3 1 146 #define LLDP_DOT3_POWER_8023BT_TYPE4 2 147 148 /* Dot3 power source */ 149 #define LLDP_DOT3_POWER_SOURCE_UNKNOWN 0 150 #define LLDP_DOT3_POWER_SOURCE_PRIMARY 1 151 #define LLDP_DOT3_POWER_SOURCE_PSE 1 152 #define LLDP_DOT3_POWER_SOURCE_BACKUP 2 153 #define LLDP_DOT3_POWER_SOURCE_LOCAL 2 154 #define LLDP_DOT3_POWER_SOURCE_BOTH 3 155 156 /* Dot3 power priority */ 157 #define LLDP_DOT3_POWER_PRIO_UNKNOWN 0 158 #define LLDP_DOT3_POWER_PRIO_CRITICAL 1 159 #define LLDP_DOT3_POWER_PRIO_HIGH 2 160 #define LLDP_DOT3_POWER_PRIO_LOW 3 161 162 /* PMD Auto-Negotiation Advertised Capability field, from RFC 3636 (see 163 * IANAifMauAutoNegCapBits). Unfortunately, we are limited to two bytes, so 164 * higher speed capabilities will map to "other". */ 165 #define LLDP_DOT3_LINK_AUTONEG_OTHER 0x8000 166 #define LLDP_DOT3_LINK_AUTONEG_10BASE_T 0x4000 167 #define LLDP_DOT3_LINK_AUTONEG_10BASET_FD 0x2000 168 #define LLDP_DOT3_LINK_AUTONEG_100BASE_T4 0x1000 169 #define LLDP_DOT3_LINK_AUTONEG_100BASE_TX 0x0800 170 #define LLDP_DOT3_LINK_AUTONEG_100BASE_TXFD 0x0400 171 #define LLDP_DOT3_LINK_AUTONEG_100BASE_T2 0x0200 172 #define LLDP_DOT3_LINK_AUTONEG_100BASE_T2FD 0x0100 173 #define LLDP_DOT3_LINK_AUTONEG_FDX_PAUSE 0x0080 174 #define LLDP_DOT3_LINK_AUTONEG_FDX_APAUSE 0x0040 175 #define LLDP_DOT3_LINK_AUTONEG_FDX_SPAUSE 0x0020 176 #define LLDP_DOT3_LINK_AUTONEG_FDX_BPAUSE 0x0010 177 #define LLDP_DOT3_LINK_AUTONEG_1000BASE_X 0x0008 178 #define LLDP_DOT3_LINK_AUTONEG_1000BASE_XFD 0x0004 179 #define LLDP_DOT3_LINK_AUTONEG_1000BASE_T 0x0002 180 #define LLDP_DOT3_LINK_AUTONEG_1000BASE_TFD 0x0001 181 182 /* Capabilities */ 183 #define LLDP_CAP_OTHER 0x01 184 #define LLDP_CAP_REPEATER 0x02 185 #define LLDP_CAP_BRIDGE 0x04 186 #define LLDP_CAP_WLAN 0x08 187 #define LLDP_CAP_ROUTER 0x10 188 #define LLDP_CAP_TELEPHONE 0x20 189 #define LLDP_CAP_DOCSIS 0x40 190 #define LLDP_CAP_STATION 0x80 191 192 #define LLDP_PPVID_CAP_SUPPORTED (1 << 1) 193 #define LLDP_PPVID_CAP_ENABLED (1 << 2) 194 195 /* see http://www.iana.org/assignments/address-family-numbers */ 196 #define LLDP_MGMT_ADDR_NONE 0 197 #define LLDP_MGMT_ADDR_IP4 1 198 #define LLDP_MGMT_ADDR_IP6 2 199 200 #define LLDP_MGMT_IFACE_UNKNOWN 1 201 #define LLDP_MGMT_IFACE_IFINDEX 2 202 #define LLDP_MGMT_IFACE_SYSPORT 3 203 204 #define LLDP_MED_CLASS_I 1 205 #define LLDP_MED_CLASS_II 2 206 #define LLDP_MED_CLASS_III 3 207 #define LLDP_MED_NETWORK_DEVICE 4 208 209 /* LLDP MED application ttpes */ 210 #define LLDP_MED_APPTYPE_UNDEFINED 0 211 #define LLDP_MED_APPTYPE_VOICE 1 212 #define LLDP_MED_APPTYPE_VOICESIGNAL 2 213 #define LLDP_MED_APPTYPE_GUESTVOICE 3 214 #define LLDP_MED_APPTYPE_GUESTVOICESIGNAL 4 215 #define LLDP_MED_APPTYPE_SOFTPHONEVOICE 5 216 #define LLDP_MED_APPTYPE_VIDEOCONFERENCE 6 217 #define LLDP_MED_APPTYPE_VIDEOSTREAM 7 218 #define LLDP_MED_APPTYPE_VIDEOSIGNAL 8 219 #define LLDP_MED_APPTYPE_LAST LLDP_MED_APPTYPE_VIDEOSIGNAL 220 221 /* LLDP MED location formats */ 222 #define LLDP_MED_LOCFORMAT_COORD 1 223 #define LLDP_MED_LOCFORMAT_CIVIC 2 224 #define LLDP_MED_LOCFORMAT_ELIN 3 225 #define LLDP_MED_LOCFORMAT_LAST LLDP_MED_LOCFORMAT_ELIN 226 227 #define LLDP_MED_LOCATION_GEOID_WGS84 1 228 #define LLDP_MED_LOCATION_GEOID_NAD83 2 229 #define LLDP_MED_LOCATION_GEOID_NAD83_MLLW 3 230 231 #define LLDP_MED_LOCATION_ALTITUDE_UNIT_METER 1 232 #define LLDP_MED_LOCATION_ALTITUDE_UNIT_FLOOR 2 233 234 /* LLDP MED power related constants */ 235 #define LLDP_MED_POW_TYPE_PSE 1 236 #define LLDP_MED_POW_TYPE_PD 2 237 #define LLDP_MED_POW_TYPE_RESERVED 3 238 239 #define LLDP_MED_POW_SOURCE_UNKNOWN 1 240 #define LLDP_MED_POW_SOURCE_PRIMARY 2 241 #define LLDP_MED_POW_SOURCE_BACKUP 3 242 #define LLDP_MED_POW_SOURCE_RESERVED 4 243 #define LLDP_MED_POW_SOURCE_PSE 5 244 #define LLDP_MED_POW_SOURCE_LOCAL 6 245 #define LLDP_MED_POW_SOURCE_BOTH 7 246 247 #define LLDP_MED_POW_PRIO_UNKNOWN 0 248 #define LLDP_MED_POW_PRIO_CRITICAL 1 249 #define LLDP_MED_POW_PRIO_HIGH 2 250 #define LLDP_MED_POW_PRIO_LOW 3 251 252 /* LLDP MED capabilities */ 253 #define LLDP_MED_CAP_CAP 0x01 254 #define LLDP_MED_CAP_POLICY 0x02 255 #define LLDP_MED_CAP_LOCATION 0x04 256 #define LLDP_MED_CAP_MDI_PSE 0x08 257 #define LLDP_MED_CAP_MDI_PD 0x10 258 #define LLDP_MED_CAP_IV 0x20 259 260 /* Protocol constants for multi-protocol lldpd */ 261 #define LLDPD_MODE_LLDP 1 262 #define LLDPD_MODE_CDPV1 2 263 #define LLDPD_MODE_CDPV2 3 264 #define LLDPD_MODE_SONMP 4 265 #define LLDPD_MODE_EDP 5 266 #define LLDPD_MODE_FDP 6 267 #define LLDPD_MODE_MAX LLDPD_MODE_FDP 268 269 270 /* Bond slave src mac type constants */ 271 #define LLDP_BOND_SLAVE_SRC_MAC_TYPE_UNKNOWN 0 272 #define LLDP_BOND_SLAVE_SRC_MAC_TYPE_REAL 1 273 #define LLDP_BOND_SLAVE_SRC_MAC_TYPE_ZERO 2 274 #define LLDP_BOND_SLAVE_SRC_MAC_TYPE_FIXED 3 275 #define LLDP_BOND_SLAVE_SRC_MAC_TYPE_LOCALLY_ADMINISTERED 4 276 #define LLDP_BOND_SLAVE_SRC_MAC_TYPE_MAX LLDP_BOND_SLAVE_SRC_MAC_TYPE_LOCALLY_ADMINISTERED 277 278 /* Agent types */ 279 #define LLDP_AGENT_TYPE_UNKNOWN 0 280 #define LLDP_AGENT_TYPE_NEAREST_BRIDGE 1 281 #define LLDP_AGENT_TYPE_NEAREST_NONTPMR_BRIDGE 2 282 #define LLDP_AGENT_TYPE_NEAREST_CUSTOMER_BRIDGE 3 283 #define LLDP_AGENT_TYPE_MAX LLDP_AGENT_TYPE_NEAREST_CUSTOMER_BRIDGE 284 285 #endif /* _LLDP_H */ 286