@@ -636,10 +636,16 @@ P4AclTableDefinitionAppDbEntry getDefaultAclTableDefAppDbEntry()
636636 app_db_entry.match_field_lookup [" inner_vlan_pri" ] = BuildMatchFieldJsonStrKindSaiField (P4_MATCH_INNER_VLAN_PRI);
637637 app_db_entry.match_field_lookup [" inner_vlan_id" ] = BuildMatchFieldJsonStrKindSaiField (P4_MATCH_INNER_VLAN_ID);
638638 app_db_entry.match_field_lookup [" inner_vlan_cfi" ] = BuildMatchFieldJsonStrKindSaiField (P4_MATCH_INNER_VLAN_CFI);
639- app_db_entry.match_field_lookup [" l3_class_id" ] =
639+ app_db_entry.match_field_lookup [" vrf_id" ] =
640+ BuildMatchFieldJsonStrKindSaiField (P4_MATCH_VRF_ID, P4_FORMAT_HEX_STRING,
641+ /* bitwidth=*/ 16 );
642+ app_db_entry.match_field_lookup [" ipmc_table_hit" ] =
643+ BuildMatchFieldJsonStrKindSaiField (P4_MATCH_IPMC_TABLE_HIT,
644+ P4_FORMAT_HEX_STRING, /* bitwidth=*/ 1 );
645+ app_db_entry.match_field_lookup [" l3_clasvs_id" ] =
640646 BuildMatchFieldJsonStrKindSaiField (P4_MATCH_ROUTE_DST_USER_META, P4_FORMAT_HEX_STRING, /* bitwidth=*/ 32 );
641647 app_db_entry.match_field_lookup [" acl_user_meta" ] =
642- BuildMatchFieldJsonStrKindSaiField (P4_MATCH_ACL_USER_META, P4_FORMAT_HEX_STRING, /* bitwidth=*/ 8 );
648+ BuildMatchFieldJsonStrKindSaiField (P4_MATCH_ACL_USER_META, P4_FORMAT_HEX_STRING, /* bitwidth=*/ 8 );
643649 app_db_entry.match_field_lookup [" src_ipv6_64bit" ] = BuildMatchFieldJsonStrKindComposite (
644650 {nlohmann::json::parse (BuildMatchFieldJsonStrKindSaiField (P4_MATCH_SRC_IPV6_WORD3, P4_FORMAT_IPV6, 32 )),
645651 nlohmann::json::parse (BuildMatchFieldJsonStrKindSaiField (P4_MATCH_SRC_IPV6_WORD2, P4_FORMAT_IPV6, 32 ))},
@@ -2794,6 +2800,8 @@ TEST_F(AclManagerTest, AclRuleWithValidMatchFields)
27942800 app_db_entry.match_fvs [" inner_vlan_pri" ] = " 200" ;
27952801 app_db_entry.match_fvs [" inner_vlan_id" ] = " 200" ;
27962802 app_db_entry.match_fvs [" inner_vlan_cfi" ] = " 200" ;
2803+ app_db_entry.match_fvs [" vrf_id" ] = " 0x777" ;
2804+ app_db_entry.match_fvs [" ipmc_table_hit" ] = " 0x1" ;
27972805
27982806 const auto &acl_rule_key = KeyGenerator::generateAclRuleKey (app_db_entry.match_fvs , " 100" );
27992807
@@ -2890,6 +2898,11 @@ TEST_F(AclManagerTest, AclRuleWithValidMatchFields)
28902898 EXPECT_EQ (SAI_ACL_IP_FRAG_HEAD, acl_rule->match_fvs [SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_FRAG].aclfield .data .u32 );
28912899 EXPECT_EQ (SAI_PACKET_VLAN_SINGLE_OUTER_TAG,
28922900 acl_rule->match_fvs [SAI_ACL_ENTRY_ATTR_FIELD_PACKET_VLAN].aclfield .data .u32 );
2901+ EXPECT_EQ (0x777 , acl_rule->match_fvs [SAI_ACL_ENTRY_ATTR_FIELD_VRF_ID].aclfield .data .u16 );
2902+ EXPECT_EQ (0xFFFF , acl_rule->match_fvs [SAI_ACL_ENTRY_ATTR_FIELD_VRF_ID].aclfield .mask .u16 );
2903+ EXPECT_EQ (true ,
2904+ acl_rule->match_fvs [SAI_ACL_ENTRY_ATTR_FIELD_IPMC_NPU_META_DST_HIT]
2905+ .aclfield .data .booldata );
28932906
28942907 // Check action field value
28952908 EXPECT_EQ (SAI_PACKET_ACTION_TRAP,
@@ -5146,7 +5159,8 @@ TEST_F(AclManagerTest, AclRuleVerifyStateTest)
51465159 " ipv6_dst\" :\" fdf8:f53b:82e4::53 & "
51475160 " fdf8:f53b:82e4::53\" ,\" match/arp_tpa\" : \" 0xff112231\" , "
51485161 " \" match/in_ports\" : \" Ethernet1,Ethernet2\" , \" match/out_ports\" : "
5149- " \" Ethernet4,Ethernet5\" , \" priority\" :15}" ;
5162+ " \" Ethernet4,Ethernet5\" , \" priority\" :15,\" match/ipmc_table_hit\" :"
5163+ " \" 0x1\" }" ;
51505164 const auto &rule_tuple_key = std::string (kAclIngressTableName ) + kTableKeyDelimiter + acl_rule_json_key;
51515165 EnqueueRuleTuple (std::string (kAclIngressTableName ),
51525166 swss::KeyOpFieldsValuesTuple ({rule_tuple_key, SET_COMMAND, attributes}));
@@ -5176,6 +5190,7 @@ TEST_F(AclManagerTest, AclRuleVerifyStateTest)
51765190 swss::FieldValueTuple{" SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE" ,
51775191 " SAI_ACL_IP_TYPE_ANY&mask:0xffffffffffffffff" },
51785192 swss::FieldValueTuple{" SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN" , " 2:255,17&mask:2:0xff,0xff" },
5193+ swss::FieldValueTuple{" SAI_ACL_ENTRY_ATTR_FIELD_IPMC_NPU_META_DST_HIT" , " true" },
51795194 swss::FieldValueTuple{" SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_1" , " 2:34,49&mask:2:0xff,0xff" },
51805195 swss::FieldValueTuple{" SAI_ACL_ENTRY_ATTR_FIELD_IN_PORTS" , " 2:oid:0x112233,oid:0x1fed3" },
51815196 swss::FieldValueTuple{" SAI_ACL_ENTRY_ATTR_FIELD_OUT_PORTS" , " 2:oid:0x9988,oid:0x56789abcdef" },
@@ -5209,20 +5224,23 @@ TEST_F(AclManagerTest, AclRuleVerifyStateTest)
52095224 EXPECT_FALSE (VerifyRuleState (std::string (APP_P4RT_TABLE_NAME) +
52105225 " :ACL_PUNT_TABLE:{\" match/ether_type\" :\" 0x0800\" ,\" match/"
52115226 " ipv6_dst\" :\" fdf8:f53b:82e4::53 & "
5212- " fdf8:f53b:82e4::53\" ,\" priority\" :0}" ,
5227+ " fdf8:f53b:82e4::53\" ,\" priority\" :0,\" match/ipmc_table_hit\" :"
5228+ " \" 0x1\" }" ,
52135229 attributes)
52145230 .empty ());
52155231 EXPECT_FALSE (VerifyRuleState (std::string (APP_P4RT_TABLE_NAME) +
52165232 " :ACL_PUNT_TABLE:{\" match/ether_type\" :\" 0x0800\" ,\" match/"
5217- " ipv6_dst\" :\" 127.0.0.1/24\" ,\" priority\" :15}" ,
5233+ " ipv6_dst\" :\" 127.0.0.1/24\" ,\" priority\" :15,"
5234+ " \" match/ipmc_table_hit\" :\" 0x1\" }" ,
52185235 attributes)
52195236 .empty ());
52205237
52215238 // Verification should fail if entry does not exist.
52225239 EXPECT_FALSE (VerifyRuleState (std::string (APP_P4RT_TABLE_NAME) +
52235240 " :ACL_PUNT_TABLE:{\" match/ether_type\" :\" 0x0800\" ,\" match/"
52245241 " ipv6_dst\" :\" fdf8:f53b:82e4::54 & "
5225- " fdf8:f53b:82e4::54\" ,\" priority\" :15}" ,
5242+ " fdf8:f53b:82e4::54\" ,\" priority\" :15,\" match/ipmc_table_hit\" :"
5243+ " \" 0x1\" }" ,
52265244 attributes)
52275245 .empty ());
52285246
@@ -5232,7 +5250,8 @@ TEST_F(AclManagerTest, AclRuleVerifyStateTest)
52325250 auto *acl_table = GetAclTable (kAclIngressTableName );
52335251 EXPECT_NE (acl_table, nullptr );
52345252 const auto &acl_rule_key = " match/arp_tpa=0xff112231:match/ether_type=0x0800:match/"
5235- " in_ports=Ethernet1,Ethernet2:match/ipv6_dst=fdf8:f53b:82e4::53 & "
5253+ " in_ports=Ethernet1,Ethernet2:match/ipmc_table_hit=0x1:"
5254+ " match/ipv6_dst=fdf8:f53b:82e4::53 & "
52365255 " fdf8:f53b:82e4::53:match/out_ports=Ethernet4,Ethernet5:priority=15" ;
52375256 auto *acl_rule = GetAclRule (kAclIngressTableName , acl_rule_key);
52385257 ASSERT_NE (acl_rule, nullptr );
0 commit comments