From f1ffd33240b982ec2ed80231a3a10f14cf5e3fc9 Mon Sep 17 00:00:00 2001 From: Anders Svensson Date: Sun, 18 Nov 2012 20:14:34 +0100 Subject: Add reference pages diameter_codec(3) and diameter_make(3) Not yet any content to speak of. --- lib/diameter/doc/src/diameter_codec.xml | 98 +++++++++++++++++++++++++++++++++ lib/diameter/doc/src/diameter_make.xml | 83 ++++++++++++++++++++++++++++ lib/diameter/doc/src/files.mk | 2 + lib/diameter/doc/src/ref_man.xml | 3 + 4 files changed, 186 insertions(+) create mode 100644 lib/diameter/doc/src/diameter_codec.xml create mode 100644 lib/diameter/doc/src/diameter_make.xml (limited to 'lib/diameter/doc/src') diff --git a/lib/diameter/doc/src/diameter_codec.xml b/lib/diameter/doc/src/diameter_codec.xml new file mode 100644 index 0000000000..041616e54b --- /dev/null +++ b/lib/diameter/doc/src/diameter_codec.xml @@ -0,0 +1,98 @@ + + + + %also; + %here; +]> + + +
+ +2012 +Ericsson AB. All Rights Reserved. + + +The contents of this file are subject to the Erlang Public License, +Version 1.1, (the "License"); you may not use this file except in +compliance with the License. You should have received a copy of the +Erlang Public License along with this software. If not, it can be +retrieved online at http://www.erlang.org/. + +Software distributed under the License is distributed on an "AS IS" +basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +the License for the specific language governing rights and limitations +under the License. + + + +diameter_codec(3) +Anders Svensson + + + + + + +diameter_codec.xml +
+ +diameter_codec +Diameter encode/decode. + + + +

+

+ +
+ + + + + + +decode(Mod, Bin) -> #diameter_packet{} +Decode an incoming Diameter message. + + + + + + +

+

+ +
+
+ + +encode(Mod, Msg) -> binary() +Encode an outgoing Diameter message. + + + + + + +

+

+ +
+
+ +
+ + + + +
+SEE ALSO + +

+&man_main;, +&man_dict;

+ +
+ +
diff --git a/lib/diameter/doc/src/diameter_make.xml b/lib/diameter/doc/src/diameter_make.xml new file mode 100644 index 0000000000..aee98d62d2 --- /dev/null +++ b/lib/diameter/doc/src/diameter_make.xml @@ -0,0 +1,83 @@ + + + + %also; + %here; +]> + + +
+ +2012 +Ericsson AB. All Rights Reserved. + + +The contents of this file are subject to the Erlang Public License, +Version 1.1, (the "License"); you may not use this file except in +compliance with the License. You should have received a copy of the +Erlang Public License along with this software. If not, it can be +retrieved online at http://www.erlang.org/. + +Software distributed under the License is distributed on an "AS IS" +basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +the License for the specific language governing rights and limitations +under the License. + + + +diameter_make(3) +Anders Svensson + + + + + + +diameter_make.xml +
+ +diameter_make +Diameter dictionary compilation. + + + +

+

+ +
+ + + + + + +codec(Name) -> ok +Compile a dictionary into a codec module. + + + + + + +

+

+ +
+
+ +
+ + + + +
+SEE ALSO + +

+&man_main;, +&man_dict;

+ +
+ +
diff --git a/lib/diameter/doc/src/files.mk b/lib/diameter/doc/src/files.mk index 89ec1031e6..00ced3d91e 100644 --- a/lib/diameter/doc/src/files.mk +++ b/lib/diameter/doc/src/files.mk @@ -26,6 +26,8 @@ XML_REF1_FILES = \ XML_REF3_FILES = \ diameter.xml \ diameter_app.xml \ + diameter_codec.xml \ + diameter_make.xml \ diameter_transport.xml \ diameter_tcp.xml \ diameter_sctp.xml diff --git a/lib/diameter/doc/src/ref_man.xml b/lib/diameter/doc/src/ref_man.xml index 137ce79094..4b99fe716d 100644 --- a/lib/diameter/doc/src/ref_man.xml +++ b/lib/diameter/doc/src/ref_man.xml @@ -6,6 +6,7 @@
2011 +2012 Ericsson AB. All Rights Reserved. @@ -40,7 +41,9 @@ applications on top of the Diameter protocol.

+ + -- cgit v1.2.3 From 67ffc483c80d29334c6c7739bcf1be756f374dfb Mon Sep 17 00:00:00 2001 From: Anders Svensson Date: Tue, 20 Nov 2012 13:11:19 +0100 Subject: Add content to diameter_codec(3) and diameter_make(3) --- lib/diameter/doc/src/diameter.xml | 20 +- lib/diameter/doc/src/diameter_app.xml | 37 +--- lib/diameter/doc/src/diameter_codec.xml | 271 ++++++++++++++++++++++++++-- lib/diameter/doc/src/diameter_compile.xml | 55 +++--- lib/diameter/doc/src/diameter_dict.xml | 63 +++++-- lib/diameter/doc/src/diameter_make.xml | 81 ++++++++- lib/diameter/doc/src/diameter_sctp.xml | 27 ++- lib/diameter/doc/src/diameter_tcp.xml | 44 +++-- lib/diameter/doc/src/diameter_transport.xml | 82 ++++++--- lib/diameter/doc/src/notes.xml | 4 +- lib/diameter/doc/src/seealso.ent | 26 ++- 11 files changed, 541 insertions(+), 169 deletions(-) (limited to 'lib/diameter/doc/src') diff --git a/lib/diameter/doc/src/diameter.xml b/lib/diameter/doc/src/diameter.xml index bc42b75c7a..3ad06156a2 100644 --- a/lib/diameter/doc/src/diameter.xml +++ b/lib/diameter/doc/src/diameter.xml @@ -1,5 +1,11 @@ erlang:make_ref/0'> + transport module'> + dictionary'> %also; @@ -298,7 +304,7 @@ Has one of the following types.

An address list is available to the start function of a -transport module, which +&transport_module;, which can return a new list for use in the subsequent CER or CEA. Host-IP-Address need not be specified if the transport start function returns an address list.

@@ -464,7 +470,7 @@ that matches no peer.

The host and realm filters examine the outgoing request as passed to &call;, -assuming that this is a record- or list-valued &app_message;, +assuming that this is a record- or list-valued &codec_message;, and that the message contains at most one of each AVP. If this is not the case then the {host|realm, &dict_DiameterIdentity;} filters must be used to achieve the desired result. @@ -529,8 +535,7 @@ connectivity.

