Print this page
NEX-17772 libfmd_snmp should learn about new FmProblem fields
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
*** 22,36 ****
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#include <sys/fm/protocol.h>
#include <fm/fmd_msg.h>
! #include <strings.h>
#include <alloca.h>
#include <stdio.h>
#include <fmd_protocol.h>
#include <fmd_module.h>
#include <fmd_conf.h>
#include <fmd_subr.h>
--- 22,42 ----
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
+ /*
+ * Copyright 2018 Nexenta Systems, Inc.
+ */
+
#include <sys/fm/protocol.h>
+
#include <fm/fmd_msg.h>
!
#include <alloca.h>
#include <stdio.h>
+ #include <strings.h>
#include <fmd_protocol.h>
#include <fmd_module.h>
#include <fmd_conf.h>
#include <fmd_subr.h>
*** 146,156 ****
{
int64_t tod[2];
nvlist_t *nvl;
int err = 0;
fmd_msg_hdl_t *msghdl;
! char *severity;
tod[0] = tvp->tv_sec;
tod[1] = tvp->tv_usec;
if (nvlist_xalloc(&nvl, NV_UNIQUE_NAME, &fmd.d_nva) != 0)
--- 152,162 ----
{
int64_t tod[2];
nvlist_t *nvl;
int err = 0;
fmd_msg_hdl_t *msghdl;
! char *item;
tod[0] = tvp->tv_sec;
tod[1] = tvp->tv_usec;
if (nvlist_xalloc(&nvl, NV_UNIQUE_NAME, &fmd.d_nva) != 0)
*** 179,204 ****
err |= nvlist_add_uint8_array(nvl,
FM_SUSPECT_FAULT_STATUS, flagv, argc);
}
/*
! * Attempt to lookup the severity associated with this diagnosis from
! * the portable object file using the diag code. Failure to init
! * libfmd_msg or add to the nvlist will be treated as fatal. However,
! * we won't treat a fmd_msg_getitem_id failure as fatal since during
! * development it's not uncommon to be working with po/dict files that
! * haven't yet been updated with newly added diagnoses.
*/
msghdl = fmd_msg_init(fmd.d_rootdir, FMD_MSG_VERSION);
if (msghdl == NULL)
fmd_panic("failed to initialize libfmd_msg\n");
! if ((severity = fmd_msg_getitem_id(msghdl, NULL, code,
FMD_MSG_ITEM_SEVERITY)) != NULL) {
! err |= nvlist_add_string(nvl, FM_SUSPECT_SEVERITY, severity);
! free(severity);
}
fmd_msg_fini(msghdl);
if (err != 0)
fmd_panic("failed to populate nvlist: %s\n", fmd_strerror(err));
--- 185,220 ----
err |= nvlist_add_uint8_array(nvl,
FM_SUSPECT_FAULT_STATUS, flagv, argc);
}
/*
! * Attempt to lookup the type, severity, and description associated with
! * this diagnosis from the portable object file using the diag code.
! * Failure to init libfmd_msg or add to the nvlist will be treated as
! * fatal. However, we won't treat a fmd_msg_getitem_id failure as fatal
! * since during development it's not uncommon to be working with po/dict
! * files that haven't yet been updated with newly added diagnoses.
*/
msghdl = fmd_msg_init(fmd.d_rootdir, FMD_MSG_VERSION);
if (msghdl == NULL)
fmd_panic("failed to initialize libfmd_msg\n");
! if ((item = fmd_msg_getitem_id(msghdl, NULL, code,
! FMD_MSG_ITEM_TYPE)) != NULL) {
! err |= nvlist_add_string(nvl, FM_SUSPECT_TYPE, item);
! free(item);
! }
! if ((item = fmd_msg_getitem_id(msghdl, NULL, code,
FMD_MSG_ITEM_SEVERITY)) != NULL) {
! err |= nvlist_add_string(nvl, FM_SUSPECT_SEVERITY, item);
! free(item);
}
+ if ((item = fmd_msg_getitem_id(msghdl, NULL, code,
+ FMD_MSG_ITEM_DESC)) != NULL) {
+ err |= nvlist_add_string(nvl, FM_SUSPECT_DESC, item);
+ free(item);
+ }
fmd_msg_fini(msghdl);
if (err != 0)
fmd_panic("failed to populate nvlist: %s\n", fmd_strerror(err));