From 5a5b1d91c8cc913c6d049e113ceedc4746d2ba8e Mon Sep 17 00:00:00 2001
From: Anders Svensson
Invoked as a consequence of a call to
The candidate peers list will only include those @@ -301,6 +297,19 @@ marker="#pick_peer">pick_peer/4 will be, since a retransmission to an alternate peer is abandoned if an answer is received from a previously selected peer.
+
+
Basic usage consists of creating a representation of a
-locally implemented Diameter peer and its capabilities with
Types corresponding to RFC 3588 AVP Data Formats.
-Defined in
An unique identifier for the application in the scope of the
@@ -166,7 +167,7 @@ documented in
A callback module with which messages of the Diameter application are @@ -253,7 +254,7 @@ itself. Multiple options append to the argument list.
A filter to apply to the list of available peers before passing them to
@@ -264,7 +265,7 @@ corresponding list of filters.
Defaults to
The number of milliseconds after which the request should @@ -304,19 +305,19 @@ precedence over the former.
Value of the Origin-Host AVP in outgoing messages.
Value of the Origin-Realm AVP in outgoing messages.
Values of Host-IP-Address AVPs. @@ -325,26 +326,25 @@ Optional.
The list of addresses is available to the start function of a
transport module, which either uses them as is or returns a new list
-(typically as configured as
Value of the Vendor-Id AVP sent in an outgoing capabilities exchange message.
Value of the Product-Name AVP sent in an outgoing capabilities exchange message.
Value of Origin-State-Id to be included in outgoing messages sent by @@ -361,7 +361,7 @@ can be used as to retrieve a value that is set when the diameter application is started.
Values of Supported-Vendor-Id AVPs sent in an outgoing @@ -369,7 +369,7 @@ capabilities exchange message. Optional, defaults to the empty list.
Values of Auth-Application-Id AVPs sent in an outgoing @@ -377,7 +377,7 @@ capabilities exchange message. Optional, defaults to the empty list.
Values of Inband-Security-Id AVPs sent in an outgoing @@ -390,7 +390,7 @@ If 1 (= TLS) is specified then TLS is selected if the CER/CEA received from the peer offers it.
Values of Acct-Application-Id AVPs sent in an outgoing @@ -398,7 +398,7 @@ capabilities exchange message. Optional, defaults to the empty list.
Values of Vendor-Specific-Application-Id AVPs sent in @@ -406,7 +406,7 @@ an outgoing capabilities exchange message. Optional, defaults to the empty list.
Value of the Firmware-Revision AVP sent in an outgoing capabilities
@@ -490,41 +490,42 @@ or any peer if the request does not contain
a
Matches only those peers whose
Matches only those peers whose
-Matches only those peers for which the specified evaluable() returns
+Matches only those peers for which the specified
Matches only those peers not matched by the specified filter.
Matches only those peers matched by each filter of the specified list.
Matches only those peers matched by at least one filter of the @@ -536,10 +537,11 @@ specified list.
Note that the
-Ref = transport_ref()
-Peer = diameter_app:peer()
-Config = {connect|listen, [transport_opt()]}
+Ref = transport_ref()
+Peer = diameter_app:peer()
+Config = {connect|listen, [transport_opt() ]}
Pkt = #diameter_packet{}
@@ -587,8 +589,8 @@ connectivity.
Note that a single up/down event for a given peer corresponds to
as many
-Ref = transport_ref()
-Opts = [transport_opt()]
+Ref = transport_ref()
+Opts = [transport_opt() ]
@@ -610,8 +612,8 @@ transport connection with a peer following
@@ -627,7 +629,7 @@ Result = ResultCode | {capabilities_cb, CB, ResultCode|discard}
Caps = #diameter_caps{}
Pkt = #diameter_packet{}
ResultCode = integer()
-CB = evaluable()
+CB =
@@ -732,12 +734,12 @@ that is somewhat unique.
Options accepted by
Defines a Diameter application supported by the service.
-Ref = transport_ref()
-Config = {connect|listen, [transport_opt()]}
+Ref =
A term passed as the third argument to the
The list of Diameter applications to which usage of the transport should be restricted. Defaults to all applications configured on the service -in question.
+in question. +Must only specify applications defined on the service to which +the transport is added.
AVP's used to construct outgoing CER/CEA messages.
@@ -843,7 +848,7 @@ not over SCTP as implemented by
A callback invoked upon reception of CER/CEA during capabilities
@@ -871,7 +876,7 @@ case the corresponding callbacks are applied until either all return
-TwInit = Unsigned32()
+TwInit =
@@ -892,7 +897,7 @@ Defaults to 30000 if unspecified.
-Tc = Unsigned32()
+Tc = Unsigned32()
@@ -911,11 +916,12 @@ causing the RFC 3539 state machine to pass to state OPEN rather than REOPEN. Note that these semantics are not goverened by the RFC and that a listening transport's reconnect_timer should be greater than its -peers's Tc plus jitter.
+peer's Tc plus jitter.Defaults to 30000 for a connecting transport and 60000 for a listening transport.
+
+An reference returned by
-The service will start a transport process(es) in order to establish a
-connection with the peer, either by connecting to the peer
+The service will start transport processes as required in order to
+establish a connection with the peer, either by connecting to the peer
(
@@ -1112,7 +1127,7 @@ transport.
@@ -1121,7 +1136,7 @@ outgoing messages.
The value returned is the number of seconds since 19680120T031408Z,
-the first value that can be encoded as a Diameter Time(),
+the first value that can be encoded as a Diameter
-Pred = fun(reference(), list()): fun(Ref, _, Opts) -> Pred(Ref, Opts) end
-Pred = fun(list()): fun(_, _, Opts) -> Pred(Opts) end
-Pred = reference(): fun(Ref, _, _) -> Pred == Ref end
-Pred = list(): fun(_, _, Opts) -> [] == Pred -- Opts end
-Pred = true: fun(_, _, _) -> true end
-Pred = false: fun(_, _, _) -> false end
+Pred = fun(transport_ref(), list()): fun(Ref, _, Opts) -> Pred(Ref, Opts) end
+Pred = fun(list()): fun(_, _, Opts) -> Pred(Opts) end
+Pred = transport_ref(): fun(Ref, _, _) -> Pred == Ref end
+Pred = list(): fun(_, _, Opts) -> [] == Pred -- Opts end
+Pred = true: fun(_, _, _) -> true end
+Pred = false: fun(_, _, _) -> false end
Pred = {M,F,A}: fun(Ref, Type, Opts) -> apply(M, F, [Ref, Type, Opts | A]) end
@@ -1186,7 +1201,7 @@ DPA or timeout.
@@ -1216,10 +1231,10 @@ Return the list of started services.
@@ -1244,7 +1259,7 @@ Start the diameter application.
The diameter application must be started before starting a service.
-In a production system this will typically be accomplished by a boot
+In a production system this is typically accomplished by a boot
file, not by calling
-A service defines a locally-implemented Diameter peer, specifying the
-capabilities of the peer to be used during capabilities exchange and
+A service defines a locally-implemented Diameter node, specifying the
+capabilities of the node to be used during capabilities exchange and
the Diameter applications that it supports.
Transports are added to a service using
+A transport can both override its service's +capabilities and restrict its supported Diameter applications so +"service = Diameter node as identified by Origin-Host" is not +necessarily the case.
+
-Subscribe to
It is not an error to subscribe to events from a service -that does not yet exist.
+that does not yet exist. +Doing so before adding transports is required to guarantee the +reception of all related events.
diff --git a/lib/diameter/doc/src/diameter_app.xml b/lib/diameter/doc/src/diameter_app.xml
index a786443fa1..6e5c957eec 100644
--- a/lib/diameter/doc/src/diameter_app.xml
+++ b/lib/diameter/doc/src/diameter_app.xml
@@ -45,8 +45,8 @@ A diameter service as started by
A record containing the identities of
-the local and remote Diameter peers having an established transport
+the local Diameter node and the remote Diameter peer having an established transport
connection, as well as the capabilities as
determined by capabilities exchange.
Each field of the record is a 2-tuple consisting of
@@ -119,6 +121,8 @@ Optional or possibly multiple values are encoded as lists of values,
mandatory values as the bare value.
@@ -149,6 +153,8 @@ are sent exactly as specified.
@@ -158,6 +164,8 @@ Fields of a packet() record should not be set in return values except
as documented.
@@ -165,12 +173,16 @@ A term identifying a transport connection with a Diameter peer.
Should be treated opaquely.
A tuple representing a Diameter peer connection.
@@ -180,6 +192,8 @@ marker="diameter#start_service">diameter:start_service/2
when starting the service.
@@ -211,9 +225,9 @@ process.
@@ -230,9 +244,9 @@ the callback module in question has been configured.
@@ -248,10 +262,10 @@ call to
@@ -278,7 +292,8 @@ equivalent when callback state is mutable, as are
@@ -334,13 +349,13 @@ callback need not be limited to this usage.
Many implementations may simply want to return
-A returned packet() should set the request to be encoded in its
+A returned
@@ -375,7 +390,7 @@ Invoked to return a request for encoding and retransmission.
Has the same role as
@@ -394,10 +409,10 @@ discarded}.
The decoded answer record is in the
@@ -501,13 +516,13 @@ itself as defining either the application in question or the Relay application.
-The argument packet() has the following signature.
+The argument
#diameter_packet{header = #diameter_header{},
avps = [#diameter_avp{}],
msg = record() | undefined,
- errors = ['Unsigned32'() | {'Unsigned32'(), #diameter_avp{}}],
+ errors = [Unsigned32() | {Unsigned32() , #diameter_avp{}}],
bin = binary(),
transport_data = term()}
@@ -524,8 +539,8 @@ The Send the specified answer message to the peer.
diff --git a/lib/diameter/doc/src/diameter_sctp.xml b/lib/diameter/doc/src/diameter_sctp.xml index c1e839b8e1..03e2f1f6be 100644 --- a/lib/diameter/doc/src/diameter_sctp.xml +++ b/lib/diameter/doc/src/diameter_sctp.xml @@ -58,11 +58,11 @@ and implements the behaviour documented in
If the service specifies more than one Host-IP-Address and
-option
diff --git a/lib/diameter/doc/src/diameter_transport.xml b/lib/diameter/doc/src/diameter_transport.xml index 087a90b099..4ed02e3881 100644 --- a/lib/diameter/doc/src/diameter_transport.xml +++ b/lib/diameter/doc/src/diameter_transport.xml @@ -59,11 +59,11 @@ parent).
-Ref = transport_ref()
-PeerRef = diameter_app:peer_ref()
+Ref = transport_ref()
+PeerRef = diameter_app:peer_ref()
From, To = initial | okay | suspect | down | reopen
Config = {connect|listen, [transport_opt()]}
--
cgit v1.2.3
From e72579c29bd86bb104f1855d6eebcf8677038f2f Mon Sep 17 00:00:00 2001
From: Anders Svensson -Return information about a started service.
+Return information about a started service. +
+Return a capability value as configured on the service at
+Return the list of applications configured on the service at
+Return a tagged list of all capabilities values configured on the service
+at
+Return a list containing one entry for every transport configured on
+the service with
+[[{ref,#Ref<0.0.0.93>},
+ {type,connect},
+ {options,[{transport_module,diameter_tcp},
+ {transport_config,[{ip,{127,0,0,1}},
+ {raddr,{127,0,0,1}},
+ {rport,3868},
+ {reuseaddr,true}]}]},
+ {watchdog,{<0.66.0>,{1346,171491,996448},okay}},
+ {peer,{<0.67.0>,{1346,171491,999906}}},
+ {apps,[{0,common}]},
+ {caps,[{origin_host,{"client.example.com","server.example.com"}},
+ {origin_realm,{"example.com","example.com"}},
+ {host_ip_address,{[{127,0,0,1}],[{127,0,0,1}]}},
+ {vendor_id,{0,193}},
+ {product_name,{"Client","Server"}},
+ {origin_state_id,{[],[]}},
+ {supported_vendor_id,{[],[]}},
+ {auth_application_id,{[0],[0]}},
+ {inband_security_id,{[],[0]}},
+ {acct_application_id,{[],[]}},
+ {vendor_specific_application_id,{[],[]}},
+ {firmware_revision,{[],[]}},
+ {avp,{[],[]}}]},
+ {port,[{owner,<0.69.0>},
+ {module,diameter_tcp},
+ {socket,{{127,0,0,1},48758}},
+ {peer,{{127,0,0,1},3868}},
+ {statistics,[{recv_oct,656},
+ {recv_cnt,6},
+ {recv_max,148},
+ {recv_avg,109},
+ {recv_dvi,19},
+ {send_oct,836},
+ {send_cnt,6},
+ {send_max,184},
+ {send_avg,139},
+ {send_pend,0}]}]},
+ {statistics,[{{{0,258,0},recv},3},
+ {{{0,258,1},send},3},
+ {{{0,257,0},recv},1},
+ {{{0,257,1},send},1},
+ {{{0,258,0},recv,{'Result-Code',2001}},3},
+ {{{0,280,1},recv},2},
+ {{{0,280,0},send},2}]}]]
+
+
+
+Here
+Note that
+A listening transport presents its information slightly differently
+since there may be multiple accepted connections for the same
+[[{ref,#Ref<0.0.0.61>},
+ {type,listen},
+ {options,[{transport_module,diameter_tcp},
+ {transport_config,[{reuseaddr,true},
+ {ip,{127,0,0,1}},
+ {port,3868}]}]},
+ {accept,[[{watchdog,{<0.56.0>,{1346,171481,226895},okay}},
+ {peer,{<0.58.0>,{1346,171491,999511}}},
+ {apps,[{0,server}]},
+ {caps,[{origin_host,{"server.example.com","client.example.com"}},
+ {origin_realm,{"example.com","example.com"}},
+ {host_ip_address,{[{127,0,0,1}],[{127,0,0,1}]}},
+ {vendor_id,{193,0}},
+ {product_name,{"Server","Client"}},
+ {origin_state_id,{[],[]}},
+ {supported_vendor_id,{[],[]}},
+ {auth_application_id,{[0],[0]}},
+ {inband_security_id,{[],[]}},
+ {acct_application_id,{[],[]}},
+ {vendor_specific_application_id,{[],[]}},
+ {firmware_revision,{[],[]}},
+ {avp,{[],[]}}]},
+ {port,[{owner,<0.62.0>},
+ {module,diameter_tcp},
+ {socket,{{127,0,0,1},3868}},
+ {peer,{{127,0,0,1},48758}},
+ {statistics,[{recv_oct,1576},
+ {recv_cnt,16},
+ {recv_max,184},
+ {recv_avg,98},
+ {recv_dvi,26},
+ {send_oct,1396},
+ {send_cnt,16},
+ {send_max,148},
+ {send_avg,87},
+ {send_pend,0}]}]}],
+ [{watchdog,{<0.72.0>,{1346,171491,998404},initial}}]]},
+ {statistics,[{{{0,280,0},recv},7},
+ {{{0,280,1},send},7},
+ {{{0,258,0},send,{'Result-Code',2001}},3},
+ {{{0,258,1},recv},3},
+ {{{0,258,0},send},3},
+ {{{0,280,1},recv},5},
+ {{{0,280,0},send},5},
+ {{{0,257,1},recv},1},
+ {{{0,257,0},send},1}]}]]
+
+
+
+The information presented here is as in the
+Return a list containing one entry for every established transport
+connection whose watchdog state machine is not in the
+[[{ref,#Ref<0.0.0.61>},
+ {type,accept},
+ {options,[{transport_module,diameter_tcp},
+ {transport_config,[{reuseaddr,true},
+ {ip,{127,0,0,1}},
+ {port,3868}]}]},
+ {watchdog,{<0.56.0>,{1346,171481,226895},okay}},
+ {peer,{<0.58.0>,{1346,171491,999511}}},
+ {apps,[{0,server}]},
+ {caps,[{origin_host,{"server.example.com","client.example.com"}},
+ {origin_realm,{"example.com","example.com"}},
+ {host_ip_address,{[{127,0,0,1}],[{127,0,0,1}]}},
+ {vendor_id,{193,0}},
+ {product_name,{"Server","Client"}},
+ {origin_state_id,{[],[]}},
+ {supported_vendor_id,{[],[]}},
+ {auth_application_id,{[0],[0]}},
+ {inband_security_id,{[],[]}},
+ {acct_application_id,{[],[]}},
+ {vendor_specific_application_id,{[],[]}},
+ {firmware_revision,{[],[]}},
+ {avp,{[],[]}}]},
+ {port,[{owner,<0.62.0>},
+ {module,diameter_tcp},
+ {socket,{{127,0,0,1},3868}},
+ {peer,{{127,0,0,1},48758}},
+ {statistics,[{recv_oct,10124},
+ {recv_cnt,132},
+ {recv_max,184},
+ {recv_avg,76},
+ {recv_dvi,9},
+ {send_oct,10016},
+ {send_cnt,132},
+ {send_max,148},
+ {send_avg,75},
+ {send_pend,0}]}]},
+ {statistics,[{{{0,280,0},recv},62},
+ {{{0,280,1},send},62},
+ {{{0,258,0},send,{'Result-Code',2001}},3},
+ {{{0,258,1},recv},3},
+ {{{0,258,0},send},3},
+ {{{0,280,1},recv},66},
+ {{{0,280,0},send},66},
+ {{{0,257,1},recv},1},
+ {{{0,257,0},send},1}]}]]
+
+
+
+Note that there may be multiple entries with the same
+Return a
-This module provides the interface with which a user -creates a service that sends and receives messages using the +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.
@@ -61,17 +61,15 @@ marker="diameter_app">diameter_app(3) callback modules as specified in the service configuration.
-Beware the difference between diameter application and -Diameter application. +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 an application of the Diameter -protocol in the sense of RFC 3588. -More generally, capitalized Diameter refers to the RFC -and diameter to this implementation.
+api is defined here, the latter to Diameter protocol in the sense of +RFC 3588.-The diameter application must be started before calling functions in -this module.
+The diameter application must be started before calling most functions +in this module.
A name identifying a Diameter application in
-service configuration passed to
Specifying a
-Options defining a Diameter application as configured in an
-
An unique identifier for the application in the scope of the
service.
-Optional, defaults to the value of the
-A callback module with which messages of the Diameter application are
+The callback module with which messages of the Diameter application are
handled.
See
The initial callback state.
-Defaults to the value of the
Specifies whether or not the
-Note that
Options available to
Extra arguments to append to callbacks to the callback module in question. -These are appended to any extra arguments configured with the callback +These are appended to any extra arguments configured on the callback itself. Multiple options append to the argument list.
-AVP values used in outgoing CER/CEA messages during capabilities exchange. -Can be configured both on a service and a transport, the latter taking -precedence over the former.
+AVP values sent in outgoing CER or CEA messages during capabilities +exchange. +Can be configured both on a service and a transport, values specified +on the latter taking precedence over any specified on the former. +Has one of the following types.-Value of the Origin-Host AVP in outgoing messages.
--Value of the Origin-Realm AVP in outgoing messages.
--Values of Host-IP-Address AVPs. -Optional.
- --The list of addresses is available to the start function of a -transport module, which either uses them as is or returns a new list -in order for the correct list of addresses to be sent in capabilities -exchange messages.
+An address list is available to the start function of a +-Value of the Vendor-Id AVP sent in an outgoing capabilities -exchange message.
--Value of the Product-Name AVP sent in an outgoing capabilities -exchange message.
--Value of Origin-State-Id to be included in outgoing messages sent by -diameter itself. -In particular, the AVP will be included in CER/CEA and DWR/DWA messages. -Optional.
- -
+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
-Values of Supported-Vendor-Id AVPs sent in an outgoing -capabilities exchange message. -Optional, defaults to the empty list.
--Values of Auth-Application-Id AVPs sent in an outgoing -capabilities exchange message. -Optional, defaults to the empty list.
--Values of Inband-Security-Id AVPs sent in an outgoing -capabilities exchange message. -Optional, defaults to the empty list, which is equivalent to a -list containing only 0 (= NO_INBAND_SECURITY).
- -+Inband-Security-Id defaults to the empty list, which is equivalent to a +list containing only 0 (= NO_INBAND_SECURITY). If 1 (= TLS) is specified then TLS is selected if the CER/CEA received from the peer offers it.
-Values of Acct-Application-Id AVPs sent in an outgoing -capabilities exchange message. -Optional, defaults to the empty list.
--Values of Vendor-Specific-Application-Id AVPs sent in -an outgoing capabilities exchange message. -Optional, defaults to the empty list.
--Value of the Firmware-Revision AVP sent in an outgoing capabilities -exchange message. -Optional.
-
-Beware of using local funs (that is, fun expressions not of the
-form
Matches only those peers whose
Matches only those peers for which the specified
-Matches only those peers matched by each filter of the specified list.
+Matches only those peers matched by each filter in the specified list.-Matches only those peers matched by at least one filter of the +Matches only those peers matched by at least one filter in the specified list.
-Note that the
-An invalid filter is equivalent to
-Event message sent to processes that have subscribed using
-The
The RFC 3539 watchdog state machine has
-transitioned into (
-Note that a single up/down event for a given peer corresponds to
-as many
A connecting transport is attempting to establish/reestablish a
-transport connection with a peer following
-Capabilities exchange has failed.
An incoming CER has been answered with the indicated result code or
discarded.
-The capabilities record contains pairs of values for the the local
-node and remote peer.
-The packet record contains the CER in question.
+
An incoming CER contained errors and has been answered with the indicated result code. -The capabilities record contains only values for the the local -node. -The packet record contains the CER in question.
+-An incoming CER contained errors and has been rejected. -The capabilities record contains only values for the the local node. -The packet record contains the CEA in question.
+An incoming CEA contained errors and has been rejected. +
-Options accepted by
-A service must define one application for each Diameter application it
-intends to support.
-For an outgoing Diameter request, the application is specified by
-passing the desired application's
-Options accepted by
-The interface required of a transport module is documented in
Multiple
-The list of Diameter applications to which usage of the transport -should be restricted. -Defaults to all applications configured on the service -in question. -Must only specify applications defined on the service to which -the transport is added.
+The list of Diameter applications to which the transport should be +restricted. +Defaults to all applications configured on the service in question. +Applications not configured on the service in question are ignored.AVP's used to construct outgoing CER/CEA messages. -Any AVP specified takes precedence over a corresponding value specified -for the service in question.
+Values take precedence over any specified on the service in +question.
Specifying a capability as a transport option
-may be particularly appropriate for Inband-Security-Id in case
+may be particularly appropriate for Inband-Security-Id, in case
TLS is desired over TCP as implemented by
-
An integer value must be at least 6000 as required by RFC 3539. Defaults to 30000 if unspecified.
+ +For a connecting transport, the RFC 3588 Tc timer, in milliseconds. -Note that this timer determines the frequency with which the transport +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 connection it's watchdog_timer that determines the frequency of @@ -915,8 +842,8 @@ regarded as an initial connection rather than a reestablishment, causing the RFC 3539 state machine to pass to state OPEN rather than REOPEN. Note that these semantics are not goverened by the RFC and -that a listening transport's reconnect_timer should be greater than its -peer's Tc plus jitter.
+that a listening transport'sDefaults to 30000 for a connecting transport and 60000 for a listening @@ -954,12 +881,12 @@ identifies the configuration.
The returned reference uniquely identifies the transport within the scope of the service. Note that the function returns before a transport connection has been -established. +established.
+ +It is not an error to add a transport to a service that has not yet been configured: a service can be started after configuring -transports.
+its transports. +-Send a Diameter request message and possibly return the answer or error.
+Send a Diameter request message.
-
If there are no suitable peers, or if
There are several error cases which may prevent an @@ -1056,7 +986,7 @@ callback:
If the initial encode of the outgoing request
-fails, then the request process fails and
If an encode error takes place during
retransmission then the request process fails and
-
-Note that
@@ -1183,7 +1113,7 @@ Pred = {M,F,A}: fun(Ref, Type, Opts) -> apply(M, F, [Ref, Type, Opts | A]) end
Removing a transport causes all associated transport connections to
be broken.
-A base application DPR message with
+A DPR message with
Disconnect-Cause DO_NOT_WANT_TO_TALK_TO_YOU will be sent
to each connected peer before disassociating the transport configuration
from the service and terminating the transport upon reception of
@@ -1198,10 +1128,12 @@ DPA or timeout.
-service_info(SvcName, Item) -> term()
+service_info(SvcName, Info) -> term()
Return information about a started service.
SvcName = service_name()
+Info = Item | [Info]
+Item = atom()
@@ -1224,16 +1156,14 @@ Return information about a started service.
'Firmware-Revision'
-
-Return a capability value as configured on the service at start_service/2 .
-Note that all capabilities are returned in a tagged list with the
-capabilities item.
+Return a capability value as configured with start_service/2 .
applications
-
-Return the list of applications configured on the service at start_service/2 .
@@ -1241,22 +1171,22 @@ marker="#start_service">start_service/2.
capabilities
-
-Return a tagged list of all capabilities values configured on the service
-at start_service/2 .
transport
-
-Return a list containing one entry for every transport configured on
-the service with add_transport/2 .
Each entry is a tagged list containing both configuration and
information about established peer connections.
An example return value with for a client service with Origin-Host
-"client.example.com" configured with a single transport connected to "server.example.com"
-might look as follows.
+"client.example.com" configured with a single transport connected to
+"server.example.com" might look as follows.
[[{ref,#Ref<0.0.0.93>},
@@ -1306,21 +1236,20 @@ might look as follows.
-Here ref is the transport_ref() of the service's
-transport and options are as were passed to ref is a transport_ref() and options
+the corresponding transport_opt() list passed to add_transport/2 .
The watchdog entry shows the state of a connection's RFC 3539 watchdog
state machine.
The peer entry identifies the diameter_app:peer_ref() for
-which there will have been a peer_up callback for the
-Diameter applications negotiated during capabilities exchange, which
-are identified by the apps entry, common in this case
-being the application_alias() of this
-application with Application Id 0.
+which there will have been peer_up callbacks for the
+Diameter applications identified by the apps entry,
+common being the application_alias() .
The caps entry identifies the capabilities sent by the local
node and received from the peer during capabilities exchange.
The port entry displays socket-level information about the
@@ -1353,7 +1282,7 @@ connection might look as follows.
{port,3868}]}]},
{accept,[[{watchdog,{<0.56.0>,{1346,171481,226895},okay}},
{peer,{<0.58.0>,{1346,171491,999511}}},
- {apps,[{0,server}]},
+ {apps,[{0,common}]},
{caps,[{origin_host,{"server.example.com","client.example.com"}},
{origin_realm,{"example.com","example.com"}},
{host_ip_address,{[{127,0,0,1}],[{127,0,0,1}]}},
@@ -1419,7 +1348,7 @@ A return value for the server above might look as follows.
{port,3868}]}]},
{watchdog,{<0.56.0>,{1346,171481,226895},okay}},
{peer,{<0.58.0>,{1346,171491,999511}}},
- {apps,[{0,server}]},
+ {apps,[{0,common}]},
{caps,[{origin_host,{"server.example.com","client.example.com"}},
{origin_realm,{"example.com","example.com"}},
{host_ip_address,{[{127,0,0,1}],[{127,0,0,1}]}},
@@ -1481,6 +1410,12 @@ The Diameter-level statistics returned by transport and
+
+Requesting info for an unknown service causes undefined to be
+returned.
+Requesting a list of items causes a tagged list to be
+returned.
+
@@ -1554,8 +1489,7 @@ Start a diameter service.
A service defines a locally-implemented Diameter node, specifying the
-capabilities of the node to be used during capabilities exchange and
-the Diameter applications that it supports.
+capabilities to be advertised during capabilities exchange.
Transports are added to a service using add_transport/2 .
@@ -1599,6 +1533,19 @@ Stop the diameter application.
Stop a diameter service.
+
+Stopping a service causes all associated transport connections to be
+broken.
+A DPR message with be sent as in the case of remove_transport/2 .
+
+
+
+Stopping a transport does not remove any associated transports:
+remove_transport/2 must
+be called to remove transport configuration.
+
+
Subscribe to
diff --git a/lib/diameter/doc/src/diameter_app.xml b/lib/diameter/doc/src/diameter_app.xml
index 6e5c957eec..f6d53808f5 100644
--- a/lib/diameter/doc/src/diameter_app.xml
+++ b/lib/diameter/doc/src/diameter_app.xml
@@ -140,8 +140,8 @@ list of
A third representation allows a message to be specified as a list
-whose head is a
-A container for incoming and outgoing Diameters message that's passed +A container for incoming and outgoing Diameter messages that's passed through encode/decode and transport. -Fields of a packet() record should not be set in return values except -as documented.
+Fields should not be set in return values except as documented.-Transport processes for a given service are started sequentially.
- -
-The start function should use the 'Host-IP-Address' list on the service,
-namely
An outbound Diameter message.
-Packet can be either
Indication of whether or not capabilities exchange has selected
inband security using TLS.
-Ref is a reference() that must be included in the
+
-If TLS is requested (Bool = true) then a connecting process should
+If TLS is requested (
-Inform the parent that the transport process with Type = accept has
+Inform the parent that the transport process with
-Inform the parent that the transport process with Type = connect
+Inform the parent that the transport process with
An inbound Diameter message.
-Packet can be either
Acknowledgment of a successful TLS handshake.
-Ref is the reference() received in the
+
Multiple
+An insufficiently large receive buffer may result in a peer having to
+resend incoming messages: set the
+An insufficiently large send buffer may result in outgoing messages
+being discarded: set the
diameter_sctp uses the
-
-This module implements diameter transport over TCP using gen_tcp.
-It can be specified as the value of a transport_module option to
+This module implements diameter transport over TCP using
An
-If the service specifies more than one Host-IP-Address and
-option
The returned local address list has length one.
@@ -142,7 +150,10 @@ The returned local address list has length one.
-To be written.
Example code can be found in the diameter application's
-A Diameter peer is implemented by configuring a service and
+A Diameter node is implemented by configuring a service and
one or more transports using the interface module
-While a service typically implements a single Diameter peer (as +While a service typically implements a single Diameter node (as identified by an Origin-Host AVP), transports can themselves be -associated with capabilities AVP's so that a single service be used to -implement more than one Diameter peer.
+associated with capabilities AVP's so that a single service can be +used to implement more than one Diameter node.Each Diameter application defined on a service is configured with a @@ -76,19 +77,19 @@ diameter communicates the connectivity of remote peers, requests peer selection for outgoing requests, and communicates the reception of incoming Diameter request and answer messages. An application using diameter implements these application callback -modules to provide the functionality of the Diameter peer(s) it +modules to provide the functionality of the Diameter node(s) it implements.
-Each Diameter application is also configured with one or more
-dictionary modules
+Each Diameter application is also configured with a
+dictionary module
that provide encode/decode functionality for outgoing/incoming
-Diameter messages.
-A module is generated from a
-The diameterc utility is used to transform diameter
+The diameterc utility is used to compile diameter
-Transforms a single dictionary file. Valid options are as follows.
+Compiles a single dictionary file. Valid options are as follows. @@ -64,47 +64,36 @@ Defaults to the current working directory.
Specifies a directory to add to the code path.
-Use to point at beam files corresponding to dictionaries
-inherited by the one being compiled using
Multiple
-Supresses erl generation.
--Supresses hrl generation.
+Supresses erl and hrl generation, respectively.
-Set
-Set
-Append an
Multiple
-The identification of errors in the source file is poor.
- -
+An invalid filter is equivalent to
The
-An invalid filter is equivalent to
-Applying an evaluable()
-Matches only those peers for which the specified
The
An option passed to
A service must configure one
The value returned is the number of seconds since 19680120T031408Z,
-the first value that can be encoded as a Diameter
-Here
A listening transport presents its information slightly differently
-since there may be multiple accepted connections for the same
Return a
-Subscribe to
diff --git a/lib/diameter/doc/src/diameter_transport.xml b/lib/diameter/doc/src/diameter_transport.xml
index e852041278..f355107096 100644
--- a/lib/diameter/doc/src/diameter_transport.xml
+++ b/lib/diameter/doc/src/diameter_transport.xml
@@ -162,7 +162,7 @@ transport respectively.
connection should be upgraded to TLS.
-If TLS is requested (
An insufficiently large receive buffer may result in a peer having to
resend incoming messages: set the
An insufficiently large send buffer may result in outgoing messages
being discarded: set the
This module implements diameter transport over TCP using
-Note that the P flag has been deprecated by the Diameter Maintenance -and Extensions Working Group of the IETF: diameter will set the P flag -to 0 as mandated by the current draft standard.
+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. +Types corresponding to RFC 3588 AVP Data Formats. @@ -312,7 +313,7 @@ returns an address list.
@@ -731,7 +732,7 @@ corresponding timeout (see below) or all fail.
A term passed as the third argument to the
-The service supporting the Diameter application.
-Specified to