Note that a single up/down event for a given peer -corresponds to one -peer_up/peer_down +corresponds to one &app_peer_up;/&app_peer_down; callback for each of the Diameter applications negotiated during capablilities exchange. That is, the event communicates connectivity with the @@ -677,7 +682,7 @@ info fields of forms other than the above.

The name of a service as passed to &start_service; and with which the service is identified. There can be at most one service with a given name on a given node. -Note that erlang:make_ref/0 +Note that &make_ref; can be used to generate a service name that is somewhat unique.

@@ -703,8 +708,7 @@ For an outgoing Diameter request, the relevant &application_alias; is passed to &call;, while for an incoming request the application identifier in the message header determines the application, the identifier being specified in -the application's dictionary -file.

+the application's &dictionary; file.

{restrict_connections, false @@ -1125,7 +1129,7 @@ its transports.

SvcName = &service_name; App = &application_alias; -Request = &app_message; +Request = &codec_message; Answer = term() Opt = &call_opt; diff --git a/lib/diameter/doc/src/diameter_app.xml b/lib/diameter/doc/src/diameter_app.xml index 304c69ebda..d1fbb9ba31 100644 --- a/lib/diameter/doc/src/diameter_app.xml +++ b/lib/diameter/doc/src/diameter_app.xml @@ -1,5 +1,8 @@ message()'> + diameter_dict(4)'> %also; @@ -124,39 +127,17 @@ mandatory values as the bare value.

-message() = record() | list() +message() = &codec_message;

The representation of a Diameter message as passed to -&mod_call;. -The record representation is as outlined in -diameter_dict(4): -a message as defined in a dictionary file is encoded as a record with -one field for each component AVP. -Equivalently, a message can also be encoded as a list whose head is -the atom-valued message name (the record name minus any -prefix specified in the relevant dictionary file) and whose tail is a -list of {FieldName, FieldValue} pairs.

- -

-A third representation allows a message to be specified as a list -whose head is a #diameter_header{} record and whose tail is a list -of #diameter_avp{} records. -This representation is used by diameter itself when relaying requests -as directed by the return value of a -&handle_request; -callback. -It differs from the other other two in that it bypasses the checks for -messages that do not agree with their definitions in the dictionary in -question (since relays agents must handle arbitrary request): messages -are sent exactly as specified.

+&mod_call; or returned from a &handle_request; callback.

-packet() = #diameter_packet{} +packet() = &codec_packet;

A container for incoming and outgoing Diameter messages that's passed @@ -505,8 +486,7 @@ The application in which the callback takes place (that is, the callback module as configured with &mod_start_service;) is determined by the Application Identifier in the header of the incoming request message, the selected module being the one -whose corresponding dictionary declares +whose corresponding dictionary declares itself as defining either the application in question or the Relay application.

@@ -526,8 +506,7 @@ The argument &packet; has the following signature.

The msg field will be undefined in case the request has been received in the relay application. Otherwise it contains the record representing the request as outlined -in diameter_dict(4).

+in &dict;.

The errors field specifies any Result-Code's identifying errors diff --git a/lib/diameter/doc/src/diameter_codec.xml b/lib/diameter/doc/src/diameter_codec.xml index 041616e54b..fb245936cf 100644 --- a/lib/diameter/doc/src/diameter_codec.xml +++ b/lib/diameter/doc/src/diameter_codec.xml @@ -1,5 +1,9 @@ diameter_dict(4)'> + diameter_dict(4)'> %also; @@ -38,44 +42,288 @@ under the License.

diameter_codec -Diameter encode/decode. +Decode and encode of Diameter messages.

-

+Incoming Diameter messages are decoded from binary() before being +communicated to &man_app; callbacks. +Similarly, outgoing Diameter messages are encoded into binary() before +being passed to the appropriate &man_transport; module for +transmission. +The functions in this module implement this encode/decode.

+ + +

+Calls to this module are made by diameter itself as a consequence of +configuration passed to &mod_start_service;. +The encode/decode functions may also be useful for other purposes (eg. +test) but the diameter user does not need to call them explicitly when +sending and receiving messages using &mod_call; and the callback +interface documented in &man_app;.

+
+ +

+The &header; and &packet; records below +are defined in diameter.hrl, which can be included as follows.

+ +
+-include_lib("diameter/include/diameter.hrl").
+
+ +

+Application-specific records are definied in the hrl +files resulting from dictionary file compilation.

+
+DATA TYPES + +

+ + + + + +uint8()  = 0..255 +uint24() = 0..16777215 +uint32() = 0..4294967295 + +

+8-bit, 24-bit and 32-bit integers occurring in Diameter and AVP +headers.

+
+ + + +avp() = #diameter_avp{} + +

+The application-neutral representation of an AVP. +Primarily intended for use by relay applications that need to handle +arbitrary Diameter applications. +A service implementing a specific Diameter application +(for which it configures a dictionary) can manipulate values of type +&message; instead.

+ +

+Fields have the following types.

+ + + +code = uint32() +is_mandatory = boolean() +need_encryption = boolean() +vendor_id = uint32() | undefined + +

+Values in the AVP header, corresponding to AVP Code, the M flag, P +flags and Vendor-ID respectivelty. +A Vendor-ID other than undefined implies a set V flag.

+
+ +data = iolist() + +

+The data bytes of the AVP.

+
+ +name = atom() + +

+The name of the AVP as defined in the dictionary file in question, or +undefined if the AVP is unknown to the dictionary file in +question.

+
+ +value = term() + +

+The decoded value of an AVP. +Will be undefined on decode if the data bytes could +not be decoded or the AVP is unknown. +The type of a decoded value is as document in &types;.

+
+ +type = atom() + +

+The type of the AVP as specified in the dictionary file in question +(or one it inherits). +Possible types are undefined and the Diameter types: +OctetString, Integer32, Integer64, +Unsigned32, Unsigned64, Float32, Float64, +Grouped, Enumerated, Address, Time, +UTF8String, DiameterIdentity, DiameterURI, +IPFilterRule and QoSFilterRule.

+
+ +
+ +
+ + + +dictionary() = module() + + +

+The name of a generated dictionary module as generated by &man_compile; +or &make_codec;. +The interface provided by a dictionary module is an +implementation detail that may change.

+
+ + + +header() = #diameter_header{} + +

+The record representation of the Diameter header. +Values in a &packet; returned by &decode; are as extracted from the +incoming message. +Values set in an &packet; passed to &encode; are preserved in the +encoded binary(), with the exception of length, cmd_code +and application_id, all of which are determined by the +&dictionary; in question.

+ + +

+It is not necessary to set header fields explicitly in outgoing +messages as diameter itself will set appropriate values. +Setting inappropriate values can be useful for test purposes.

+
+ +

+Fields have the following types.

+ + + +version = uint8() +length = uint24() +cmd_code = uint24() +application_id = uint32() +hop_by_hop_id = uint32() +end_to_end_id = uint32() + +

+Values of the Version, Message Length, Command-Code, Application-ID, +Hop-by-Hop Identifier and End-to-End Identifier fields of the Diameter +header.

+
+ +is_request = boolean() +is_proxiable = boolean() +is_error = boolean() +is_retransmitted = boolean() + +

+Values correspoding to the R(equest), P(roxiable), E(rror) +and T(Potentially re-transmitted message) flags of the Diameter +header.

+
+ +
+ +
+ + + +message() = record() | list() + +

+The representation of a Diameter message as passed to +&mod_call; or returned from a &app_handle_request; callback. +The record representation is as outlined in &records;: +a message as defined in a dictionary file is encoded as a record with +one field for each component AVP. +Equivalently, a message can also be encoded as a list whose head is +the atom-valued message name (as specified in the relevant dictionary +file) and whose tail is a list of {AvpName, AvpValue} pairs.

+ +

+Another list-valued representation allows a message to be specified +as a list whose head is a &header; and whose tail is an &avp; list. +This representation is used by diameter itself when relaying requests +as directed by the return value of a &app_handle_request; callback. +It differs from the other other two in that it bypasses the checks for +messages that do not agree with their definitions in the dictionary in +question: messages are sent exactly as specified.

+ +
+ + + +packet() = #diameter_packet{} + +

+A container for incoming and outgoing Diameter messages. +Fields have the following types.

+ + + +header = &header; + + + +msg = &message; + + + +bin = binary() + + + +errors = [&dict_Unsigned32; | {&dict_Unsigned32;, avp()}] + + + +transport_data = term() + + + + + +
+ +
+ +
+ + + -decode(Mod, Bin) -> #diameter_packet{} -Decode an incoming Diameter message. +decode(Mod, Bin) -> &packet; +Decode a Diameter message. - - +Mod = &dictionary; +Bin = binary()

-

+Decode a Diameter message.

encode(Mod, Msg) -> binary() -Encode an outgoing Diameter message. +Encode a Diameter message. - - +Mod = &dictionary; +Msg = &message; | &packet;

+Encode a Diameter message.

@@ -90,8 +338,7 @@ under the License. SEE ALSO

-&man_main;, -&man_dict;

+&man_compile;, &man_app;, &man_dict;, &man_make;

diff --git a/lib/diameter/doc/src/diameter_compile.xml b/lib/diameter/doc/src/diameter_compile.xml index eb6de80c11..0bd7ad1789 100644 --- a/lib/diameter/doc/src/diameter_compile.xml +++ b/lib/diameter/doc/src/diameter_compile.xml @@ -1,5 +1,7 @@ dictionary file'> %also; @@ -36,12 +38,14 @@ supplied.

-The diameterc utility is used to compile diameter -dictionary files -into Erlang source. -The resulting source implements the interface diameter requires +The diameterc utility is used to compile a diameter +&dictionary; into Erlang source. +The resulting source implements the interface diameter required to encode and decode the dictionary's messages and AVP's.

+

+The module &man_make; provides an alternate compilation interface.

+
@@ -52,53 +56,52 @@ to encode and decode the dictionary's messages and AVP's.

] ]]>

