File 2634-snmp-agent-Add-the-get-mechanism-behaviour.patch of Package erlang

From 1b581f323eb740c054c5055602e7263b7463ffb1 Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Thu, 21 Mar 2019 15:23:35 +0100
Subject: [PATCH 4/8] [snmp|agent] Add the get-mechanism behaviour

Added preliminary version of the get-mechanism behaviour.

OTP-15691
---
 lib/snmp/src/agent/depend.mk               |  5 ++-
 lib/snmp/src/agent/modules.mk              |  1 +
 lib/snmp/src/agent/snmpa_get_mechanism.erl | 58 ++++++++++++++++++++++++++++++
 3 files changed, 63 insertions(+), 1 deletion(-)
 create mode 100644 lib/snmp/src/agent/snmpa_get_mechanism.erl

diff --git a/lib/snmp/src/agent/depend.mk b/lib/snmp/src/agent/depend.mk
index 8eba50fa3b..530a82f7ca 100644
--- a/lib/snmp/src/agent/depend.mk
+++ b/lib/snmp/src/agent/depend.mk
@@ -2,7 +2,7 @@
 
 # %CopyrightBegin%
 # 
-# Copyright Ericsson AB 2004-2016. All Rights Reserved.
+# Copyright Ericsson AB 2004-2019. All Rights Reserved.
 # 
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -24,6 +24,9 @@ $(EBIN)/snmpa_authentication_service.$(EMULATOR): \
 $(EBIN)/snmpa_error_report.$(EMULATOR): \
 	snmpa_error_report.erl
 
+$(EBIN)/snmpa_get_mechanism.$(EMULATOR): \
+	snmpa_get_mechanism.erl
+
 $(EBIN)/snmpa_network_interface.$(EMULATOR): \
 	snmpa_network_interface.erl
 
diff --git a/lib/snmp/src/agent/modules.mk b/lib/snmp/src/agent/modules.mk
index 9be3349524..d47ee34d98 100644
--- a/lib/snmp/src/agent/modules.mk
+++ b/lib/snmp/src/agent/modules.mk
@@ -22,6 +22,7 @@ BEHAVIOUR_MODULES = \
 	snmpa_authentication_service \
 	snmpa_discovery_handler \
 	snmpa_error_report \
+	snmpa_get_mechanism \
 	snmpa_mib_storage \
 	snmpa_mib_data \
 	snmpa_network_interface \
diff --git a/lib/snmp/src/agent/snmpa_get_mechanism.erl b/lib/snmp/src/agent/snmpa_get_mechanism.erl
new file mode 100644
index 0000000000..1a2133778e
--- /dev/null
+++ b/lib/snmp/src/agent/snmpa_get_mechanism.erl
@@ -0,0 +1,58 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2019-2019. All Rights Reserved.
+%%
+%% 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.
+%%
+%% %CopyrightEnd%
+%%
+
+-module(snmpa_get_mechanism).
+
+%%
+%% This module defines the behaviour for the undocumented (hidden)
+%% get-mechanism feature. This allows for implementing your own
+%% handling of get, get-next and get-bulk requests.
+%% Probably only useful for special cases (optimization).
+%%
+
+
+
+%% ----------- do_get/3 -----------------------------------------------------
+
+-callback do_get(MibView        :: snmp_view_based_acm_mib:mibview(), 
+                 VBs            :: [snmp:varbind()],
+                 IsNotification :: boolean()) ->
+    {noError, 0, ResVBs :: [snmp:varbind()]} |
+    {ErrStatus :: snmp:error_status(), ErrIndex :: snmp:error_index(), []}.
+
+
+%% ----------- do_get_next/2 ------------------------------------------------
+
+-callback do_get_next(MibView :: snmp_view_based_acm_mib:mibview(),
+                      VBs     :: [snmp:varbind()]) ->
+    {noError, 0, ResVBs :: [snmp:varbind()]} |
+    {ErrStatus :: snmp:error_status(), ErrIndex :: snmp:error_index(), []}.
+
+
+%% ----------- do_get_bulk/6 ------------------------------------------------
+
+-callback do_get_bulk(MibView        :: snmp_view_based_acm_mib:mibview(),
+                      NonRepeaters   :: non_neg_integer(),
+                      MaxRepetitions :: non_neg_integer(),
+                      PduMS          :: pos_integer(),
+                      VBs            :: [snmp:varbind()],
+                      MaxVBs         :: pos_integer()) ->
+    {noError, 0, ResVBs :: [snmp:varbind()]} |
+    {ErrStatus :: snmp:error_status(), ErrIndex :: snmp:error_index(), []}.
-- 
2.16.4

openSUSE Build Service is sponsored by