13#ifndef ZEPHYR_INCLUDE_NET_LLDP_H_ 
   14#define ZEPHYR_INCLUDE_NET_LLDP_H_ 
   31#define LLDP_TLV_GET_LENGTH(type_length)        (type_length & BIT_MASK(9)) 
   32#define LLDP_TLV_GET_TYPE(type_length)          ((uint8_t)(type_length >> 9)) 
   37#define NET_LLDP_END_LLDPDU_VALUE 0x0000 
   46#if defined(CONFIG_NET_LLDP_CHASSIS_ID_SUBTYPE) 
   47#if (CONFIG_NET_LLDP_CHASSIS_ID_SUBTYPE == 4) 
   48#define NET_LLDP_CHASSIS_ID_VALUE               \ 
   50          CONFIG_NET_LLDP_CHASSIS_ID_MAC0,      \ 
   51          CONFIG_NET_LLDP_CHASSIS_ID_MAC1,      \ 
   52          CONFIG_NET_LLDP_CHASSIS_ID_MAC2,      \ 
   53          CONFIG_NET_LLDP_CHASSIS_ID_MAC3,      \ 
   54          CONFIG_NET_LLDP_CHASSIS_ID_MAC4,      \ 
   55          CONFIG_NET_LLDP_CHASSIS_ID_MAC5       \ 
   58#define NET_LLDP_CHASSIS_ID_VALUE_LEN (6) 
   60#define NET_LLDP_CHASSIS_ID_VALUE CONFIG_NET_LLDP_CHASSIS_ID 
   61#define NET_LLDP_CHASSIS_ID_VALUE_LEN (sizeof(CONFIG_NET_LLDP_CHASSIS_ID) - 1) 
   64#define NET_LLDP_CHASSIS_ID_VALUE 0 
   65#define NET_LLDP_CHASSIS_ID_VALUE_LEN 0 
   75#if defined(CONFIG_NET_LLDP_PORT_ID_SUBTYPE) 
   76#if (CONFIG_NET_LLDP_PORT_ID_SUBTYPE == 3) 
   77#define NET_LLDP_PORT_ID_VALUE          \ 
   79          CONFIG_NET_LLDP_PORT_ID_MAC0, \ 
   80          CONFIG_NET_LLDP_PORT_ID_MAC1, \ 
   81          CONFIG_NET_LLDP_PORT_ID_MAC2, \ 
   82          CONFIG_NET_LLDP_PORT_ID_MAC3, \ 
   83          CONFIG_NET_LLDP_PORT_ID_MAC4, \ 
   84          CONFIG_NET_LLDP_PORT_ID_MAC5  \ 
   87#define NET_LLDP_PORT_ID_VALUE_LEN (6) 
   89#define NET_LLDP_PORT_ID_VALUE CONFIG_NET_LLDP_PORT_ID 
   90#define NET_LLDP_PORT_ID_VALUE_LEN (sizeof(CONFIG_NET_LLDP_PORT_ID) - 1) 
   93#define NET_LLDP_PORT_ID_VALUE 0 
   94#define NET_LLDP_PORT_ID_VALUE_LEN 0 
  101#define NET_LLDP_CHASSIS_ID_TLV_LEN (NET_LLDP_CHASSIS_ID_VALUE_LEN + 1) 
  102#define NET_LLDP_PORT_ID_TLV_LEN (NET_LLDP_PORT_ID_VALUE_LEN + 1) 
  103#define NET_LLDP_TTL_TLV_LEN (2) 
  112#if defined(CONFIG_NET_LLDP_TX_INTERVAL) && defined(CONFIG_NET_LLDP_TX_HOLD) 
  113#define NET_LLDP_TTL \ 
  114        MIN((CONFIG_NET_LLDP_TX_INTERVAL * CONFIG_NET_LLDP_TX_HOLD) + 1, 65535) 
  235#if defined(CONFIG_NET_LLDP) 
  238#define net_lldp_set_lldpdu(iface) 
  246#if defined(CONFIG_NET_LLDP) 
  249#define net_lldp_unset_lldpdu(iface) 
int net_lldp_config(struct net_if *iface, const struct net_lldpdu *lldpdu)
Set the LLDP data unit for a network interface.
enum net_verdict(* net_lldp_recv_cb_t)(struct net_if *iface, struct net_pkt *pkt)
LLDP Receive packet callback.
Definition lldp.h:215
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.
#define net_lldp_set_lldpdu(iface)
Set LLDP protocol data unit (LLDPDU) for the network interface.
Definition lldp.h:238
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.
net_lldp_tlv_type
TLV Types.
Definition lldp.h:123
#define net_lldp_unset_lldpdu(iface)
Unset LLDP protocol data unit (LLDPDU) for the network interface.
Definition lldp.h:249
@ LLDP_TLV_ORG_SPECIFIC
Org specific TLVs (optional)
Definition lldp.h:134
@ LLDP_TLV_PORT_ID
Port ID (mandatory)
Definition lldp.h:126
@ LLDP_TLV_END_LLDPDU
End Of LLDPDU (optional)
Definition lldp.h:124
@ LLDP_TLV_PORT_DESC
Port Description (optional)
Definition lldp.h:128
@ LLDP_TLV_SYSTEM_CAPABILITIES
System Capability (optional)
Definition lldp.h:131
@ LLDP_TLV_MANAGEMENT_ADDR
Management Address (optional)
Definition lldp.h:132
@ LLDP_TLV_SYSTEM_DESC
System Description (optional)
Definition lldp.h:130
@ LLDP_TLV_SYSTEM_NAME
System Name (optional)
Definition lldp.h:129
@ LLDP_TLV_CHASSIS_ID
Chassis ID (mandatory)
Definition lldp.h:125
@ LLDP_TLV_TTL
Time To Live (mandatory)
Definition lldp.h:127
net_verdict
Net Verdict.
Definition net_core.h:103
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Network Interface structure.
Definition net_if.h:714
Chassis ID TLV, see chapter 8.5.2 in IEEE 802.1AB.
Definition lldp.h:138
uint8_t value[NET_LLDP_CHASSIS_ID_VALUE_LEN]
Chassis ID value.
Definition lldp.h:144
uint8_t subtype
ID subtype.
Definition lldp.h:142
uint16_t type_length
7 bits for type, 9 bits for length
Definition lldp.h:140
Port ID TLV, see chapter 8.5.3 in IEEE 802.1AB.
Definition lldp.h:148
uint8_t subtype
ID subtype.
Definition lldp.h:152
uint16_t type_length
7 bits for type, 9 bits for length
Definition lldp.h:150
uint8_t value[NET_LLDP_PORT_ID_VALUE_LEN]
Port ID value.
Definition lldp.h:154
Time To Live TLV, see chapter 8.5.4 in IEEE 802.1AB.
Definition lldp.h:158
uint16_t type_length
7 bits for type, 9 bits for length
Definition lldp.h:160
uint16_t ttl
Time To Live (TTL) value.
Definition lldp.h:162
LLDP Data Unit (LLDPDU) shall contain the following ordered TLVs as stated in "8.2 LLDPDU format" fro...
Definition lldp.h:169
struct net_lldp_chassis_tlv chassis_id
Mandatory Chassis TLV.
Definition lldp.h:170
struct net_lldp_port_tlv port_id
Mandatory Port TLV.
Definition lldp.h:171
struct net_lldp_time_to_live_tlv ttl
Mandatory TTL TLV.
Definition lldp.h:172
Network packet.
Definition net_pkt.h:91
struct net_if * iface
Network interface.
Definition net_pkt.h:114