-Compiles a single dictionary file. Valid options are as follows.

- - - - -]]> - -

-Specifies the directory into which the generated source should be written. -Defaults to the current working directory.

-
+Compile a single dictionary file to Erlang source. +Valid options are as follows.

]]>

-Specifies a directory to add to the code path. +Prepend the specified directory to the code path. Use to point at beam files compiled from inherited dictionaries, -@inherits in a dictionary file creating a beam dependency, not -an erl/hrl dependency.

+&dict_inherits; in a dictionary file creating a beam +dependency, not an erl/hrl dependency.

Multiple -i options can be specified.

+ +]]> + +

+Write generated source to the specified directory. +Defaults to the current working directory.

+
+

-Supresses erl and hrl generation, respectively.

+Supress erl and hrl generation, respectively.

]]> ]]>

-Set @name and @prefix in the dictionary, -respectively. +Set &dict_name; or &dict_prefix; to the specified +string. Overrides any setting in the file itself.

]]>

-Append an @inherits to the dictionary before compiling. -Specifying '-' as the dictionary has the effect of clearing any -previous inherits, causing them to be ignored.

+Append &dict_inherits; of the specified module. +Specifying "-" has the effect of discarding clearing any +previous inherits, both in the dictionary file and on the options +list.

Multiple --inherits options can be specified.

@@ -127,7 +130,7 @@ Returns 0 on success, non-zero on failure.

SEE ALSO

-&man_dict;

+&man_make;, &man_dict;

diff --git a/lib/diameter/doc/src/diameter_dict.xml b/lib/diameter/doc/src/diameter_dict.xml index 4a6cccc276..eb6cf9ba86 100644 --- a/lib/diameter/doc/src/diameter_dict.xml +++ b/lib/diameter/doc/src/diameter_dict.xml @@ -1,5 +1,11 @@ FILE FORMAT'> + MESSAGE RECORDS'> + DATA TYPES'> %also; @@ -45,29 +51,28 @@ under the License.

-A diameter service as configured with &mod_start_service; +A diameter service, as configured with &mod_start_service;, specifies one or more supported Diameter applications. Each Diameter application specifies a dictionary module that knows how to encode and decode its messages and AVPs. The dictionary module is in turn generated from a file that defines these messages and AVPs. -The format of such a file is defined in -FILE FORMAT below. +The format of such a file is defined in &format; below. Users add support for their specific applications by creating dictionary files, compiling them to Erlang modules using -diameterc and configuring the +either &man_compile; or &man_make; and configuring the resulting dictionaries modules on a service.

-The codec generation also results in a hrl file that defines records -for the messages and grouped AVPs defined for the application, these -records being what a user of the diameter application sends and receives. -(Modulo other available formats as discussed in &man_app;.) +Dictionary module generation also results in a hrl file that defines +records for the messages and Grouped AVPs defined by the +dictionary, these records being what a user of the diameter +application sends and receives, modulo other possible formats as +discussed in &man_app;. These records and the underlying Erlang data types corresponding to -Diameter data formats are discussed in MESSAGE RECORDS and DATA TYPES respectively. -The generated hrl also contains defines for the possible values of +Diameter data formats are discussed in &records; and &types; +respectively. +The generated hrl also contains macro definitions for the possible values of AVPs of type Enumerated.

