File 3473-snmp-agent-Transport-options-processing.patch of Package erlang

From fc68b3a3923c419530fc27093df6c80258786587 Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Mon, 21 Sep 2020 23:04:15 +0200
Subject: [PATCH 03/21] [snmp|agent] Transport options processing

Improved/fixed the transport options processing.
Also, improve verbosity printouts from MPD.

OTP-16649
---
 lib/snmp/src/agent/snmpa_mpd.erl    | 21 ++++++++++++++++++---
 lib/snmp/src/agent/snmpa_net_if.erl | 19 +++++++++++++++++--
 2 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/lib/snmp/src/agent/snmpa_mpd.erl b/lib/snmp/src/agent/snmpa_mpd.erl
index 552b9671af..7bdf413d57 100644
--- a/lib/snmp/src/agent/snmpa_mpd.erl
+++ b/lib/snmp/src/agent/snmpa_mpd.erl
@@ -166,6 +166,19 @@ process_packet(Packet, From, LocalEngineID, State, NoteStore, Log) ->
 	      NoteStore, Packet, From,
 	      LocalEngineID, V3Hdr, Data, Log);
 
+	#message{version = MsgVersion} ->
+	    ?vlog("Invalid Version: "
+                  "~n      Message Version: ~p"
+                  "~nwhen"
+                  "~n      Versions:"
+                  "~n         v1:  ~w"
+                  "~n         v2c: ~w"
+                  "~n         v3:  ~w",
+                  [MsgVersion,
+                   State#state.v1, State#state.v2c, State#state.v3]),
+	    inc(snmpInBadVersions),
+	    {discarded, snmpInBadVersions};
+
 	{'EXIT', {bad_version, Vsn}} ->
 	    ?vtrace("exit: bad version: ~p",[Vsn]),
 	    inc(snmpInBadVersions),
@@ -177,9 +190,11 @@ process_packet(Packet, From, LocalEngineID, State, NoteStore, Log) ->
 	    {discarded, Reason};
 
 	UnknownMessage ->
-	    ?vtrace("Unknown message: ~n   ~p"
-		"~nwhen"
-		"~n   State: ~p", [UnknownMessage, State]),
+	    ?vdebug("Unknown message: "
+                    "~n      ~p"
+                    "~nwhen"
+                    "~n   State: "
+                    "~n      ~p", [UnknownMessage, State]),
 	    inc(snmpInBadVersions),
 	    {discarded, snmpInBadVersions}
     end.
diff --git a/lib/snmp/src/agent/snmpa_net_if.erl b/lib/snmp/src/agent/snmpa_net_if.erl
index c47a33aee7..c50ba285af 100644
--- a/lib/snmp/src/agent/snmpa_net_if.erl
+++ b/lib/snmp/src/agent/snmpa_net_if.erl
@@ -468,16 +468,24 @@ gen_udp_range_open(Min, Max, Opts) ->
     ?vtrace("gen_udp_range_open -> entry with"
             "~n      Min: ~w"
             "~n      Max: ~w", [Min, Max]),
-    case gen_udp:open(Min, Opts) of
+    try gen_udp:open(Min, Opts) of
         {ok, Socket} ->
             ?vtrace("gen_udp_range_open(~w,~w) -> created: "
                     "~n      ~p", [Min, Max, Socket]),
             {Socket, Min};
         {error, eaddrinuse} ->
-            ?vtrace("gen_udp_range_open(~w,~w) -> eaddrinuse"),
+            ?vdebug("gen_udp_range_open(~w,~w) -> eaddrinuse"),
             gen_udp_range_open(Min+1, Max, Opts);
         {error, Reason} ->
+            ?vdebug("gen_udp_range_open(~w,~w) -> ~w", [Reason]),
             throw({udp_open, {open, Reason}})
+    catch
+        C:E:S ->
+            ?vinfo("gen_udp_range_open(~w,~w) -> failed open socket: "
+                   "~n      C: ~p"
+                   "~n      E: ~p"
+                   "~n      S: ~p", [Min, Max, C, E, S]),
+            erlang:raise(C, E, S)
     end.
 
 gen_udp_ranges_open([], _Opts) ->
@@ -1945,6 +1953,13 @@ get_counters([Counter|Counters], Acc) ->
 %% This extracts the socket options from what is specified for
 %% the transport, or if not, from the "global" socket options.
 socket_opts(Domain, {IpAddr, PortInfo}, SocketOpts, DefaultOpts) ->
+    ?vtrace("socket_opts -> entry with"
+            "~n      Domain:      ~p"
+            "~n      IpAddr:      ~p"
+            "~n      PortInfo:    ~p"
+            "~n      SpocketOpts: ~p"
+            "~n      DefaultOpts: ~p",
+            [Domain, IpAddr, PortInfo, SocketOpts, DefaultOpts]),
     Opts =
         [binary |
          case snmp_conf:tdomain_to_family(Domain) of
-- 
2.26.2

openSUSE Build Service is sponsored by