Esempio n. 1
0
/**
 * @brief Create stp instance with default port state as forwarding.
 *
 * @param[out] stp_id stp instance id
 * @param[in] attr_count Number of attributes
 * @param[in] attr_list Value of attributes
 * @return SAI_STATUS_SUCCESS if operation is successful otherwise a different
 *  error code is returned.
 */
sai_status_t sai_create_stp_entry(
        _Out_ sai_object_id_t *stp_id,
        _In_  uint32_t attr_count,
        _In_  const sai_attribute_t *attr_list) {

    SAI_LOG_ENTER(SAI_API_STP);

    sai_status_t status = SAI_STATUS_SUCCESS;
    const sai_attribute_t *attribute;
    const sai_vlan_list_t *vlans;
    sai_vlan_id_t vlan_id = 0;
    uint32_t index1 = 0, index2 = 0;
    switch_handle_t *vlan_handle;
    *stp_id = (sai_object_id_t) switch_api_stp_group_create(device, 0);
    for (index1 = 0; index1 < attr_count; index1++) {
        attribute = &attr_list[index1];
        if (attribute->id == SAI_STP_ATTR_VLAN_LIST) {
            vlans = &attribute->value.vlanlist;
            vlan_handle = (switch_handle_t *) malloc(sizeof(switch_handle_t) * vlans->vlan_count);
            for (index2 = 0; index2 < vlans->vlan_count; index2++) {
                vlan_id = vlans->vlan_list[index2];
                switch_api_vlan_id_to_handle_get(vlan_id, &vlan_handle[index2]);
            }
            status = switch_api_stp_group_vlans_add(device, *stp_id, vlans->vlan_count, vlan_handle);
            free(vlan_handle);
        }
    }

    SAI_LOG_EXIT(SAI_API_STP);

    return (sai_status_t) status;
}
Esempio n. 2
0
/**
 * @brief Create stp instance with default port state as forwarding.
 *
 * @param[out] stp_id stp instance id
 * @param[in] attr_count Number of attributes
 * @param[in] attr_list Value of attributes
 * @return SAI_STATUS_SUCCESS if operation is successful otherwise a different
 *  error code is returned.
 */
sai_status_t sai_create_stp_entry(
        _Out_ sai_object_id_t *stp_id,
        _In_  uint32_t attr_count,
        _In_  const sai_attribute_t *attr_list) {
    sai_status_t status = SAI_STATUS_SUCCESS;
    const sai_attribute_t *attribute;
    const sai_vlan_list_t *vlans;
    sai_vlan_id_t vlan_id = 0;
    int index1 = 0, index2 = 0;
    switch_handle_t vlan_handle;
    *stp_id = (sai_object_id_t) switch_api_stp_group_create(device, 0);
    for (index1 = 0; index1 < attr_count; index1++) {
        attribute = &attr_list[index1];
        if (attribute->id == SAI_STP_ATTR_VLAN) {
            vlans = &attribute->value.vlanlist;
            for (index2 = 0; index2 < vlans->vlan_count; index2++) {
                vlan_id = vlans->vlan_list[index2];
                switch_api_vlan_id_to_handle_get(vlan_id, &vlan_handle);
                status = switch_api_stp_group_vlan_add(*stp_id, vlan_handle);
            }
        }
    }
    return (sai_status_t) status;
}