@@ -111,6 +116,8 @@ The order in which sections are specified is unimportant.

+ + @id Number

@@ -134,6 +141,8 @@ Example:

+ + @name Mod

@@ -155,6 +164,8 @@ Example:

+ + @prefix Name

@@ -178,6 +189,8 @@ Example:

+ + @vendor Number Name

@@ -198,6 +211,8 @@ Example:

+ + @avp_vendor_id Number

@@ -218,6 +233,8 @@ Region-Set + + @inherits Mod

@@ -253,6 +270,8 @@ Example:

+ + @avp_types

@@ -263,7 +282,7 @@ The section consists of definitions of the form

where Code is the integer AVP code, Type identifies an AVP Data Format -as defined in DATA TYPES below, +as defined in section &types; below, and Flags is a string of V, M and P characters indicating the flags to be set on an outgoing AVP or a single '-' (minus) character if none are to be set.

@@ -287,6 +306,8 @@ to conform to the current draft standard.

+ + @custom_types Mod

@@ -308,6 +329,8 @@ Framed-IP-Address + + @codecs Mod

@@ -325,6 +348,8 @@ Framed-IP-Address + + @messages

@@ -370,6 +395,8 @@ RTA ::= < Diameter Header: 287, PXY > + + @grouped

@@ -395,6 +422,8 @@ Specifying a Vendor-Id in the definition of a grouped AVP is equivalent to specifying it with @avp_vendor_id.

+ + @enum Name

@@ -421,6 +450,8 @@ REMOVE_SIP_SERVER 3 + + @end

@@ -447,8 +478,8 @@ The hrl generated from a dictionary specification defines records for the messages and grouped AVPs defined in @messages and @grouped sections. For each message or grouped AVP definition, a record is defined whose -name is the message or AVP name prefixed with any dictionary prefix -defined with @prefix and whose fields are the names of the AVPs +name is the message or AVP name, prefixed with any dictionary prefix +defined with @prefix, and whose fields are the names of the AVPs contained in the message or grouped AVP in the order specified in the definition in question. For example, the grouped AVP

@@ -640,7 +671,7 @@ Values of these types are not currently parsed by diameter.

SEE ALSO

-&man_compile;, &man_main;, &man_app;

+&man_compile;, &man_main;, &man_app;, &man_codec;, &man_make;

diff --git a/lib/diameter/doc/src/diameter_make.xml b/lib/diameter/doc/src/diameter_make.xml index aee98d62d2..da6124310e 100644 --- a/lib/diameter/doc/src/diameter_make.xml +++ b/lib/diameter/doc/src/diameter_make.xml @@ -1,5 +1,9 @@ file:name()'> + dictionary file'> %also; @@ -43,7 +47,14 @@ under the License.

-

+The function &codec; is used to compile a diameter +&dictionary; into Erlang source. +The resulting source implements the interface diameter required +to encode and decode the dictionary's messages and AVP's.

+ +

+The utility &man_compile; provides an alternate compilation +interface.

@@ -52,16 +63,56 @@ under the License. -codec(Name) -> ok -Compile a dictionary into a codec module. - - - - +codec(Path::string(), [Opt]) -> ok | {error, Reason} +Compile a dictionary file into Erlang source.

-

+Compile a single dictionary file to Erlang source. +Opt can have the following types.

+ + + +{include, Dir::string()} + +

+Prepend the specified directory to the code path. +Use to point at beam files compiled from inherited dictionaries, +&dict_inherits; in a dictionary file creating a beam +dependency, not an erl/hrl dependency.

+ +

+Multiple include options can be specified.

+
+ +{outdir, Dir::string()} + +

+Write generated source to the specified directory. +Defaults to the current working directory.

+
+ +{name|prefix, string()} + +

+Set &dict_name; or &dict_prefix; to the specified +string. +Overrides any setting in the file itself.

+
+ +{inherits, Mod::string()} + +

+Append &dict_inherits; of the specified module. +Specifying "-" has the effect of discarding clearing any +previous inherits, both in the dictionary file and on the options +list.

+ +

+Multiple inherits options can be specified.

+
+ +
@@ -69,14 +120,24 @@ under the License.
+ +
+BUGS + +

+All options are string-valued. +In particular, it is not currently possible to +an &dict_inherits; module as an atom() or a path as a &filename;

+ +
+
SEE ALSO

-&man_main;, -&man_dict;

+&man_compile;, &man_dict;

diff --git a/lib/diameter/doc/src/diameter_sctp.xml b/lib/diameter/doc/src/diameter_sctp.xml index a023a9bc08..5e3fd5eaf1 100644 --- a/lib/diameter/doc/src/diameter_sctp.xml +++ b/lib/diameter/doc/src/diameter_sctp.xml @@ -1,5 +1,11 @@ gen_sctp(3)'> + gen_sctp:open/1'> + inet:ip_address()'> + inet(3)'> %also; @@ -43,8 +49,7 @@ under the License.

-This module implements diameter transport over SCTP using gen_sctp. +This module implements diameter transport over SCTP using &gen_sctp;. It can be specified as the value of a transport_module option to &mod_add_transport; and implements the behaviour documented in @@ -65,9 +70,9 @@ and implements the behaviour documented in Type = connect | accept Ref = &mod_transport_ref; Svc = #diameter_service{} -Opt = {raddr, inet:ip_address()} | {rport, integer()} | term() +Opt = {raddr, &ip_address;} | {rport, integer()} | term() Pid = pid() -LAddr = inet:ip_address() +LAddr = &ip_address; Reason = term() @@ -84,8 +89,7 @@ unspecified. More than one raddr option can be specified, in which case the connecting transport in question attempts each in sequence until an association is established. -Remaining options are any accepted by gen_sctp:open/1, with the exception +Remaining options are any accepted by &gen_sctp_open1;, with the exception of options mode, binary, list, active and sctp_events. Note that options ip and port specify the local address @@ -102,14 +106,12 @@ connecting transport.

An insufficiently large receive buffer may result in a peer having to -resend incoming messages: set the inet(3) option recbuf to increase +resend incoming messages: set the &inet; option recbuf to increase the buffer size.

An insufficiently large send buffer may result in outgoing messages -being discarded: set the inet(3) option sndbuf to increase +being discarded: set the &inet; option sndbuf to increase the buffer size.

