@@ -406,15 +406,15 @@ PortsOrch::PortsOrch(DBConnector *db, vector<table_name_with_pri_t> &tableNames,
406406
407407 if (sai_query_attribute_enum_values_capability (gSwitchId , SAI_OBJECT_TYPE_VLAN,
408408 SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE,
409- values) != SAI_STATUS_SUCCESS)
409+ & values) != SAI_STATUS_SUCCESS)
410410 {
411411 SWSS_LOG_NOTICE (" This device does not support unknown unicast flood control types" );
412412 }
413413 else
414414 {
415415 for (uint32_t idx = 0 ; idx < values.count ; idx++)
416416 {
417- uuc_sup_flood_control_type.insert (values.list [idx]);
417+ uuc_sup_flood_control_type.insert (static_cast < sai_vlan_flood_control_type_t >( values.list [idx]) );
418418 }
419419 }
420420
@@ -424,15 +424,15 @@ PortsOrch::PortsOrch(DBConnector *db, vector<table_name_with_pri_t> &tableNames,
424424
425425 if (sai_query_attribute_enum_values_capability (gSwitchId , SAI_OBJECT_TYPE_VLAN,
426426 SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE,
427- values) != SAI_STATUS_SUCCESS)
427+ & values) != SAI_STATUS_SUCCESS)
428428 {
429429 SWSS_LOG_NOTICE (" This device does not support unknown multicast flood control types" );
430430 }
431431 else
432432 {
433433 for (uint32_t idx = 0 ; idx < values.count ; idx++)
434434 {
435- umc_sup_flood_control_type.insert (values.list [idx]);
435+ umc_sup_flood_control_type.insert (static_cast < sai_vlan_flood_control_type_t >( values.list [idx]) );
436436 }
437437 }
438438
@@ -442,15 +442,15 @@ PortsOrch::PortsOrch(DBConnector *db, vector<table_name_with_pri_t> &tableNames,
442442
443443 if (sai_query_attribute_enum_values_capability (gSwitchId , SAI_OBJECT_TYPE_VLAN,
444444 SAI_VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE,
445- values) != SAI_STATUS_SUCCESS)
445+ & values) != SAI_STATUS_SUCCESS)
446446 {
447447 SWSS_LOG_NOTICE (" This device does not support broadcast flood control types" );
448448 }
449449 else
450450 {
451451 for (uint32_t idx = 0 ; idx < values.count ; idx++)
452452 {
453- bc_sup_flood_control_type.insert (values.list [idx]);
453+ bc_sup_flood_control_type.insert (static_cast < sai_vlan_flood_control_type_t >( values.list [idx]) );
454454 }
455455 }
456456
@@ -4019,7 +4019,7 @@ bool PortsOrch::addVlan(string vlan_alias)
40194019 umc_flood_type = SAI_VLAN_FLOOD_CONTROL_TYPE_COMBINED;
40204020 }
40214021
4022- if (bc_sup_flood_control_type.find (SAI_VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE )
4022+ if (bc_sup_flood_control_type.find (SAI_VLAN_FLOOD_CONTROL_TYPE_COMBINED )
40234023 != umc_sup_flood_control_type.end ())
40244024 {
40254025 attr.id = SAI_VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE;
@@ -4128,13 +4128,13 @@ bool PortsOrch::getVlanByVlanId(sai_vlan_id_t vlan_id, Port &vlan)
41284128 return false ;
41294129}
41304130
4131- bool PortsOrch::addVlanFloodGroups (Port &vlan, Port &port, string &tagging_mode, string end_point_ip)
4131+ bool PortsOrch::addVlanFloodGroups (Port &vlan, Port &port, string end_point_ip)
41324132{
41334133 SWSS_LOG_ENTER ();
41344134
41354135 sai_object_id_t l2mc_group_id = SAI_NULL_OBJECT_ID;
41364136 sai_status_t status;
4137-
4137+ sai_attribute_t attr;
41384138
41394139 if (vlan.m_vlan_info .l2mc_group_id == SAI_NULL_OBJECT_ID)
41404140 {
@@ -4144,7 +4144,6 @@ bool PortsOrch::addVlanFloodGroups(Port &vlan, Port &port, string &tagging_mode,
41444144 SWSS_LOG_ERROR (" Failed to create l2mc flood group" );
41454145 return false ;
41464146 }
4147- sai_attribute_t attr;
41484147
41494148 if (vlan.m_vlan_info .uuc_flood_type == SAI_VLAN_FLOOD_CONTROL_TYPE_COMBINED)
41504149 {
@@ -4218,19 +4217,20 @@ bool PortsOrch::addVlanFloodGroups(Port &vlan, Port &port, string &tagging_mode,
42184217
42194218 sai_object_id_t l2mc_group_member = SAI_NULL_OBJECT_ID;
42204219 status = sai_l2mc_group_api->create_l2mc_group_member (&l2mc_group_member, gSwitchId ,
4221- static_cast <uint32> attrs.size (),
4220+ static_cast <uint32_t >( attrs.size () ),
42224221 attrs.data ());
42234222 if (status != SAI_STATUS_FAILURE)
42244223 {
42254224 SWSS_LOG_ERROR (" Failed to create l2mc group member for adding tunnel %s to vlan %hu" ,
42264225 end_point_ip.c_str (), vlan.m_vlan_info .vlan_id );
42274226 return false ;
42284227 }
4229- vlan.m_vlan_info [end_point_ip] = l2mc_group_member;
4228+ vlan.m_vlan_info . l2mc_members [end_point_ip] = l2mc_group_member;
42304229 return true ;
42314230}
42324231
4233- bool PortsOrch::createVlanMember (Port &vlan, Port &port, string &tagging_mode)
4232+ bool PortsOrch::createVlanMember (Port &vlan, Port &port, sai_vlan_tagging_mode_t &sai_tagging_mode,
4233+ sai_object_id_t &vlan_member_id)
42344234{
42354235 SWSS_LOG_ENTER ();
42364236
@@ -4245,19 +4245,10 @@ bool PortsOrch::createVlanMember(Port &vlan, Port &port, string &tagging_mode)
42454245 attr.value .oid = port.m_bridge_port_id ;
42464246 attrs.push_back (attr);
42474247
4248- sai_vlan_tagging_mode_t sai_tagging_mode = SAI_VLAN_TAGGING_MODE_TAGGED;
42494248 attr.id = SAI_VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE;
4250- if (tagging_mode == " untagged" )
4251- sai_tagging_mode = SAI_VLAN_TAGGING_MODE_UNTAGGED;
4252- else if (tagging_mode == " tagged" )
4253- sai_tagging_mode = SAI_VLAN_TAGGING_MODE_TAGGED;
4254- else if (tagging_mode == " priority_tagged" )
4255- sai_tagging_mode = SAI_VLAN_TAGGING_MODE_PRIORITY_TAGGED;
4256- else assert (false );
42574249 attr.value .s32 = sai_tagging_mode;
42584250 attrs.push_back (attr);
42594251
4260- sai_object_id_t vlan_member_id;
42614252 sai_status_t status = sai_vlan_api->create_vlan_member (&vlan_member_id, gSwitchId , (uint32_t )attrs.size (), attrs.data ());
42624253 if (status != SAI_STATUS_SUCCESS)
42634254 {
@@ -4275,24 +4266,32 @@ bool PortsOrch::createVlanMember(Port &vlan, Port &port, string &tagging_mode)
42754266
42764267}
42774268
4278- bool PortsOrch::addVlanMember (Port &vlan, Port &port, string &tagging_mode, string end_point_ip = " " )
4269+ bool PortsOrch::addVlanMember (Port &vlan, Port &port, string &tagging_mode, string end_point_ip)
42794270{
42804271 SWSS_LOG_ENTER ();
42814272
4273+ sai_object_id_t vlan_member_id;
42824274 if (!end_point_ip.empty ())
42834275 {
42844276 if (!((vlan.m_vlan_info .uuc_flood_type == SAI_VLAN_FLOOD_CONTROL_TYPE_COMBINED) ||
42854277 (vlan.m_vlan_info .umc_flood_type == SAI_VLAN_FLOOD_CONTROL_TYPE_COMBINED) ||
4286- (vlan.m_vlan_info .bc_flood_type == SAI_VLAN_FLOOD_CONTROL_TYPE_COMBINED))
4278+ (vlan.m_vlan_info .bc_flood_type == SAI_VLAN_FLOOD_CONTROL_TYPE_COMBINED)))
42874279 {
42884280 SWSS_LOG_ERROR (" Flood group with end point ip is not supported" );
42894281 return false ;
42904282 }
4291- // TODO Check if P2MP bridgeport needs to be added as vlan member
42924283 return addVlanFloodGroups (vlan, port, end_point_ip);
42934284 }
42944285
4295- if (!createVlanMember (vlan, port, tagging_mode))
4286+ sai_vlan_tagging_mode_t sai_tagging_mode = SAI_VLAN_TAGGING_MODE_TAGGED;
4287+ if (tagging_mode == " untagged" )
4288+ sai_tagging_mode = SAI_VLAN_TAGGING_MODE_UNTAGGED;
4289+ else if (tagging_mode == " tagged" )
4290+ sai_tagging_mode = SAI_VLAN_TAGGING_MODE_TAGGED;
4291+ else if (tagging_mode == " priority_tagged" )
4292+ sai_tagging_mode = SAI_VLAN_TAGGING_MODE_PRIORITY_TAGGED;
4293+ else assert (false );
4294+ if (!createVlanMember (vlan, port, sai_tagging_mode, vlan_member_id))
42964295 {
42974296 return false ;
42984297 }
@@ -4319,7 +4318,7 @@ bool PortsOrch::addVlanMember(Port &vlan, Port &port, string &tagging_mode, stri
43194318 return true ;
43204319}
43214320
4322- bool PortsOrch::removeVlanEndPointIP (Port &vlan, Port &port, string end_point_ip)
4321+ bool PortsOrch::removeVlanEndPointIp (Port &vlan, Port &port, string end_point_ip)
43234322{
43244323 SWSS_LOG_ENTER ();
43254324
@@ -4328,19 +4327,20 @@ bool PortsOrch::removeVlanEndPointIP(Port &vlan, Port &port, string end_point_ip
43284327 if (vlan.m_vlan_info .l2mc_members .find (end_point_ip) == vlan.m_vlan_info .l2mc_members .end ())
43294328 {
43304329 SWSS_LOG_NOTICE (" End point ip %s is not part of vlan %hu" ,
4331- end_point_ip, vlan.m_vlan_info .vlan_id );
4330+ end_point_ip. c_str () , vlan.m_vlan_info .vlan_id );
43324331 return true ;
43334332 }
43344333
43354334 status = sai_l2mc_group_api->remove_l2mc_group_member (vlan.m_vlan_info .l2mc_members [end_point_ip]);
43364335 if (status != SAI_STATUS_SUCCESS)
43374336 {
43384337 SWSS_LOG_ERROR (" Failed to remove end point ip %s from vlan %hu" ,
4339- end_point_ip, vlan.m_vlan_info .vlan_id );
4338+ end_point_ip. c_str () , vlan.m_vlan_info .vlan_id );
43404339 return false ;
43414340 }
43424341 vlan.m_vlan_info .l2mc_members .erase (end_point_ip);
43434342 sai_object_id_t l2mc_group_id = SAI_NULL_OBJECT_ID;
4343+ sai_attribute_t attr;
43444344
43454345 if (vlan.m_vlan_info .l2mc_members .empty ())
43464346 {
@@ -4352,7 +4352,7 @@ bool PortsOrch::removeVlanEndPointIP(Port &vlan, Port &port, string end_point_ip
43524352 status = sai_vlan_api->set_vlan_attribute (vlan.m_vlan_info .vlan_oid , &attr);
43534353 if (status != SAI_STATUS_SUCCESS)
43544354 {
4355- SWSS_LOG_ERROR (" Failed to set null l2mc group % "
4355+ SWSS_LOG_ERROR (" Failed to set null l2mc group "
43564356 " to vlan %hu for unknown unicast flooding" ,
43574357 vlan.m_vlan_info .vlan_id );
43584358 return false ;
@@ -4366,7 +4366,7 @@ bool PortsOrch::removeVlanEndPointIP(Port &vlan, Port &port, string end_point_ip
43664366 status = sai_vlan_api->set_vlan_attribute (vlan.m_vlan_info .vlan_oid , &attr);
43674367 if (status != SAI_STATUS_SUCCESS)
43684368 {
4369- SWSS_LOG_ERROR (" Failed to set null l2mc group % "
4369+ SWSS_LOG_ERROR (" Failed to set null l2mc group "
43704370 " to vlan %hu for unknown multicast flooding" ,
43714371 vlan.m_vlan_info .vlan_id );
43724372 return false ;
@@ -4380,7 +4380,7 @@ bool PortsOrch::removeVlanEndPointIP(Port &vlan, Port &port, string end_point_ip
43804380 status = sai_vlan_api->set_vlan_attribute (vlan.m_vlan_info .vlan_oid , &attr);
43814381 if (status != SAI_STATUS_SUCCESS)
43824382 {
4383- SWSS_LOG_ERROR (" Failed to set null l2mc group % "
4383+ SWSS_LOG_ERROR (" Failed to set null l2mc group "
43844384 " to vlan %hu for broadcast flooding" ,
43854385 vlan.m_vlan_info .vlan_id );
43864386 return false ;
@@ -4397,13 +4397,13 @@ bool PortsOrch::removeVlanEndPointIP(Port &vlan, Port &port, string end_point_ip
43974397 return true ;
43984398}
43994399
4400- bool PortsOrch::removeVlanMember (Port &vlan, Port &port, string end_point_ip= " " )
4400+ bool PortsOrch::removeVlanMember (Port &vlan, Port &port, string end_point_ip)
44014401{
44024402 SWSS_LOG_ENTER ();
44034403
44044404 if (!end_point_ip.empty ())
44054405 {
4406- return removeVlanEndPointIP (vlan, port, end_point_ip);
4406+ return removeVlanEndPointIp (vlan, port, end_point_ip);
44074407 }
44084408 sai_object_id_t vlan_member_id;
44094409 sai_vlan_tagging_mode_t sai_tagging_mode;
@@ -4448,7 +4448,7 @@ bool PortsOrch::removeVlanMember(Port &vlan, Port &port, string end_point_ip="")
44484448 return true ;
44494449}
44504450
4451- bool PortsOrch::isVlanMember (Port &vlan, Port &port, string end_point_ip = " " )
4451+ bool PortsOrch::isVlanMember (Port &vlan, Port &port, string end_point_ip)
44524452{
44534453 if (!end_point_ip.empty ())
44544454 {
0 commit comments