@@ -706,35 +706,33 @@ bool PortsOrch::setPortPfcAsym(Port &port, string pfc_asym)
706
706
return true ;
707
707
}
708
708
709
- bool PortsOrch::bindAclTable (sai_object_id_t id, sai_object_id_t table_oid, sai_object_id_t &group_member_oid , acl_stage_type_t acl_stage)
709
+ bool PortsOrch::createBindAclTableGroup (sai_object_id_t id, sai_object_id_t &group_oid , acl_stage_type_t acl_stage)
710
710
{
711
711
SWSS_LOG_ENTER ();
712
712
713
713
if (acl_stage == ACL_STAGE_UNKNOWN)
714
714
{
715
- SWSS_LOG_ERROR (" Unknown ACL stage for ACL table %lx " , table_oid );
715
+ SWSS_LOG_ERROR (" unknown ACL stage for table group creation " );
716
716
return false ;
717
717
}
718
718
719
- sai_status_t status;
720
- sai_object_id_t groupOid;
721
-
722
719
Port port;
723
720
if (!getPort (id, port))
724
721
{
725
722
SWSS_LOG_ERROR (" Failed to get port by port ID %lx" , id);
726
723
return false ;
727
724
}
728
725
729
- if (acl_stage == ACL_STAGE_INGRESS && port.m_ingress_acl_table_group_id != 0 )
726
+ sai_status_t status;
727
+ if ((acl_stage == ACL_STAGE_INGRESS) && (port.m_ingress_acl_table_group_id != 0 ))
730
728
{
731
- groupOid = port.m_ingress_acl_table_group_id ;
729
+ group_oid = port.m_ingress_acl_table_group_id ;
732
730
}
733
- else if (acl_stage == ACL_STAGE_EGRESS && port.m_egress_acl_table_group_id != 0 )
731
+ else if (( acl_stage == ACL_STAGE_EGRESS) && ( port.m_egress_acl_table_group_id != 0 ) )
734
732
{
735
- groupOid = port.m_egress_acl_table_group_id ;
733
+ group_oid = port.m_egress_acl_table_group_id ;
736
734
}
737
- // If port ACL table group does not exist, create one
735
+ // Port ACL table group does not exist, create one
738
736
else if (acl_stage == ACL_STAGE_INGRESS or acl_stage == ACL_STAGE_EGRESS)
739
737
{
740
738
bool ingress = acl_stage == ACL_STAGE_INGRESS ? true : false ;
@@ -775,7 +773,7 @@ bool PortsOrch::bindAclTable(sai_object_id_t id, sai_object_id_t table_oid, sai_
775
773
group_attr.value .s32 = SAI_ACL_TABLE_GROUP_TYPE_PARALLEL;
776
774
group_attrs.push_back (group_attr);
777
775
778
- status = sai_acl_api->create_acl_table_group (&groupOid , gSwitchId , (uint32_t )group_attrs.size (), group_attrs.data ());
776
+ status = sai_acl_api->create_acl_table_group (&group_oid , gSwitchId , (uint32_t )group_attrs.size (), group_attrs.data ());
779
777
if (status != SAI_STATUS_SUCCESS)
780
778
{
781
779
SWSS_LOG_ERROR (" Failed to create ACL table group, rv:%d" , status);
@@ -784,11 +782,11 @@ bool PortsOrch::bindAclTable(sai_object_id_t id, sai_object_id_t table_oid, sai_
784
782
785
783
if (ingress)
786
784
{
787
- port.m_ingress_acl_table_group_id = groupOid ;
785
+ port.m_ingress_acl_table_group_id = group_oid ;
788
786
}
789
787
else
790
788
{
791
- port.m_egress_acl_table_group_id = groupOid ;
789
+ port.m_egress_acl_table_group_id = group_oid ;
792
790
}
793
791
794
792
setPort (port.m_alias , port);
@@ -802,13 +800,13 @@ bool PortsOrch::bindAclTable(sai_object_id_t id, sai_object_id_t table_oid, sai_
802
800
// Bind this ACL group to physical port
803
801
sai_attribute_t port_attr;
804
802
port_attr.id = ingress ? SAI_PORT_ATTR_INGRESS_ACL : SAI_PORT_ATTR_EGRESS_ACL;
805
- port_attr.value .oid = groupOid ;
803
+ port_attr.value .oid = group_oid ;
806
804
807
805
status = sai_port_api->set_port_attribute (port.m_port_id , &port_attr);
808
806
if (status != SAI_STATUS_SUCCESS)
809
807
{
810
808
SWSS_LOG_ERROR (" Failed to bind port %s to ACL table group %lx, rv:%d" ,
811
- port.m_alias .c_str (), groupOid , status);
809
+ port.m_alias .c_str (), group_oid , status);
812
810
return status;
813
811
}
814
812
break ;
@@ -818,13 +816,13 @@ bool PortsOrch::bindAclTable(sai_object_id_t id, sai_object_id_t table_oid, sai_
818
816
// Bind this ACL group to LAG
819
817
sai_attribute_t lag_attr;
820
818
lag_attr.id = ingress ? SAI_LAG_ATTR_INGRESS_ACL : SAI_LAG_ATTR_EGRESS_ACL;
821
- lag_attr.value .oid = groupOid ;
819
+ lag_attr.value .oid = group_oid ;
822
820
823
821
status = sai_lag_api->set_lag_attribute (port.m_lag_id , &lag_attr);
824
822
if (status != SAI_STATUS_SUCCESS)
825
823
{
826
824
SWSS_LOG_ERROR (" Failed to bind LAG %s to ACL table group %lx, rv:%d" ,
827
- port.m_alias .c_str (), groupOid , status);
825
+ port.m_alias .c_str (), group_oid , status);
828
826
return status;
829
827
}
830
828
break ;
@@ -834,13 +832,13 @@ bool PortsOrch::bindAclTable(sai_object_id_t id, sai_object_id_t table_oid, sai_
834
832
// Bind this ACL group to VLAN
835
833
sai_attribute_t vlan_attr;
836
834
vlan_attr.id = ingress ? SAI_VLAN_ATTR_INGRESS_ACL : SAI_VLAN_ATTR_EGRESS_ACL;
837
- vlan_attr.value .oid = groupOid ;
835
+ vlan_attr.value .oid = group_oid ;
838
836
839
837
status = sai_vlan_api->set_vlan_attribute (port.m_vlan_info .vlan_oid , &vlan_attr);
840
838
if (status != SAI_STATUS_SUCCESS)
841
839
{
842
840
SWSS_LOG_ERROR (" Failed to bind VLAN %s to ACL table group %lx, rv:%d" ,
843
- port.m_alias .c_str (), groupOid , status);
841
+ port.m_alias .c_str (), group_oid , status);
844
842
return status;
845
843
}
846
844
break ;
@@ -855,6 +853,29 @@ bool PortsOrch::bindAclTable(sai_object_id_t id, sai_object_id_t table_oid, sai_
855
853
SWSS_LOG_NOTICE (" Create ACL table group and bind port %s to it" , port.m_alias .c_str ());
856
854
}
857
855
856
+ return true ;
857
+ }
858
+
859
+ bool PortsOrch::bindAclTable (sai_object_id_t id, sai_object_id_t table_oid, sai_object_id_t &group_member_oid, acl_stage_type_t acl_stage)
860
+ {
861
+ SWSS_LOG_ENTER ();
862
+
863
+ if (table_oid == SAI_NULL_OBJECT_ID)
864
+ {
865
+ SWSS_LOG_ERROR (" Invalid ACL table %lx" , table_oid);
866
+ return false ;
867
+ }
868
+
869
+ sai_status_t status;
870
+ sai_object_id_t groupOid;
871
+
872
+ // Create an ACL table group and bind to port
873
+ if (!createBindAclTableGroup (id, groupOid, acl_stage))
874
+ {
875
+ SWSS_LOG_ERROR (" Fail to create or bind to port %lx ACL table group" , id);
876
+ return false ;
877
+ }
878
+
858
879
// Create an ACL group member with table_oid and groupOid
859
880
vector<sai_attribute_t > member_attrs;
860
881
@@ -874,8 +895,8 @@ bool PortsOrch::bindAclTable(sai_object_id_t id, sai_object_id_t table_oid, sai_
874
895
status = sai_acl_api->create_acl_table_group_member (&group_member_oid, gSwitchId , (uint32_t )member_attrs.size (), member_attrs.data ());
875
896
if (status != SAI_STATUS_SUCCESS)
876
897
{
877
- SWSS_LOG_ERROR (" Failed to create member in ACL table group %lx for ACL table group %lx, rv:%d" ,
878
- table_oid, groupOid , status);
898
+ SWSS_LOG_ERROR (" Failed to create member in ACL table group %lx for ACL table %lx, rv:%d" ,
899
+ groupOid, table_oid , status);
879
900
return false ;
880
901
}
881
902
0 commit comments