@@ -145,10 +147,7 @@ outbound streams.

SEE ALSO

-&man_main;, -&man_transport;, -gen_sctp(3), -inet(3)

+&man_main;, &man_transport;, &gen_sctp;, &inet;

diff --git a/lib/diameter/doc/src/diameter_tcp.xml b/lib/diameter/doc/src/diameter_tcp.xml index be8a938115..901fce32c3 100644 --- a/lib/diameter/doc/src/diameter_tcp.xml +++ b/lib/diameter/doc/src/diameter_tcp.xml @@ -1,5 +1,22 @@ gen_tcp:connect/3'> + gen_tcp:listen/2'> + inet:ip_address()'> + ssl:connect/2'> + ssl:connect/3'> + ssl:ssl_accept/2'> + ssl:listen/2'> + gen_tcp(3)'> + inet(3)'> + ssl(3)'> %also; @@ -43,8 +60,7 @@ under the License.

-This module implements diameter transport over TCP using gen_tcp. +This module implements diameter transport over TCP using &gen_tcp;. It can be specified as the value of a transport_module option to &mod_add_transport; and implements the behaviour documented in @@ -74,9 +90,9 @@ before configuring TLS capability on diameter transports.

Svc = #diameter_service{} Opt = OwnOpt | SslOpt | TcpOpt Pid = pid() -LAddr = inet:ip_address() +LAddr = &ip_address; Reason = term() -OwnOpt = {raddr, inet:ip_address()} +OwnOpt = {raddr, &ip_address;} | {rport, integer()} | {port, integer()} SslOpt = {ssl_options, true | list()} @@ -95,16 +111,12 @@ transport. 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 -list() specifies options to be passed to ssl:connect/2 or -ssl:ssl_accept/2 +list() specifies options to be passed to &ssl_connect2; or +&ssl_accept2; after capabilities exchange if TLS is negotiated. -Remaining options are any accepted by ssl:connect/3 or gen_tcp:connect/3 for -a connecting transport, or ssl:listen/2 or gen_tcp:listen/2 for +Remaining options are any accepted by &ssl_connect3; or +&gen_tcp_connect3; for +a connecting transport, or &ssl_listen2; or &gen_tcp_listen2; for a listening transport, depending on whether or not {ssl_options, true} has been specified. Options binary, @@ -150,11 +162,7 @@ The returned local address list has length one.

SEE ALSO

-&man_main;, -&man_transport;, -gen_tcp(3), -inet(3), -ssl(3)

+&man_main;, &man_transport;, &gen_tcp;, &inet;, &ssl;

diff --git a/lib/diameter/doc/src/diameter_transport.xml b/lib/diameter/doc/src/diameter_transport.xml index 0507af63a8..55b531155f 100644 --- a/lib/diameter/doc/src/diameter_transport.xml +++ b/lib/diameter/doc/src/diameter_transport.xml @@ -1,5 +1,8 @@ message()'> + inet:ip_address()'> %also; @@ -50,16 +53,49 @@ diameter starts a transport process and a message interface with which the transport process communicates with the process that starts it (aka its parent).

-
+
+DATA TYPES + + + + + +message() = binary() | &codec_packet; + +

+A Diameter message as passed over the transport interface.

+ +

+For an inbound message from a transport process, a &codec_packet; must +contain the received message in its bin field. +In the case of an inbound request, any value set in the +transport_data field will passed back to the transport module +in the corresponding answer message, unless the sender supplies +another value.

+ +

+For an outbound message to a transport process, a &codec_packet; has a +value other than undefined in its transport_data field +and has the binary() to send in its bin field.

+
+ +
+ +
+ + + Mod:start({Type, Ref}, Svc, Config) - -> {ok, Pid} | {ok, Pid, LAddrs} | {error, Reason} + -> {ok, Pid} + | {ok, Pid, LAddrs} + | {error, Reason} Start a transport process. Type = connect | accept @@ -67,7 +103,7 @@ parent).

Svc = #diameter_service{} Config = term() Pid = pid() -LAddrs = [inet:ip_address()] +LAddrs = [&ip_address;] Reason = term()
@@ -79,8 +115,8 @@ A transport process maintains a connection with a single remote peer.

Type indicates whether the transport process in question -is being started for a connecting (connect) or listening -(accept) transport. +is being started for a connecting (Type=connect) or listening +(Type=accept) transport. In the latter case, transport processes are started as required to accept connections from multiple peers.

@@ -90,13 +126,12 @@ that has lead to starting of a transport process.

Svc contains the capabilities passed to &mod_start_service; and -&mod_add_transport;, -values passed to the latter overriding those passed to the former.

+&mod_add_transport;, values passed to the latter overriding those +passed to the former.

Config is as passed in transport_config tuple in the -&mod_transport_opt; -list passed to &mod_add_transport;.

+&mod_transport_opt; list passed to &mod_add_transport;.

The start function should use the Host-IP-Address list and/or @@ -114,13 +149,13 @@ it dies. It should not link to the parent. It should exit if its transport connection with its peer is lost.

-
+
MESSAGES @@ -130,19 +165,15 @@ All messages sent over the transport interface are of the form {diameter, term()}.

-A transport process can expect the following messages from -diameter.

+A transport process can expect messages of the following types from +its parent.

-{diameter, {send, Packet}} +{diameter, {send, &message;}}

-An outbound Diameter message. -Packet can be either binary() (the message to be sent) -or a #diameter_packet{} record whose transport_data -field contains a value other than undefined and whose bin field -contains the binary to send.

+An outbound Diameter message.

{diameter, {close, Pid}} @@ -185,7 +216,7 @@ TLS.

-A transport process should send the following messages +A transport process should send messages of the following types to its parent.

@@ -208,19 +239,10 @@ Not sent if the transport process has Type=accept. endpoint to which the transport has connected.

-{diameter, {recv, Packet}} +{diameter, {recv, &message;}}

-An inbound Diameter message. -Packet can be either binary() (the received message) -or a #diameter_packet{} record -whose bin field contains the received binary(). -Any value (other than undefined) set in -the transport_data field will be passed back with a -corresponding answer message in the case that the inbound message is a -request unless the sender sets another value. -How transport_data is used/interpreted is up to the -transport module.

+An inbound Diameter message.

{diameter, {tls, Ref}} diff --git a/lib/diameter/doc/src/notes.xml b/lib/diameter/doc/src/notes.xml index b89d84a4f6..7f3cdab075 100644 --- a/lib/diameter/doc/src/notes.xml +++ b/lib/diameter/doc/src/notes.xml @@ -428,7 +428,7 @@ Known issues or limitations:

