[[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" ('''f'''ree'''D'''iameter e'''X'''tension) 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#cmakeflags] 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 based on freeDiameter) 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 peers Diameter Identities must be explicitly listed in the configuration. This extension allows wildcards to be used (for example allow all peers "*.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 [http://diameter.sourceforge.net/ 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]:: Interact with the framework, "live" or from a batch file, from a [http://www.python.org/ Python] interpreter. [wiki:dbg_monitor.fdx]:: Monitor the state of freeDiameter framework by displaying periodical status information. [wiki:dbg_rt.fdx]:: Display information about messages routing (pertaining to the choice of route for each message). [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 or routing configuration. [wiki:test_sip.fdx]:: A dummy Diameter SIP server used for testing of the [wiki:app_sip.fdx] extension. ----