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