Print this page
NEX-17829 libfmd_snmp and snmp-notify should provide FMRIs for all fault types
Reviewed by: Cynthia Eastham <cynthia.eastham@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
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>
re #13388 rb4382 fmd_api.h uses bool which is a C99/C++ keyword
*** 22,40 ****
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
! #include <strings.h>
! #include <stdlib.h>
! #include <netdir.h>
! #include <errno.h>
#include <alloca.h>
#include <locale.h>
#include <uuid/uuid.h>
- #include <sys/fm/protocol.h>
#include <fmd_adm_impl.h>
#include <fmd_rpc_adm.h>
static const uint_t _fmd_adm_bufsize = 128 * 1024;
static const char _url_fallback[] = "http://illumos.org/msg/";
--- 22,45 ----
/*
* 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 <alloca.h>
+ #include <errno.h>
#include <locale.h>
+ #include <netdir.h>
+ #include <stdlib.h>
+ #include <strings.h>
#include <uuid/uuid.h>
#include <fmd_adm_impl.h>
#include <fmd_rpc_adm.h>
static const uint_t _fmd_adm_bufsize = 128 * 1024;
static const char _url_fallback[] = "http://illumos.org/msg/";
*** 871,880 ****
--- 876,896 ----
xdr_free(xdr_fmd_rpc_caselist, (char *)&rcl);
nvlist_free(aci.aci_event);
return (fmd_adm_set_errno(ap, rv));
}
+ /*
+ * Don't treat absence of type, severity, or description as
+ * fatal error.
+ */
+ (void) nvlist_lookup_string(aci.aci_event, FM_SUSPECT_TYPE,
+ (char **)&aci.aci_type);
+ (void) nvlist_lookup_string(aci.aci_event, FM_SUSPECT_SEVERITY,
+ (char **)&aci.aci_severity);
+ (void) nvlist_lookup_string(aci.aci_event, FM_SUSPECT_DESC,
+ (char **)&aci.aci_desc);
+
rv = fmd_adm_case_one(&aci, url_token, func, arg);
xdr_free(xdr_fmd_rpc_caseinfo, (char *)&rci);
nvlist_free(aci.aci_event);
*** 1097,1107 ****
rv &= xdr_u_int(xp, &sp->fmds_type);
rv &= xdr_opaque(xp, sp->fmds_desc, sizeof (sp->fmds_desc));
switch (sp->fmds_type) {
case FMD_TYPE_BOOL:
! rv &= xdr_int(xp, &sp->fmds_value.bool);
break;
case FMD_TYPE_INT32:
rv &= xdr_int32_t(xp, &sp->fmds_value.i32);
break;
case FMD_TYPE_UINT32:
--- 1113,1123 ----
rv &= xdr_u_int(xp, &sp->fmds_type);
rv &= xdr_opaque(xp, sp->fmds_desc, sizeof (sp->fmds_desc));
switch (sp->fmds_type) {
case FMD_TYPE_BOOL:
! rv &= xdr_int(xp, &sp->fmds_value.b);
break;
case FMD_TYPE_INT32:
rv &= xdr_int32_t(xp, &sp->fmds_value.i32);
break;
case FMD_TYPE_UINT32: