5f149bca52352f45598e5563debe72ce04bd7a21cy/*
5f149bca52352f45598e5563debe72ce04bd7a21cy * CDDL HEADER START
5f149bca52352f45598e5563debe72ce04bd7a21cy *
5f149bca52352f45598e5563debe72ce04bd7a21cy * The contents of this file are subject to the terms of the
5f149bca52352f45598e5563debe72ce04bd7a21cy * Common Development and Distribution License (the "License").
5f149bca52352f45598e5563debe72ce04bd7a21cy * You may not use this file except in compliance with the License.
5f149bca52352f45598e5563debe72ce04bd7a21cy *
5f149bca52352f45598e5563debe72ce04bd7a21cy * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5f149bca52352f45598e5563debe72ce04bd7a21cy * or http://www.opensolaris.org/os/licensing.
5f149bca52352f45598e5563debe72ce04bd7a21cy * See the License for the specific language governing permissions
5f149bca52352f45598e5563debe72ce04bd7a21cy * and limitations under the License.
5f149bca52352f45598e5563debe72ce04bd7a21cy *
5f149bca52352f45598e5563debe72ce04bd7a21cy * When distributing Covered Code, include this CDDL HEADER in each
5f149bca52352f45598e5563debe72ce04bd7a21cy * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5f149bca52352f45598e5563debe72ce04bd7a21cy * If applicable, add the following below this CDDL HEADER, with the
5f149bca52352f45598e5563debe72ce04bd7a21cy * fields enclosed by brackets "[]" replaced with your own identifying
5f149bca52352f45598e5563debe72ce04bd7a21cy * information: Portions Copyright [yyyy] [name of copyright owner]
5f149bca52352f45598e5563debe72ce04bd7a21cy *
5f149bca52352f45598e5563debe72ce04bd7a21cy * CDDL HEADER END
5f149bca52352f45598e5563debe72ce04bd7a21cy */
5f149bca52352f45598e5563debe72ce04bd7a21cy
5f149bca52352f45598e5563debe72ce04bd7a21cy/*
5f149bca52352f45598e5563debe72ce04bd7a21cy * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
5f149bca52352f45598e5563debe72ce04bd7a21cy * Use is subject to license terms.
5f149bca52352f45598e5563debe72ce04bd7a21cy */
5f149bca52352f45598e5563debe72ce04bd7a21cy
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye#include <fm/fmd_api.h>
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye#include <fm/fmd_agent.h>
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye#include <fm/fmd_fmri.h>
5f149bca52352f45598e5563debe72ce04bd7a21cy
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye/* ARGSUSED */
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Yeint
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Yecma_fmri_page_service_state(fmd_hdl_t *hdl, nvlist_t *nvl)
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye{
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye fmd_agent_hdl_t *fa_hdl;
3f1e69bef33050bee99ea1e9992af13fc467281fCheng Sean Ye int rc;
5f149bca52352f45598e5563debe72ce04bd7a21cy
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye if ((fa_hdl = fmd_agent_open(FMD_AGENT_VERSION)) != NULL) {
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye rc = fmd_agent_page_isretired(fa_hdl, nvl);
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye if (rc == FMD_AGENT_RETIRE_DONE)
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye rc = FMD_SERVICE_STATE_UNUSABLE;
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye else if (rc == FMD_AGENT_RETIRE_FAIL)
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye rc = FMD_SERVICE_STATE_OK;
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye else if (rc == FMD_AGENT_RETIRE_ASYNC)
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye rc = FMD_SERVICE_STATE_ISOLATE_PENDING;
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye fmd_agent_close(fa_hdl);
3f1e69bef33050bee99ea1e9992af13fc467281fCheng Sean Ye return (rc);
5f149bca52352f45598e5563debe72ce04bd7a21cy }
5f149bca52352f45598e5563debe72ce04bd7a21cy
3f1e69bef33050bee99ea1e9992af13fc467281fCheng Sean Ye return (FMD_SERVICE_STATE_UNKNOWN);
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye}
5f149bca52352f45598e5563debe72ce04bd7a21cy
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye/* ARGSUSED */
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Yeint
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Yecma_fmri_page_retire(fmd_hdl_t *hdl, nvlist_t *nvl)
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye{
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye fmd_agent_hdl_t *fa_hdl;
3f1e69bef33050bee99ea1e9992af13fc467281fCheng Sean Ye int rc;
5f149bca52352f45598e5563debe72ce04bd7a21cy
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye if ((fa_hdl = fmd_agent_open(FMD_AGENT_VERSION)) != NULL) {
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye rc = fmd_agent_page_retire(fa_hdl, nvl);
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye fmd_agent_close(fa_hdl);
3f1e69bef33050bee99ea1e9992af13fc467281fCheng Sean Ye return (rc);
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye }
5f149bca52352f45598e5563debe72ce04bd7a21cy
3f1e69bef33050bee99ea1e9992af13fc467281fCheng Sean Ye return (FMD_AGENT_RETIRE_FAIL);
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye}
5f149bca52352f45598e5563debe72ce04bd7a21cy
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye/* ARGSUSED */
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Yeint
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Yecma_fmri_page_unretire(fmd_hdl_t *hdl, nvlist_t *nvl)
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye{
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye fmd_agent_hdl_t *fa_hdl;
3f1e69bef33050bee99ea1e9992af13fc467281fCheng Sean Ye int rc;
5f149bca52352f45598e5563debe72ce04bd7a21cy
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye if ((fa_hdl = fmd_agent_open(FMD_AGENT_VERSION)) != NULL) {
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye rc = fmd_agent_page_unretire(fa_hdl, nvl);
e4b86885570d77af552e9cf94f142f4d744fb8c8Cheng Sean Ye fmd_agent_close(fa_hdl);
3f1e69bef33050bee99ea1e9992af13fc467281fCheng Sean Ye return (rc);
5f149bca52352f45598e5563debe72ce04bd7a21cy }
5f149bca52352f45598e5563debe72ce04bd7a21cy
3f1e69bef33050bee99ea1e9992af13fc467281fCheng Sean Ye return (FMD_AGENT_RETIRE_FAIL);
5f149bca52352f45598e5563debe72ce04bd7a21cy}