From 3dcf1f2028da4060b345ad78e8a0c87d225bf5d0 Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Thu, 4 Feb 2021 23:56:47 +0530 Subject: [PATCH] Support for ACL extensions in metadata (#1178) SAI sanitychecker doesn't expect any extensions to be developed for ACL attributes. This PR aims to add support by adding checks whether the 'under-check-attribute' is an extension attribute. The value range for an attribute between SAI_ACL_ENTRY_ATTR_ACTION_START and SAI_ACL_ENTRY_ATTR_ACTION_END is valid only for non-extensions. The extensions are to have attributes beyond SAI_ACL_ENTRY_ATTR_ACTION_END. This PR allows the range check to be conditional for extension attributes. --- meta/saisanitycheck.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/meta/saisanitycheck.c b/meta/saisanitycheck.c index 92f192d5d..4c1df9a69 100644 --- a/meta/saisanitycheck.c +++ b/meta/saisanitycheck.c @@ -435,6 +435,11 @@ bool sai_metadata_is_acl_field_or_action( { return true; } + + if (metadata->isextensionattr) + { + return true; + } } return false; @@ -1890,8 +1895,13 @@ void check_attr_acl_fields( case SAI_ATTR_VALUE_TYPE_ACL_ACTION_DATA_OBJECT_ID: case SAI_ATTR_VALUE_TYPE_ACL_ACTION_DATA_OBJECT_LIST: - if (md->objecttype != SAI_OBJECT_TYPE_ACL_ENTRY || - md->attrid < SAI_ACL_ENTRY_ATTR_ACTION_START || + if (md->objecttype == SAI_OBJECT_TYPE_ACL_ENTRY && md->isextensionattr) + { + break; + } + + if (md->objecttype != SAI_OBJECT_TYPE_ACL_ENTRY || + md->attrid < SAI_ACL_ENTRY_ATTR_ACTION_START || md->attrid > SAI_ACL_ENTRY_ATTR_ACTION_END) { META_MD_ASSERT_FAIL(md, "acl action may only be set on acl action"); @@ -4112,7 +4122,7 @@ void check_acl_entry_actions() break; } - if (meta->attrid > SAI_ACL_ENTRY_ATTR_ACTION_END) + if ((meta->isextensionattr == false) && (meta->attrid > SAI_ACL_ENTRY_ATTR_ACTION_END)) { break; }