Exemplo n.º 1
0
void nas_acl_action_t::set_action_ifindex (const nas_acl_common_data_list_t& data_list)
{
    auto ifindex = data_list.at(0).ifindex;
    _ifindex_list.push_back (ifindex);

    if (nas_acl_utl_is_ifidx_type_lag (ifindex)) {

        nas::ndi_obj_id_table_t tmp_ndi_oid_tbl;
        if (dn_nas_lag_get_ndi_ids (ifindex, &tmp_ndi_oid_tbl) != STD_ERR_OK) {
           throw nas::base_exception {NAS_ACL_E_ATTR_VAL, __PRETTY_FUNCTION__,
                                      "Failed to get LAG NDI IDs"};
        }
        auto oid = static_cast <nas_obj_id_t> (ifindex);
        _nas2ndi_oid_tbl [oid] =    std::move (tmp_ndi_oid_tbl);
        _a_info.values_type    = NDI_ACL_ACTION_OBJ_ID;

    } else {
        // Convert to NPU and port
        interface_ctrl_t  intf_ctrl {};
        nas_acl_utl_ifidx_to_ndi_port (ifindex, &intf_ctrl);
        _a_info.values_type              = NDI_ACL_ACTION_PORT;

        _a_info.values.ndi_port.npu_id   = intf_ctrl.npu_id;
        _a_info.values.ndi_port.npu_port = intf_ctrl.port_id;
    }
}
t_std_error nas_mac_lag_obj_id_get (hal_ifindex_t if_index, ndi_obj_id_t& obj_id)
{
    nas::ndi_obj_id_table_t tmp_ndi_oid_tbl;
    if (dn_nas_lag_get_ndi_ids (if_index, &tmp_ndi_oid_tbl) != STD_ERR_OK) {
        NAS_MAC_LOG(ERR, ev_log_s_MAJOR, "Lag object get failed for %d", if_index);
        return STD_ERR(MAC,NEXIST,0);
    }
    /* TODO - Handle multiple NPU scenerio */
    obj_id = tmp_ndi_oid_tbl[0];
    return STD_ERR_OK;
}