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