Link Layer Discovery Protocol¶
Overview¶
The Link Layer Discovery Protocol (LLDP) is a vendor-neutral link layer protocol used by network devices for advertising their identity, capabilities, and neighbors on a wired Ethernet network.
For more information, see this LLDP Wikipedia article.
API Reference¶
-
group
lldp
LLDP definitions and helpers.
Defines
-
net_lldp_set_lldpdu
(iface)¶ Set LLDP protocol data unit (LLDPDU) for the network interface.
- Return
- <0 if error, index in lldp array if iface is found there
- Parameters
iface
: Network interface
-
net_lldp_unset_lldpdu
(iface)¶ Unset LLDP protocol data unit (LLDPDU) for the network interface.
- Parameters
iface
: Network interface
Typedefs
-
typedef enum net_verdict (*
net_lldp_recv_cb_t
)(struct net_if *iface, struct net_pkt *pkt)¶ LLDP Receive packet callback.
Callback gets called upon receiving packet. It is responsible for freeing packet or indicating to the stack that it needs to free packet by returning correct net_verdict.
Returns:
- NET_DROP, if packet was invalid, rejected or we want the stack to free it. In this case the core stack will free the packet.
- NET_OK, if the packet was accepted, in this case the ownership of the net_pkt goes to callback and core network stack will forget it.
Enums
-
enum
net_lldp_tlv_type
¶ TLV Types. Please refer to table 8-1 from IEEE 802.1AB standard.
Values:
-
LLDP_TLV_END_LLDPDU
= 0¶ End Of LLDPDU (optional)
-
LLDP_TLV_CHASSIS_ID
= 1¶ Chassis ID (mandatory)
-
LLDP_TLV_PORT_ID
= 2¶ Port ID (mandatory)
-
LLDP_TLV_TTL
= 3¶ Time To Live (mandatory)
-
LLDP_TLV_PORT_DESC
= 4¶ Port Description (optional)
-
LLDP_TLV_SYSTEM_NAME
= 5¶ System Name (optional)
-
LLDP_TLV_SYSTEM_DESC
= 6¶ System Description (optional)
-
LLDP_TLV_SYSTEM_CAPABILITIES
= 7¶ System Capability (optional)
-
LLDP_TLV_MANAGEMENT_ADDR
= 8¶ Management Address (optional)
-
LLDP_TLV_ORG_SPECIFIC
= 127¶ Org specific TLVs (optional)
-
Functions
-
int
net_lldp_config
(struct net_if *iface, const struct net_lldpdu *lldpdu)¶ Set the LLDP data unit for a network interface.
- Return
- 0 if ok, <0 if error
- Parameters
iface
: Network interfacelldpdu
: LLDP data unit struct
-
int
net_lldp_config_optional
(struct net_if *iface, const u8_t *tlv, size_t len)¶ Set the Optional LLDP TLVs for a network interface.
- Return
- 0 if ok, <0 if error
- Parameters
iface
: Network interfacetlv
: LLDP optional TLVs following mandatory partlen
: Length of the optional TLVs
-
void
net_lldp_init
(void)¶ Initialize LLDP engine.
-
int
net_lldp_register_callback
(struct net_if *iface, net_lldp_recv_cb_t cb)¶ Register LLDP Rx callback function.
- Return
- 0 if ok, < 0 if error
- Parameters
iface
: Network interfacecb
: Callback function
-
struct
net_lldp_chassis_tlv
¶ - #include <lldp.h>
Chassis ID TLV, see chapter 8.5.2 in IEEE 802.1AB
-
struct
net_lldp_port_tlv
¶ - #include <lldp.h>
Port ID TLV, see chapter 8.5.3 in IEEE 802.1AB
-
struct
net_lldp_time_to_live_tlv
¶ - #include <lldp.h>
Time To Live TLV, see chapter 8.5.4 in IEEE 802.1AB
-
struct
net_lldpdu
¶ - #include <lldp.h>
LLDP Data Unit (LLDPDU) shall contain the following ordered TLVs as stated in “8.2 LLDPDU format” from the IEEE 802.1AB
-