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. - Parameters:
- iface – Network interface 
 
- Returns:
- <0 if error, index in lldp array if iface is found there 
 
 - 
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 = 0
- End Of LLDPDU (optional) 
 - 
enumerator LLDP_TLV_CHASSIS_ID = 1
- Chassis ID (mandatory) 
 - 
enumerator LLDP_TLV_PORT_ID = 2
- Port ID (mandatory) 
 - 
enumerator LLDP_TLV_TTL = 3
- Time To Live (mandatory) 
 - 
enumerator LLDP_TLV_PORT_DESC = 4
- Port Description (optional) 
 - 
enumerator LLDP_TLV_SYSTEM_NAME = 5
- System Name (optional) 
 - 
enumerator LLDP_TLV_SYSTEM_DESC = 6
- System Description (optional) 
 - 
enumerator LLDP_TLV_SYSTEM_CAPABILITIES = 7
- System Capability (optional) 
 - 
enumerator LLDP_TLV_MANAGEMENT_ADDR = 8
- Management Address (optional) 
 - 
enumerator LLDP_TLV_ORG_SPECIFIC = 127
- Org specific TLVs (optional) 
 
- 
enumerator LLDP_TLV_END_LLDPDU = 0
 - Functions - 
int net_lldp_config(struct net_if *iface, const struct net_lldpdu *lldpdu)
- Set the LLDP data unit for a network interface. - Parameters:
- iface – Network interface 
- lldpdu – LLDP data unit struct 
 
- Returns:
- 0 if ok, <0 if error 
 
 - 
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. - Parameters:
- iface – Network interface 
- tlv – LLDP optional TLVs following mandatory part 
- len – Length of the optional TLVs 
 
- Returns:
- 0 if ok, <0 if error 
 
 - 
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. - Parameters:
- iface – Network interface 
- cb – Callback function 
 
- Returns:
- 0 if ok, < 0 if error 
 
 - 
enum net_verdict net_lldp_recv(struct net_if *iface, struct net_pkt *pkt)
- Parse LLDP packet. - Parameters:
- iface – Network interface 
- pkt – Network packet 
 
- Returns:
- Return the policy for network buffer 
 
 - 
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. Public Members - 
struct net_lldp_chassis_tlv chassis_id
- Mandatory Chassis TLV. 
 - 
struct net_lldp_port_tlv port_id
- Mandatory Port TLV. 
 - 
struct net_lldp_time_to_live_tlv ttl
- Mandatory TTL TLV. 
 
- 
struct net_lldp_chassis_tlv chassis_id
 
- 
net_lldp_set_lldpdu(iface)