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:
-
enumerator
LLDP_TLV_END_LLDPDU
¶ End Of LLDPDU (optional)
-
enumerator
LLDP_TLV_CHASSIS_ID
¶ Chassis ID (mandatory)
-
enumerator
LLDP_TLV_PORT_ID
¶ Port ID (mandatory)
-
enumerator
LLDP_TLV_TTL
¶ Time To Live (mandatory)
-
enumerator
LLDP_TLV_PORT_DESC
¶ Port Description (optional)
-
enumerator
LLDP_TLV_SYSTEM_NAME
¶ System Name (optional)
-
enumerator
LLDP_TLV_SYSTEM_DESC
¶ System Description (optional)
-
enumerator
LLDP_TLV_SYSTEM_CAPABILITIES
¶ System Capability (optional)
-
enumerator
LLDP_TLV_MANAGEMENT_ADDR
¶ Management Address (optional)
-
enumerator
LLDP_TLV_ORG_SPECIFIC
¶ Org specific TLVs (optional)
-
enumerator
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 uint8_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
-
enum net_verdict
net_lldp_recv
(struct net_if *iface, struct net_pkt *pkt)¶ Parse LLDP packet.
- Return
Return the policy for network buffer
- Parameters
iface
: Network interfacepkt
: Network packet
-
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
-