Skip to content

Commit

Permalink
Update SAI ACL schema for new support.
Browse files Browse the repository at this point in the history
Change-Id: I4c17b3f811eb2cee78064102060b4f491a68ec52
  • Loading branch information
mint570 committed Nov 7, 2023
1 parent ec0fa46 commit 606da6a
Show file tree
Hide file tree
Showing 3 changed files with 136 additions and 67 deletions.
182 changes: 125 additions & 57 deletions common/saiaclschema.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace acl
{

// ENUM Stage strings
static constexpr char kStageLookupName[] = "LOOKUP";
static constexpr char kStagePreIngressName[] = "PRE_INGRESS";
static constexpr char kStageIngressName[] = "INGRESS";
static constexpr char kStageEgressName[] = "EGRESS";

Expand All @@ -22,8 +22,8 @@ static constexpr char kFormatString[] = "STRING";

Stage StageFromName(const std::string &name)
{
if (name == kStageLookupName)
return Stage::kLookup;
if (name == kStagePreIngressName)
return Stage::kPreIngress;
if (name == kStageIngressName)
return Stage::kIngress;
if (name == kStageEgressName)
Expand All @@ -33,13 +33,13 @@ Stage StageFromName(const std::string &name)

const std::string &StageName(Stage stage)
{
static const auto *const kLookupString = new std::string(kStageLookupName);
static const auto *const kPreIngressString = new std::string(kStagePreIngressName);
static const auto *const kIngressString = new std::string(kStageIngressName);
static const auto *const kEgressString = new std::string(kStageEgressName);
switch (stage)
{
case Stage::kLookup:
return *kLookupString;
case Stage::kPreIngress:
return *kPreIngressString;
case Stage::kIngress:
return *kIngressString;
case Stage::kEgress:
Expand Down Expand Up @@ -99,115 +99,175 @@ const MatchFieldSchema &MatchFieldSchemaByName(const std::string &match_field_na
{
static const auto *const kMatchFields = new std::unordered_map<std::string, MatchFieldSchema>({
{"SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 128}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 128}},
{"SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 32}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 32}},
{"SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 32}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 32}},
{"SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD1",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 32}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 32}},
{"SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD0",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 32}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 32}},
{"SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 128}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 128}},
{"SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD3",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 32}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 32}},
{"SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD2",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 32}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 32}},
{"SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD1",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 32}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 32}},
{"SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD0",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 32}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv6, .bitwidth = 32}},
// SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IPV6
// SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IPV6
{"SAI_ACL_TABLE_ATTR_FIELD_SRC_MAC",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kMac, .bitwidth = 48}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress}, .format = Format::kMac, .bitwidth = 48}},
{"SAI_ACL_TABLE_ATTR_FIELD_DST_MAC",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kMac, .bitwidth = 48}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress}, .format = Format::kMac, .bitwidth = 48}},
{"SAI_ACL_TABLE_ATTR_FIELD_SRC_IP",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv4, .bitwidth = 32}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv4, .bitwidth = 32}},
{"SAI_ACL_TABLE_ATTR_FIELD_DST_IP",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv4, .bitwidth = 32}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress}, .format = Format::kIPv4, .bitwidth = 32}},
// SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IP
// SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IP
// SAI_ACL_TABLE_ATTR_FIELD_IN_PORTS
// SAI_ACL_TABLE_ATTR_FIELD_OUT_PORTS
{"SAI_ACL_TABLE_ATTR_FIELD_IN_PORT",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kString, .bitwidth = 0}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress}, .format = Format::kString, .bitwidth = 0}},
{"SAI_ACL_TABLE_ATTR_FIELD_OUT_PORT",
{.stages = {Stage::kIngress, Stage::kEgress}, .format = Format::kString, .bitwidth = 0}},
// SAI_ACL_TABLE_ATTR_FIELD_SRC_PORT
{"SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_ID",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 12}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 12}},
{"SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_PRI",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 3}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 3}},
{"SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_CFI",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 1}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 1}},
{"SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_ID",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 12}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 12}},
{"SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_PRI",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 3}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 3}},
{"SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_CFI",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 1}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 1}},
{"SAI_ACL_TABLE_ATTR_FIELD_L4_SRC_PORT",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 16}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 16}},
{"SAI_ACL_TABLE_ATTR_FIELD_L4_DST_PORT",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 16}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 16}},
// SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_SRC_PORT
// SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_DST_PORT
{"SAI_ACL_TABLE_ATTR_FIELD_ETHER_TYPE",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 16}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 16}},
// SAI_ACL_TABLE_ATTR_FIELD_INNER_ETHER_TYPE
{"SAI_ACL_TABLE_ATTR_FIELD_IP_PROTOCOL",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 8}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 8}},
// SAI_ACL_TABLE_ATTR_FIELD_INNER_IP_PROTOCOL
// SAI_ACL_TABLE_ATTR_FIELD_IP_IDENTIFICATION
{"SAI_ACL_TABLE_ATTR_FIELD_DSCP",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 6}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 6}},
{"SAI_ACL_TABLE_ATTR_FIELD_ECN",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 2}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 2}},
{"SAI_ACL_TABLE_ATTR_FIELD_TTL",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 8}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 8}},
{"SAI_ACL_TABLE_ATTR_FIELD_TOS",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 8}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 8}},
{"SAI_ACL_TABLE_ATTR_FIELD_IP_FLAGS",
{.stages = {Stage::kIngress}, .format = Format::kHexString, .bitwidth = 3}},
{"SAI_ACL_TABLE_ATTR_FIELD_TCP_FLAGS",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 6}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 6}},
{"SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE/ANY",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 1}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 1}},
{"SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE/IP",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 1}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 1}},
{"SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE/NON_IP",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 1}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 1}},
{"SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE/IPV4ANY",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 1}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 1}},
{"SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE/NON_IPV4",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 1}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 1}},
{"SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE/IPV6ANY",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 1}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 1}},
{"SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE/NON_IPV6",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 1}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 1}},
{"SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE/ARP",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 1}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 1}},
{"SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE/ARP_REQUEST",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 1}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 1}},
{"SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE/ARP_REPLY",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 1}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 1}},
{"SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_FRAG",
{.stages = {Stage::kIngress}, .format = Format::kHexString, .bitwidth = 1}},
{"SAI_ACL_TABLE_ATTR_FIELD_IPV6_FLOW_LABEL",
{.stages = {Stage::kIngress}, .format = Format::kHexString, .bitwidth = 20}},
{"SAI_ACL_TABLE_ATTR_FIELD_TC",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 8}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 8}},
{"SAI_ACL_TABLE_ATTR_FIELD_ICMP_TYPE",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 8}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 8}},
{"SAI_ACL_TABLE_ATTR_FIELD_ICMP_CODE",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 8}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 8}},
{"SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_TYPE",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 8}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 8}},
{"SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_CODE",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 8}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 8}},
// SAI_ACL_TABLE_ATTR_FIELD_PACKET_VLAN
// SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_VNI
// SAI_ACL_TABLE_ATTR_FIELD_HAS_VLAN_TAG
Expand All @@ -233,19 +293,23 @@ const MatchFieldSchema &MatchFieldSchemaByName(const std::string &match_field_na
// SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_EXP
// SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_BOS
// SAI_ACL_TABLE_ATTR_FIELD_FDB_DST_USER_META
// SAI_ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META
{"SAI_ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META",
{.stages = {Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 32}},
// SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_DST_USER_META
// SAI_ACL_TABLE_ATTR_FIELD_PORT_USER_META
// SAI_ACL_TABLE_ATTR_FIELD_VLAN_USER_META
// SAI_ACL_TABLE_ATTR_FIELD_ACL_USER_META
{"SAI_ACL_TABLE_ATTR_FIELD_ACL_USER_META",
{.stages = {Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 8}},
// SAI_ACL_TABLE_ATTR_FIELD_FDB_NPU_META_DST_HIT
// SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT
// SAI_ACL_TABLE_ATTR_FIELD_ROUTE_NPU_META_DST_HIT
// SAI_ACL_TABLE_ATTR_FIELD_BTH_OPCODE
// SAI_ACL_TABLE_ATTR_FIELD_AETH_SYNDROME
// SAI_ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE
{"SAI_ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER",
{.stages = {Stage::kLookup, Stage::kIngress, Stage::kEgress}, .format = Format::kHexString, .bitwidth = 8}},
{.stages = {Stage::kPreIngress, Stage::kIngress, Stage::kEgress},
.format = Format::kHexString,
.bitwidth = 8}},
// SAI_ACL_TABLE_ATTR_FIELD_GRE_KEY
// SAI_ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE
});
Expand Down Expand Up @@ -290,7 +354,7 @@ const ActionSchema &ActionSchemaByName(const std::string &action_name)
{"SAI_ACL_ENTRY_ATTR_ACTION_SET_L4_DST_PORT", {.format = Format::kHexString, .bitwidth = 16}},
// SAI_ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE
// SAI_ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE
// SAI_ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA
{"SAI_ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA", {.format = Format::kHexString, .bitwidth = 8}},
// SAI_ACL_ENTRY_ATTR_ACTION_EGRESS_BLOCK_PORT_LIST
// SAI_ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID
{"SAI_ACL_ENTRY_ATTR_ACTION_SET_DO_NOT_LEARN", {.format = Format::kNone, .bitwidth = 0}},
Expand All @@ -309,13 +373,17 @@ const ActionSchema &ActionSchemaByName(const std::string &action_name)
// SAI_ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT
// SAI_ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP
// SAI_ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW
// SAI_ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID
// SAI_ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID
{"SAI_ACL_ENTRY_ATTR_ACTION_SET_VRF", {.format = Format::kString, .bitwidth = 0}},
// SAI_ACL_ENTRY_ATTR_ACTION_SET_FORWARDING_CLASS
{"SAI_PACKET_ACTION_DROP", {.format = Format::kNone, .bitwidth = 0}},
{"SAI_PACKET_ACTION_FORWARD", {.format = Format::kNone, .bitwidth = 0}},
{"SAI_PACKET_ACTION_COPY", {.format = Format::kNone, .bitwidth = 0}},
// SAI_PACKET_ACTION_COPY_CANCEL
{"SAI_PACKET_ACTION_COPY_CANCEL", {.format = Format::kNone, .bitwidth = 0}},
{"SAI_PACKET_ACTION_TRAP", {.format = Format::kNone, .bitwidth = 0}},
{"SAI_PACKET_ACTION_LOG", {.format = Format::kNone, .bitwidth = 0}},
// SAI_PACKET_ACTION_DENY
{"SAI_PACKET_ACTION_DENY", {.format = Format::kNone, .bitwidth = 0}},
// SAI_PACKET_ACTION_TRANSIT
{"QOS_QUEUE", {.format = Format::kString, .bitwidth = 0}},
});
Expand Down
Loading

0 comments on commit 606da6a

Please sign in to comment.