intel / openlldp

Other
54 stars 42 forks source link

optional TLVs are empty even with "enableTx=on" #82

Closed dusane closed 2 years ago

dusane commented 2 years ago

lldpad v 1.1.0

If I use following : lldptool set-lldp -i $lldp_intf adminStatus=rxtx lldptool -T -i $lldp_intf -V sysName enableTx=yes lldptool -T -i $lldp_intf -V portDesc enableTx=yes lldptool -T -i $lldp_intf -V sysDesc enableTx=yes lldptool -T -i $lldp_intf -V sysCap enableTx=yes lldptool -T -i $lldp_intf -V mngAddr enableTx=yes

I don't get following optional TLVs for interface $lldp_intf "System Name TLV, System Description TLV, System Capabilities TLV"

The only change that helps getting these optional TLVs is to using "enableTx=no" for mngAddr. ( If I set it "enableTx=no" for any other TLV its not helping ).

Shouldnt "enableTx =yes" enable the specific TLV ?

dusane commented 2 years ago

Has anyone seen this ? Is this a known issue ? The workaround for this issue is to use "lldptool -T -i $lldp_intf -V mngAddr enableTx=no"

apconole commented 2 years ago

What do the debug logs say? EDIT: Whoops, hit the enter too soon. I am surprised that disabling mngAddr TLV would allow this to print. That tells me something isn't returning correctly from the basman_get_manaddr_sub(...) for ipv4, ipv6, and 802 information. Can you tell what kind of device you're using?

apconole commented 2 years ago

Hrrm... can you try with the following patch?

diff --git a/lldp_basman.c b/lldp_basman.c
index 25e7d9e..cb0c50c 100644
--- a/lldp_basman.c
+++ b/lldp_basman.c
@@ -515,7 +515,7 @@ static int basman_bld_manaddr_tlv(struct basman_data *bd,
    if (rc) {
        rc = basman_get_manaddr_sub(bd, agent, MANADDR_IPV6);
        if (rc)
-           basman_get_manaddr_sub(bd, agent, MANADDR_ALL802);
+           rc = basman_get_manaddr_sub(bd, agent, MANADDR_ALL802);
    }
 out_err:
    return rc;

This could be the issue.

dusane commented 2 years ago

The patch works ! Thanks