File 3488-snmp-agent-Allow-transport-config-with-Opts.patch of Package erlang
From 776d50958dc1a12a8547464acfec473a9c181d2a Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Thu, 8 Oct 2020 07:52:58 +0200
Subject: [PATCH 18/21] [snmp|agent] Allow transport config with Opts
Also allow the three tuple transport config variant that
includes Opts instead of Kind.
OTP-16649
---
 lib/snmp/src/agent/snmp_framework_mib.erl | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/lib/snmp/src/agent/snmp_framework_mib.erl b/lib/snmp/src/agent/snmp_framework_mib.erl
index 9f5caae8e2..a1e0fb8949 100644
--- a/lib/snmp/src/agent/snmp_framework_mib.erl
+++ b/lib/snmp/src/agent/snmp_framework_mib.erl
@@ -289,7 +289,7 @@ check_agent({intAgentTransports = Tag, Transports}, #{port := Port} = State)
                          "~n      ~p", [CheckedAddress]),
                  {Domain, CheckedAddress, all, []};
 
-	     {Domain, Address, Kind} ->
+	     {Domain, Address, Kind} when is_atom(Kind) ->
                  ?vtrace("check_agent(intAgentTransports) -> check transport: "
                          "~n      Domain:  ~p"
                          "~n      Address: ~p"
@@ -308,6 +308,26 @@ check_agent({intAgentTransports = Tag, Transports}, #{port := Port} = State)
                          error({bad_transport_addr, Address})
                  end;
 
+             {Domain, Address, Opts} when is_list(Opts) ->
+                 ?vtrace("check_agent(intAgentTransports) -> check transport: "
+                         "~n      Domain:  ~p"
+                         "~n      Address: ~p"
+                         "~n      Opts:    ~p", [Domain, Address, Opts]),
+                 CheckedOpts = snmp_conf:check_transport_opts(Opts),
+                 ?vtrace("check_agent(intAgentTransports) -> checked opts: "
+                         "~n      ~p", [CheckedOpts]),
+                 case snmp_conf:check_transport_address(Domain, Address) of
+                     true ->
+                         ?vtrace("check_agent(intAgentTransports) -> "
+                                 "checked transport address"),
+                         {Domain, Address, all, CheckedOpts};
+                     false ->
+                         ?vinfo("check_agent(intAgentTransports) -> "
+                                "invalid transport address: "
+                                "~n      ~p", [Address]),
+                         error({bad_transport_addr, Address})
+                 end;
+
              {Domain, Address, Kind, Opts} ->
                  ?vtrace("check_agent(intAgentTransports) -> check transport: "
                          "~n      Domain:  ~p"
@@ -330,6 +350,7 @@ check_agent({intAgentTransports = Tag, Transports}, #{port := Port} = State)
                                 "~n      ~p", [Address]),
                          error({bad_transport_addr, Address})
                  end;
+
 	     _ ->
                  ?vinfo("check_agent(intAgentTransports) -> invalid transport:"
                         "~n      ~p", [Transport]),
-- 
2.26.2