Some agent-related functionality is not entirely complete. In particular, support for proxy agents, that advertise specific Diameter applications but otherwise relay messages in much the same -way as relay agents (for which a &handle_request; +way as relay agents (for which a handle_request callback can return a relay tuple), will be completed in an upcoming release. There may also be more explicit support for redirect agents, although @@ -460,7 +460,7 @@ could likely be expanded upon.

-The function &service_info; +The function diameter:service_info/2 can be used to retrieve information about a started service (statistics, information about connected peers, etc) but this is not yet documented and both the input and output may change diff --git a/lib/diameter/doc/src/seealso.ent b/lib/diameter/doc/src/seealso.ent index 6f67630220..435dfda326 100644 --- a/lib/diameter/doc/src/seealso.ent +++ b/lib/diameter/doc/src/seealso.ent @@ -77,12 +77,21 @@ significant. prepare_request/3'> diameter_app:capabilities()'> -diameter_app:message()'> -diameter_app:packet()'> diameter_app:peer()'> diameter_app:peer_ref()'> diameter_app:state()'> + + +diameter_codec:encode/2'> +diameter_codec:decode/2'> + +diameter_codec:avp()'> +diameter_codec:header()'> +diameter_codec:dictionary()'> +diameter_codec:message()'> +diameter_codec:packet()'> + diameter_dict(4)'> @@ -95,6 +104,14 @@ significant. UTF8String()'> Unsigned32()'> +@name'> +@prefix'> +@inherits'> + + + +diameter_make:codec/2'> + diameterc(1)'> diameter(3)'> diameter_app(3)'> +diameter_codec(3)'> diameter_dict(4)'> -diameter_transport(3)'> +diameter_make(3)'> +diameter_transport(3)'> diameter_sctp(3)'> diameter_tcp(3)'> -- cgit v1.2.3 From 2810e848c24d93b2292a08f2df0293166cf32ee6 Mon Sep 17 00:00:00 2001 From: Anders Svensson Date: Thu, 22 Nov 2012 17:49:08 +0100 Subject: Update doc for RFC 6733 --- lib/diameter/doc/src/diameter.xml | 14 +++++++------- lib/diameter/doc/src/diameter_app.xml | 2 +- lib/diameter/doc/src/diameter_dict.xml | 22 ++++++++++------------ lib/diameter/doc/src/diameter_intro.xml | 11 +++++++---- lib/diameter/doc/src/diameter_soc.xml | 30 ++++++++---------------------- lib/diameter/doc/src/diameter_tcp.xml | 2 +- lib/diameter/doc/src/seealso.ent | 2 ++ 7 files changed, 36 insertions(+), 47 deletions(-) (limited to 'lib/diameter/doc/src') diff --git a/lib/diameter/doc/src/diameter.xml b/lib/diameter/doc/src/diameter.xml index 3ad06156a2..b7669b760b 100644 --- a/lib/diameter/doc/src/diameter.xml +++ b/lib/diameter/doc/src/diameter.xml @@ -56,7 +56,7 @@ under the License.

This module provides the interface with which a user can implement a Diameter node that sends and receives messages using the -Diameter protocol as defined in RFC 3588.

+Diameter protocol as defined in &the_rfc;.

Basic usage consists of creating a representation of a @@ -73,7 +73,7 @@ Beware the difference between diameter (not capitalised) and Diameter (capitalised). The former refers to the Erlang application named diameter whose main api is defined here, the latter to Diameter protocol in the sense of -RFC 3588.

+&the_rfc;.

The diameter application must be started before calling most functions @@ -97,7 +97,7 @@ in this module.

UTF8String()

-Types corresponding to RFC 3588 AVP Data Formats. +Types corresponding to &the_rfc; AVP Data Formats. Defined in &dict_data_types;.

@@ -318,7 +318,7 @@ returns an address list.

Origin-State-Id is optional but will be included in outgoing messages sent by diameter itself: CER/CEA, DWR/DWA and DPR/DPA. Setting a value of 0 (zero) is equivalent to not setting a -value as documented in RFC 3588. +value as documented in &the_rfc;. The function &origin_state_id; can be used as to retrieve a value that is computed when the diameter application is started.

@@ -753,7 +753,7 @@ as follows.

(H bsl N) bor (Id band ((1 bsl N) - 1))

-Note that RFC 3588 requires that End-to-End identifiers remain unique +Note that &the_rfc; requires that End-to-End identifiers remain unique for a period of at least 4 minutes and that this and the call rate places a lower bound on the appropriate values of N: at a rate of R requests per second an N-bit counter @@ -955,7 +955,7 @@ Tc = &dict_Unsigned32;

-For a connecting transport, the RFC 3588 Tc timer, in milliseconds. +For a connecting transport, the &the_rfc; Tc timer, in milliseconds. Note that this timer determines the frequency with which a transport will attempt to establish a connection with its peer only before an initial connection is established: once there is an initial @@ -1622,7 +1622,7 @@ Return the list of started services.

Return a value for a Session-Id AVP.

-The value has the form required by section 8.8 of RFC 3588. +The value has the form required by section 8.8 of &the_rfc;. Ident should be the Origin-Host of the peer from which the message containing the returned value will be sent.

diff --git a/lib/diameter/doc/src/diameter_app.xml b/lib/diameter/doc/src/diameter_app.xml index d1fbb9ba31..f4db625c71 100644 --- a/lib/diameter/doc/src/diameter_app.xml +++ b/lib/diameter/doc/src/diameter_app.xml @@ -558,7 +558,7 @@ where Avps sets the Origin-Host, Origin-Realm, the specified Result-Code and (if the request sent one) Session-Id AVP's.

-Note that RFC 3588 mandates that only answers with a 3xxx series +Note that &the_rfc; mandates that only answers with a 3xxx series Result-Code (protocol errors) may set the E bit. Returning a non-3xxx value in a protocol_error tuple will cause the request process in question to fail.

diff --git a/lib/diameter/doc/src/diameter_dict.xml b/lib/diameter/doc/src/diameter_dict.xml index eb6cf9ba86..8b0687a22e 100644 --- a/lib/diameter/doc/src/diameter_dict.xml +++ b/lib/diameter/doc/src/diameter_dict.xml @@ -77,7 +77,7 @@ AVPs of type Enumerated.

The diameter application includes three dictionary modules -corresponding to applications defined in section 2.4 of RFC 3588: +corresponding to applications defined in section 2.4 of &the_rfc;: diameter_gen_base_rfc3588 for the Diameter Common Messages application with application identifier 0, diameter_gen_accounting for the Diameter Base Accounting @@ -258,7 +258,7 @@ is equivalent to using @avp_vendor_id with a copy of the dictionary's definitions but the former makes for easier reuse.

-All dictionaries should typically inherit RFC3588 AVPs from +All dictionaries should typically inherit &the_rfc; AVPs from diameter_gen_base_rfc3588.

@@ -299,9 +299,7 @@ Requested-Information 353 Enumerated V

-The P flag has been deprecated by the Diameter Maintenance -and Extensions Working Group of the IETF and should be omitted -to conform to the current draft standard.

+The P flag has been deprecated by &the_rfc;.

@@ -355,7 +353,7 @@ Framed-IP-Address

Defines the messages of the application. The section content consists of definitions of the form specified in -section 3.2 of RFC 3588, "Command Code ABNF specification".

+section 3.2 of &the_rfc;, "Command Code Format Specification".

@@ -403,7 +401,7 @@ RTA ::= < Diameter Header: 287, PXY >
 Defines the contents of the AVPs of the application having type
 Grouped.
 The section content consists of definitions of the form specified in
-section 4.4 of RFC 3588, "Grouped AVP Values".

+section 4.4 of &the_rfc;, "Grouped AVP Values".

Example:

@@ -507,7 +505,7 @@ type and number of times the AVP can occur. In particular, an AVP which is specified as occurring exactly once is encoded as a value of the AVP's type while an AVP with any other specification is encoded as a list of values of the AVP's type. -The AVP's type is as specified in the AVP definition, the RFC 3588 +The AVP's type is as specified in the AVP definition, the &the_rfc; types being described below.

@@ -520,7 +518,7 @@ types being described below.

The data formats defined in sections 4.2 ("Basic AVP Data -Formats") and 4.3 ("Derived AVP Data Formats") of RFC 3588 are encoded +Formats") and 4.3 ("Derived AVP Data Formats") of &the_rfc; are encoded as values of the types defined here. Values are passed to &mod_call; in a request record when sending a request, returned in a resulting @@ -595,8 +593,8 @@ where

Additionally, values that can be encoded are -limited by way of their encoding as four octets as required by RFC -3588 with the required extension from RFC 2030. +limited by way of their encoding as four octets as required by +&the_rfc; with the required extension from RFC 2030. In particular, only values between {{1968,1,20},{3,14,8}} and {{2104,2,26},{9,42,23}} (both inclusive) can be encoded.

@@ -640,7 +638,7 @@ where On encode, fields port, transport and protocol default to 3868, sctp and diameter respectively. The grammar of an OctetString-valued DiameterURI() is as specified in -section 4.3 of RFC 3588. +section 4.3 of &the_rfc;. The record representation is used on decode.

diff --git a/lib/diameter/doc/src/diameter_intro.xml b/lib/diameter/doc/src/diameter_intro.xml index bc2afbd453..fd578ccf45 100644 --- a/lib/diameter/doc/src/diameter_intro.xml +++ b/lib/diameter/doc/src/diameter_intro.xml @@ -1,5 +1,8 @@ - + + %also; +]>
@@ -35,7 +38,7 @@ under the License.

