From b31131d69db3af23462c28324121cb108b84d57f Mon Sep 17 00:00:00 2001 From: Mobin Mohan Date: Fri, 10 Apr 2026 00:38:39 +0000 Subject: [PATCH 1/2] Add SAI_ACL_TABLE_ATTR_FIELD_ACL_MIRROR_COPY_TYPE This change introduces a new ACL match field `ACL_MIRROR_COPY_TYPE` to allow ACLs to match based on whether the packet is a mirror copy. It allows ACLs to match based on the type of mirror copy (Ingress, Egress, or Ingress or Egress). Change-Id: I351b2aba82b10ce52425615920eb07e7fd964f96 Signed-off-by: Mobin Mohan --- inc/saiacl.h | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/inc/saiacl.h b/inc/saiacl.h index 4989c3d16..5dbe0440a 100644 --- a/inc/saiacl.h +++ b/inc/saiacl.h @@ -587,6 +587,24 @@ typedef enum _sai_acl_table_group_member_attr_t } sai_acl_table_group_member_attr_t; +/** + * @brief Mirror copy type for ACL matching + */ +typedef enum _sai_acl_mirror_copy_type_t +{ + /** Match packets that are not mirror copies */ + SAI_ACL_MIRROR_COPY_TYPE_NONE, + + /** Match packets that are ingress mirror copies */ + SAI_ACL_MIRROR_COPY_TYPE_INGRESS, + + /** Match packets that are egress mirror copies */ + SAI_ACL_MIRROR_COPY_TYPE_EGRESS, + + /** Match packets that are any mirror copy (either ingress or egress) */ + SAI_ACL_MIRROR_COPY_TYPE_INGRESS_OR_EGRESS +} sai_acl_mirror_copy_type_t; + /** * @brief ACL User Defined Field Attribute ID Range */ @@ -1647,10 +1665,19 @@ typedef enum _sai_acl_table_attr_t */ SAI_ACL_TABLE_ATTR_FIELD_CSIG_D_BIT = SAI_ACL_TABLE_ATTR_FIELD_START + 0x166, + /** + * @brief Match on mirror copy type + * + * @type bool + * @flags CREATE_ONLY + * @default false + */ + SAI_ACL_TABLE_ATTR_FIELD_ACL_MIRROR_COPY_TYPE = SAI_ACL_TABLE_ATTR_FIELD_START + 0x167, + /** * @brief End of ACL Table Match Field */ - SAI_ACL_TABLE_ATTR_FIELD_END = SAI_ACL_TABLE_ATTR_FIELD_CSIG_D_BIT, + SAI_ACL_TABLE_ATTR_FIELD_END = SAI_ACL_TABLE_ATTR_FIELD_ACL_MIRROR_COPY_TYPE, /** * @brief ACL table entries associated with this table. @@ -2825,10 +2852,19 @@ typedef enum _sai_acl_entry_attr_t */ SAI_ACL_ENTRY_ATTR_FIELD_CSIG_D_BIT = SAI_ACL_ENTRY_ATTR_FIELD_START + 0x166, + /** + * @brief Match on mirror copy type + * + * @type sai_acl_field_data_t sai_acl_mirror_copy_type_t + * @flags CREATE_AND_SET + * @default disabled + */ + SAI_ACL_ENTRY_ATTR_FIELD_ACL_MIRROR_COPY_TYPE = SAI_ACL_ENTRY_ATTR_FIELD_START + 0x167, + /** * @brief End of Rule Match Fields */ - SAI_ACL_ENTRY_ATTR_FIELD_END = SAI_ACL_ENTRY_ATTR_FIELD_CSIG_D_BIT, + SAI_ACL_ENTRY_ATTR_FIELD_END = SAI_ACL_ENTRY_ATTR_FIELD_ACL_MIRROR_COPY_TYPE, /* * Actions [sai_acl_action_data_t] From d33e34ba999964f932ee5001b50028daf3af4e15 Mon Sep 17 00:00:00 2001 From: Mobin Mohan Date: Tue, 19 May 2026 06:36:30 +0000 Subject: [PATCH 2/2] Add SAI_ACL_TABLE_ATTR_FIELD_ACL_MIRROR_SESSION_ID This change introduces a new ACL match field `ACL_MIRROR_SESSION_ID` to allow ACLs to match based on a specific mirror session ID. * Added support to match on `SAI_OBJECT_TYPE_MIRROR_SESSION` objects in ACL entries. * Added Table and Entry attributes with updated end markers. Change-Id: Iea1a664dbe8fca6e22a9b3f9c50ecb0fc9f29b75 Signed-off-by: Mobin Mohan --- inc/saiacl.h | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/inc/saiacl.h b/inc/saiacl.h index 5dbe0440a..fa6b60904 100644 --- a/inc/saiacl.h +++ b/inc/saiacl.h @@ -1674,10 +1674,19 @@ typedef enum _sai_acl_table_attr_t */ SAI_ACL_TABLE_ATTR_FIELD_ACL_MIRROR_COPY_TYPE = SAI_ACL_TABLE_ATTR_FIELD_START + 0x167, + /** + * @brief Match on mirror copies generated by this session ID + * + * @type bool + * @flags CREATE_ONLY + * @default false + */ + SAI_ACL_TABLE_ATTR_FIELD_ACL_MIRROR_SESSION_ID = SAI_ACL_TABLE_ATTR_FIELD_START + 0x168, + /** * @brief End of ACL Table Match Field */ - SAI_ACL_TABLE_ATTR_FIELD_END = SAI_ACL_TABLE_ATTR_FIELD_ACL_MIRROR_COPY_TYPE, + SAI_ACL_TABLE_ATTR_FIELD_END = SAI_ACL_TABLE_ATTR_FIELD_ACL_MIRROR_SESSION_ID, /** * @brief ACL table entries associated with this table. @@ -2861,10 +2870,20 @@ typedef enum _sai_acl_entry_attr_t */ SAI_ACL_ENTRY_ATTR_FIELD_ACL_MIRROR_COPY_TYPE = SAI_ACL_ENTRY_ATTR_FIELD_START + 0x167, + /** + * @brief Match on mirror copies generated by this session ID + * + * @type sai_acl_field_data_t sai_object_id_t + * @flags CREATE_AND_SET + * @objects SAI_OBJECT_TYPE_MIRROR_SESSION + * @default disabled + */ + SAI_ACL_ENTRY_ATTR_FIELD_ACL_MIRROR_SESSION_ID = SAI_ACL_ENTRY_ATTR_FIELD_START + 0x168, + /** * @brief End of Rule Match Fields */ - SAI_ACL_ENTRY_ATTR_FIELD_END = SAI_ACL_ENTRY_ATTR_FIELD_ACL_MIRROR_COPY_TYPE, + SAI_ACL_ENTRY_ATTR_FIELD_END = SAI_ACL_ENTRY_ATTR_FIELD_ACL_MIRROR_SESSION_ID, /* * Actions [sai_acl_action_data_t]