diff --git a/orchagent/pfcactionhandler.h b/orchagent/pfcactionhandler.h index 400751a72eb..e0e6f9a915c 100644 --- a/orchagent/pfcactionhandler.h +++ b/orchagent/pfcactionhandler.h @@ -21,7 +21,7 @@ class PfcWdActionHandler public: PfcWdActionHandler(sai_object_id_t port, sai_object_id_t queue, uint8_t queueId, shared_ptr countersTable); - virtual ~PfcWdActionHandler(void) = 0; + virtual ~PfcWdActionHandler(void); inline sai_object_id_t getPort(void) { diff --git a/orchagent/pfcwdorch.cpp b/orchagent/pfcwdorch.cpp index 2a94f9ec26c..ea7157c04dc 100644 --- a/orchagent/pfcwdorch.cpp +++ b/orchagent/pfcwdorch.cpp @@ -97,6 +97,7 @@ PfcWdAction PfcWdOrch::deserializeAction(const stri { { "forward", PfcWdAction::PFC_WD_ACTION_FORWARD }, { "drop", PfcWdAction::PFC_WD_ACTION_DROP }, + { "alert", PfcWdAction::PFC_WD_ACTION_ALERT }, }; if (actionMap.find(key) == actionMap.end()) @@ -445,6 +446,14 @@ void PfcWdSwOrch::handleWdNotification(swss::Notifi entry->second.index, PfcWdOrch::getCountersTable()); } + else if (entry->second.action == PfcWdAction::PFC_WD_ACTION_ALERT) + { + entry->second.handler = make_shared( + entry->second.portId, + entry->first, + entry->second.index, + PfcWdOrch::getCountersTable()); + } else { throw runtime_error("Unknown PFC WD action"); diff --git a/orchagent/pfcwdorch.h b/orchagent/pfcwdorch.h index d9ac36d5798..a28dd72fe5e 100644 --- a/orchagent/pfcwdorch.h +++ b/orchagent/pfcwdorch.h @@ -18,6 +18,7 @@ enum class PfcWdAction PFC_WD_ACTION_UNKNOWN, PFC_WD_ACTION_FORWARD, PFC_WD_ACTION_DROP, + PFC_WD_ACTION_ALERT, }; template