From 4825abfcadd579b3603994f2e98487ee3b14ef26 Mon Sep 17 00:00:00 2001
From: John Fastabend <john.r.fastabend@intel.com>
Date: Wed, 27 Jul 2011 15:03:39 -0700
Subject: [PATCH 07/29] lldpad: remove app data on CEE unregister
When CEE is unregistered the CEE app data should be removed.
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Signed-off-by: Petr Sabata <contyk@redhat.com>
---
dcb_protocol.c | 32 ++++++++++++++++++++++++++++++++
1 files changed, 32 insertions(+), 0 deletions(-)
diff --git a/dcb_protocol.c b/dcb_protocol.c
index 0bb13b9..310b071 100644
--- a/dcb_protocol.c
+++ b/dcb_protocol.c
@@ -1243,6 +1243,35 @@ dcb_result save_dcbx_state(const char *device_name)
return dcb_failed;
}
+static int dcbx_free_app_config(char *device_name)
+{
+ app_it Oper, Local;
+ appgroup_attribs app_data;
+
+ /* Free FCoE APP data */
+ Oper = apptlv_find(&oper_apptlv, device_name, APP_FCOE_STYPE);
+ Local = apptlv_find(&apptlv, device_name, APP_FCOE_STYPE);
+ if (Oper || Local) {
+ app_data.dcb_app_idtype = DCB_APP_IDTYPE_ETHTYPE;
+ app_data.dcb_app_id = APP_FCOE_ETHTYPE;
+ app_data.dcb_app_priority = 0;
+ set_hw_app(device_name, &app_data);
+ }
+
+ /* Free iSCSI APP data */
+ Oper = apptlv_find(&oper_apptlv, device_name, APP_ISCSI_STYPE);
+ Local = apptlv_find(&apptlv, device_name, APP_ISCSI_STYPE);
+ if (Oper || Local) {
+ app_data.dcb_app_idtype = DCB_APP_IDTYPE_PORTNUM;
+ app_data.dcb_app_id = APP_ISCSI_PORT;
+ app_data.dcb_app_priority = 0;
+
+ set_hw_app(device_name, &app_data);
+ }
+
+ return 0;
+}
+
int dcbx_remove_all(void)
{
pg_it it;
@@ -1258,6 +1287,9 @@ int dcbx_remove_all(void)
save_dcbx_state(it->ifname);
+ /* Remove kernel APP entries */
+ dcbx_free_app_config(it->ifname);
+
/* prepare sTmp in case of error */
snprintf(sTmp, MAX_DEVICE_NAME_LEN*2, /* Localization OK */
"Remove_all_adapters error: Bad device name: %.*s\n",
--
1.7.6