The diameter application is an implementation of the Diameter protocol -as defined by RFC 3588. +as defined by &the_rfc;. It supports arbitrary Diameter applications by way of a dictionary interface that allows messages and AVP's to be defined and input into diameter as configuration. @@ -86,9 +89,9 @@ dictionary module that provide encode/decode functionality for outgoing/incoming Diameter messages belonging to the application. A dictionary module is generated from a specification file using the dictionary file using the diameterc utility. -Dictionaries for the RFC 3588 Diameter Common Messages, Base +Dictionaries for the &the_rfc; Diameter Common Messages, Base Accounting and Relay applications are provided with the diameter application.

diff --git a/lib/diameter/doc/src/diameter_soc.xml b/lib/diameter/doc/src/diameter_soc.xml index 6b9ef9f756..16f6b9d5bb 100644 --- a/lib/diameter/doc/src/diameter_soc.xml +++ b/lib/diameter/doc/src/diameter_soc.xml @@ -1,11 +1,15 @@ - + + %also; +]>
2011 +2012 Ericsson AB. All Rights Reserved. @@ -41,38 +45,20 @@ Known points of questionable or non-compliance.

-RFC 3588 +&the_rfc;

-The End-to-End Security framework (section 2.9) isn't implemented -since it is largely unspecified. -The document that was to describe it -(reference [AAACMS]) was abandoned in an uncompleted state several -years ago and the current draft RFC deprecates the framework, -including the P Flag in the AVP header.

-
- - -

-There is no TLS support over SCTP. -RFC 3588 requires that a Diameter server support TLS but in -practise this seems to mean TLS over SCTP since there are limitations -with running over SCTP: see RFC 6083 (DTLS over SCTP), which is a -response to RFC 3436 (TLS over SCTP). -The current RFC 3588 draft acknowledges this by equating -TLS with TLS/TCP and DTLS/SCTP but we do not yet support DTLS.

+There is no support for DTLS over SCTP.

There is no explicit support for peer discovery (section 5.2). It can possibly be implemented on top of diameter as is but this is -probably something that diameter should do. -The current draft deprecates portions of the original RFC's mechanisms -however.

+probably something that diameter should do.

diff --git a/lib/diameter/doc/src/diameter_tcp.xml b/lib/diameter/doc/src/diameter_tcp.xml index 901fce32c3..e3b8c733b7 100644 --- a/lib/diameter/doc/src/diameter_tcp.xml +++ b/lib/diameter/doc/src/diameter_tcp.xml @@ -66,7 +66,7 @@ It can be specified as the value of a transport_module option to and implements the behaviour documented in &man_transport;. TLS security is supported, both as an upgrade following -capabilities exchange as specified by RFC 3588 and +capabilities exchange as specified by &the_rfc; and at connection establishment as in the current draft standard.

