From 9bbf27eb94877dea7229223de62d28f0d0206709 Mon Sep 17 00:00:00 2001
From: Anders Svensson
Date: Wed, 5 Jun 2013 13:56:04 +0200
Subject: Let diameter_{tcp,sctp} be configured with permissible remote
addresses
Option 'accept' allows remote addresses to be configured as tuples or
regular expressions. The remote addresses for any incoming (aka
accepted) connection/association are matched against the configured
values, any non-matching address causing the connection/association to
be aborted.
---
lib/diameter/doc/src/diameter_sctp.xml | 22 +++++++++++++++++++---
lib/diameter/doc/src/diameter_tcp.xml | 15 ++++++++++++++-
2 files changed, 33 insertions(+), 4 deletions(-)
(limited to 'lib/diameter/doc/src')
diff --git a/lib/diameter/doc/src/diameter_sctp.xml b/lib/diameter/doc/src/diameter_sctp.xml
index df140b16b9..5fe14b1ef6 100644
--- a/lib/diameter/doc/src/diameter_sctp.xml
+++ b/lib/diameter/doc/src/diameter_sctp.xml
@@ -70,10 +70,15 @@ and implements the behaviour documented in
Type = connect | accept
Ref = &mod_transport_ref;
Svc = #diameter_service{}
-Opt = {raddr, &ip_address;} | {rport, integer()} | term()
+Opt = OwnOpt | SctpOpt
Pid = pid()
LAddr = &ip_address;
Reason = term()
+OwnOpt = {raddr, &ip_address;}
+ | {rport, integer()}
+ | {accept, Match}
+SctpOpt = term()
+Match = &ip_address; | string() | [Match]
@@ -85,9 +90,20 @@ Options raddr and rport specify the remote address
and port for a connecting transport and not valid for a listening
transport: the former is required while latter defaults to 3868 if
unspecified.
-More than one raddr option can be specified, in which case the
+Mupltiple raddr options can be specified, in which case the
connecting transport in question attempts each in sequence until
-an association is established.
+an association is established.
+
+
+Option accept specifies remote addresses for a listening
+transport and is not valid for a connecting transport.
+If specified, a remote address that does not match one of the
+specified addresses causes the association to be aborted.
+Multiple accept options can be specified.
+A string-valued Match that does not parse as an address is
+interpreted as a regular expression.
+
+
Remaining options are any accepted by &gen_sctp_open1;, with the exception
of options mode, binary, list, active
and sctp_events.
diff --git a/lib/diameter/doc/src/diameter_tcp.xml b/lib/diameter/doc/src/diameter_tcp.xml
index 8e509aa829..ce4d6cfd0f 100644
--- a/lib/diameter/doc/src/diameter_tcp.xml
+++ b/lib/diameter/doc/src/diameter_tcp.xml
@@ -96,10 +96,12 @@ before configuring TLS capability on diameter transports.
Reason = term()
OwnOpt = {raddr, &ip_address;}
| {rport, integer()}
+ | {accept, Match}
| {port, integer()}
| {fragment_timer, infinity | 0..16#FFFFFFFF}
SslOpt = {ssl_options, true | list()}
TcpOpt = term()
+Match = &ip_address; | string() | [Match]
@@ -109,7 +111,18 @@ The start function required by &man_transport;.
Options raddr and rport specify the remote address
and port for a connecting transport and are not valid for a listening
-transport.
+transport.
+
+
+Option accept specifies remote addresses for a listening
+transport and is not valid for a connecting transport.
+If specified, a remote address that does not match one of the
+specified addresses causes the connection to be aborted.
+Multiple accept options can be specified.
+A string-valued Match that does not parse as an address is
+interpreted as a regular expression.
+
+
Option ssl_options must be specified for a transport
that should support TLS: a value of true results in a
TLS handshake immediately upon connection establishment while
--
cgit v1.2.3