From 80b893dbd09919e5e7baba963c57fc90a2eb5e91 Mon Sep 17 00:00:00 2001 From: Max Ng Date: Tue, 3 Dec 2024 15:48:16 -0800 Subject: [PATCH] Add addTrapPacketAcl utility for mac address Summary: Add addTrapPacketAcl utility targeting a mac address. Reviewed By: nivinl Differential Revision: D66568766 fbshipit-source-id: e610ce105d6382e3c33fa136661f899002a46ccb --- fboss/agent/test/utils/TrapPacketUtils.cpp | 22 ++++++++++++++++++++++ fboss/agent/test/utils/TrapPacketUtils.h | 2 ++ 2 files changed, 24 insertions(+) diff --git a/fboss/agent/test/utils/TrapPacketUtils.cpp b/fboss/agent/test/utils/TrapPacketUtils.cpp index e98ccd6ca14f3..463c99029ae41 100644 --- a/fboss/agent/test/utils/TrapPacketUtils.cpp +++ b/fboss/agent/test/utils/TrapPacketUtils.cpp @@ -152,4 +152,26 @@ void addTrapPacketAcl( config->cpuTrafficPolicy() = cpuTrafficPolicy; } +void addTrapPacketAcl(cfg::SwitchConfig* config, folly::MacAddress mac) { + cfg::AclEntry entry; + entry.name() = folly::to("trap-packet-", mac.toString()); + entry.dstMac() = mac.toString(); + entry.actionType() = cfg::AclActionType::PERMIT; + utility::addAclEntry(config, entry, utility::kDefaultAclTable()); + + cfg::MatchToAction matchToAction; + matchToAction.matcher() = *entry.name(); + cfg::MatchAction& action = matchToAction.action().ensure(); + action.toCpuAction() = cfg::ToCpuAction::TRAP; + action.sendToQueue().ensure().queueId() = 0; + action.setTc().ensure().tcValue() = 0; + config->cpuTrafficPolicy() + .ensure() + .trafficPolicy() + .ensure() + .matchToAction() + .ensure() + .push_back(matchToAction); +} + } // namespace facebook::fboss::utility diff --git a/fboss/agent/test/utils/TrapPacketUtils.h b/fboss/agent/test/utils/TrapPacketUtils.h index c95df4654759b..bb75f65147d43 100644 --- a/fboss/agent/test/utils/TrapPacketUtils.h +++ b/fboss/agent/test/utils/TrapPacketUtils.h @@ -7,6 +7,7 @@ #include "fboss/agent/types.h" #include +#include #include @@ -32,5 +33,6 @@ void addTrapPacketAcl( const HwAsic* asic, cfg::SwitchConfig* config, uint16_t l4DstPort); +void addTrapPacketAcl(cfg::SwitchConfig* config, folly::MacAddress mac); } // namespace facebook::fboss::utility