[[PageOutline(2-4)]] = Extensions = == Introduction == The {{{freeDiameter}}} framework is able to load ''extensions'' when it starts. The framework alone only provides support for Diameter Base Protocol (RFC3588) which is common to all Diameter peers. But this Base protocol by itself is only useful to establish and maintain a secure and reliable Diameter transport network. One then needs ''Diameter applications'' that are deployed on this Diameter network. Examples of applications are Diameter EAP (RFC4072), Diameter SIP (RFC4740), etc. freeDiameter extensions are used to implement Diameter applications, but not limited to this. Extensions can also be used to extend the behavior of the framework in term of routing, peers management, and so on. See the list of extensions bellow in this page for more information. == What is an extension == A {{{freeDiameter}}} extension is really simply a library compiled as shared object. This library must at the very least provide a symbol {{{fd_ext_init}}} which will be called when the framework loads the extension, to initialize it. See the [wiki:Developers] page for more information on how to create a new extension. Extension files are usually renamed as ".fdx" (FreeDiameter eXtension) to easily recognize them. See the [wiki:Configuration] file for instructions on how to load an extension from the framework. == List of extensions == (Please remember that all extensions are not built by default. Check the [wiki:Installation] page for information on how to select extensions to build. === Applications === [wiki:app_acct.fdx]:: Very simple server implementation for the Diameter Base Accounting application (RFC3588). It dumps the received information in a local PostgreSQL database in a fully configurable format. A separate application (not Diameter-dependent) can then pick and process this data. [wiki:app_diameap.fdx]:: A Diameter EAP server (RFC4072) implementation that supports several EAP methods for authenticating the users. [wiki:app_radgw.fdx]:: An extensible Diameter/RADIUS gateway implementation. [wiki:app_redirect.fdx]:: A configurable Diameter Redirect agent. [wiki:app_sip.fdx]:: An implementation of the Diameter SIP specification (RFC4740). === Server === [wiki:acl_wl.fdx]:: White-list some peers to connect to the local system. By default, all remote Diameter Id's must be explicitly listed in the configuration. This extension allows wildcards to be used (for example allow all peers from *.domain.net to connect). === Routing === [wiki:rt_default.fdx]:: Configure the routing table of the local peer. [wiki:rt_ereg.fdx]:: Route Diameter messages according to an AVP value in the message matching some configurable regular expressions. [wiki:rt_redirect.fdx]:: Handle Diameter Redirect indications and add routing rules accordingly. === Dictionary === [wiki:dict_eap.fdx]:: Dictionary objects defined in RFC4072 (Diameter EAP application). [wiki:dict_legacy_xml.fdx]:: Allows the use of XML dictionary files, the format used by OpenDiameter. [wiki:dict_mip6a.fdx], [wiki:dict_mip6i.fdx], [wiki:dict_nas_mipv6.fdx], [wiki:dict_rfc5777.fdx]:: Dictionary objects related to IPv6 mobility. [wiki:dict_nasreq.fdx]:: Dictionary objects defined in RFC4005 (Diameter Network Access Server application). [wiki:dict_rfc5580.fdx]:: Dictionary objects defined in RFC5580 (Location Objects). [wiki:dict_sip.fdx]:: Dictionary objects defined in RFC4740 (Diameter SIP application). === Debug and tests === [wiki:dbg_interactive.fdx]:: Run python code and interact with the framework, "live" or from a batch file. [wiki:dbg_monitor.fdx]:: Monitor the state of freeDiameter daemon. [wiki:dbg_rt.fdx]:: Display information about messages routing. [wiki:test_acct.fdx]:: A dummy Diameter Base Accounting server that simply acknowledges any message without any storage. [wiki:test_app.fdx]:: The Test application extension, a kind of "ping for freeDiameter". [wiki:test_netemul.fdx]:: A kind of Diameter network emulator: introduces configurable delays and duplicates when relaying Diameter messages. [wiki:test_rt_any.fdx]:: Pick a random peer to send the message to, without any concern for routing AVPs. [wiki:test_sip.fdx]:: A dummy Diameter SIP server used for testing of the app_sip.fdx extension. ----