Skip to content

Commit

Permalink
Enhancing vs tests to mock platform specific flows
Browse files Browse the repository at this point in the history
  • Loading branch information
dgsudharsan committed Sep 4, 2021
1 parent f85322e commit a302e5d
Show file tree
Hide file tree
Showing 5 changed files with 76 additions and 1 deletion.
13 changes: 13 additions & 0 deletions vslib/SwitchMLNX2700.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -424,3 +424,16 @@ sai_status_t SwitchMLNX2700::warm_update_queues()

return SAI_STATUS_SUCCESS;
}

sai_status_t SwitchMLNX2700::queryVxlanTunnelPeerModeCapability(
_Inout_ sai_s32_list_t *enum_values_capability)
{
if (enum_values_capability->count < 1)
{
return SAI_STATUS_BUFFER_OVERFLOW;
}

enum_values_capability->count = 1;
enum_values_capability->list[0] = SAI_TUNNEL_PEER_MODE_P2MP;
return SAI_STATUS_SUCCESS;
}
5 changes: 5 additions & 0 deletions vslib/SwitchMLNX2700.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,10 @@ namespace saivs
_In_ sai_object_id_t bridge_id) override;

virtual sai_status_t warm_update_queues() override;

protected:
virtual sai_status_t queryVxlanTunnelPeerModeCapability(
_Inout_ sai_s32_list_t *enum_values_capability) override;

};
}
27 changes: 27 additions & 0 deletions vslib/SwitchStateBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3296,3 +3296,30 @@ bool SwitchStateBase::dumpObject(

return true;
}

sai_status_t SwitchStateBase::queryVxlanTunnelPeerModeCapability(
_Inout_ sai_s32_list_t *enum_values_capability)
{
if (enum_values_capability->count < 2)
{
return SAI_STATUS_BUFFER_OVERFLOW;
}

enum_values_capability->count = 2;
enum_values_capability->list[0] = SAI_TUNNEL_PEER_MODE_P2MP;
enum_values_capability->list[1] = SAI_TUNNEL_PEER_MODE_P2P;
return SAI_STATUS_SUCCESS;
}

sai_status_t SwitchStateBase::queryAttrEnumValuesCapability(
_In_ sai_object_id_t switch_id,
_In_ sai_object_type_t object_type,
_In_ sai_attr_id_t attr_id,
_Inout_ sai_s32_list_t *enum_values_capability)
{
if (object_type == SAI_OBJECT_TYPE_TUNNEL && attr_id == SAI_TUNNEL_ATTR_PEER_MODE)
{
return queryVxlanTunnelPeerModeCapability(enum_values_capability);
}
return SAI_STATUS_NOT_SUPPORTED;
}
11 changes: 11 additions & 0 deletions vslib/SwitchStateBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,12 @@ namespace saivs
_In_ sai_bulk_op_error_mode_t mode,
_Out_ sai_status_t *object_statuses);

virtual sai_status_t queryAttrEnumValuesCapability(
_In_ sai_object_id_t switch_id,
_In_ sai_object_type_t object_type,
_In_ sai_attr_id_t attr_id,
_Inout_ sai_s32_list_t *enum_values_capability);

protected:

virtual sai_status_t remove_internal(
Expand Down Expand Up @@ -633,6 +639,11 @@ namespace saivs
constexpr static const int m_maxAclTables = 3;
constexpr static const int m_maxAclTableGroups = 200;

protected:

virtual sai_status_t queryVxlanTunnelPeerModeCapability(
_Inout_ sai_s32_list_t *enum_values_capability);

public: // TODO private

std::set<FdbInfo> m_fdb_info_set;
Expand Down
21 changes: 20 additions & 1 deletion vslib/VirtualSwitchSaiInterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -831,8 +831,27 @@ sai_status_t VirtualSwitchSaiInterface::queryAattributeEnumValuesCapability(

return SAI_STATUS_SUCCESS;
}
else if (object_type == SAI_OBJECT_TYPE_VLAN && (attr_id == SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE ||
attr_id == SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE ||
attr_id == SAI_VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE))
{

if (enum_values_capability->count < 4)
{
return SAI_STATUS_BUFFER_OVERFLOW;
}

enum_values_capability->count = 4;
enum_values_capability->list[0] = SAI_VLAN_FLOOD_CONTROL_TYPE_ALL;
enum_values_capability->list[1] = SAI_VLAN_FLOOD_CONTROL_TYPE_NONE;
enum_values_capability->list[2] = SAI_VLAN_FLOOD_CONTROL_TYPE_L2MC_GROUP;
enum_values_capability->list[3] = SAI_VLAN_FLOOD_CONTROL_TYPE_COMBINED;

return SAI_STATUS_SUCCESS;
}
auto ss = m_switchStateMap.at(switch_id);
return ss->queryAttrEnumValuesCapability(switch_id, object_type, attr_id, enum_values_capability);

return SAI_STATUS_NOT_SUPPORTED;
}

sai_status_t VirtualSwitchSaiInterface::getStats(
Expand Down

0 comments on commit a302e5d

Please sign in to comment.