File 2651-snmp-Add-extra-socket-options-option.patch of Package erlang
From 2bb67cbe361efbb1acc52fbcac83d8e809bea541 Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Mon, 23 Sep 2019 12:14:39 +0200
Subject: [PATCH 1/4] [snmp] Add 'extra socket options' option
Make it possible for the user to add extra socket
options used when creating the socket.
These are used 'as is', with only a check that its
actually a list.
OTP-16092
---
lib/snmp/src/agent/snmpa_net_if.erl | 13 ++++++++++++-
lib/snmp/src/manager/snmpm_net_if.erl | 10 +++++++++-
2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/lib/snmp/src/agent/snmpa_net_if.erl b/lib/snmp/src/agent/snmpa_net_if.erl
index afed4482d2..58c01146be 100644
--- a/lib/snmp/src/agent/snmpa_net_if.erl
+++ b/lib/snmp/src/agent/snmpa_net_if.erl
@@ -1456,7 +1456,15 @@ socket_opts(Domain, {IpAddr, IpPort}, Opts) ->
[];
Sz ->
[{sndbuf, Sz}]
- end].
+ end] ++
+ case get_extra_sock_opts(Opts) of
+ ESO when is_list(ESO) ->
+ ESO;
+ BadESO ->
+ error_msg("Invalid 'extra socket options' (=> ignored):"
+ "~n ~p", [BadESO]),
+ []
+ end.
%% ----------------------------------------------------------------
@@ -1510,6 +1518,9 @@ get_no_reuse_address(Opts) ->
get_bind_to_ip_address(Opts) ->
snmp_misc:get_option(bind_to, Opts, false).
+get_extra_sock_opts(Opts) ->
+ snmp_misc:get_option(extra_sock_opts, Opts, []).
+
%% ----------------------------------------------------------------
diff --git a/lib/snmp/src/manager/snmpm_net_if.erl b/lib/snmp/src/manager/snmpm_net_if.erl
index 184f782860..c2e5c6d2f0 100644
--- a/lib/snmp/src/manager/snmpm_net_if.erl
+++ b/lib/snmp/src/manager/snmpm_net_if.erl
@@ -372,7 +372,15 @@ common_socket_opts(Opts) ->
[{reuseaddr, true}];
_ ->
[]
- end].
+ end ++
+ case get_opt(Opts, extra_sock_opts, []) of
+ ESO when is_list(ESO) ->
+ ESO;
+ BadESO ->
+ error_msg("Invalid 'extra socket options' (=> ignored):"
+ "~n ~p", [BadESO]),
+ []
+ end].
create_filter(Opts) when is_list(Opts) ->
--
2.16.4