Remove snmp-ext and snmp-audittrail from FM
Remove the libraries libcgtsAgentPlugin and libsnmpAuditPlugin of Fault Management old net-snmp implementation within Starlingx, to delete the implementation of non-containerized SNMP. Story: 2008132 Task: 40866 Signed-off-by: Gonzalo Gallardo <gonzalo.gallardo@windriver.com> Depends-On: https://review.opendev.org/765381 Change-Id: I3aab46cbd45ae7be9e3f97b3acae0fe4536d1388
This commit is contained in:
parent
08130cd625
commit
b8bfdbebea
@ -14,12 +14,6 @@ fm-mgr
|
|||||||
# fm-doc
|
# fm-doc
|
||||||
fm-doc
|
fm-doc
|
||||||
|
|
||||||
# snmp-ext
|
|
||||||
snmp-ext
|
|
||||||
|
|
||||||
# snmp-audittrail
|
|
||||||
snmp-audittrail
|
|
||||||
|
|
||||||
# fm-rest-api
|
# fm-rest-api
|
||||||
fm-rest-api
|
fm-rest-api
|
||||||
|
|
||||||
|
@ -4,5 +4,4 @@ fm-mgr
|
|||||||
fm-doc
|
fm-doc
|
||||||
fm-rest-api
|
fm-rest-api
|
||||||
python-fmclient
|
python-fmclient
|
||||||
snmp-ext
|
|
||||||
snmp-audittrail
|
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
SRC_DIR="sources"
|
|
||||||
TIS_PATCH_VER=PKG_GITREVCOUNT
|
|
@ -1,55 +0,0 @@
|
|||||||
Summary: StarlingX SNMP Audit Trail
|
|
||||||
Name: snmp-audittrail
|
|
||||||
Version: 1.0
|
|
||||||
Release: %{tis_patch_ver}%{?_tis_dist}
|
|
||||||
License: Apache-2.0
|
|
||||||
Group: base
|
|
||||||
Packager: Wind River <info@windriver.com>
|
|
||||||
URL: unknown
|
|
||||||
Source0: %{name}-%{version}.tar.gz
|
|
||||||
BuildRequires: net-snmp-devel
|
|
||||||
BuildRequires: fm-common-dev
|
|
||||||
BuildRequires: uuid-devel
|
|
||||||
BuildRequires: uuid
|
|
||||||
BuildRequires: libuuid-devel
|
|
||||||
Requires: net-snmp
|
|
||||||
Requires: uuid
|
|
||||||
|
|
||||||
%description
|
|
||||||
StarlingX SNMP Audit Trail provides audit trail support for incoming
|
|
||||||
SNMP requests.
|
|
||||||
|
|
||||||
%package -n snmp-audittrail-devel
|
|
||||||
Summary: StarlingX SNMP Audit Trail Package - Development files
|
|
||||||
Group: devel
|
|
||||||
Requires: snmp-audittrail = %{version}-%{release}
|
|
||||||
|
|
||||||
%description -n snmp-audittrail-devel
|
|
||||||
StarlingX SNMP Audit Trail provides audit trail support for incoming SNMP requests.
|
|
||||||
This package contains symbolic links, header files, and related items necessary
|
|
||||||
for software development.
|
|
||||||
|
|
||||||
%prep
|
|
||||||
%setup
|
|
||||||
|
|
||||||
%build
|
|
||||||
VER=%{version}
|
|
||||||
MAJOR=`echo $VER | awk -F . '{print $1}'`
|
|
||||||
MINOR=`echo $VER | awk -F . '{print $2}'`
|
|
||||||
make MAJOR=$MAJOR MINOR=$MINOR PATCH=%{tis_patch_ver} %{?_smp_mflags}
|
|
||||||
|
|
||||||
%install
|
|
||||||
rm -rf $RPM_BUILD_ROOT
|
|
||||||
VER=%{version}
|
|
||||||
MAJOR=`echo $VER | awk -F . '{print $1}'`
|
|
||||||
MINOR=`echo $VER | awk -F . '{print $2}'`
|
|
||||||
make install DESTDIR=$RPM_BUILD_ROOT LIB_DIR=%{_libdir} MAJOR=$MAJOR MINOR=$MINOR PATCH=%{tis_patch_ver}
|
|
||||||
|
|
||||||
%files
|
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%doc LICENSE
|
|
||||||
%{_libdir}/*.so.*
|
|
||||||
|
|
||||||
%files -n snmp-audittrail-devel
|
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%{_libdir}/*.so
|
|
@ -1,14 +0,0 @@
|
|||||||
-------------------------------------------------------------------
|
|
||||||
Thu Jun 13 20:56:01 UTC 2019 - sgw@linux.intel.com
|
|
||||||
|
|
||||||
- convert from tarball to _service file
|
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
|
||||||
Mon Jun 10 23:21:36 UTC 2019 - sgw@linux.intel.com
|
|
||||||
|
|
||||||
- spec-cleaner and rpmlint checked
|
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
|
||||||
Thu May 23 20:39:25 UTC 2019 - sgw@bigsur.com
|
|
||||||
|
|
||||||
- Initial Commit
|
|
@ -1 +0,0 @@
|
|||||||
setBadness('script-without-shebang', 2)
|
|
@ -1,61 +0,0 @@
|
|||||||
Name: snmp-audittrail
|
|
||||||
Version: 1.0.0
|
|
||||||
Release: %{tis_patch_ver}%{?_tis_dist}
|
|
||||||
Summary: StarlingX SNMP Audit Trail
|
|
||||||
License: Apache-2.0
|
|
||||||
Group: Development/Tools/Other
|
|
||||||
URL: https://opendev.org/starlingx/fault
|
|
||||||
Source0: %{name}-%{version}.tar.gz
|
|
||||||
BuildRequires: fm-common-devel
|
|
||||||
BuildRequires: libuuid-devel
|
|
||||||
BuildRequires: net-snmp-devel
|
|
||||||
BuildRequires: uuid-devel
|
|
||||||
Requires: net-snmp
|
|
||||||
Requires: uuid
|
|
||||||
%if 0%{?suse_version}
|
|
||||||
BuildRequires: gcc-c++
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%description
|
|
||||||
StarlingX SNMP Audit Trail provides audit trail support for incoming
|
|
||||||
SNMP requests.
|
|
||||||
|
|
||||||
%package -n snmp-audittrail-devel
|
|
||||||
Summary: StarlingX SNMP Audit Trail Package - Development files
|
|
||||||
Group: Development/Tools/Other
|
|
||||||
Requires: snmp-audittrail = %{version}-%{release}
|
|
||||||
|
|
||||||
%description -n snmp-audittrail-devel
|
|
||||||
StarlingX SNMP Audit Trail provides audit trail support for incoming SNMP requests.
|
|
||||||
This package contains symbolic links, header files, and related items necessary
|
|
||||||
for software development.
|
|
||||||
|
|
||||||
%prep
|
|
||||||
%autosetup -n %{name}-%{version}/sources
|
|
||||||
|
|
||||||
%build
|
|
||||||
VER=%{version}
|
|
||||||
MAJOR=`echo $VER | awk -F . '{print $1}'`
|
|
||||||
MINOR=`echo $VER | awk -F . '{print $2}'`
|
|
||||||
make MAJOR=$MAJOR MINOR=$MINOR PATCH=%{tis_patch_ver} %{?_smp_mflags}
|
|
||||||
|
|
||||||
%install
|
|
||||||
VER=%{version}
|
|
||||||
MAJOR=`echo $VER | awk -F . '{print $1}'`
|
|
||||||
MINOR=`echo $VER | awk -F . '{print $2}'`
|
|
||||||
make install DESTDIR=%{buildroot} LIB_DIR=%{_libdir} MAJOR=$MAJOR MINOR=$MINOR PATCH=%{tis_patch_ver}
|
|
||||||
|
|
||||||
%post -p /sbin/ldconfig
|
|
||||||
|
|
||||||
%postun -p /sbin/ldconfig
|
|
||||||
|
|
||||||
%files
|
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%license LICENSE
|
|
||||||
%{_libdir}/*.so.*
|
|
||||||
|
|
||||||
%files -n snmp-audittrail-devel
|
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%{_libdir}/*.so
|
|
||||||
|
|
||||||
%changelog
|
|
@ -1,202 +0,0 @@
|
|||||||
|
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
@ -1,30 +0,0 @@
|
|||||||
SRCS = snmpAuditPlugin.c
|
|
||||||
|
|
||||||
OBJS = $(SRCS:.c=.o)
|
|
||||||
LDLIBS = -lfmcommon -lnetsnmp -lnetsnmpagent -luuid
|
|
||||||
INCLUDES += -I./
|
|
||||||
CCFLAGS = -fPIC -g -O2 -Wall -Werror -Wformat -Wformat-security
|
|
||||||
LIBCGTSAGENT_SO := libsnmpAuditPlugin.so
|
|
||||||
MAJOR ?= 1
|
|
||||||
MINOR ?= 0
|
|
||||||
PATCH ?= 0
|
|
||||||
DESTDIR ?= /usr/lib64
|
|
||||||
|
|
||||||
build: lib
|
|
||||||
|
|
||||||
.c.o:
|
|
||||||
$(CXX) $(CCFLAGS) $(INCLUDES) -c $< -o $@
|
|
||||||
|
|
||||||
lib: $(OBJS)
|
|
||||||
$(CXX) $(OBJS) $(LDLIBS) -o $(LIBCGTSAGENT_SO).$(MAJOR).$(MINOR).$(PATCH) -shared
|
|
||||||
ln -sf $(LIBCGTSAGENT_SO).$(MAJOR).$(MINOR).$(PATCH) $(LIBCGTSAGENT_SO).$(MAJOR)
|
|
||||||
ln -sf $(LIBCGTSAGENT_SO).$(MAJOR).$(MINOR).$(PATCH) $(LIBCGTSAGENT_SO)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
@rm -f $(OBJ) *.o *.so.*
|
|
||||||
|
|
||||||
install:
|
|
||||||
install -m 755 -d $(DESTDIR)$(LIB_DIR)
|
|
||||||
install -m 755 $(LIBCGTSAGENT_SO).$(MAJOR).$(MINOR).$(PATCH) $(DESTDIR)$(LIB_DIR)
|
|
||||||
ln -s $(LIBCGTSAGENT_SO).$(MAJOR).$(MINOR).$(PATCH) $(DESTDIR)$(LIB_DIR)/$(LIBCGTSAGENT_SO).$(MAJOR)
|
|
||||||
ln -s $(LIBCGTSAGENT_SO).$(MAJOR).$(MINOR).$(PATCH) $(DESTDIR)$(LIB_DIR)/$(LIBCGTSAGENT_SO)
|
|
@ -1,422 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2017 Wind River Systems, Inc.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
|
|
||||||
#include <net-snmp/net-snmp-config.h>
|
|
||||||
#include <net-snmp/net-snmp-includes.h>
|
|
||||||
#include <net-snmp/net-snmp-features.h>
|
|
||||||
#include <net-snmp/agent/net-snmp-agent-includes.h>
|
|
||||||
#include <net-snmp/library/callback.h>
|
|
||||||
#include <net-snmp/library/snmp_transport.h>
|
|
||||||
#include <net-snmp/library/snmp_api.h>
|
|
||||||
#include <net-snmp/library/mib.h>
|
|
||||||
#include <net-snmp/library/snmp.h>
|
|
||||||
#include <net-snmp/library/vacm.h>
|
|
||||||
#include <net-snmp/library/snmpUDPDomain.h>
|
|
||||||
#include <net-snmp/library/tools.h>
|
|
||||||
#include <net-snmp/agent/agent_callbacks.h>
|
|
||||||
#include <net-snmp/agent/agent_handler.h>
|
|
||||||
#include <net-snmp/agent/agent_registry.h>
|
|
||||||
|
|
||||||
#define LOG_BUF_STR (256)
|
|
||||||
|
|
||||||
#define AUDIT_TAG "snmp-auditor"
|
|
||||||
|
|
||||||
/* Used to keep track of the first handler call for a transaction */
|
|
||||||
typedef struct s_audit_req_t {
|
|
||||||
long transid;
|
|
||||||
long reqid;
|
|
||||||
} audit_req_t;
|
|
||||||
|
|
||||||
typedef struct s_enum_to_string_t {
|
|
||||||
const int enumval;
|
|
||||||
const char *str;
|
|
||||||
} enum_to_string_t;
|
|
||||||
|
|
||||||
|
|
||||||
/* Logs IP session information, in the format: "remote IP:port ==> local IP:port" */
|
|
||||||
static inline char* fmtaddr(const char *prefix, int af,
|
|
||||||
void *remote_addr, unsigned short remote_port,
|
|
||||||
char*buf, size_t buflen)
|
|
||||||
{
|
|
||||||
char remote_addr_str[LOG_BUF_STR+1];
|
|
||||||
|
|
||||||
if (NULL == inet_ntop(af, remote_addr, remote_addr_str, sizeof(remote_addr_str))) {
|
|
||||||
strncpy(remote_addr_str, "UNKNOWN", LOG_BUF_STR+1);
|
|
||||||
}
|
|
||||||
remote_addr_str[LOG_BUF_STR] = 0;
|
|
||||||
|
|
||||||
snprintf(buf, buflen, "transport:%s remote:%s", prefix, remote_addr_str);
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef NETSNMP_ENABLE_IPV6
|
|
||||||
static char* ipv6_fmtaddr(const char *prefix, netsnmp_addr_pair *addr_pair, char*buf, size_t buflen)
|
|
||||||
{
|
|
||||||
return fmtaddr(prefix, AF_INET6,
|
|
||||||
(void *)&addr_pair->remote_addr.sin6.sin6_addr, addr_pair->remote_addr.sin6.sin6_port,
|
|
||||||
buf, buflen);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
static char* ipv4_fmtaddr(const char *prefix, netsnmp_addr_pair *addr_pair, char*buf, size_t buflen)
|
|
||||||
{
|
|
||||||
return fmtaddr(prefix, AF_INET,
|
|
||||||
(void *)&addr_pair->remote_addr.sin.sin_addr, addr_pair->remote_addr.sin.sin_port,
|
|
||||||
buf, buflen);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Logs IP session information */
|
|
||||||
static char* log_session_addresses(const oid* tDomain, netsnmp_addr_pair *addr_pair, char*buf, size_t buflen)
|
|
||||||
{
|
|
||||||
if (tDomain == netsnmpUDPDomain) {
|
|
||||||
return ipv4_fmtaddr("udp", addr_pair, buf, buflen);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tDomain == netsnmp_snmpTCPDomain) {
|
|
||||||
return ipv4_fmtaddr("tcp", addr_pair, buf, buflen);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef NETSNMP_ENABLE_IPV6
|
|
||||||
if (tDomain == netsnmp_UDPIPv6Domain) {
|
|
||||||
return ipv6_fmtaddr("udpv6", addr_pair, buf, buflen);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tDomain == netsnmp_TCPIPv6Domain) {
|
|
||||||
return ipv6_fmtaddr("tcpv6", addr_pair, buf, buflen);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
strncpy(buf, "IP FMT ERROR", buflen);
|
|
||||||
buf[buflen-1] = 0;
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* SNMP OID formatting (a wrapper around the 'standard' function */
|
|
||||||
static inline char* fmtoid(const oid * theoid, size_t len, int* no_overflow)
|
|
||||||
{
|
|
||||||
u_char *buf = NULL;
|
|
||||||
size_t buf_len = 0;
|
|
||||||
size_t out_len = 0;
|
|
||||||
|
|
||||||
*no_overflow = sprint_realloc_objid(&buf, &buf_len, &out_len, 1, theoid, len);
|
|
||||||
if (NULL == buf) {
|
|
||||||
*no_overflow = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (char*)buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* SNMP var bind formatting (a convenience function) - formats the OID (variable name)
|
|
||||||
This function is always called with var != NULL */
|
|
||||||
static inline char* fmtmsg_var(netsnmp_variable_list * var, int* no_overflow)
|
|
||||||
{
|
|
||||||
return fmtoid(var->name, var->name_length, no_overflow);
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char* get_version(long version)
|
|
||||||
{
|
|
||||||
switch (version) {
|
|
||||||
case 0: return "v1";
|
|
||||||
case 1: return "v2c";
|
|
||||||
case 2: return "v3";
|
|
||||||
}
|
|
||||||
return "error";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static const char *get_str_from_enum(int enumval, const enum_to_string_t* table, const char* defval)
|
|
||||||
{
|
|
||||||
const enum_to_string_t* ptr = table;
|
|
||||||
|
|
||||||
for ( ; ptr->str != NULL; ++ptr) {
|
|
||||||
if (ptr->enumval == enumval) {
|
|
||||||
return ptr->str;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (NULL == defval) {
|
|
||||||
return "unknown";
|
|
||||||
}
|
|
||||||
return defval;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static const char *get_auth_error(int errorcode)
|
|
||||||
{
|
|
||||||
static enum_to_string_t errorcodes_str[] = {
|
|
||||||
{ VACM_SUCCESS, "Success", },
|
|
||||||
{ VACM_NOSECNAME, "InvalidCommunityName" },
|
|
||||||
{ VACM_NOGROUP, "NoGroup" },
|
|
||||||
{ VACM_NOACCESS, "NoAccess" },
|
|
||||||
{ VACM_NOVIEW, "NoViewAccess" },
|
|
||||||
{ VACM_NOTINVIEW, "NotInView" },
|
|
||||||
{ VACM_NOSUCHCONTEXT, "NoSuchContext" },
|
|
||||||
{ VACM_SUBTREE_UNKNOWN,"SubtreeUnknown" },
|
|
||||||
{0, NULL}
|
|
||||||
};
|
|
||||||
return get_str_from_enum(errorcode, errorcodes_str, "unknown err");
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char *get_result_error(int errorcode)
|
|
||||||
{
|
|
||||||
static enum_to_string_t errorcodes_str[] = {
|
|
||||||
{ 0, "pass" },
|
|
||||||
{ SNMP_NOSUCHOBJECT, "NoSuchObject" },
|
|
||||||
{ SNMP_NOSUCHINSTANCE, "NoSuchInstance" },
|
|
||||||
{ SNMP_ENDOFMIBVIEW, "EndOfMIBView" },
|
|
||||||
{0, NULL}
|
|
||||||
};
|
|
||||||
return get_str_from_enum(errorcode, errorcodes_str, "pass");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Logs all var-binds in PDU (only variable names, aka OID's) */
|
|
||||||
static void log_var_list(netsnmp_pdu *pdu)
|
|
||||||
{
|
|
||||||
netsnmp_variable_list * var;
|
|
||||||
|
|
||||||
for (var = pdu->variables; var != NULL; var = var->next_variable) {
|
|
||||||
int no_overflow_var = 0;
|
|
||||||
char* var_str = fmtmsg_var(var, &no_overflow_var);
|
|
||||||
|
|
||||||
snmp_log(LOG_INFO, AUDIT_TAG" reqid:%ld oid:%s%s\n",
|
|
||||||
pdu->reqid,
|
|
||||||
(var_str != NULL) ? var_str : "INVALID",
|
|
||||||
(no_overflow_var) ? "" : " [TRUNCATED]");
|
|
||||||
free(var_str);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Logs the 'header' of a PDU/request (IP addresses, reqid, msg type, version) */
|
|
||||||
static void log_pdu_header(netsnmp_pdu *pdu, const char *status)
|
|
||||||
{
|
|
||||||
char buf[LOG_BUF_STR];
|
|
||||||
netsnmp_addr_pair *addr_pair = (netsnmp_addr_pair *)pdu->transport_data;
|
|
||||||
|
|
||||||
snmp_log(LOG_INFO, AUDIT_TAG" %s reqid:%ld msg-type:%s version:%s%s\n",
|
|
||||||
log_session_addresses(pdu->tDomain, addr_pair, buf, sizeof(buf)),
|
|
||||||
pdu->reqid, snmp_pdu_type(pdu->command), get_version(pdu->version), status);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Logs the results of a request, namely results obtained from actual processing handlers */
|
|
||||||
static void log_results(long reqid, netsnmp_request_info *requests)
|
|
||||||
{
|
|
||||||
netsnmp_request_info *req;
|
|
||||||
|
|
||||||
for (req = requests; req != NULL; req = req->next) {
|
|
||||||
netsnmp_variable_list *var = req->requestvb;
|
|
||||||
|
|
||||||
if (NULL == var) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (var->type != ASN_NULL) { /* NULL means no result, so skip */
|
|
||||||
int no_overflow_var = 0;
|
|
||||||
char* var_str = fmtmsg_var(var, &no_overflow_var);
|
|
||||||
|
|
||||||
/* Print only first variable: this is the request that we get a result for */
|
|
||||||
snmp_log(LOG_INFO, AUDIT_TAG" reqid:%ld oid:%s%s status:%s\n", reqid,
|
|
||||||
(var_str != NULL) ? var_str : "INVALID",
|
|
||||||
(no_overflow_var) ? "" : " [TRUNCATED]", get_result_error(var->type));
|
|
||||||
free(var_str);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void log_invalid_oid_trees(netsnmp_pdu *pdu)
|
|
||||||
{
|
|
||||||
char buf[LOG_BUF_STR];
|
|
||||||
netsnmp_variable_list *var;
|
|
||||||
netsnmp_addr_pair *addr_pair = (netsnmp_addr_pair *)pdu->transport_data;
|
|
||||||
int first_time = 1;
|
|
||||||
|
|
||||||
for (var = pdu->variables; var != NULL; var = var->next_variable) {
|
|
||||||
netsnmp_subtree *tp = netsnmp_subtree_find(var->name, var->name_length,
|
|
||||||
NULL, pdu->contextName);
|
|
||||||
if (tp != NULL) {
|
|
||||||
int prefix_len = netsnmp_oid_find_prefix(tp->start_a,
|
|
||||||
tp->start_len,
|
|
||||||
tp->end_a, tp->end_len);
|
|
||||||
while (prefix_len < 1) {
|
|
||||||
tp = tp->next;
|
|
||||||
if (NULL == tp) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
prefix_len = netsnmp_oid_find_prefix(tp->start_a,
|
|
||||||
tp->start_len,
|
|
||||||
tp->end_a, tp->end_len);
|
|
||||||
}
|
|
||||||
DEBUGMSGTL(("helper:snmpAudit", "var=%p tp=%p prefix_len=%d\n", var, tp, prefix_len ));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
DEBUGMSGTL(("helper:snmpAudit", "tp NOT found var=%p\n", var));
|
|
||||||
}
|
|
||||||
if (NULL == tp) {
|
|
||||||
int no_overflow_var = 0;
|
|
||||||
char* var_str = fmtmsg_var(var, &no_overflow_var);
|
|
||||||
|
|
||||||
if (first_time) {
|
|
||||||
first_time = 0;
|
|
||||||
snmp_log(LOG_INFO, AUDIT_TAG" %s reqid:%ld msg-type:%s version:%s\n",
|
|
||||||
log_session_addresses(pdu->tDomain, addr_pair, buf, sizeof(buf)), pdu->reqid,
|
|
||||||
snmp_pdu_type(pdu->command),
|
|
||||||
get_version(pdu->version));
|
|
||||||
log_var_list(pdu);
|
|
||||||
}
|
|
||||||
|
|
||||||
snmp_log(LOG_INFO, AUDIT_TAG" reqid:%ld oid:%s%s status:%s\n",
|
|
||||||
pdu->reqid,
|
|
||||||
(var_str != NULL) ? var_str : "INVALID",
|
|
||||||
(no_overflow_var) ? "" : " [TRUNCATED]",
|
|
||||||
get_result_error(SNMP_ENDOFMIBVIEW));
|
|
||||||
free(var_str);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Register with 'SNMPD_CALLBACK_ACM_CHECK_INITIAL == minorId'
|
|
||||||
* This function is used to log authorization errors and invalid OID's errors,
|
|
||||||
* for GET BULK and GET NEXT requests
|
|
||||||
*/
|
|
||||||
static int audit_callback_acm_check_initial(int majorID, int minorID, void *serverarg,
|
|
||||||
void *clientarg)
|
|
||||||
{
|
|
||||||
struct view_parameters *view_parms =
|
|
||||||
(struct view_parameters *) serverarg;
|
|
||||||
netsnmp_pdu *pdu = view_parms->pdu;
|
|
||||||
|
|
||||||
DEBUGMSGTL(("helper:snmpAudit", "%s msg-type: %s errcode=%d minorID=%d\n",
|
|
||||||
__FUNCTION__, snmp_pdu_type(pdu->command), view_parms->errorcode, minorID));
|
|
||||||
|
|
||||||
if (view_parms->errorcode != VACM_SUCCESS) {
|
|
||||||
/* Log Authentication errors */
|
|
||||||
char buf[LOG_BUF_STR];
|
|
||||||
netsnmp_addr_pair *addr_pair = (netsnmp_addr_pair *)pdu->transport_data;
|
|
||||||
|
|
||||||
snmp_log(LOG_INFO, AUDIT_TAG" %s reqid:%ld msg-type:%s version:%s status:%s\n",
|
|
||||||
log_session_addresses(pdu->tDomain, addr_pair, buf, sizeof(buf)), pdu->reqid,
|
|
||||||
snmp_pdu_type(pdu->command), get_version(pdu->version),
|
|
||||||
get_auth_error(view_parms->errorcode));
|
|
||||||
log_var_list(pdu);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (SNMP_MSG_GETBULK == pdu->command ||
|
|
||||||
SNMP_MSG_GETNEXT == pdu->command) {
|
|
||||||
/* Log possible invalid OID subtrees for GETNEXT and GETBULK request
|
|
||||||
* (e.g. "1.10" - outside the normal ISO MIB subtree)
|
|
||||||
*/
|
|
||||||
log_invalid_oid_trees(pdu);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Register with 'SNMPD_CALLBACK_ACM_CHECK == minorId'
|
|
||||||
* This function is used to log SET requests (which are normally rejected)
|
|
||||||
*/
|
|
||||||
static int audit_callback_acm_check(int majorID, int minorID, void *serverarg,
|
|
||||||
void *clientarg)
|
|
||||||
{
|
|
||||||
struct view_parameters *view_parms =
|
|
||||||
(struct view_parameters *) serverarg;
|
|
||||||
netsnmp_pdu *pdu = view_parms->pdu;
|
|
||||||
|
|
||||||
DEBUGMSGTL(("helper:snmpAudit", "%s msg-type: %s errcode=%d minorID=%d\n",
|
|
||||||
__FUNCTION__, snmp_pdu_type(pdu->command), view_parms->errorcode, minorID));
|
|
||||||
if (SNMP_MSG_SET == pdu->command) {
|
|
||||||
char status_buf[LOG_BUF_STR];
|
|
||||||
snprintf(status_buf, LOG_BUF_STR,
|
|
||||||
" status:%s", get_auth_error(view_parms->errorcode));
|
|
||||||
log_pdu_header(pdu, status_buf);
|
|
||||||
log_var_list(pdu);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Main log handler function: logs 'normal' requests:
|
|
||||||
* everything except SET operations, authentication errors and GETBULK/GETNEXT for invalid OIDs */
|
|
||||||
static int audit_log_handler(netsnmp_mib_handler *handler,
|
|
||||||
netsnmp_handler_registration *reginfo,
|
|
||||||
netsnmp_agent_request_info *reqinfo,
|
|
||||||
netsnmp_request_info *requests)
|
|
||||||
{
|
|
||||||
static audit_req_t req = {
|
|
||||||
.transid = 0,
|
|
||||||
.reqid = 0
|
|
||||||
};
|
|
||||||
netsnmp_pdu *orig_pdu = reqinfo->asp->orig_pdu;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* Note. Assumes single-threaded processing. */
|
|
||||||
if ((req.transid != orig_pdu->transid) &&
|
|
||||||
(req.reqid != orig_pdu->reqid)) {
|
|
||||||
|
|
||||||
/* New transaction */
|
|
||||||
req.transid = orig_pdu->transid;
|
|
||||||
req.reqid = orig_pdu->reqid;
|
|
||||||
|
|
||||||
/* Logs session information (e.g. IP addresses, version...) */
|
|
||||||
log_pdu_header(orig_pdu, "");
|
|
||||||
/* Logs the variables names in the request */
|
|
||||||
log_var_list(orig_pdu);
|
|
||||||
}
|
|
||||||
/* Calls the next handlers, to obtain processing results */
|
|
||||||
ret = netsnmp_call_next_handler(handler, reginfo, reqinfo, requests);
|
|
||||||
/* Logs the variables names in the results
|
|
||||||
* resulted from the calls to 'netsnmp_call_next_handler' above
|
|
||||||
* which invokes all other handlers in the chain.
|
|
||||||
*/
|
|
||||||
log_results(orig_pdu->reqid, requests);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialization routine, automatically called by the agent
|
|
||||||
* (to get called, the function name must match init_FILENAME())
|
|
||||||
*/
|
|
||||||
extern "C" void init_snmpAuditPlugin(void) {
|
|
||||||
|
|
||||||
netsnmp_mib_handler *audit_handler = NULL;
|
|
||||||
|
|
||||||
snmp_log(LOG_INFO, "init_snmpAuditPlugin\n");
|
|
||||||
audit_handler = netsnmp_create_handler("snmpAudit",
|
|
||||||
audit_log_handler);
|
|
||||||
if (audit_handler != NULL) {
|
|
||||||
netsnmp_register_handler_by_name("snmpAudit", audit_handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
netsnmp_register_callback(SNMP_CALLBACK_APPLICATION, SNMPD_CALLBACK_ACM_CHECK,
|
|
||||||
audit_callback_acm_check,
|
|
||||||
NULL, NETSNMP_CALLBACK_LOWEST_PRIORITY );
|
|
||||||
netsnmp_register_callback(SNMP_CALLBACK_APPLICATION, SNMPD_CALLBACK_ACM_CHECK_INITIAL,
|
|
||||||
audit_callback_acm_check_initial,
|
|
||||||
NULL, NETSNMP_CALLBACK_LOWEST_PRIORITY);
|
|
||||||
}
|
|
||||||
|
|
||||||
extern "C" void deinit_snmpAuditPlugin(void)
|
|
||||||
{
|
|
||||||
snmp_log(LOG_INFO, "deinit_snmpAuditPlugin\n");
|
|
||||||
snmp_unregister_callback(SNMP_CALLBACK_APPLICATION, SNMPD_CALLBACK_ACM_CHECK,
|
|
||||||
audit_callback_acm_check, NULL, 1);
|
|
||||||
snmp_unregister_callback(SNMP_CALLBACK_APPLICATION, SNMPD_CALLBACK_ACM_CHECK_INITIAL,
|
|
||||||
audit_callback_acm_check_initial, NULL, 1);
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
SRC_DIR="sources"
|
|
||||||
TIS_PATCH_VER=PKG_GITREVCOUNT
|
|
@ -1,60 +0,0 @@
|
|||||||
Summary: CGTS Platform SNMP extension Package
|
|
||||||
Name: snmp-ext
|
|
||||||
Version: 1.0
|
|
||||||
Release: %{tis_patch_ver}%{?_tis_dist}
|
|
||||||
License: Apache-2.0
|
|
||||||
Group: base
|
|
||||||
Packager: Wind River <info@windriver.com>
|
|
||||||
URL: unknown
|
|
||||||
Source0: %{name}-%{version}.tar.gz
|
|
||||||
BuildRequires: fm-common-dev
|
|
||||||
BuildRequires: net-snmp-devel
|
|
||||||
BuildRequires: libuuid-devel
|
|
||||||
Requires: fm-common
|
|
||||||
Requires: net-snmp
|
|
||||||
|
|
||||||
%define mib_ver 2.0
|
|
||||||
|
|
||||||
%description
|
|
||||||
StarlingX platform SNMP extension provides Wind River enterprise MIBs support
|
|
||||||
and it serves as SNMP based alarm surveillance module for Network Manager
|
|
||||||
System.
|
|
||||||
|
|
||||||
%package -n snmp-ext-devel
|
|
||||||
Summary: StarlingX Platform SNMP extension Package - Development files
|
|
||||||
Group: devel
|
|
||||||
Requires: snmp-ext = %{version}-%{release}
|
|
||||||
|
|
||||||
%description -n snmp-ext-devel
|
|
||||||
StarlingX platform SNMP extension provides Wind River enterprise MIBs support
|
|
||||||
and it serves as SNMP based alarm surveillance module for Network Manager
|
|
||||||
System. This package contains symbolic links, header files, and related
|
|
||||||
items necessary for software development.
|
|
||||||
|
|
||||||
%prep
|
|
||||||
%setup
|
|
||||||
|
|
||||||
%build
|
|
||||||
MAJOR=`echo %{version} | awk -F . '{print $1}'`
|
|
||||||
MINOR=`echo %{version} | awk -F . '{print $2}'`
|
|
||||||
make MAJOR=$MAJOR MINOR=$MINOR PATCH=%{tis_patch_ver} %{?_smp_mflags}
|
|
||||||
|
|
||||||
%install
|
|
||||||
MAJOR=`echo %{version} | awk -F . '{print $1}'`
|
|
||||||
MINOR=`echo %{version} | awk -F . '{print $2}'`
|
|
||||||
make DEST_DIR=%{buildroot} \
|
|
||||||
LIB_DIR=%{_libdir} \
|
|
||||||
MAJOR=$MAJOR \
|
|
||||||
MINOR=$MINOR \
|
|
||||||
MIBVER=%{mib_ver} \
|
|
||||||
PATCH=%{tis_patch_ver} install
|
|
||||||
|
|
||||||
%files
|
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%doc LICENSE
|
|
||||||
%{_libdir}/*.so.*
|
|
||||||
%{_datadir}/snmp/mibs/*
|
|
||||||
|
|
||||||
%files -n snmp-ext-devel
|
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%{_libdir}/*.so
|
|
@ -1,9 +0,0 @@
|
|||||||
-------------------------------------------------------------------
|
|
||||||
Mon Jun 10 23:47:39 UTC 2019 - sgw@linux.intel.com
|
|
||||||
|
|
||||||
- spec-cleaner and rpmlint checked
|
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
|
||||||
Thu May 23 21:03:10 UTC 2019 - sgw@bigsur.com
|
|
||||||
|
|
||||||
- Initial Commit
|
|
@ -1 +0,0 @@
|
|||||||
setBadness('script-without-shebang', 2)
|
|
@ -1,67 +0,0 @@
|
|||||||
%define mib_ver 2.0
|
|
||||||
Name: snmp-ext
|
|
||||||
Version: 1.0.0
|
|
||||||
Release: %{tis_patch_ver}%{?_tis_dist}
|
|
||||||
Summary: StarlingX Platform SNMP extension Package
|
|
||||||
License: Apache-2.0
|
|
||||||
Group: Development/Tools/Other
|
|
||||||
URL: https://opendev.org/starlingx/fault
|
|
||||||
Source0: %{name}-%{version}.tar.gz
|
|
||||||
BuildRequires: fm-common-devel
|
|
||||||
BuildRequires: libuuid-devel
|
|
||||||
BuildRequires: net-snmp-devel
|
|
||||||
Requires: fm-common
|
|
||||||
Requires: net-snmp
|
|
||||||
%if 0%{?suse_version}
|
|
||||||
BuildRequires: gcc-c++
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%description
|
|
||||||
StarlingX Cloud platform SNMP extension provides Wind River enterprise MIBs support
|
|
||||||
and it serves as SNMP based alarm surveillance module for Network Manager
|
|
||||||
System.
|
|
||||||
|
|
||||||
%package -n snmp-ext-devel
|
|
||||||
Summary: StarlingX Cloud Platform SNMP extension Package - Development files
|
|
||||||
Group: Development/Tools/Other
|
|
||||||
Requires: snmp-ext = %{version}-%{release}
|
|
||||||
|
|
||||||
%description -n snmp-ext-devel
|
|
||||||
StarlingX Cloud platform SNMP extension provides Wind River enterprise MIBs support
|
|
||||||
and it serves as SNMP based alarm surveillance module for Network Manager
|
|
||||||
System. This package contains symbolic links, header files, and related
|
|
||||||
items necessary for software development.
|
|
||||||
|
|
||||||
%prep
|
|
||||||
%autosetup -n %{name}-%{version}/sources
|
|
||||||
|
|
||||||
%build
|
|
||||||
MAJOR=`echo %{version} | awk -F . '{print $1}'`
|
|
||||||
MINOR=`echo %{version} | awk -F . '{print $2}'`
|
|
||||||
make MAJOR=$MAJOR MINOR=$MINOR PATCH=%{tis_patch_ver} %{?_smp_mflags}
|
|
||||||
|
|
||||||
%install
|
|
||||||
MAJOR=`echo %{version} | awk -F . '{print $1}'`
|
|
||||||
MINOR=`echo %{version} | awk -F . '{print $2}'`
|
|
||||||
make DEST_DIR=%{buildroot} \
|
|
||||||
LIB_DIR=%{_libdir} \
|
|
||||||
MAJOR=$MAJOR \
|
|
||||||
MINOR=$MINOR \
|
|
||||||
MIBVER=%{mib_ver} \
|
|
||||||
PATCH=%{tis_patch_ver} install
|
|
||||||
|
|
||||||
%post -p /sbin/ldconfig
|
|
||||||
|
|
||||||
%postun -p /sbin/ldconfig
|
|
||||||
|
|
||||||
%files
|
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%license LICENSE
|
|
||||||
%{_libdir}/*.so.*
|
|
||||||
%{_datadir}/snmp/mibs/*
|
|
||||||
|
|
||||||
%files -n snmp-ext-devel
|
|
||||||
%defattr(-,root,root,-)
|
|
||||||
%{_libdir}/*.so
|
|
||||||
|
|
||||||
%changelog
|
|
@ -1,202 +0,0 @@
|
|||||||
|
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
@ -1,40 +0,0 @@
|
|||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
#
|
|
||||||
|
|
||||||
MAJOR ?= 1
|
|
||||||
MINOR ?= 0
|
|
||||||
PATCH ?= 0
|
|
||||||
MIBVER ?= 2.0
|
|
||||||
|
|
||||||
DEST_DIR ?= /
|
|
||||||
DATA_DIR ?= /usr/share
|
|
||||||
LIB_DIR ?= /usr/lib64
|
|
||||||
|
|
||||||
SRCS = cgtsActiveAlarms.c cgtsAgentPlugin.c cgtsEventLogs.c
|
|
||||||
|
|
||||||
OBJS = $(SRCS:.c=.o)
|
|
||||||
LDLIBS = -lfmcommon -lnetsnmp -lnetsnmpagent -luuid
|
|
||||||
INCLUDES += -I./
|
|
||||||
CCFLAGS = -fPIC -g -O2 -Wall -Werror -Wformat -Wformat-security
|
|
||||||
LIBCGTSAGENT_SO := libcgtsAgentPlugin.so
|
|
||||||
|
|
||||||
.c.o:
|
|
||||||
$(CXX) $(CCFLAGS) $(INCLUDES) -c $< -o $@
|
|
||||||
|
|
||||||
lib: $(OBJS)
|
|
||||||
$(CXX) $(OBJS) $(LDLIBS) -o $(LIBCGTSAGENT_SO).$(MAJOR).$(MINOR).$(PATCH) -shared
|
|
||||||
ln -sf $(LIBCGTSAGENT_SO).$(MAJOR).$(MINOR).$(PATCH) $(LIBCGTSAGENT_SO).$(MAJOR)
|
|
||||||
ln -sf $(LIBCGTSAGENT_SO).$(MAJOR).$(MINOR).$(PATCH) $(LIBCGTSAGENT_SO)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
@rm -f $(OBJ) *.o *.so.* *.tgz
|
|
||||||
|
|
||||||
install:
|
|
||||||
install -m 755 -d $(DEST_DIR)$(LIB_DIR)
|
|
||||||
install -m 755 $(LIBCGTSAGENT_SO).$(MAJOR).$(MINOR).$(PATCH) $(DEST_DIR)$(LIB_DIR)
|
|
||||||
install -m 755 -d $(DEST_DIR)$(DATA_DIR)/snmp/mibs
|
|
||||||
install -m 644 mibs/wrsAlarmMib.mib.txt $(DEST_DIR)$(DATA_DIR)/snmp/mibs/
|
|
||||||
install -m 644 mibs/wrsEnterpriseReg.mib.txt $(DEST_DIR)$(DATA_DIR)/snmp/mibs/
|
|
||||||
ln -s $(LIBCGTSAGENT_SO).$(MAJOR).$(MINOR).$(PATCH) $(DEST_DIR)$(LIB_DIR)/$(LIBCGTSAGENT_SO).$(MAJOR)
|
|
||||||
ln -s $(LIBCGTSAGENT_SO).$(MAJOR).$(MINOR).$(PATCH) $(DEST_DIR)$(LIB_DIR)/$(LIBCGTSAGENT_SO)
|
|
@ -1,266 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2013-2014 Wind River Systems, Inc.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <net-snmp/net-snmp-config.h>
|
|
||||||
#include <net-snmp/net-snmp-includes.h>
|
|
||||||
#include <net-snmp/net-snmp-features.h>
|
|
||||||
#include <net-snmp/agent/net-snmp-agent-includes.h>
|
|
||||||
#include <fmDbAPI.h>
|
|
||||||
#include "cgtsAgentPlugin.h"
|
|
||||||
|
|
||||||
|
|
||||||
netsnmp_feature_require(date_n_time)
|
|
||||||
|
|
||||||
#define MINLOADFREQ 1 /* min reload frequency in seconds */
|
|
||||||
|
|
||||||
static long Active_Alarm_Count = 0;
|
|
||||||
static struct activealarm *alarm_list;
|
|
||||||
static struct activealarm *alarmaddr, savealarm, *savealarmaddr;
|
|
||||||
static int saveIndex = 0;
|
|
||||||
static char saveUuid[36];
|
|
||||||
static long LastLoad = 0; /* ET in secs at last table load */
|
|
||||||
extern long long_return;
|
|
||||||
|
|
||||||
|
|
||||||
int Active_Alarm_Get_Count(void);
|
|
||||||
|
|
||||||
static void
|
|
||||||
Alarm_Scan_Init()
|
|
||||||
{
|
|
||||||
struct timeval et; /* elapsed time */
|
|
||||||
struct activealarm **activealarm_ptr;
|
|
||||||
SFmAlarmQueryT aquery;
|
|
||||||
size_t i = 0;
|
|
||||||
|
|
||||||
saveIndex = 0;
|
|
||||||
netsnmp_get_monotonic_clock(&et);
|
|
||||||
if ( et.tv_sec < LastLoad + MINLOADFREQ ) {
|
|
||||||
DEBUGMSG(("cgtsAgentPlugin", "Skip reload" ));
|
|
||||||
alarmaddr = alarm_list;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
LastLoad = et.tv_sec;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* free old list:
|
|
||||||
*/
|
|
||||||
while (alarm_list) {
|
|
||||||
struct activealarm *old = alarm_list;
|
|
||||||
alarm_list = alarm_list->next;
|
|
||||||
free(old);
|
|
||||||
}
|
|
||||||
alarmaddr = 0;
|
|
||||||
activealarm_ptr = &alarm_list;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* query active alarm list from DB
|
|
||||||
*/
|
|
||||||
if (fm_snmp_util_get_all_alarms(getAlarmSession(), &aquery) != true){
|
|
||||||
DEBUGMSG(("cgtsAgentPlugin", "get_all_alarms from db failed\n"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
DEBUGMSG(("cgtsAgentPlugin", "get_all_alarms returns %lu alarms\n", aquery.num));
|
|
||||||
for (i = 0; i < aquery.num; ++i){
|
|
||||||
struct activealarm *almnew;
|
|
||||||
/*populate alarm_list*/
|
|
||||||
almnew = (struct activealarm *) calloc(1, sizeof(struct activealarm));
|
|
||||||
if (almnew == NULL)
|
|
||||||
break; /* alloc error */
|
|
||||||
*activealarm_ptr = almnew;
|
|
||||||
activealarm_ptr = &almnew->next;
|
|
||||||
memset(&almnew->alarmdata, 0 , sizeof(almnew->alarmdata));
|
|
||||||
memcpy(&almnew->alarmdata, aquery.alarm + i, sizeof(almnew->alarmdata));
|
|
||||||
}
|
|
||||||
alarmaddr = alarm_list;
|
|
||||||
free(aquery.alarm);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
Alarm_Scan_NextAlarm(int *Index,
|
|
||||||
char *Name,
|
|
||||||
struct activealarm *Aalm)
|
|
||||||
{
|
|
||||||
struct activealarm alm;
|
|
||||||
while (alarmaddr) {
|
|
||||||
alm = *alarmaddr;
|
|
||||||
strlcpy(saveUuid, alm.alarmdata.uuid, sizeof(saveUuid));
|
|
||||||
if (Index)
|
|
||||||
*Index = ++saveIndex;
|
|
||||||
if (Aalm)
|
|
||||||
*Aalm = alm;
|
|
||||||
if (Name)
|
|
||||||
strcpy(Name, saveUuid);
|
|
||||||
|
|
||||||
savealarm = alm;
|
|
||||||
savealarmaddr = alarmaddr;
|
|
||||||
alarmaddr = alm.next;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
Alarm_Scan_By_Index(int Index,
|
|
||||||
char *Name,
|
|
||||||
struct activealarm *Aalm)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
DEBUGMSGTL(("cgtsAgentPlugin","Alarm_Scan_By_Index"));
|
|
||||||
Alarm_Scan_Init();
|
|
||||||
while (Alarm_Scan_NextAlarm(&i, Name, Aalm)) {
|
|
||||||
if (i == Index)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (i != Index)
|
|
||||||
return (-1); /* Error, doesn't exist */
|
|
||||||
return (0); /* DONE */
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
header_alarmEntry(struct variable *vp,
|
|
||||||
oid * name,
|
|
||||||
size_t * length,
|
|
||||||
int exact, size_t * var_len,
|
|
||||||
WriteMethod ** write_method)
|
|
||||||
{
|
|
||||||
#define ALM_ENTRY_NAME_LENGTH 14
|
|
||||||
oid newname[MAX_OID_LEN];
|
|
||||||
register int index;
|
|
||||||
int result, count;
|
|
||||||
|
|
||||||
DEBUGMSGTL(("cgtsAgentPlugin", "header_alarmEntry: "));
|
|
||||||
DEBUGMSGOID(("cgtsAgentPlugin", name, *length));
|
|
||||||
DEBUGMSG(("cgtsAgentPlugin", "exact %d\n", exact));
|
|
||||||
|
|
||||||
memcpy((char *) newname, (char *) vp->name,
|
|
||||||
(int) vp->namelen * sizeof(oid));
|
|
||||||
/*
|
|
||||||
* find "next" alarm
|
|
||||||
*/
|
|
||||||
count = Active_Alarm_Get_Count();
|
|
||||||
DEBUGMSG(("cgtsAgentPlugin", "count %d\n", count));
|
|
||||||
for (index = 1; index <= count; index++) {
|
|
||||||
newname[ALM_ENTRY_NAME_LENGTH] = (oid) index;
|
|
||||||
result =
|
|
||||||
snmp_oid_compare(name, *length, newname,
|
|
||||||
(int) vp->namelen + 1);
|
|
||||||
if ((exact && (result == 0)) || (!exact && (result < 0)))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (index > count) {
|
|
||||||
DEBUGMSGTL(("cgtsAgentPlugin", "... index out of range\n"));
|
|
||||||
return MATCH_FAILED;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy((char *) name, (char *) newname,
|
|
||||||
((int) vp->namelen + 1) * sizeof(oid));
|
|
||||||
*length = vp->namelen + 1;
|
|
||||||
*write_method = 0;
|
|
||||||
*var_len = sizeof(long); /* default to 'long' results */
|
|
||||||
|
|
||||||
DEBUGMSGTL(("cgtsAgentPlugin", "... get ALM data "));
|
|
||||||
DEBUGMSGOID(("cgtsAgentPlugin", name, *length));
|
|
||||||
DEBUGMSG(("cgtsAgentPlugin", "\n"));
|
|
||||||
|
|
||||||
DEBUGMSG(("cgtsAgentPlugin","Return index: %d\n", index));
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int
|
|
||||||
Active_Alarm_Get_Count(void)
|
|
||||||
{
|
|
||||||
static time_t scan_time = 0;
|
|
||||||
time_t time_now = time(NULL);
|
|
||||||
|
|
||||||
if (!Active_Alarm_Count || (time_now > scan_time + 60)) {
|
|
||||||
scan_time = time_now;
|
|
||||||
Alarm_Scan_Init();
|
|
||||||
Active_Alarm_Count = 0;
|
|
||||||
while (Alarm_Scan_NextAlarm(NULL, NULL, NULL) != 0) {
|
|
||||||
Active_Alarm_Count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return (Active_Alarm_Count);
|
|
||||||
}
|
|
||||||
|
|
||||||
u_char *
|
|
||||||
var_alarms(struct variable *vp,
|
|
||||||
oid * name,
|
|
||||||
size_t * length,
|
|
||||||
int exact, size_t * var_len,
|
|
||||||
WriteMethod ** write_method)
|
|
||||||
{
|
|
||||||
static struct activealarm alrm;
|
|
||||||
static char Name[36];
|
|
||||||
char *cp;
|
|
||||||
int index = 0;
|
|
||||||
|
|
||||||
DEBUGMSGTL(("cgtsAgentPlugin", "var_alarms"));
|
|
||||||
index = header_alarmEntry(vp, name, length, exact, var_len, write_method);
|
|
||||||
if (index == MATCH_FAILED)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
Alarm_Scan_By_Index(index, Name, &alrm);
|
|
||||||
|
|
||||||
switch (vp->magic) {
|
|
||||||
case ALARM_INDEX:
|
|
||||||
long_return = index;
|
|
||||||
return (u_char *) & long_return;
|
|
||||||
case ALARM_UUID:
|
|
||||||
cp = Name;
|
|
||||||
*var_len = strlen(cp);
|
|
||||||
return (u_char *) cp;
|
|
||||||
case ALARM_ID:
|
|
||||||
cp = alrm.alarmdata.alarm_id;
|
|
||||||
*var_len = strlen(cp);
|
|
||||||
return (u_char *) cp;
|
|
||||||
case ALARM_INSTANCE_ID:
|
|
||||||
cp = alrm.alarmdata.entity_instance_id;
|
|
||||||
*var_len = strlen(cp);
|
|
||||||
return (u_char *) cp;
|
|
||||||
case ALARM_TIME:{
|
|
||||||
time_t when = alrm.alarmdata.timestamp/SECOND_PER_MICROSECOND;
|
|
||||||
cp = (char *) date_n_time(&when, var_len );
|
|
||||||
return (u_char *) cp;
|
|
||||||
}
|
|
||||||
case ALARM_SEVERITY:
|
|
||||||
long_return = alrm.alarmdata.severity;
|
|
||||||
return (u_char *) & long_return;
|
|
||||||
case ALARM_REASONTEXT:
|
|
||||||
cp = alrm.alarmdata.reason_text;
|
|
||||||
*var_len = strlen(cp);
|
|
||||||
return (u_char *) cp;
|
|
||||||
case ALARM_EVENTTYPE:
|
|
||||||
long_return = alrm.alarmdata.alarm_type;
|
|
||||||
return (u_char *) & long_return;
|
|
||||||
case ALARM_PROBABLECAUSE:
|
|
||||||
long_return = alrm.alarmdata.probable_cause;
|
|
||||||
return (u_char *) & long_return;
|
|
||||||
case ALARM_REPAIRACTION:
|
|
||||||
cp = alrm.alarmdata.proposed_repair_action;
|
|
||||||
*var_len = strlen(cp);
|
|
||||||
return (u_char *) cp;
|
|
||||||
case ALARM_SERVICEAFFECTING:
|
|
||||||
long_return = alrm.alarmdata.service_affecting;
|
|
||||||
return (u_char *) & long_return;
|
|
||||||
case ALARM_SUPPRESSION:
|
|
||||||
long_return = alrm.alarmdata.suppression;
|
|
||||||
return (u_char *) & long_return;
|
|
||||||
default:
|
|
||||||
DEBUGMSGTL(("snmpd", "unknown sub-id %d in var_alarms\n",
|
|
||||||
vp->magic));
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
@ -1,164 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016 Wind River Systems, Inc.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <net-snmp/net-snmp-config.h>
|
|
||||||
#include <net-snmp/net-snmp-includes.h>
|
|
||||||
#include <net-snmp/net-snmp-features.h>
|
|
||||||
#include <net-snmp/agent/net-snmp-agent-includes.h>
|
|
||||||
#include "cgtsAgentPlugin.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define CGTS_ALM_TABLE_NAME "wrsAlarmActiveTable"
|
|
||||||
#define CGTS_EVENT_TABLE_NAME "wrsEventTable"
|
|
||||||
|
|
||||||
#define _UNREGISTER_MIB(var, miboid) \
|
|
||||||
do{ \
|
|
||||||
size_t varsize = sizeof(struct variable2); \
|
|
||||||
struct variable2 *vp; \
|
|
||||||
oid myoid[MAX_OID_LEN]; \
|
|
||||||
size_t length; \
|
|
||||||
int i, result; \
|
|
||||||
int numvars = sizeof(var)/varsize; \
|
|
||||||
int miboidlen = sizeof(miboid)/sizeof(oid); \
|
|
||||||
for (i=0; i < numvars; i++) { \
|
|
||||||
vp = (struct variable2 *)((char *)var + varsize * i); \
|
|
||||||
memcpy(myoid, miboid, miboidlen * sizeof(oid)); \
|
|
||||||
memcpy(myoid+miboidlen, vp->name, vp->namelen * sizeof(oid)); \
|
|
||||||
length = miboidlen + vp->namelen; \
|
|
||||||
result = unregister_mib(myoid, length); \
|
|
||||||
DEBUGMSGOID(("cgtsAgentPlugin", myoid, length)); \
|
|
||||||
if (result != MIB_UNREGISTERED_OK) { \
|
|
||||||
snmp_log(LOG_ERR, "%s: Unregistering failed:%d\n", \
|
|
||||||
__FUNCTION__, result); \
|
|
||||||
} else { \
|
|
||||||
DEBUGMSGTL(("cgtsAgentPlugin", "Unregistering succeeded\n")); \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
}while(0);
|
|
||||||
|
|
||||||
|
|
||||||
static TFmAlarmSessionT alm_handle;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* * the OID we want to register our integer at. This should be the
|
|
||||||
* * OID node for the entire table. In our case this is the
|
|
||||||
* * wrsAlarmActiveTable oid definition
|
|
||||||
*/
|
|
||||||
oid cgtsAlarmTable_oid[] =
|
|
||||||
{ 1, 3, 6, 1, 4, 1, 731, 1, 1, 1, 1, 1};
|
|
||||||
|
|
||||||
oid cgtsEventLogTable_oid[] =
|
|
||||||
{ 1, 3, 6, 1, 4, 1, 731, 1, 1, 1, 1, 4};
|
|
||||||
|
|
||||||
|
|
||||||
struct variable2 alarm_variables[] = {
|
|
||||||
{ALARM_INDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_alarms, 2, {1, 1}},
|
|
||||||
{ALARM_UUID, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_alarms, 2, {1, 2}},
|
|
||||||
{ALARM_ID, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_alarms, 2, {1, 3}},
|
|
||||||
{ALARM_INSTANCE_ID, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_alarms, 2, {1, 4}},
|
|
||||||
{ALARM_TIME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_alarms, 2, {1, 5}},
|
|
||||||
{ALARM_SEVERITY, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_alarms, 2, {1, 6}},
|
|
||||||
{ALARM_REASONTEXT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_alarms, 2, {1, 7}},
|
|
||||||
{ALARM_EVENTTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_alarms, 2, {1, 8}},
|
|
||||||
{ALARM_PROBABLECAUSE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_alarms, 2, {1, 9}},
|
|
||||||
{ALARM_REPAIRACTION , ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_alarms, 2, {1, 10}},
|
|
||||||
{ALARM_SERVICEAFFECTING, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_alarms, 2, {1, 11}},
|
|
||||||
{ALARM_SUPPRESSION, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_alarms, 2, {1, 12}},
|
|
||||||
};
|
|
||||||
|
|
||||||
struct variable2 event_log_variables[] = {
|
|
||||||
{EVENT_INDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_events, 2, {1, 1}},
|
|
||||||
{EVENT_UUID, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_events, 2, {1, 2}},
|
|
||||||
{EVENT_EVENT_ID, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_events, 2, {1, 3}},
|
|
||||||
{EVENT_STATE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_events, 2, {1, 4}},
|
|
||||||
{EVENT_INSTANCE_ID, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_events, 2, {1, 5}},
|
|
||||||
{EVENT_TIME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_events, 2, {1, 6}},
|
|
||||||
{EVENT_SEVERITY, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_events, 2, {1, 7}},
|
|
||||||
{EVENT_REASONTEXT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_events, 2, {1, 8}},
|
|
||||||
{EVENT_EVENTTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_events, 2, {1, 9}},
|
|
||||||
{EVENT_PROBABLECAUSE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_events, 2, {1, 10}},
|
|
||||||
{EVENT_REPAIRACTION , ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_events, 2, {1, 11}},
|
|
||||||
{EVENT_SERVICEAFFECTING, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_events, 2, {1, 12}},
|
|
||||||
{EVENT_SUPPRESSION, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
|
|
||||||
var_events, 2, {1, 13}},
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
TFmAlarmSessionT getAlarmSession()
|
|
||||||
{
|
|
||||||
return alm_handle;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* our initialization routine, automatically called by the agent
|
|
||||||
* (to get called, the function name must match init_FILENAME())
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
init_cgtsAgentPlugin(void)
|
|
||||||
{
|
|
||||||
snmp_log(LOG_INFO,"init_cgtsAgentPlugin start");
|
|
||||||
snmp_log(LOG_INFO,"MIB registration: %s",CGTS_ALM_TABLE_NAME);
|
|
||||||
REGISTER_MIB(CGTS_ALM_TABLE_NAME, alarm_variables,
|
|
||||||
variable2, cgtsAlarmTable_oid);
|
|
||||||
|
|
||||||
snmp_log(LOG_INFO,"MIB registration: %s",CGTS_EVENT_TABLE_NAME);
|
|
||||||
REGISTER_MIB(CGTS_EVENT_TABLE_NAME, event_log_variables,
|
|
||||||
variable2, cgtsEventLogTable_oid);
|
|
||||||
|
|
||||||
snmp_log(LOG_INFO,"get alarm database handler");
|
|
||||||
if (fm_snmp_util_create_session(&alm_handle, NULL) != true){
|
|
||||||
snmp_log(LOG_ERR,"failed to get alarm database handler");
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* a debugging statement. Run the agent with -DcgtsAgentPlugin to see
|
|
||||||
* the output of this debugging statement.
|
|
||||||
*/
|
|
||||||
DEBUGMSGTL(("cgtsAgentPlugin", "Done initializing.\n"));
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
deinit_cgtsAgentPlugin(void)
|
|
||||||
{
|
|
||||||
snmp_log(LOG_INFO,"deinit_cgtsAgentPlugin start");
|
|
||||||
_UNREGISTER_MIB(alarm_variables, cgtsAlarmTable_oid);
|
|
||||||
_UNREGISTER_MIB(event_log_variables, cgtsEventLogTable_oid);
|
|
||||||
fm_snmp_util_destroy_session(alm_handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,69 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2013-2014 Wind River Systems, Inc.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef CGTSAGENTPLUGIN_H
|
|
||||||
#define CGTSAGENTPLUGIN_H
|
|
||||||
|
|
||||||
#include <fmAPI.h>
|
|
||||||
#include <fmDbAPI.h>
|
|
||||||
#include <net-snmp/agent/snmp_vars.h>
|
|
||||||
|
|
||||||
extern FindVarMethod var_alarms;
|
|
||||||
|
|
||||||
extern FindVarMethod var_events;
|
|
||||||
|
|
||||||
/* Active alarm Table */
|
|
||||||
#define ALARM_INDEX 1
|
|
||||||
#define ALARM_UUID 2
|
|
||||||
#define ALARM_ID 3
|
|
||||||
#define ALARM_INSTANCE_ID 4
|
|
||||||
#define ALARM_TIME 5
|
|
||||||
#define ALARM_SEVERITY 6
|
|
||||||
#define ALARM_REASONTEXT 7
|
|
||||||
#define ALARM_EVENTTYPE 8
|
|
||||||
#define ALARM_PROBABLECAUSE 9
|
|
||||||
#define ALARM_REPAIRACTION 10
|
|
||||||
#define ALARM_SERVICEAFFECTING 11
|
|
||||||
#define ALARM_SUPPRESSION 12
|
|
||||||
|
|
||||||
/* Event Log Table */
|
|
||||||
#define EVENT_INDEX 1
|
|
||||||
#define EVENT_UUID 2
|
|
||||||
#define EVENT_EVENT_ID 3
|
|
||||||
#define EVENT_STATE 4
|
|
||||||
#define EVENT_INSTANCE_ID 5
|
|
||||||
#define EVENT_TIME 6
|
|
||||||
#define EVENT_SEVERITY 7
|
|
||||||
#define EVENT_REASONTEXT 8
|
|
||||||
#define EVENT_EVENTTYPE 9
|
|
||||||
#define EVENT_PROBABLECAUSE 10
|
|
||||||
#define EVENT_REPAIRACTION 11
|
|
||||||
#define EVENT_SERVICEAFFECTING 12
|
|
||||||
#define EVENT_SUPPRESSION 13
|
|
||||||
|
|
||||||
|
|
||||||
#define SECOND_PER_MICROSECOND 1000000
|
|
||||||
|
|
||||||
struct activealarm {
|
|
||||||
SFmAlarmDataT alarmdata;
|
|
||||||
struct activealarm *next;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* function declarations
|
|
||||||
*/
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
void init_cgtsAgentPlugin(void);
|
|
||||||
void deinit_cgtsAgentPlugin(void);
|
|
||||||
TFmAlarmSessionT getAlarmSession();
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* CGTSAGENTPLUGIN_H */
|
|
@ -1,268 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2013-2016 Wind River Systems, Inc.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <net-snmp/net-snmp-config.h>
|
|
||||||
#include <net-snmp/net-snmp-includes.h>
|
|
||||||
#include <net-snmp/net-snmp-features.h>
|
|
||||||
#include <net-snmp/agent/net-snmp-agent-includes.h>
|
|
||||||
#include <fmDbAPI.h>
|
|
||||||
#include "cgtsAgentPlugin.h"
|
|
||||||
|
|
||||||
|
|
||||||
netsnmp_feature_require(date_n_time)
|
|
||||||
|
|
||||||
#define MINLOADFREQ 2 /* min reload frequency in seconds */
|
|
||||||
|
|
||||||
static long Event_Log_Count = 0;
|
|
||||||
static struct activealarm *alarm_list;
|
|
||||||
static struct activealarm *alarmaddr, savealarm, *savealarmaddr;
|
|
||||||
static int saveIndex = 0;
|
|
||||||
static char saveUuid[36];
|
|
||||||
static long LastLoad = 0; /* ET in secs at last table load */
|
|
||||||
extern long long_return;
|
|
||||||
|
|
||||||
|
|
||||||
int Event_Log_Get_Count(void);
|
|
||||||
|
|
||||||
static void
|
|
||||||
Event_Log_Scan_Init()
|
|
||||||
{
|
|
||||||
struct timeval et; /* elapsed time */
|
|
||||||
struct activealarm **activealarm_ptr;
|
|
||||||
SFmAlarmQueryT aquery;
|
|
||||||
size_t i = 0;
|
|
||||||
|
|
||||||
saveIndex = 0;
|
|
||||||
netsnmp_get_monotonic_clock(&et);
|
|
||||||
if ( et.tv_sec < LastLoad + MINLOADFREQ ) {
|
|
||||||
DEBUGMSG(("cgtsAgentPlugin", "Skip reload" ));
|
|
||||||
alarmaddr = alarm_list;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
LastLoad = et.tv_sec;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* free old list:
|
|
||||||
*/
|
|
||||||
while (alarm_list) {
|
|
||||||
struct activealarm *old = alarm_list;
|
|
||||||
alarm_list = alarm_list->next;
|
|
||||||
free(old);
|
|
||||||
}
|
|
||||||
alarmaddr = 0;
|
|
||||||
activealarm_ptr = &alarm_list;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* query event log list from DB
|
|
||||||
*/
|
|
||||||
if (fm_snmp_util_get_all_event_logs(getAlarmSession(), &aquery) != true){
|
|
||||||
DEBUGMSG(("cgtsAgentPlugin", "get_all_event_logs from db failed\n"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
DEBUGMSG(("cgtsAgentPlugin", "get_all_event_logs returns %lu logs\n", aquery.num));
|
|
||||||
for (i = 0; i < aquery.num; ++i){
|
|
||||||
struct activealarm *almnew;
|
|
||||||
/*populate alarm_list*/
|
|
||||||
almnew = (struct activealarm *) calloc(1, sizeof(struct activealarm));
|
|
||||||
if (almnew == NULL)
|
|
||||||
break; /* alloc error */
|
|
||||||
*activealarm_ptr = almnew;
|
|
||||||
activealarm_ptr = &almnew->next;
|
|
||||||
memset(&almnew->alarmdata, 0 , sizeof(almnew->alarmdata));
|
|
||||||
memcpy(&almnew->alarmdata, aquery.alarm + i, sizeof(almnew->alarmdata));
|
|
||||||
}
|
|
||||||
alarmaddr = alarm_list;
|
|
||||||
free(aquery.alarm);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
Event_Log_Scan_NextLog(int *Index,
|
|
||||||
char *Name,
|
|
||||||
struct activealarm *Aalm)
|
|
||||||
{
|
|
||||||
struct activealarm alm;
|
|
||||||
while (alarmaddr) {
|
|
||||||
alm = *alarmaddr;
|
|
||||||
strlcpy(saveUuid, alm.alarmdata.uuid, sizeof(saveUuid));
|
|
||||||
if (Index)
|
|
||||||
*Index = ++saveIndex;
|
|
||||||
if (Aalm)
|
|
||||||
*Aalm = alm;
|
|
||||||
if (Name)
|
|
||||||
strcpy(Name, saveUuid);
|
|
||||||
|
|
||||||
savealarm = alm;
|
|
||||||
savealarmaddr = alarmaddr;
|
|
||||||
alarmaddr = alm.next;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
Event_Log_Scan_By_Index(int Index,
|
|
||||||
char *Name,
|
|
||||||
struct activealarm *Aalm)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
DEBUGMSGTL(("cgtsAgentPlugin","Event_Log_Scan_By_Index"));
|
|
||||||
Event_Log_Scan_Init();
|
|
||||||
while (Event_Log_Scan_NextLog(&i, Name, Aalm)) {
|
|
||||||
if (i == Index)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (i != Index)
|
|
||||||
return (-1); /* Error, doesn't exist */
|
|
||||||
return (0); /* DONE */
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
header_eventLogEntry(struct variable *vp,
|
|
||||||
oid * name,
|
|
||||||
size_t * length,
|
|
||||||
int exact, size_t * var_len,
|
|
||||||
WriteMethod ** write_method)
|
|
||||||
{
|
|
||||||
#define ALM_ENTRY_NAME_LENGTH 14
|
|
||||||
oid newname[MAX_OID_LEN];
|
|
||||||
register int index;
|
|
||||||
int result, count;
|
|
||||||
|
|
||||||
DEBUGMSGTL(("cgtsAgentPlugin", "header_eventLogEntry: "));
|
|
||||||
DEBUGMSGOID(("cgtsAgentPlugin", name, *length));
|
|
||||||
DEBUGMSG(("cgtsAgentPlugin", "exact %d\n", exact));
|
|
||||||
|
|
||||||
memcpy((char *) newname, (char *) vp->name,
|
|
||||||
(int) vp->namelen * sizeof(oid));
|
|
||||||
/*
|
|
||||||
* find "next" log
|
|
||||||
*/
|
|
||||||
count = Event_Log_Get_Count();
|
|
||||||
DEBUGMSG(("cgtsAgentPlugin", "count %d\n", count));
|
|
||||||
for (index = 1; index <= count; index++) {
|
|
||||||
newname[ALM_ENTRY_NAME_LENGTH] = (oid) index;
|
|
||||||
result =
|
|
||||||
snmp_oid_compare(name, *length, newname,
|
|
||||||
(int) vp->namelen + 1);
|
|
||||||
if ((exact && (result == 0)) || (!exact && (result < 0)))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (index > count) {
|
|
||||||
DEBUGMSGTL(("cgtsAgentPlugin", "... index out of range\n"));
|
|
||||||
return MATCH_FAILED;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy((char *) name, (char *) newname,
|
|
||||||
((int) vp->namelen + 1) * sizeof(oid));
|
|
||||||
*length = vp->namelen + 1;
|
|
||||||
*write_method = 0;
|
|
||||||
*var_len = sizeof(long); /* default to 'long' results */
|
|
||||||
|
|
||||||
DEBUGMSGTL(("cgtsAgentPlugin", "... get ALM data "));
|
|
||||||
DEBUGMSGOID(("cgtsAgentPlugin", name, *length));
|
|
||||||
DEBUGMSG(("cgtsAgentPlugin", "\n"));
|
|
||||||
|
|
||||||
DEBUGMSG(("cgtsAgentPlugin","Return index: %d\n", index));
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
Event_Log_Get_Count(void)
|
|
||||||
{
|
|
||||||
static time_t scan_time = 0;
|
|
||||||
time_t time_now = time(NULL);
|
|
||||||
|
|
||||||
if (!Event_Log_Count || (time_now > scan_time + 60)) {
|
|
||||||
scan_time = time_now;
|
|
||||||
Event_Log_Scan_Init();
|
|
||||||
Event_Log_Count = 0;
|
|
||||||
while (Event_Log_Scan_NextLog(NULL, NULL, NULL) != 0) {
|
|
||||||
Event_Log_Count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return (Event_Log_Count);
|
|
||||||
}
|
|
||||||
|
|
||||||
u_char *
|
|
||||||
var_events(struct variable *vp,
|
|
||||||
oid * name,
|
|
||||||
size_t * length,
|
|
||||||
int exact, size_t * var_len,
|
|
||||||
WriteMethod ** write_method)
|
|
||||||
{
|
|
||||||
static struct activealarm alrm;
|
|
||||||
static char Name[36];
|
|
||||||
char *cp;
|
|
||||||
int index = 0;
|
|
||||||
|
|
||||||
DEBUGMSGTL(("cgtsAgentPlugin", "var_events"));
|
|
||||||
index = header_eventLogEntry(vp, name, length, exact, var_len, write_method);
|
|
||||||
if (index == MATCH_FAILED)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
Event_Log_Scan_By_Index(index, Name, &alrm);
|
|
||||||
|
|
||||||
switch (vp->magic) {
|
|
||||||
case EVENT_INDEX:
|
|
||||||
long_return = index;
|
|
||||||
return (u_char *) & long_return;
|
|
||||||
case EVENT_UUID:
|
|
||||||
cp = Name;
|
|
||||||
*var_len = strlen(cp);
|
|
||||||
return (u_char *) cp;
|
|
||||||
case EVENT_EVENT_ID:
|
|
||||||
cp = alrm.alarmdata.alarm_id;
|
|
||||||
*var_len = strlen(cp);
|
|
||||||
return (u_char *) cp;
|
|
||||||
case EVENT_STATE:
|
|
||||||
long_return = alrm.alarmdata.alarm_state;
|
|
||||||
return (u_char *) & long_return;
|
|
||||||
case EVENT_INSTANCE_ID:
|
|
||||||
cp = alrm.alarmdata.entity_instance_id;
|
|
||||||
*var_len = strlen(cp);
|
|
||||||
return (u_char *) cp;
|
|
||||||
case EVENT_TIME:{
|
|
||||||
time_t when = alrm.alarmdata.timestamp/SECOND_PER_MICROSECOND;
|
|
||||||
cp = (char *) date_n_time(&when, var_len );
|
|
||||||
return (u_char *) cp;
|
|
||||||
}
|
|
||||||
case EVENT_SEVERITY:
|
|
||||||
long_return = alrm.alarmdata.severity;
|
|
||||||
return (u_char *) & long_return;
|
|
||||||
case EVENT_REASONTEXT:
|
|
||||||
cp = alrm.alarmdata.reason_text;
|
|
||||||
*var_len = strlen(cp);
|
|
||||||
return (u_char *) cp;
|
|
||||||
case EVENT_EVENTTYPE:
|
|
||||||
long_return = alrm.alarmdata.alarm_type;
|
|
||||||
return (u_char *) & long_return;
|
|
||||||
case EVENT_PROBABLECAUSE:
|
|
||||||
long_return = alrm.alarmdata.probable_cause;
|
|
||||||
return (u_char *) & long_return;
|
|
||||||
case EVENT_REPAIRACTION:
|
|
||||||
cp = alrm.alarmdata.proposed_repair_action;
|
|
||||||
*var_len = strlen(cp);
|
|
||||||
return (u_char *) cp;
|
|
||||||
case EVENT_SERVICEAFFECTING:
|
|
||||||
long_return = alrm.alarmdata.service_affecting;
|
|
||||||
return (u_char *) & long_return;
|
|
||||||
case EVENT_SUPPRESSION:
|
|
||||||
long_return = alrm.alarmdata.suppression;
|
|
||||||
return (u_char *) & long_return;
|
|
||||||
default:
|
|
||||||
DEBUGMSGTL(("snmpd", "unknown sub-id %d in var_events\n",
|
|
||||||
vp->magic));
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
@ -1,818 +0,0 @@
|
|||||||
WRS-ALARM-MIB
|
|
||||||
|
|
||||||
DEFINITIONS ::= BEGIN
|
|
||||||
|
|
||||||
IMPORTS
|
|
||||||
wrsAlarms, WrsUUID, WrsBoolean FROM WRS-ENTERPRISE-REG-MIB
|
|
||||||
|
|
||||||
NOTIFICATION-GROUP, OBJECT-GROUP, MODULE-COMPLIANCE
|
|
||||||
FROM SNMPv2-CONF
|
|
||||||
|
|
||||||
DateAndTime, DisplayString, TEXTUAL-CONVENTION
|
|
||||||
FROM SNMPv2-TC
|
|
||||||
|
|
||||||
MODULE-IDENTITY, OBJECT-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Unsigned32
|
|
||||||
FROM SNMPv2-SMI;
|
|
||||||
|
|
||||||
|
|
||||||
wrsAlarmMIB MODULE-IDENTITY
|
|
||||||
LAST-UPDATED "201703310000Z"
|
|
||||||
ORGANIZATION "Wind River Systems, Inc."
|
|
||||||
CONTACT-INFO "Wind River Systems, Inc.
|
|
||||||
500 Wind River Way
|
|
||||||
Alameda, CA 94501, USA
|
|
||||||
Contact : Wind River Systems Support
|
|
||||||
E-mail: support@windriver.com
|
|
||||||
Phone : 510.748.4100"
|
|
||||||
DESCRIPTION "This module contains objects of the
|
|
||||||
Titanium Cloud Alarm MIB,
|
|
||||||
including notifications."
|
|
||||||
|
|
||||||
-- Revision history
|
|
||||||
REVISION "201703310000Z"
|
|
||||||
DESCRIPTION "Titanium Cloud Release 4 version, with new Event table and removal of deprecated customer and alarm history tables."
|
|
||||||
::= { wrsAlarms 1 }
|
|
||||||
|
|
||||||
wrsAlarmObjects OBJECT IDENTIFIER ::= { wrsAlarmMIB 1 }
|
|
||||||
wrsAlarmConformance OBJECT IDENTIFIER ::= { wrsAlarmMIB 2 }
|
|
||||||
wrsAlarmCompliances OBJECT IDENTIFIER ::= { wrsAlarmConformance 1 }
|
|
||||||
wrsAlarmGroups OBJECT IDENTIFIER ::= { wrsAlarmConformance 2 }
|
|
||||||
|
|
||||||
|
|
||||||
-- Textual Conventions
|
|
||||||
|
|
||||||
WrsAlarmSeverity ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "The severity of the alarm."
|
|
||||||
SYNTAX INTEGER
|
|
||||||
{
|
|
||||||
not-applicable (0),
|
|
||||||
warning (1),
|
|
||||||
minor (2),
|
|
||||||
major (3),
|
|
||||||
critical (4)
|
|
||||||
}
|
|
||||||
|
|
||||||
WrsAlarmState ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "The state of the alarm."
|
|
||||||
SYNTAX INTEGER
|
|
||||||
{
|
|
||||||
clear (0),
|
|
||||||
set (1),
|
|
||||||
log (3)
|
|
||||||
}
|
|
||||||
|
|
||||||
WrsAlarmId ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "An ID identifying the particular Alarm condition.
|
|
||||||
Typically used as an index for looking up Alarm details
|
|
||||||
in a System's Alarm Document.
|
|
||||||
|
|
||||||
This will be a structured ID, in order to allow grouping of
|
|
||||||
Alarms into general categories and allow specific Alarms to
|
|
||||||
be independently added and numbered within the group.
|
|
||||||
|
|
||||||
e.g. <Alarm Group ID>.<Alarm Event ID>
|
|
||||||
where <Alarm Group ID> = 000 - 999
|
|
||||||
<Alarm Event ID> = 000 - 999
|
|
||||||
|
|
||||||
NOTE: the { alarm-id, entity-instance-id } uniquely identifies an ACTIVE Alarm.
|
|
||||||
e.g.
|
|
||||||
- an alarm is cleared based on the matching { alarm-id, entity-instance-id },
|
|
||||||
- consecutive sets of an alarm with matching { alarm-id, entity-instance-id }
|
|
||||||
updates the fields of the single ACTIVE Alarm.
|
|
||||||
E.g. updates severity for example. "
|
|
||||||
SYNTAX OCTET STRING (SIZE (0..7))
|
|
||||||
|
|
||||||
WrsAlarmEntityInstanceId ::= TEXTUAL-CONVENTION
|
|
||||||
DISPLAY-HINT "255a"
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "This is a textual description of the resource under alarm.
|
|
||||||
|
|
||||||
A '.' separated list of sub-entity-type=instance-value pairs,
|
|
||||||
representing the containment structure of the overall entity
|
|
||||||
instance.
|
|
||||||
|
|
||||||
Can be larger than 256 bytes.
|
|
||||||
|
|
||||||
Note that this containment structure will be used for
|
|
||||||
processing hierarchical clears.
|
|
||||||
|
|
||||||
e.g
|
|
||||||
system=ironpass1-4
|
|
||||||
system=ironpass1-4 . host=compute-0
|
|
||||||
system=ironpass1-4 . host=compute-0 . port=eth0
|
|
||||||
system=ironpass1-4 . host=compute-0 . disk=/dev/sda
|
|
||||||
|
|
||||||
system=ironpass1-4 . instance=vyatta_rtr_0
|
|
||||||
system=ironpass1-4 . stack=vyatta_scaling_rtrs
|
|
||||||
|
|
||||||
NOTE: the { alarm-id, entity-instance-id } uniquely identifies an ACTIVE Alarm.
|
|
||||||
e.g.
|
|
||||||
- an alarm is cleared based on the matching { alarm-id, entity-instance-id },
|
|
||||||
- consecutive sets of an alarm with matching { alarm-id, entity-instance-id }
|
|
||||||
updates the fields of the single ACTIVE Alarm.
|
|
||||||
E.g. updates severity for example."
|
|
||||||
SYNTAX OCTET STRING
|
|
||||||
|
|
||||||
WrsAlarmText ::= TEXTUAL-CONVENTION
|
|
||||||
DISPLAY-HINT "255a"
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "Variable length string to encapsulate alarm or message
|
|
||||||
information from the entity raising the trap.
|
|
||||||
Can be larger than 256 bytes."
|
|
||||||
SYNTAX OCTET STRING
|
|
||||||
|
|
||||||
WrsAlarmProbableCause ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"ITU-T probable cause values. Duplicate values defined in
|
|
||||||
X.733 are appended with X733 to ensure syntactic uniqueness.
|
|
||||||
Probable cause value 0 is reserved for special purposes.
|
|
||||||
|
|
||||||
The Internet Assigned Number Authority (IANA) is responsible
|
|
||||||
for the assignment of the enumerations in this TC.
|
|
||||||
IANAItuProbableCause value of 0 is reserved for special
|
|
||||||
purposes and MUST NOT be assigned.
|
|
||||||
|
|
||||||
Values of IANAItuProbableCause in the range 1 to 1023 are
|
|
||||||
reserved for causes that correspond to ITU-T probable cause.
|
|
||||||
|
|
||||||
All other requests for new causes will be handled on a
|
|
||||||
first-come, first served basis and will be assigned
|
|
||||||
enumeration values starting with 1025.
|
|
||||||
|
|
||||||
Request should come in the form of well-formed
|
|
||||||
SMI [RFC2578] for enumeration names that are unique and
|
|
||||||
sufficiently descriptive.
|
|
||||||
|
|
||||||
While some effort will be taken to ensure that new probable
|
|
||||||
causes do not conceptually duplicate existing probable
|
|
||||||
causes it is acknowledged that the existence of conceptual
|
|
||||||
duplicates in the starting probable cause list is an known
|
|
||||||
industry reality.
|
|
||||||
|
|
||||||
To aid IANA in the administration of probable cause names
|
|
||||||
and values, the OPS Area Director will appoint one or more
|
|
||||||
experts to help review requests.
|
|
||||||
|
|
||||||
See http://www.iana.org"
|
|
||||||
REFERENCE
|
|
||||||
"ITU Recommendation M.3100, 'Generic Network Information
|
|
||||||
Model', 1995
|
|
||||||
ITU Recommendation X.733, 'Information Technology - Open
|
|
||||||
Systems Interconnection - System Management: Alarm
|
|
||||||
Reporting Function', 1992
|
|
||||||
ITU Recommendation X.736, 'Information Technology - Open
|
|
||||||
Systems Interconnection - System Management: Security
|
|
||||||
Alarm Reporting Function', 1992"
|
|
||||||
SYNTAX INTEGER
|
|
||||||
{
|
|
||||||
not-applicable (0),
|
|
||||||
-- The following probable causes were defined in M.3100
|
|
||||||
adaptor-error (1),
|
|
||||||
application-subsystem-failure (2),
|
|
||||||
bandwidth-reduced (3),
|
|
||||||
call-establishment-error (4),
|
|
||||||
communication-protocol-error (5),
|
|
||||||
communication-subsystem-failure (6),
|
|
||||||
configuration-or-customization-error (7),
|
|
||||||
congestion (8),
|
|
||||||
corrupt-data (9),
|
|
||||||
cpu-cycles-limit-exceeded (10),
|
|
||||||
dataset-or-modem-error (11),
|
|
||||||
degraded-signal (12),
|
|
||||||
dte-dce-interface-error (13),
|
|
||||||
enclosure-door-open (14),
|
|
||||||
equipment-malfunction (15),
|
|
||||||
excessive-vibration (16),
|
|
||||||
file-error (17),
|
|
||||||
fire-detected (18),
|
|
||||||
flood-detected (19),
|
|
||||||
framing-error (20),
|
|
||||||
heating-ventilation-cooling-system-problem (21),
|
|
||||||
humidity-unacceptable (22),
|
|
||||||
io-device-error (23),
|
|
||||||
input-device-error (24),
|
|
||||||
lan-error (25),
|
|
||||||
leak-detected (26),
|
|
||||||
local-node-transmission-error (27),
|
|
||||||
loss-of-frame (28),
|
|
||||||
loss-of-signal (29),
|
|
||||||
material-supply-exhausted (30),
|
|
||||||
multiplexer-problem (31),
|
|
||||||
out-of-memory (32),
|
|
||||||
output-device-error (33),
|
|
||||||
performance-degraded (34),
|
|
||||||
power-problem (35),
|
|
||||||
processor-problem (36),
|
|
||||||
pump-failure (37),
|
|
||||||
queue-size-exceeded (38),
|
|
||||||
receive-failure (39),
|
|
||||||
receiver-failure (40),
|
|
||||||
remote-node-transmission-error (41),
|
|
||||||
resource-at-or-nearing-capacity (42),
|
|
||||||
response-time-excessive (43),
|
|
||||||
retransmission-rate-excessive (44),
|
|
||||||
software-error (45),
|
|
||||||
software-program-abnormally-terminated (46),
|
|
||||||
software-program-error (47),
|
|
||||||
storage-capacity-problem (48),
|
|
||||||
temperature-unacceptable (49),
|
|
||||||
threshold-crossed (50),
|
|
||||||
timing-problem (51),
|
|
||||||
toxic-leak-detected (52),
|
|
||||||
transmit-failure (53),
|
|
||||||
transmitter-failure (54),
|
|
||||||
underlying-resource-unavailable (55),
|
|
||||||
version-mismatch (56),
|
|
||||||
duplicate-information (57),
|
|
||||||
information-missing (58),
|
|
||||||
information-modification-detected (59),
|
|
||||||
information-out-of-sequence (60),
|
|
||||||
unexpected-information (61),
|
|
||||||
denial-of-service (62),
|
|
||||||
out-of-service (63),
|
|
||||||
procedural-error (64),
|
|
||||||
unspecified-reason (65),
|
|
||||||
cable-tamper (66),
|
|
||||||
intrusion-detection (67),
|
|
||||||
authentication-failure (68),
|
|
||||||
breach-of-confidentiality (69),
|
|
||||||
non-repudiation-failure (70),
|
|
||||||
unauthorized-access-attempt (71),
|
|
||||||
delayed-information (72),
|
|
||||||
key-expired (73),
|
|
||||||
out-of-hours-activity (74)
|
|
||||||
}
|
|
||||||
|
|
||||||
WrsAlarmEventType ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION
|
|
||||||
"The ITU event Type values.
|
|
||||||
|
|
||||||
The Internet Assigned Number Authority (IANA) is
|
|
||||||
responsible for the assignment of the enumerations
|
|
||||||
in this TC.
|
|
||||||
|
|
||||||
Request should come in the form of well-formed
|
|
||||||
SMI [RFC2578] for enumeration names that are unique
|
|
||||||
and sufficiently descriptive.
|
|
||||||
|
|
||||||
See http://www.iana.org "
|
|
||||||
REFERENCE
|
|
||||||
"ITU Recommendation X.736, 'Information Technology - Open
|
|
||||||
Systems Interconnection - System Management: Security
|
|
||||||
Alarm Reporting Function', 1992"
|
|
||||||
SYNTAX INTEGER
|
|
||||||
{
|
|
||||||
other (0),
|
|
||||||
communicationsAlarm (1),
|
|
||||||
qualityOfServiceAlarm (2),
|
|
||||||
processingErrorAlarm (3),
|
|
||||||
equipmentAlarm (4),
|
|
||||||
environmentalAlarm (5),
|
|
||||||
integrityViolation (6),
|
|
||||||
operationalViolation (7),
|
|
||||||
physicalViolation (8),
|
|
||||||
securityServiceOrMechanismViolation (9),
|
|
||||||
timeDomainViolation (10)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
-- Wind River Systems Active Alarm Table
|
|
||||||
|
|
||||||
wrsAlarmActiveTable OBJECT-TYPE
|
|
||||||
SYNTAX SEQUENCE OF WrsAlarmActiveEntry
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "This table contains information about active alarms."
|
|
||||||
::= { wrsAlarmObjects 1 }
|
|
||||||
|
|
||||||
wrsAlarmActiveEntry OBJECT-TYPE
|
|
||||||
SYNTAX WrsAlarmActiveEntry
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "An active alarm entry"
|
|
||||||
INDEX { wrsAlarmActiveIndex }
|
|
||||||
::= { wrsAlarmActiveTable 1 }
|
|
||||||
|
|
||||||
WrsAlarmActiveEntry ::= SEQUENCE {
|
|
||||||
wrsAlarmActiveIndex Unsigned32,
|
|
||||||
wrsAlarmActiveUuid DisplayString,
|
|
||||||
wrsAlarmActiveAlarmId WrsAlarmId,
|
|
||||||
wrsAlarmActiveEntityInstanceId WrsAlarmEntityInstanceId,
|
|
||||||
wrsAlarmActiveDateAndTime DateAndTime,
|
|
||||||
wrsAlarmActiveAlarmSeverity WrsAlarmSeverity,
|
|
||||||
wrsAlarmActiveReasonText WrsAlarmText,
|
|
||||||
wrsAlarmActiveEventType WrsAlarmEventType,
|
|
||||||
wrsAlarmActiveProbableCause WrsAlarmProbableCause,
|
|
||||||
wrsAlarmActiveProposedRepairAction WrsAlarmText,
|
|
||||||
wrsAlarmActiveServiceAffecting WrsBoolean,
|
|
||||||
wrsAlarmActiveSuppressionAllowed WrsBoolean
|
|
||||||
}
|
|
||||||
|
|
||||||
wrsAlarmActiveIndex OBJECT-TYPE
|
|
||||||
SYNTAX Unsigned32 (1..4294967295)
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "The index of the Active Alarm in the Active Alarm Table."
|
|
||||||
::= { wrsAlarmActiveEntry 1 }
|
|
||||||
|
|
||||||
wrsAlarmActiveUuid OBJECT-TYPE
|
|
||||||
SYNTAX DisplayString
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "An ID identifying the active alarm instance in the Active Alarm Table."
|
|
||||||
::= { wrsAlarmActiveEntry 2 }
|
|
||||||
|
|
||||||
wrsAlarmActiveAlarmId OBJECT-TYPE
|
|
||||||
SYNTAX WrsAlarmId
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "An ID identifying the particular Alarm condition.
|
|
||||||
Typically used as an index for looking up Alarm details
|
|
||||||
in a System's Alarm Document.
|
|
||||||
|
|
||||||
This will be a structured ID, in order to allow grouping of
|
|
||||||
Alarms into general categories and allow specific Alarms to
|
|
||||||
be independently added and numbered within the group.
|
|
||||||
|
|
||||||
e.g. <Alarm Group ID>.<Alarm Event ID>
|
|
||||||
where <Alarm Group ID> = 000 - 999
|
|
||||||
<Alarm Event ID> = 000 - 999
|
|
||||||
|
|
||||||
NOTE: the { alarm-id, entity-instance-id } uniquely identifies an ACTIVE Alarm.
|
|
||||||
e.g.
|
|
||||||
- an alarm is cleared based on the matching { alarm-id, entity-instance-id },
|
|
||||||
- consecutive sets of an alarm with matching { alarm-id, entity-instance-id }
|
|
||||||
updates the fields of the single ACTIVE Alarm.
|
|
||||||
E.g. updates severity for example. "
|
|
||||||
::= { wrsAlarmActiveEntry 3 }
|
|
||||||
|
|
||||||
wrsAlarmActiveEntityInstanceId OBJECT-TYPE
|
|
||||||
SYNTAX WrsAlarmEntityInstanceId
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "This is a textual description of the resource under alarm.
|
|
||||||
|
|
||||||
A '.' separated list of sub-entity-type=instance-value pairs,
|
|
||||||
representing the containment structure of the overall entity
|
|
||||||
instance.
|
|
||||||
|
|
||||||
Note that this containment structure will be used for
|
|
||||||
processing hierarchical clears.
|
|
||||||
|
|
||||||
e.g
|
|
||||||
system=ironpass1-4
|
|
||||||
system=ironpass1-4 . host=compute-0
|
|
||||||
system=ironpass1-4 . host=compute-0 . port=eth0
|
|
||||||
system=ironpass1-4 . host=compute-0 . disk=/dev/sda
|
|
||||||
|
|
||||||
system=ironpass1-4 . instance=vyatta_rtr_0
|
|
||||||
system=ironpass1-4 . stack=vyatta_scaling_rtrs
|
|
||||||
|
|
||||||
NOTE: the { alarm-id, entity-instance-id } uniquely identifies an ACTIVE Alarm.
|
|
||||||
e.g.
|
|
||||||
- an alarm is cleared based on the matching { alarm-id, entity-instance-id },
|
|
||||||
- consecutive sets of an alarm with matching { alarm-id, entity-instance-id }
|
|
||||||
updates the fields of the single ACTIVE Alarm.
|
|
||||||
E.g. updates severity for example."
|
|
||||||
::= { wrsAlarmActiveEntry 4 }
|
|
||||||
|
|
||||||
wrsAlarmActiveDateAndTime OBJECT-TYPE
|
|
||||||
SYNTAX DateAndTime
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "Provided in this table as a convenience. It is a copy of the Date and Time of the alarm."
|
|
||||||
::= { wrsAlarmActiveEntry 5}
|
|
||||||
|
|
||||||
wrsAlarmActiveAlarmSeverity OBJECT-TYPE
|
|
||||||
SYNTAX WrsAlarmSeverity
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "The severity of the alarm."
|
|
||||||
::= { wrsAlarmActiveEntry 6}
|
|
||||||
|
|
||||||
wrsAlarmActiveReasonText OBJECT-TYPE
|
|
||||||
SYNTAX WrsAlarmText
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "Represents the per active alarm instance additional text field."
|
|
||||||
REFERENCE "ITU Recommendation M.3100, 'Generic Network Information Model', 1995
|
|
||||||
ITU Recommendation X.733, 'Information Technology - Open
|
|
||||||
Systems Interconnection - System Management: Alarm Reporting Function', 1992"
|
|
||||||
::= { wrsAlarmActiveEntry 7}
|
|
||||||
|
|
||||||
wrsAlarmActiveEventType OBJECT-TYPE
|
|
||||||
SYNTAX WrsAlarmEventType
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "Represents the per active alarm instance event type values."
|
|
||||||
REFERENCE "ITU Recommendation M.3100, 'Generic Network Information Model', 1995
|
|
||||||
ITU Recommendation X.733, 'Information Technology - Open
|
|
||||||
Systems Interconnection - System Management: Alarm Reporting Function', 1992
|
|
||||||
ITU Recommendation X.736, 'Information Technology - Open
|
|
||||||
Systems Interconnection - System Management: Security
|
|
||||||
Alarm Reporting Function', 1992"
|
|
||||||
::= { wrsAlarmActiveEntry 8 }
|
|
||||||
|
|
||||||
wrsAlarmActiveProbableCause OBJECT-TYPE
|
|
||||||
SYNTAX WrsAlarmProbableCause
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "Per active alarm instance ITU probable cause values."
|
|
||||||
REFERENCE "ITU Recommendation M.3100, 'Generic Network Information Model', 1995
|
|
||||||
ITU Recommendation X.733, 'Information Technology - Open
|
|
||||||
Systems Interconnection - System Management: Alarm Reporting Function', 1992
|
|
||||||
ITU Recommendation X.736, 'Information Technology - Open
|
|
||||||
Systems Interconnection - System Management: Security
|
|
||||||
Alarm Reporting Function', 1992"
|
|
||||||
::= { wrsAlarmActiveEntry 9 }
|
|
||||||
|
|
||||||
wrsAlarmActiveProposedRepairAction OBJECT-TYPE
|
|
||||||
SYNTAX WrsAlarmText
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "Represents more of the per active alarm instance additional text field."
|
|
||||||
::= { wrsAlarmActiveEntry 10}
|
|
||||||
|
|
||||||
wrsAlarmActiveServiceAffecting OBJECT-TYPE
|
|
||||||
SYNTAX WrsBoolean
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "This attribute indicates whether the alarm is service affecting or not."
|
|
||||||
::= { wrsAlarmActiveEntry 11 }
|
|
||||||
|
|
||||||
wrsAlarmActiveSuppressionAllowed OBJECT-TYPE
|
|
||||||
SYNTAX WrsBoolean
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "This attribute indicates whether the alarm can be manually suppressed or not."
|
|
||||||
::= { wrsAlarmActiveEntry 12 }
|
|
||||||
|
|
||||||
|
|
||||||
-- Wind River Event Table
|
|
||||||
|
|
||||||
wrsEventTable OBJECT-TYPE
|
|
||||||
SYNTAX SEQUENCE OF WrsEventEntry
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "This table contains information about events."
|
|
||||||
::= { wrsAlarmObjects 4 }
|
|
||||||
|
|
||||||
wrsEventEntry OBJECT-TYPE
|
|
||||||
SYNTAX WrsEventEntry
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "An event entry"
|
|
||||||
INDEX { wrsEventIndex }
|
|
||||||
::= { wrsEventTable 1 }
|
|
||||||
|
|
||||||
WrsEventEntry ::= SEQUENCE {
|
|
||||||
wrsEventIndex Unsigned32,
|
|
||||||
wrsEventUuid DisplayString,
|
|
||||||
wrsEventEventId WrsAlarmId,
|
|
||||||
wrsEventState WrsAlarmState,
|
|
||||||
wrsEventEntityInstanceId WrsAlarmEntityInstanceId,
|
|
||||||
wrsEventDateAndTime DateAndTime,
|
|
||||||
wrsEventSeverity WrsAlarmSeverity,
|
|
||||||
wrsEventReasonText WrsAlarmText,
|
|
||||||
wrsEventEventType WrsAlarmEventType,
|
|
||||||
wrsEventProbableCause WrsAlarmProbableCause,
|
|
||||||
wrsEventProposedRepairAction WrsAlarmText,
|
|
||||||
wrsEventServiceAffecting WrsBoolean,
|
|
||||||
wrsEventSuppressionAllowed WrsBoolean
|
|
||||||
}
|
|
||||||
|
|
||||||
wrsEventIndex OBJECT-TYPE
|
|
||||||
SYNTAX Unsigned32 (1..4294967295)
|
|
||||||
MAX-ACCESS not-accessible
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "The index of the event in the Event Table."
|
|
||||||
::= { wrsEventEntry 1 }
|
|
||||||
|
|
||||||
wrsEventUuid OBJECT-TYPE
|
|
||||||
SYNTAX DisplayString
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "An ID identifying the event instance in the Event Table."
|
|
||||||
::= { wrsEventEntry 2 }
|
|
||||||
|
|
||||||
wrsEventEventId OBJECT-TYPE
|
|
||||||
SYNTAX WrsAlarmId
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "An ID identifying the particular Event condition.
|
|
||||||
Typically used as an index for looking up Event details
|
|
||||||
in a System's Event Document.
|
|
||||||
|
|
||||||
This will be a structured ID, in order to allow grouping of
|
|
||||||
Events into general categories and allow specific Event to
|
|
||||||
be independently added and numbered within the group.
|
|
||||||
|
|
||||||
e.g. <Event Group ID>.<Event Event ID>
|
|
||||||
where <Event Group ID> = 000 - 999
|
|
||||||
<Event Event ID> = 000 - 999 "
|
|
||||||
::= { wrsEventEntry 3 }
|
|
||||||
|
|
||||||
wrsEventState OBJECT-TYPE
|
|
||||||
SYNTAX WrsAlarmState
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "The state of the event.
|
|
||||||
|
|
||||||
For Customer log events, this field is set to LOG. The attributes that are applicable for a LOG state are:
|
|
||||||
State, EventId, EntityInstanceId, DateAndTime, Severity, ReasonText, EventType, ProbableCause, ServiceAffecting
|
|
||||||
|
|
||||||
"
|
|
||||||
::= { wrsEventEntry 4 }
|
|
||||||
|
|
||||||
wrsEventEntityInstanceId OBJECT-TYPE
|
|
||||||
SYNTAX WrsAlarmEntityInstanceId
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "This is a textual description of the resource under event.
|
|
||||||
|
|
||||||
A '.' separated list of sub-entity-type=instance-value pairs,
|
|
||||||
representing the containment structure of the overall entity
|
|
||||||
instance.
|
|
||||||
|
|
||||||
e.g
|
|
||||||
system=ironpass1-4
|
|
||||||
system=ironpass1-4 . host=compute-0
|
|
||||||
system=ironpass1-4 . host=compute-0 . port=eth0
|
|
||||||
system=ironpass1-4 . host=compute-0 . disk=/dev/sda
|
|
||||||
|
|
||||||
system=ironpass1-4 . instance=vyatta_rtr_0
|
|
||||||
system=ironpass1-4 . stack=vyatta_scaling_rtrs"
|
|
||||||
::= { wrsEventEntry 5 }
|
|
||||||
|
|
||||||
wrsEventDateAndTime OBJECT-TYPE
|
|
||||||
SYNTAX DateAndTime
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "Provided in this table as a convenience. It is the event last update Date and Time ."
|
|
||||||
::= { wrsEventEntry 6 }
|
|
||||||
|
|
||||||
wrsEventSeverity OBJECT-TYPE
|
|
||||||
SYNTAX WrsAlarmSeverity
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "The severity of the Event."
|
|
||||||
::= { wrsEventEntry 7 }
|
|
||||||
|
|
||||||
wrsEventReasonText OBJECT-TYPE
|
|
||||||
SYNTAX WrsAlarmText
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "Represents the per Event instance additional text field."
|
|
||||||
REFERENCE "ITU Recommendation M.3100, 'Generic Network Information Model', 1995
|
|
||||||
ITU Recommendation X.733, 'Information Technology - Open
|
|
||||||
Systems Interconnection - System Management: Alarm Reporting Function', 1992"
|
|
||||||
::= { wrsEventEntry 8 }
|
|
||||||
|
|
||||||
wrsEventEventType OBJECT-TYPE
|
|
||||||
SYNTAX WrsAlarmEventType
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "Represents the per Event instance event type values."
|
|
||||||
REFERENCE "ITU Recommendation M.3100, 'Generic Network Information Model', 1995
|
|
||||||
ITU Recommendation X.733, 'Information Technology - Open
|
|
||||||
Systems Interconnection - System Management: Alarm Reporting Function', 1992
|
|
||||||
ITU Recommendation X.736, 'Information Technology - Open
|
|
||||||
Systems Interconnection - System Management: Security
|
|
||||||
Alarm Reporting Function', 1992"
|
|
||||||
::= { wrsEventEntry 9 }
|
|
||||||
|
|
||||||
wrsEventProbableCause OBJECT-TYPE
|
|
||||||
SYNTAX WrsAlarmProbableCause
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "Per Event instance ITU probable cause values."
|
|
||||||
REFERENCE "ITU Recommendation M.3100, 'Generic Network Information Model', 1995
|
|
||||||
ITU Recommendation X.733, 'Information Technology - Open
|
|
||||||
Systems Interconnection - System Management: Alarm Reporting Function', 1992
|
|
||||||
ITU Recommendation X.736, 'Information Technology - Open
|
|
||||||
Systems Interconnection - System Management: Security
|
|
||||||
Alarm Reporting Function', 1992"
|
|
||||||
::= { wrsEventEntry 10 }
|
|
||||||
|
|
||||||
wrsEventProposedRepairAction OBJECT-TYPE
|
|
||||||
SYNTAX WrsAlarmText
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "Represents more of the per historical alarm instance additional text field.
|
|
||||||
Applies to alarms only."
|
|
||||||
::= { wrsEventEntry 11}
|
|
||||||
|
|
||||||
wrsEventServiceAffecting OBJECT-TYPE
|
|
||||||
SYNTAX WrsBoolean
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "This attribute indicates whether the Event is service affecting or not."
|
|
||||||
::= { wrsEventEntry 12 }
|
|
||||||
|
|
||||||
wrsEventSuppressionAllowed OBJECT-TYPE
|
|
||||||
SYNTAX WrsBoolean
|
|
||||||
MAX-ACCESS read-only
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "This attribute indicates whether the alarm can be manually suppressed or not.
|
|
||||||
Applies to alarms only."
|
|
||||||
::= { wrsEventEntry 13 }
|
|
||||||
|
|
||||||
|
|
||||||
-- All notification OIDs would be prefixed with a zero OID to facilitate snmp v1<->v2 conversion
|
|
||||||
|
|
||||||
wrsTrapPrefix OBJECT-IDENTITY
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "This OID represents the prefix branch for all WIND RIVER ITU Alarm Trap.
|
|
||||||
The last but one sub identifier in the OID of any Notification must have the value
|
|
||||||
zero to facilitate v2<-->v1 conversion."
|
|
||||||
::= {wrsAlarmObjects 0 }
|
|
||||||
|
|
||||||
|
|
||||||
-- Generic Severity-based Traps / Alarms
|
|
||||||
|
|
||||||
wrsAlarmCritical NOTIFICATION-TYPE
|
|
||||||
OBJECTS {
|
|
||||||
wrsAlarmActiveAlarmId,
|
|
||||||
wrsAlarmActiveEntityInstanceId,
|
|
||||||
wrsAlarmActiveDateAndTime,
|
|
||||||
wrsAlarmActiveAlarmSeverity,
|
|
||||||
wrsAlarmActiveReasonText,
|
|
||||||
wrsAlarmActiveEventType,
|
|
||||||
wrsAlarmActiveProbableCause,
|
|
||||||
wrsAlarmActiveProposedRepairAction,
|
|
||||||
wrsAlarmActiveServiceAffecting,
|
|
||||||
wrsAlarmActiveSuppressionAllowed
|
|
||||||
}
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "This notification indicates that an alarm of 'Critical' severity
|
|
||||||
has been raised on the system.
|
|
||||||
The varbinds include details of the alarm."
|
|
||||||
::= { wrsTrapPrefix 1 }
|
|
||||||
|
|
||||||
|
|
||||||
wrsAlarmMajor NOTIFICATION-TYPE
|
|
||||||
OBJECTS {
|
|
||||||
wrsAlarmActiveAlarmId,
|
|
||||||
wrsAlarmActiveEntityInstanceId,
|
|
||||||
wrsAlarmActiveDateAndTime,
|
|
||||||
wrsAlarmActiveAlarmSeverity,
|
|
||||||
wrsAlarmActiveReasonText,
|
|
||||||
wrsAlarmActiveEventType,
|
|
||||||
wrsAlarmActiveProbableCause,
|
|
||||||
wrsAlarmActiveProposedRepairAction,
|
|
||||||
wrsAlarmActiveServiceAffecting,
|
|
||||||
wrsAlarmActiveSuppressionAllowed
|
|
||||||
}
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "This notification indicates that an alarm of 'Major' severity
|
|
||||||
has been raised on the system.
|
|
||||||
The varbinds include details of the alarm."
|
|
||||||
::= { wrsTrapPrefix 2 }
|
|
||||||
|
|
||||||
|
|
||||||
wrsAlarmMinor NOTIFICATION-TYPE
|
|
||||||
OBJECTS {
|
|
||||||
wrsAlarmActiveAlarmId,
|
|
||||||
wrsAlarmActiveEntityInstanceId,
|
|
||||||
wrsAlarmActiveDateAndTime,
|
|
||||||
wrsAlarmActiveAlarmSeverity,
|
|
||||||
wrsAlarmActiveReasonText,
|
|
||||||
wrsAlarmActiveEventType,
|
|
||||||
wrsAlarmActiveProbableCause,
|
|
||||||
wrsAlarmActiveProposedRepairAction,
|
|
||||||
wrsAlarmActiveServiceAffecting,
|
|
||||||
wrsAlarmActiveSuppressionAllowed
|
|
||||||
}
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "This notification indicates that an alarm of 'Minor' severity
|
|
||||||
has been raised on the system.
|
|
||||||
The varbinds include details of the alarm."
|
|
||||||
::= { wrsTrapPrefix 3 }
|
|
||||||
|
|
||||||
|
|
||||||
wrsAlarmWarning NOTIFICATION-TYPE
|
|
||||||
OBJECTS {
|
|
||||||
wrsAlarmActiveAlarmId,
|
|
||||||
wrsAlarmActiveEntityInstanceId,
|
|
||||||
wrsAlarmActiveDateAndTime,
|
|
||||||
wrsAlarmActiveAlarmSeverity,
|
|
||||||
wrsAlarmActiveReasonText,
|
|
||||||
wrsAlarmActiveEventType,
|
|
||||||
wrsAlarmActiveProbableCause,
|
|
||||||
wrsAlarmActiveProposedRepairAction,
|
|
||||||
wrsAlarmActiveServiceAffecting,
|
|
||||||
wrsAlarmActiveSuppressionAllowed
|
|
||||||
}
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "This notification indicates that an alarm of 'Warning' severity
|
|
||||||
has been raised on the system.
|
|
||||||
The varbinds include details of the alarm."
|
|
||||||
::= { wrsTrapPrefix 4 }
|
|
||||||
|
|
||||||
|
|
||||||
wrsAlarmMessage NOTIFICATION-TYPE
|
|
||||||
OBJECTS {
|
|
||||||
wrsAlarmActiveAlarmId,
|
|
||||||
wrsAlarmActiveEntityInstanceId,
|
|
||||||
wrsAlarmActiveDateAndTime,
|
|
||||||
wrsAlarmActiveAlarmSeverity,
|
|
||||||
wrsAlarmActiveReasonText,
|
|
||||||
wrsAlarmActiveEventType,
|
|
||||||
wrsAlarmActiveProbableCause,
|
|
||||||
wrsAlarmActiveProposedRepairAction,
|
|
||||||
wrsAlarmActiveServiceAffecting,
|
|
||||||
wrsAlarmActiveSuppressionAllowed
|
|
||||||
}
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "This notification indicates that a stateless message alarm
|
|
||||||
event has occurred on the system.
|
|
||||||
The varbinds include details of the alarm.
|
|
||||||
Note that these events are stored in the Customer Log Table."
|
|
||||||
::= { wrsTrapPrefix 5 }
|
|
||||||
|
|
||||||
|
|
||||||
wrsAlarmClear NOTIFICATION-TYPE
|
|
||||||
OBJECTS {
|
|
||||||
wrsAlarmActiveAlarmId,
|
|
||||||
wrsAlarmActiveEntityInstanceId,
|
|
||||||
wrsAlarmActiveDateAndTime,
|
|
||||||
wrsAlarmActiveReasonText
|
|
||||||
}
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "This notification indicates that a previously
|
|
||||||
reported alarm have been cleared.
|
|
||||||
The previously reported alarm is identified by the
|
|
||||||
{ AlarmId, EntityInstanceId } tuple."
|
|
||||||
::= { wrsTrapPrefix 9 }
|
|
||||||
|
|
||||||
wrsAlarmHierarchicalClear NOTIFICATION-TYPE
|
|
||||||
OBJECTS {
|
|
||||||
wrsAlarmActiveEntityInstanceId,
|
|
||||||
wrsAlarmActiveDateAndTime,
|
|
||||||
wrsAlarmActiveReasonText
|
|
||||||
}
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "This notification indicates that one or more previously
|
|
||||||
reported alarms have been cleared.
|
|
||||||
The previously reported alarms are identified by the
|
|
||||||
EntityInstanceId attribute.
|
|
||||||
ALL alarms against EntityInstanceId and all of its children
|
|
||||||
have been cleared."
|
|
||||||
::= { wrsTrapPrefix 99 }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Notification group definitions
|
|
||||||
|
|
||||||
wrsAlarmNotificationsGroup NOTIFICATION-GROUP
|
|
||||||
NOTIFICATIONS {
|
|
||||||
wrsAlarmClear,
|
|
||||||
wrsAlarmHierarchicalClear,
|
|
||||||
wrsAlarmMessage,
|
|
||||||
wrsAlarmWarning,
|
|
||||||
wrsAlarmMinor,
|
|
||||||
wrsAlarmMajor,
|
|
||||||
wrsAlarmCritical
|
|
||||||
}
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "Wind River alarm notification group."
|
|
||||||
::= { wrsAlarmGroups 1}
|
|
||||||
|
|
||||||
wrsAlarmGroup OBJECT-GROUP
|
|
||||||
OBJECTS {
|
|
||||||
wrsAlarmActiveUuid,
|
|
||||||
wrsAlarmActiveAlarmId,
|
|
||||||
wrsAlarmActiveEntityInstanceId,
|
|
||||||
wrsAlarmActiveDateAndTime,
|
|
||||||
wrsAlarmActiveAlarmSeverity,
|
|
||||||
wrsAlarmActiveReasonText,
|
|
||||||
wrsAlarmActiveEventType,
|
|
||||||
wrsAlarmActiveProbableCause,
|
|
||||||
wrsAlarmActiveProposedRepairAction,
|
|
||||||
wrsAlarmActiveServiceAffecting,
|
|
||||||
wrsAlarmActiveSuppressionAllowed
|
|
||||||
}
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "Wind River alarm group."
|
|
||||||
::= { wrsAlarmGroups 2}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Compliance
|
|
||||||
|
|
||||||
wrsAlarmCompliance MODULE-COMPLIANCE
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "The compliance statement for entities which implement
|
|
||||||
the Wind River Alarm MIB."
|
|
||||||
MODULE -- this module
|
|
||||||
MANDATORY-GROUPS { wrsAlarmGroup
|
|
||||||
}
|
|
||||||
::= { wrsAlarmCompliances 1}
|
|
||||||
|
|
||||||
|
|
||||||
END
|
|
@ -1,132 +0,0 @@
|
|||||||
------------------------------------------------------------------------------
|
|
||||||
--
|
|
||||||
-- File : wrsEnterpriseReg.mib
|
|
||||||
-- Description : Wind River Enterprise Registration Hierarchy MIB
|
|
||||||
-- Version : 1.2.0
|
|
||||||
-- Date : June 2, 2017
|
|
||||||
-- OBSOLETES : wrsMasterMib.mib v0.6 (August 29, 2000)
|
|
||||||
--
|
|
||||||
-- Copyright (c) 2014-2017 Wind River Systems, Inc. All Rights Reserved.
|
|
||||||
--
|
|
||||||
-- This module defines the Wind River Systems (WRS) registration hierarchy,
|
|
||||||
--
|
|
||||||
-- The Wind River Systems registration tree is administered with the following
|
|
||||||
-- hierarchy:
|
|
||||||
-- iso(1).org(3).dod(6).internet(1).private(4).enterprise(1)
|
|
||||||
-- .wrs(731)
|
|
||||||
-- .wrs(731).wrsCommon(1)
|
|
||||||
-- .wrs(731).wrsCommon(1).wrs<Module>(1-...) ... cont'd in wrsCommon<Module>.mib
|
|
||||||
-- .wrs(731).wrs<Product>(2-...) ... cont'd in wrs<Product>.mib
|
|
||||||
--
|
|
||||||
-- Reproduction of this document is authorized on condition that this
|
|
||||||
-- copyright notice is included. This Wind River Enterprise Registration MIB
|
|
||||||
-- embodies proprietary intellectual property of Wind River Systems (WRS).
|
|
||||||
-- WRS retains all title and ownership in the specification, including any
|
|
||||||
-- revisions.
|
|
||||||
--
|
|
||||||
-- It is the intent of WRS to encourage the widespread use of this
|
|
||||||
-- specification in connection with the management of Wind River products.
|
|
||||||
-- WRS grants vendors, end-users, and other interested parties a
|
|
||||||
-- non-exclusive license to use this specification in connection with the
|
|
||||||
-- management of Wind River products.
|
|
||||||
--
|
|
||||||
-- This specification is supplied "AS IS", and WRS makes no warranty,
|
|
||||||
-- either express or implied, as to the use, operations, condition,
|
|
||||||
-- or performance of this specification.
|
|
||||||
--
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
WRS-ENTERPRISE-REG-MIB DEFINITIONS ::= BEGIN
|
|
||||||
|
|
||||||
IMPORTS
|
|
||||||
TEXTUAL-CONVENTION FROM SNMPv2-TC
|
|
||||||
MODULE-IDENTITY, enterprises FROM SNMPv2-SMI;
|
|
||||||
|
|
||||||
wrs MODULE-IDENTITY
|
|
||||||
LAST-UPDATED "201407100000Z" -- July 10, 2014
|
|
||||||
ORGANIZATION "Wind River Systems, Inc."
|
|
||||||
CONTACT-INFO "Wind River Systems, Inc.
|
|
||||||
500 Wind River Way
|
|
||||||
Alameda, CA 94501, USA
|
|
||||||
Contact: Wind River Systems Support
|
|
||||||
E-mail : support@windriver.com
|
|
||||||
Phone : 510.748.4100"
|
|
||||||
DESCRIPTION "This module defines the Wind River Systems, Inc. Registration hierarchy."
|
|
||||||
|
|
||||||
-- Revision history
|
|
||||||
REVISION "201407100000Z" -- July 10, 2014
|
|
||||||
DESCRIPTION "Initial Version of MIB."
|
|
||||||
|
|
||||||
::= { enterprises 731 }
|
|
||||||
|
|
||||||
-- WRS Common Enterprise MIB Modules
|
|
||||||
wrsCommon OBJECT IDENTIFIER ::= { wrs 1 }
|
|
||||||
wrsAlarms OBJECT IDENTIFIER ::= { wrsCommon 1 } -- Common WRS Enterprise Alarm MIB
|
|
||||||
|
|
||||||
-- WRS Products
|
|
||||||
-- tms1_0 OBJECT IDENTIFIER ::= { wrs 1 } Obsolete
|
|
||||||
tms OBJECT IDENTIFIER ::= { wrs 2 }
|
|
||||||
wrsTs OBJECT IDENTIFIER ::= { wrs 3 } -- WRS Titanium Cloud specific Enterprise MIBs
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---------------------------------------------------------------------------
|
|
||||||
-- TMS OID Definitions
|
|
||||||
--
|
|
||||||
|
|
||||||
-- TMS Major MIB Categories
|
|
||||||
idb OBJECT IDENTIFIER ::= { tms 1 } -- IDB MIBs
|
|
||||||
tmsGeneric OBJECT IDENTIFIER ::= { tms 2 } -- TMS Generic MIBs
|
|
||||||
oemSwapi OBJECT IDENTIFIER ::= { tms 3 } -- OEM swAPI MIBs
|
|
||||||
oemProd OBJECT IDENTIFIER ::= { tms 4 } -- OEM Product MIBs
|
|
||||||
|
|
||||||
-- TMS IDB Internal Module MIBs
|
|
||||||
rmonMib OBJECT IDENTIFIER ::= { idb 1 }
|
|
||||||
-- garpMib OBJECT IDENTIFIER ::= { idb 2 } SMIv2
|
|
||||||
-- stpMib OBJECT IDENTIFIER ::= { idb 3 } SMIv2
|
|
||||||
|
|
||||||
-- TMS Generic MIBs
|
|
||||||
-- tmsCommonMib OBJECT IDENTIFIER ::= { tmsGeneric 1 } SMIv2
|
|
||||||
-- tmsL3Mib OBJECT IDENTIFIER ::= { tmsGeneric 2 } SMIv2
|
|
||||||
|
|
||||||
-- OEM swAPI MIBs
|
|
||||||
-- pmSwapi OBJECT IDENTIFIER ::= { oemSwapi 1 } SMIv2
|
|
||||||
-- bcmSwapi OBJECT IDENTIFIER ::= { oemSwapi 2 } SMIv2
|
|
||||||
-- pcSwapi OBJECT IDENTIFIER ::= { oemSwapi 3 } SMIv2
|
|
||||||
|
|
||||||
-- OEM Product MIBs
|
|
||||||
-- pm3575 OBJECT IDENTIFIER ::= { oemProd 1 } SMIv2
|
|
||||||
-- bcm5600 OBJECT IDENTIFIER ::= { oemProd 2 } SMIv2
|
|
||||||
-- pcSwitch OBJECT IDENTIFIER ::= { oemProd 3 } SMIv2
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---------------------------------------------------------------------------
|
|
||||||
-- General Textual Conventions
|
|
||||||
--
|
|
||||||
|
|
||||||
WrsUUID ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "Universally Unique IDentifier;
|
|
||||||
format is typically XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX ,
|
|
||||||
where X is a hex-digit."
|
|
||||||
SYNTAX OCTET STRING (SIZE (0..36))
|
|
||||||
|
|
||||||
WrsBoolean ::= TEXTUAL-CONVENTION
|
|
||||||
STATUS current
|
|
||||||
DESCRIPTION "Boolean type."
|
|
||||||
SYNTAX INTEGER
|
|
||||||
{
|
|
||||||
false (0),
|
|
||||||
true (1)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- END of WRS-ENTERPRISE-REG-MIB
|
|
||||||
--
|
|
||||||
|
|
||||||
END
|
|
Loading…
Reference in New Issue
Block a user