72 lines
1.8 KiB
Diff
72 lines
1.8 KiB
Diff
From 76dbd2e24ff64fe7ae1503c658614e44a0a4e2e4 Mon Sep 17 00:00:00 2001
|
|
From: Jens Osterkamp <jens@linux.vnet.ibm.com>
|
|
Date: Wed, 4 May 2011 08:21:42 -0700
|
|
Subject: [PATCH 1/3] support disabling of LLDP on switch side
|
|
|
|
In case LLDP is disabled on the switch side, the switch will send a LLDP
|
|
frame with chassis, port and TTL with TTL set to 0.
|
|
In this case evb_mibdelete is called to reset the previously negotiated EVB
|
|
data.
|
|
|
|
Signed-off-by: Jens Osterkamp <jens@linux.vnet.ibm.com>
|
|
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
|
|
Signed-off-by: Petr Sabata <psabata@redhat.com>
|
|
---
|
|
lldp_evb.c | 33 +++++++++++++++++++++++++++++++++
|
|
1 files changed, 33 insertions(+), 0 deletions(-)
|
|
|
|
diff --git a/lldp_evb.c b/lldp_evb.c
|
|
index 0839054..b3d756b 100644
|
|
--- a/lldp_evb.c
|
|
+++ b/lldp_evb.c
|
|
@@ -594,6 +594,38 @@ out_err:
|
|
return;
|
|
}
|
|
|
|
+u8 evb_mibdelete(struct port *port)
|
|
+{
|
|
+ struct evb_data *ed;
|
|
+
|
|
+ if (!is_tlv_txenabled(port->ifname, TLVID_8021Qbg(LLDP_EVB_SUBTYPE))) {
|
|
+ goto out_err;
|
|
+ }
|
|
+
|
|
+ LLDPAD_DBG("%s(%i): mibdelete triggered for port %s.\n", __func__,
|
|
+ __LINE__, port->ifname);
|
|
+
|
|
+ ed = evb_data(port->ifname);
|
|
+ if (!ed) {
|
|
+ LLDPAD_DBG("%s:%s does not exist.\n", __func__, port->ifname);
|
|
+ goto out_err;
|
|
+ }
|
|
+
|
|
+ free(ed->tie);
|
|
+ free(ed->last);
|
|
+ free(ed->policy);
|
|
+
|
|
+ if (evb_init_cfg_tlv(ed)) {
|
|
+ LLDPAD_ERR("%s:%s evb_init_cfg_tlv failed\n", __func__, port->ifname);
|
|
+ goto out_err;
|
|
+ }
|
|
+
|
|
+ evb_bld_tlv(ed);
|
|
+
|
|
+out_err:
|
|
+ return 0;
|
|
+}
|
|
+
|
|
static const struct lldp_mod_ops evb_ops = {
|
|
.lldp_mod_register = evb_register,
|
|
.lldp_mod_unregister = evb_unregister,
|
|
@@ -601,6 +633,7 @@ static const struct lldp_mod_ops evb_ops = {
|
|
.lldp_mod_rchange = evb_rchange,
|
|
.lldp_mod_ifup = evb_ifup,
|
|
.lldp_mod_ifdown = evb_ifdown,
|
|
+ .lldp_mod_mibdelete = evb_mibdelete,
|
|
.get_arg_handler = evb_get_arg_handlers,
|
|
};
|
|
|
|
--
|
|
1.7.4.4
|
|
|