diff --git a/lib/diameter/doc/src/seealso.ent b/lib/diameter/doc/src/seealso.ent index 435dfda326..4647c42f85 100644 --- a/lib/diameter/doc/src/seealso.ent +++ b/lib/diameter/doc/src/seealso.ent @@ -32,6 +32,8 @@ significant. --> + + diameter:add_transport/2'> -- cgit v1.2.3 From 3b8adac9179ea32c2f78860c621289cb4b2bb57e Mon Sep 17 00:00:00 2001 From: Anders Svensson Date: Fri, 23 Nov 2012 14:58:39 +0100 Subject: Add missing diameter_codec(3) content --- lib/diameter/doc/src/diameter_codec.xml | 54 ++++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 5 deletions(-) (limited to 'lib/diameter/doc/src') diff --git a/lib/diameter/doc/src/diameter_codec.xml b/lib/diameter/doc/src/diameter_codec.xml index fb245936cf..4a77d5435b 100644 --- a/lib/diameter/doc/src/diameter_codec.xml +++ b/lib/diameter/doc/src/diameter_codec.xml @@ -266,24 +266,66 @@ Fields have the following types.

-header = &header; +header = &header; | undefined +

+The Diameter header of the message. +Can be (and typically should be) undefined for an outgoing +message in a non-relay application, in which case diameter provides +appropriate values.

-msg = &message; +avps = [&avp;] | undefined +

+The AVPs of the message. +Ignored for an outgoing message if the msg field is set to a +value other than undefined.

+
+ +msg = &message; | undefined + +

+The incoming/outgoing message. +For an incoming message, a record if the message can be +decoded in a non-relay application, undefined otherwise. +For an outgoing message, setting a [&header; | &avp;] list is +equivalent to setting the header and avps fields to the +corresponding values.

+ + +

+A record-valued msg field does not imply an absence of +decode errors. +The errors field should also be examined.

+
+
bin = binary() +

+The incoming message prior to encode or the outgoing message after +encode.

-errors = [&dict_Unsigned32; | {&dict_Unsigned32;, avp()}] +errors = [5000..5999 | {5000..5999, avp()}] +

+Errors detected at decode of an incoming message, as identified by +a corresponding 5xxx series Result-Code (Permanent Failures). +For an incoming request, these should be used to formulate an +appropriate answer as documented for the &app_handle_request; +callback in &man_app;. +For an incoming answer, the &mod_application_opt; +answer_errors determines the behaviour.

transport_data = term() +

+An arbitrary term of meaning only to the transport process in +question, as documented in &man_transport;.

@@ -299,11 +341,12 @@ Fields have the following types.

-decode(Mod, Bin) -> &packet; +decode(Mod, Bin) -> Pkt Decode a Diameter message. Mod = &dictionary; Bin = binary() +Pkt = &packet; @@ -314,11 +357,12 @@ Decode a Diameter message.

-encode(Mod, Msg) -> binary() +encode(Mod, Msg) -> Pkt Encode a Diameter message. Mod = &dictionary; Msg = &message; | &packet; +Pkt = &packet; -- cgit v1.2.3 From d5de2e1ffd6403f5d7ec62e6ce8da508e1cb1239 Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Mon, 26 Nov 2012 15:48:29 +0100 Subject: Prepare release --- lib/diameter/doc/src/notes.xml | 157 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) (limited to 'lib/diameter/doc/src') diff --git a/lib/diameter/doc/src/notes.xml b/lib/diameter/doc/src/notes.xml index 7f3cdab075..d448b01eba 100644 --- a/lib/diameter/doc/src/notes.xml +++ b/lib/diameter/doc/src/notes.xml @@ -42,6 +42,163 @@ first.

+
Diameter 1.3 + +
Fixed Bugs and Malfunctions + + +

+ Fix faulty handling of Origin-State-Id and faulty config + values.

+

+ The former was expected in a list despite the + documentation requiring (correctly) an integer. A bare + value for a list-valued capability was not handled.

+

+ Own Id: OTP-10440

+
+ +

+ Fix timing of up/down events.

+

+ Previously, a call to diameter:call/4 following a peer_up + callback might incorrectly return {error, no_connection}, + depending on timing. Both events now follow the + corresponding callbacks.

+

+ Own Id: OTP-10459

+
+ +

+ Make diameter:service_info/2 usable in peer_up, peer_down + and pick_peer callbacks.

+

+ Except for in pick_peer when {call_mutates_state, false}, + it would previously hang indefinitely.

+

+ Own Id: OTP-10460

+
+ +

+ Verify that End-to-End and Hop-by-Hop Identifiers in an + incoming CEA/DPA match those sent in the corresponding + CER/DPR.

+

+ The values were previously ignored. Answers whose + identifiers do not match are handled as unexpected.

+

+ Own Id: OTP-10565

+
+ +

+ Fix formatting problems in PDF documentation.

+

+ In particular, text corresponding to links in HTML was + omitted in preformatted blocks. There are still issues + with indentation but this is not diameter-specific.

+

+ Own Id: OTP-10583

+
+
+
+ + +
Improvements and New Features + + +

+ Let prepare_request, prepare_retransmit and + handle_request callbacks return a function to be invoked + on outgoing messages after encode.

+

+ This allows encoded messages to be logged for example.

+

+ Own Id: OTP-10441

+
+ +

+ Add service_opt() 'restrict_connections' to allow + multiple transport connections with the same peer.

+

+ Own Id: OTP-10443

+
+ +

+ Add service_opt() 'sequence' to allow the masking of a + constant onto the topmost bits of End-to-End and + Hop-by-Hop identifiers.

+

+ This allows the same service on different nodes to use + distinct values in outgoing request messages.

+

+ Own Id: OTP-10445

+
+ +

+ Add diameter:service_info(PeerRef) to return the + transport_ref() and transport_opt() list of the + corresponding transport.

+

+ This allows easy access to these from diameter_app + callbacks that only get peer_ref() as an argument.

+

+ Own Id: OTP-10470

+
+ +

+ Add reference pages diameter_codec(3) and + diameter_make(3).

+

+ Own Id: OTP-10471

+
+ +

+ Add events for service start and stop.

+

+ Own Id: OTP-10492

+
+ +

+ Add transport_opt() 'disconnect_cb' to make the sending + of DPR configurable.

+

+ Whether or not DPR should be sent at application stop, + service stop or transport removal is determined by the + value returned by the callback, as is the + Disconnect-Cause and timeout if DPA is not received.

+

+ Own Id: OTP-10493

+
+ +

+ Add transport_opt() 'capx_timeout' for the timeout + associated with non-reception of CER/CEA.

+

+ Own Id: OTP-10554

+
+ +

+ Allow a handle_request callback to return a + #diameter_packet{}.

+

+ This allows an answer to set transport_data and header + fields.

+

+ Own Id: OTP-10566

+
+ +

+ Update documentation for RFC 6733.

+

+ RFC 3588 is now obsolete.

+

+ Own Id: OTP-10568

+
+
+
+ +
+
Diameter 1.2
Fixed Bugs and Malfunctions -- cgit v1.2.3