Age | Commit message (Collapse) | Author |
|
|
|
* anders/diameter/testsuites/OTP-9829: (21 commits)
Install example dictionaries
Move example code to examples/code
Move example dictionaries to examples/dict
Set name/prefix at compilation, not in dictionaries
Add RFC 4004 (MIP) dictionary
Add RFC 4740 (SIP) dictionary
Add RFC 4072 (EAP) dictionary
Add RFC 4006 (CC) dictionary
Add RFC 4005 (NAS) dictionary
Add standards testcase to compiler suite
Remove {init,end}_per_group workaround
Use new syntax for specifying ct group properties
Increase timetrap in compiler suite
Minor capx suite tweaks
Minor makefile tweak
Remove trailing whitespace
Update skip condition in gen_sctp suite
Reintroduce gen_sctp suite
Remove delay from connect in transport suite
Add codec testcase for decode of unknown AVPs
...
|
|
* anders/diameter/compilation_options/OTP-9826:
Allow module name mapping at dictionary compilation
Fix blunder that broke name/prefix compilation options
|
|
|
|
|
|
This is to make the 'inherits' option usable with dictionaries
that inherit specific AVPs. Something like "diameterc -inherts from/to"
effectively replaces "@inherits from" in the source dictionary with
"@inherits to".
|
|
|
|
In particular, not before the service process has a monitor on
the watchdog since the watchdog's exit reason is meaningful.
|
|
* anders/diameter/suites_and_dialyzer/OTP-9781:
Tell dialyzer not to warn about unused functions
Add compiler testcases for generation and compilation to beam
Fix semantic checks on AVP qualifiers
Minor codegen/debug fix
Deal with crypto:start() failure in TLS suite
Don't assume empty sndrcvinfo in diameter_sctp
|
|
Depending on the dictionary, generated dictionary modules may contain
unused functions included from diameter_gen.hrl. There may still be
warnings however since even used functions can contain code that
isn't reached for a given dictionary.
It would be useful for diameter to generate spec attributes for
a dictionary's generated records but the format of these is currently
undocumented.
|
|
Didn't quite interpret '*' as RFC 3588 dictates. In particular, the
interpretation depends on what's being qualified, a required, optional
or fixed AVP.
|
|
Writing a dictionary to file failed.
|
|
* anders/diameter/suites_and_dialyzer/OTP-9781:
Minor diameter_dict_scanner fix
Skip sctp tests on {error, esocktnosupport}
Ensure that TLS will be available in TLS suite
|
|
* anders/diameter/callback_redirection/OTP-9777:
Update documentation
Use diameter_callback in relay and tls suites
Use diameter_callback in failover suite
Update app suite
Smarter diameter_callback
|
|
* anders/diameter/dict_error_identification/OTP-9639: (27 commits)
Update documentation
Improve base_rfc3588.dia formatting
Make typo fix backwards compatible
Fix base_rfc3588.dia typo
Check compiler dependencies in app suite
Move type definitions into diameter.erl
Fix interpretation of vendor id in @grouped
Add range checks on dictionary integers
Don't explicitly load inherited modules
Tweak diameter_make interface
Add format testcase to compiler suite
Add diameter_dict_util:format/1 for reconstructing a dictionary file
Make diameter_types usable with @codecs
Minor codegen tweaks
Remove unnecessary includes
Add compiler suite
Update app suite
Update codec suite
Vendor id fixes
No longer inherit common dictionary in relay dictionary
...
|
|
It isn't always the case. The information isn't currently used in
any case.
|
|
Spec was wrong. Scanning a file that ended with $' or contained an
empty $'-delimited string would have failed.
|
|
The module was originally just intended as a minimal callback
implementation that could be used as a template. Being able to order
just a subset of callbacks (with reasonable defaults) makes for
simpler code in many cases however so ready support for this can be
useful.
|
|
|
|
Also, add better definitions for Termination-Cause so as to avoid
grotesquely long macro names in the generated hrl, and for consistency
with other enums. That said, the names are still too long to be very
practical.
|
|
|
|
|
|
A value is required to be the same as any specified with
@avp_vendor_id but otherwise the two locations are equivalent.
Both possibilities are allowed since @avp_vendor_id is required
for AVPs of types other than Grouped (modulo it not really needing
to exist at all: see commit 943266c9) and since the grammar parsed
in @grouped (from RFC 3588) allows it.
|
|
Check that values that should be Unsigned32 actually are.
|
|
Just use include options to add to the code path and expect that
dependent modules will either already have been loaded or will be
loaded dynamically, thereby avoiding having a module being left as
both current and old code when compiling concurrently. Not a problem
for a human user interactively compiling one module at a time
but the compiler test suite for one will compile concurrently.
In any case, leaving behind old code is probably not what someone
would expect while relying on the code path probably is.
|
|
|
|
|
|
|
|
|
|
@vendor is only required if the id is actually needed. That is, if
there is a locally defined AVP whose V flag is set and which does
not have a vendor id set by @avp_vendor_id.
Also, in the case of an inherited AVP, fix avp_name/2 in a generated
dictionary module defaulting vendor id from @vendor in the inheriting
dictionary but avp_header/1 defaulting it from the inherited dictionary.
In both cases the vendor id now defaults from @vendor in the inherited
dictionary.
Note that @avp_vendor_id from the inherited dictionary is
ignored: any changes from @vendor have to be explicit in the
inheriting dictionary. A better alternative to @avp_vendor_id
is to simply inherit from dictionaries setting the appropriate
@vendor but this was previously somewhat broken so @avp_vendor_id
was needed to set the id of an AVP whose definition was copied
from another source into a dictionary that only inherited from
the common dictionary (which doesn't set V on any AVPs).
|
|
Base AVPs used for relaying and statistics are always taken from the
common dictionary. This is consistent with the way that Route-Record
is handled for one, and statistics should not rely on the dictionary
of any specific application.
|
|
|
|
A dictionary need define neither messages nor grouped AVPs, in
which case no record definitions are generated. However, the
generated module still includes diameter_gen.hrl and this
requires some functions diameter_exprecs would otherwise insert,
even if the code that uses these will not be called.
|
|
|
|
Errors are now detected after the parse with format_error/1
providing understandable error messages, pointing to the
offending line number(s) in the dictionary source.
|
|
The previous parse was very adhoc and simply crashed on any kind
of input error, providing no identification of the objectionable input
that caused the parse to fail. The new parser is generated from a yecc
grammar, making it easier both to understand what it is that's being
parsed and to provide useful diagnostics to the user in case of error.
|
|
This caused transport processes to be restarted even though
diameter:remove_transport/2 had removed their configuration from table.
|
|
|
|
|
|
In diameter_service:
make_packet -> make_request_packet
make_header -> make_request_header
make_reply_packet -> make_answer_packet
|
|
If a peer fsm process exits then the exit reason is received by
the service process in a 'DOWN' message. If the reason is the one
generated by diameter_peer_fsm:close/2, which is called to signal
a non-transport failure before the completion of capabilities exchange
(eg. receiving an unsuccessful CEA), then an event is sent to any
subscribers.
Also, tweak capabilities_cb return values for more informative
event data.
|
|
Value is a function that's applied to the transport reference
and capabilities record after capabilities exchange. If a callback
returns anything but 'ok' then the connection is closed. In the case
of an incoming CER, the callback can return a result code with which
to answer. Multiple callbacks can be specified and are applied until
either all return 'ok' or one doesn't.
Also, include Origin-State-Id in answers where it was previously
omitted.
|
|
We're already monitoring the transport process, no need to do
so again.
|
|
|
|
|
|
|
|
|
|
Tweak some comments and variable names, move things around a bit
(default src target is now opt, not debug), only clean what's built,
use +warn_export_vars.
|
|
Otherwise include_lib will fail.
|
|
|