浏览代码

modules/ims_registrar_scscf: added outstanding documentation

Jason Penton 12 年之前
父节点
当前提交
820046b04c

+ 4 - 0
modules/ims_registrar_scscf/doc/Makefile

@@ -0,0 +1,4 @@
+docs = ims_registrar_scscf.xml
+
+docbook_dir = ../../../docbook
+include $(docbook_dir)/Makefile.module

+ 58 - 0
modules/ims_registrar_scscf/doc/ims_registrar_scscf.xml

@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+<!-- Include general documentation entities -->
+<!ENTITY % docentities SYSTEM "../../../docbook/entities.xml">
+%docentities;
+]>
+<book>
+  <bookinfo>
+    <title>IMS Usrloc PCSCF Module</title>
+
+    <productname class="trade">&kamailioname;</productname>
+
+    <authorgroup>
+      <author>
+        <firstname>Jason Penton</firstname>
+
+        <surname/>
+
+        <affiliation>
+          <orgname>Smile Communications</orgname>
+        </affiliation>
+
+        <address>
+			<email>[email protected]</email>
+		</address>
+      </author>
+
+      <editor>
+        <firstname>Richard</firstname>
+
+        <surname>Good</surname>
+        
+	<affiliation>
+          <orgname>Smile Communications</orgname>
+        </affiliation>
+
+        <address>
+			<email>[email protected]</email>
+		</address>
+      </editor>
+    </authorgroup>
+
+    <copyright>
+      <year>2012</year>
+
+      <holder>Smile Communications</holder>
+    </copyright>
+  </bookinfo>
+
+  <toc/>
+
+  <xi:include href="ims_registrar_scscf_admin.xml"
+              xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+  <xi:include href="ims_registrar_scscf_faq.xml"
+              xmlns:xi="http://www.w3.org/2001/XInclude"/>
+</book>

+ 727 - 0
modules/ims_registrar_scscf/doc/ims_registrar_scscf_admin.xml

@@ -0,0 +1,727 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+<!-- Include general documentation entities -->
+<!ENTITY % docentities SYSTEM "../../../docbook/entities.xml">
+%docentities;
+]>
+<!-- Module User's Guide -->
+<chapter>
+  <title>&adminguide;</title>
+
+  <section>
+    <title>Overview</title>
+
+    <para>This module contains REGISTER processing logic for the S-CSCF. The
+    'storage engine' of this module is provided by the ims_usrloc_scscf
+    module:</para>
+  </section>
+
+  <section>
+    <title>Dependencies</title>
+
+    <section>
+      <title>&kamailio; Modules</title>
+
+      <para>The following modules must be loaded before this module:
+      <itemizedlist>
+          <listitem>
+            <para><emphasis>CDP</emphasis></para>
+          </listitem>
+
+          <listitem>
+            <para><emphasis>CDP_AVP</emphasis></para>
+          </listitem>
+
+          <listitem>
+            <para><emphasis>TM</emphasis></para>
+          </listitem>
+
+          <listitem>
+            <para><emphasis>ims_usrloc_scscf</emphasis></para>
+          </listitem>
+        </itemizedlist></para>
+    </section>
+
+    <section>
+      <title>External Libraries or Applications</title>
+
+      <para>The following libraries or applications must be installed before
+      running &kamailio; with this module loaded: <itemizedlist>
+          <listitem>
+            <para><emphasis>LibXML2 - used for parsing the XML Subscription
+            information obtained from the HSS (Home Subscriber
+            Server)</emphasis></para>
+          </listitem>
+        </itemizedlist></para>
+    </section>
+  </section>
+
+  <section>
+    <title>Parameters</title>
+
+    <section>
+      <title>default_expires (int)</title>
+
+      <para>If the processed message contains neither Expires HFs nor expires
+      contact parameters, this value will be used for newly created S-CSCF
+      usrloc records. The parameter contains number of second to expire (for
+      example use 3600 for one hour). If it is set to a lower value than the
+      &ldquo;min_expires&rdquor; parameter then it will be ignored. This
+      parameter can be modified via ser config framework. A random value in a
+      specific interval can be selected by using the default_expires_range
+      parameter</para>
+
+      <para><emphasis> Default value is 3600. </emphasis></para>
+
+      <example>
+        <title>Set <varname>default_expires</varname> parameter</title>
+
+        <programlisting format="linespecific">...
+        modparam("ims_registrar_scscf", "default_expires", 3600)
+...</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title>default_expires_range (int)</title>
+
+      <para>This parameter specifies that the expiry used for newly created
+      S-CSCF usrloc records are not fixed(when &ldquo;default_expires&rdquor;
+      applies), but a random value in the interval
+      &ldquo;[default_expires-default_expires_range%,
+      default_expires+default_expires_range%]&rdquor;. The value is between 0
+      and 100 and represent the maximim percentage from default_expires that
+      will be substracted or added when computing the value. Default in 0,
+      meaning default_expires is left unmodified. This parameter can be
+      modified via ser config framework.</para>
+
+      <para><emphasis> Default value is 0. </emphasis></para>
+
+      <example>
+        <title>Set <varname>default_expires_range </varname>parameter</title>
+
+        <programlisting format="linespecific">...
+        modparam("ims_registrar_scscf", "default_expires_range", 30) # +- 30% from default_expires
+...</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title>min_expires (int)</title>
+
+      <para>The minimum expires value of a Contact, values lower than this
+      minimum will be automatically set to the minimum. Value 0 disables the
+      checking. This parameter can be modified via ser config
+      framework.</para>
+
+      <para><emphasis> Default value is 60. </emphasis></para>
+
+      <example>
+        <title>Set <varname>min_expires</varname>parameter</title>
+
+        <programlisting format="linespecific">...
+        modparam("ims_registrar_scscf", "min_expires", 1800)
+...</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title>max_expires (int)</title>
+
+      <para>The maximum expires value of a Contact, values higher than this
+      maximum will be automatically set to the maximum. Value 0 disables the
+      checking. This parameter can be modified via ser config
+      framework.</para>
+
+      <para><emphasis> Default value is 0. </emphasis></para>
+
+      <example>
+        <title>Set <varname>max_expires</varname>parameter</title>
+
+        <programlisting format="linespecific">...
+        modparam("ims_registrar_scscf", "max_expires", 3600)
+...</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title>user_data_dtd (string)</title>
+
+      <para>DTD to check the user data received in SAA (Server Assignment
+      Answer).</para>
+
+      <para><emphasis> Default value is NULL (none). </emphasis></para>
+
+      <example>
+        <title>Set <varname>user_data_dtd</varname>parameter</title>
+
+        <programlisting format="linespecific">...
+        modparam("ims_registrar_scscf", "user_data_dtd", "/usr/local/etc/kamailio/CxDataType_Rel7.dtd")
+...</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title>user_data_xsd (string)</title>
+
+      <para>XSD to check the user data received in SAA (Server Assignment
+      Answer).</para>
+
+      <para><emphasis> Default value is NULL (none). </emphasis></para>
+
+      <example>
+        <title>Set <varname>user_data_xsd</varname>parameter</title>
+
+        <programlisting format="linespecific">...
+        modparam("ims_registrar_scscf", "user_data_xsd", "/usr/local/etc/kamailio/CxDataType_Rel7.xsd")
+...</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title>support_wildcardPSI (int)</title>
+
+      <para>indicate support for wildcard PSI is subscription profile
+      (SAA)</para>
+
+      <para><emphasis> Default value is 0. </emphasis></para>
+
+      <example>
+        <title>Set <varname>support_wildcardPSI</varname>parameter</title>
+
+        <programlisting format="linespecific">...
+        modparam("ims_registrar_scscf", "support_wildcardPSI", 1)
+...</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title>scscf_name (string)</title>
+
+      <para>The name of the S-CSCF</para>
+
+      <para><emphasis> Default value is sip:scscf.ims.smilecoms.com:6060.
+      </emphasis></para>
+
+      <example>
+        <title>Set <varname>scscf_name</varname>parameter</title>
+
+        <programlisting format="linespecific">...
+        modparam("ims_registrar_scscf", "scscf_name", "sip:scscf2.ims.smilecoms.com:6060")
+...</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title>store_profile_dereg (int)</title>
+
+      <para>Should the subscription profile be stored on
+      de-registration</para>
+
+      <para><emphasis> Default value 0.</emphasis></para>
+
+      <example>
+        <title>Set <varname>store_profile_dereg</varname>parameter</title>
+
+        <programlisting format="linespecific">...
+        modparam("ims_registrar_scscf", "store_profile_dereg", 1)
+...</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title>cxdx_dest_realm (string)</title>
+
+      <para>Destination realm to be used in Diameter messages</para>
+
+      <para><emphasis> Default value "ims.smilecoms.com"</emphasis></para>
+
+      <example>
+        <title>Set <varname>cxdx_dest_realm</varname>parameter</title>
+
+        <programlisting format="linespecific">...
+        modparam("ims_registrar_scscf", "cxdx_dest_realm", "my.domain,org")
+...</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title>cxdx_forced_peer (string)</title>
+
+      <para>Forced HSS Peer to use for CxDx Diameter interface</para>
+
+      <para><emphasis> Default value NULL (none)</emphasis></para>
+
+      <example>
+        <title>Set <varname>cxdx_forced_peer</varname>parameter</title>
+
+        <programlisting format="linespecific">...
+        modparam("ims_registrar_scscf", "cxdx_forced_peer", "hss.ims.smilecoms.com")
+...</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title>append_branches (integer)</title>
+
+      <para>The parameter controls how lookup function processes multiple
+      contacts. If there are multiple contacts for the given username in
+      usrloc and this parameter is set to 1, Request-URI will be overwritten
+      with the highest-q rated contact and the rest will be appended to
+      sip_msg structure and can be later used by tm for forking. If the
+      parameter is set to 0, only Request-URI will be overwritten with the
+      highest-q rated contact and the rest will be left unprocessed. This
+      parameter can be modified via Kamailio config framework.</para>
+
+      <para><emphasis> Default value is 0 (disabled)</emphasis></para>
+
+      <example>
+        <title>Set <varname>cxdx_forced_peer</varname>parameter</title>
+
+        <programlisting format="linespecific">...
+        modparam("ims_registrar_scscf", "append_branches", 1)
+...</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title>method_filtering (integer)</title>
+
+      <para>Tells if the contact filtering based on supported methods should
+      be performed during lookup. It's enabled only if it has a non zero
+      value.</para>
+
+      <para><emphasis> Default value is 0 (disabled)</emphasis></para>
+
+      <example>
+        <title>Set <varname>cxdx_forced_peer</varname>parameter</title>
+
+        <programlisting format="linespecific">...
+        modparam("ims_registrar_scscf", "method_filtering", 1)
+...</programlisting>
+      </example>
+    </section>
+  </section>
+
+  <section>
+    <title>Functions</title>
+
+    <section>
+      <title><function moreinfo="none">save(async_reply_route,
+      domain)</function></title>
+
+      <para>The function processes a REGISTER message. It can add, remove or
+      modify usrloc records depending on Contact and Expires HFs in the
+      REGISTER message. On success and when called from the REQUEST_ROUTE, 200
+      OK will be returned listing all contacts that are currently in usrloc.
+      On an error, error message will be sent with a short description in
+      reason phrase. In case of internal errors the function will return
+      FALSE, otherwise a force to exit the cfg is file is actioned by
+      returning 0 (asynchronous processing)</para>
+
+      <para>Meaning of the parameters is as follows:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para><emphasis>async_reply_route</emphasis>- the route to execute
+          after the save has completed. This is required because the save
+          function is executed asynchronously (Diameter).</para>
+        </listitem>
+
+        <listitem>
+          <para><emphasis>domain</emphasis>- Logical domain within
+          registrar.</para>
+        </listitem>
+      </itemizedlist>
+
+      <para>This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE</para>
+
+      <example>
+        <title><function>save</function> usage</title>
+
+        <programlisting format="linespecific">...
+if (!impu_registered("location")) {
+   save("PRE_REG_SAR_REPLY","location");
+}
+...
+</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title><function moreinfo="none">lookup(domain)</function></title>
+
+      <para>This function extract the IMPU from the Request-URI and tries to
+      find all registered contacts in usrloc. If there are no such contacts,
+      -1 is returned. If there are, Request-URI will be rewritten with the
+      contact that has the highest q value. The rest of the contacts will be
+      appended to the sip msg structure (if append_branches is set) and can be
+      later used by TM module for forking for example...</para>
+
+      <para>If the method filtering option is enabled, the lookup function
+      will only return contacts that support the method of the request being
+      processed (see allows header)</para>
+
+      <para>Meaning of the parameters is as follows:</para>
+
+      <para><itemizedlist>
+          <listitem>
+            <para><emphasis>domain</emphasis> - Logical domain within
+            registrar.</para>
+          </listitem>
+        </itemizedlist></para>
+
+      <para>Return codes:</para>
+
+      <para><itemizedlist>
+          <listitem>
+            <para><emphasis>-1</emphasis> - Not found</para>
+          </listitem>
+
+          <listitem>
+            <para>-2 - Found, but method not allowed (check Allows header for
+            INVITE, MESSAGE, etc).</para>
+          </listitem>
+
+          <listitem>
+            <para>-3 - Error ocurred internally during processing</para>
+          </listitem>
+        </itemizedlist></para>
+
+      <para>This function can be used from REQUEST_ROUTE, FAILURE_ROUTE</para>
+
+      <example>
+        <title><function>lookup</function> usage</title>
+
+        <programlisting format="linespecific">...
+lookup("location");
+switch ($retcode) {
+    case -1:
+    case -3:
+        sl_send_reply("404", "Not Found");
+        exit;
+    case -2:
+        sl_send_reply("405", "Not Found");
+        exit;
+};
+...
+</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title><function moreinfo="none">unregister(domain)</function></title>
+
+      <para>This function will remove all bindings for the IMPU found in the
+      Request-URI.</para>
+
+      <para>Meaning of the parameters is as follows:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para><emphasis>Domain</emphasis>- Logical domain within
+          registrar.</para>
+        </listitem>
+      </itemizedlist>
+
+      <para>This function can be used in REQUEST_ROUTE, FAILURE_ROUTE</para>
+
+      <example>
+        <title><function>unregister</function> usage</title>
+
+        <programlisting format="linespecific">...
+unregister("location");
+...
+</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title><function moreinfo="none">assign_server_unreg(aysnc_reply_route,
+      domain, direction)</function></title>
+
+      <para>TBD</para>
+
+      <para>used in REQUEST_ROUTE</para>
+    </section>
+
+    <section>
+      <title><function
+      moreinfo="none">impu_registered(domain)</function></title>
+
+      <para>This function checks if the IMPU in the To header is registered in
+      usrloc.</para>
+
+      <para>Meaning of the parameters is as follows:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para><emphasis>domain</emphasis>- Logical domain within
+          registrar.</para>
+        </listitem>
+      </itemizedlist>
+
+      <para>Return codes:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para>1 - True, IMPU exists in registered state in usrloc</para>
+        </listitem>
+
+        <listitem>
+          <para><emphasis>-1 - False, IMPU not registered</emphasis></para>
+        </listitem>
+      </itemizedlist>
+
+      <para>This function can be used in REQUEST_ROUTE, FAILURE_ROUTE</para>
+
+      <example>
+        <title><function>impu_registered</function> usage</title>
+
+        <programlisting format="linespecific">...
+impu_registered("location");
+switch ($retcode) {
+    case -1:
+        sl_send_reply("404", "Not Found");
+        exit;
+    case 1:
+        #true, continue with normal processing
+};
+...
+</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title><function
+      moreinfo="none">term_impu_registered(domain)</function></title>
+
+      <para>This function checks if the IMPU in the Request-URI is registered
+      in usrloc.</para>
+
+      <para>Meaning of the parameters is as follows:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para><emphasis>domain</emphasis>- Logical domain within
+          registrar.</para>
+        </listitem>
+      </itemizedlist>
+
+      <para>Return codes:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para>1 - True, IMPU exists in registered state in usrloc</para>
+        </listitem>
+
+        <listitem>
+          <para><emphasis>-1 - False, IMPU not registered</emphasis></para>
+        </listitem>
+      </itemizedlist>
+
+      <para>This function can be used in REQUEST_ROUTE, FAILURE_ROUTE</para>
+
+      <example>
+        <title><function>term_impu_registered</function> usage</title>
+
+        <programlisting format="linespecific">...
+term_impu_registered("location");
+switch ($retcode) {
+     case -1:
+          sl_send_reply("404", "Not Found");
+          exit;
+     case 1:
+          #true, continue with normal processing
+};
+...
+</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title><function moreinfo="none">reg_fetch_contacts(domain, uri,
+      profile)</function></title>
+
+      <para>The function fetches the contacts for 'uri' from table 'domain' to
+      pseudo-variable $imssulc(profile) [imssulc = ims scscf ulc].</para>
+
+      <para>Meaning of the parameters is as follows:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para><emphasis>domain </emphasis>- Name of table that should be
+          used for the lookup of contact addresses.</para>
+        </listitem>
+
+        <listitem>
+          <para><emphasis>uri</emphasis> - The SIP URI address of the user
+          which to fetch the contact addresses for. It can contain
+          pseudo-variables that are evaluated at runtime.</para>
+        </listitem>
+
+        <listitem>
+          <para><emphasis>profile</emphasis> - Name of $imssulc
+          pseudo-variable profile that will store the fetched contacts. It is
+          a static string.</para>
+        </listitem>
+      </itemizedlist>
+
+      <para>This function can be used in REQUEST_ROUTE, FAILURE_ROUTE</para>
+
+      <example>
+        <title><function>reg_fetch_contacts</function> usage</title>
+
+        <programlisting format="linespecific">...
+reg_fetch_contacts("location", "$ru", "callee");
+reg_fetch_contacts("location", "sip:[email protected]", "caller");
+...
+</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title><function
+      moreinfo="none">reg_free_contacts(profile)</function></title>
+
+      <para>The function frees the contacts from pseudo-variable
+      $ulc(profile). Should be called to release the content of a profile.
+      Anyhow, fetching a new contact addresses set over a profile will release
+      any existing data in that profile.</para>
+
+      <para>Meaning of the parameters is as follows:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para><emphasis>profile</emphasis> - Name of $imssulc
+          pseudo-variable profile that stores the contacts. It is a static
+          string.</para>
+        </listitem>
+      </itemizedlist>
+
+      <para>This function can be used in REQUEST_ROUTE, FAILURE_ROUTE</para>
+
+      <example>
+        <title><function>reg_free_contacts</function> usage</title>
+
+        <programlisting format="linespecific">...
+reg_free_contacts("callee");
+...
+</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title><function
+      moreinfo="none">can_subscribe_to_reg(domain)</function></title>
+
+      <para>This function checks to see that a SUBSCRIBE request is authorised
+      to subscribe to the particular identity. Only 3 entities can
+      subscribe:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para><emphasis>The user agent to it's own state</emphasis></para>
+        </listitem>
+
+        <listitem>
+          <para>The P-CSCF specified in the path header for that user</para>
+        </listitem>
+
+        <listitem>
+          <para>Application Server (AS) not yet implemented</para>
+        </listitem>
+      </itemizedlist>
+
+      <para>Meaning of the parameters is as follows:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para><emphasis>domain - Logical domain within
+          registrar.</emphasis></para>
+        </listitem>
+      </itemizedlist>
+
+      <para>This function can be used in REQUEST_ROUTE</para>
+
+      <example>
+        <title><function>can_subscribe_to_reg</function> usage</title>
+
+        <programlisting format="linespecific">...
+if (can_subscribe_to_reg("location")){
+     $var(ret)= subscribe_to_reg("location");
+}
+...
+</programlisting>
+      </example>
+    </section>
+
+    <section>
+      <title><function
+      moreinfo="none">subscribe_to_reg(domain)</function></title>
+
+      <para>Save the subscription to the REG event for the UAC or the
+      appropriate P-CSCF (in the path to the UAC).</para>
+
+      <para>Meaning of the parameters is as follows:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para><emphasis>domain - Logical domain within
+          registrar.</emphasis></para>
+        </listitem>
+      </itemizedlist>
+
+      <para>This function can be used in REQUEST_ROUTE</para>
+
+      <example>
+        <title><function>subscribe_to_reg</function> usage</title>
+
+        <programlisting format="linespecific">...
+if (can_subscribe_to_reg("location")){
+     $var(ret)= subscribe_to_reg("location");
+}
+...
+</programlisting>
+      </example>
+    </section>
+  </section>
+
+  <section>
+    <title>RPC Commands</title>
+
+    <para>exported RPC commands.</para>
+
+    <section>
+      <title>ulpcscf.status</title>
+
+      <para>Status of pcscf_usrloc, AORs, max slots, etc.</para>
+    </section>
+  </section>
+
+  <section>
+    <title>Statistics</title>
+
+    <para>Exported statistics are listed in the next sections.</para>
+
+    <section>
+      <title>registered contacts</title>
+
+      <para>Number of AOR contacts in registered state - cannot be
+      reset.</para>
+    </section>
+
+    <section>
+      <title>impus</title>
+
+      <para>Number of IMPUs - cannot be reset.</para>
+    </section>
+
+    <section>
+      <title>expired contacts</title>
+
+      <para>Number of expired contacts - can be reset.</para>
+    </section>
+  </section>
+</chapter>

+ 68 - 0
modules/ims_registrar_scscf/doc/ims_registrar_scscf_faq.xml

@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding='ISO-8859-1'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+
+<!-- Include general documentation entities -->
+<!ENTITY % docentities SYSTEM "../../../docbook/entities.xml">
+%docentities;
+
+]>
+
+<!-- Module FAQ -->
+
+<chapter>
+	
+	<title>&faqguide;</title>
+	<qandaset defaultlabel="number">
+	<qandaentry>
+		<question>
+		<para>Where can I find more about &kamailio;?</para>
+		</question>
+		<answer>
+		<para>
+			Take a look at &kamailiohomelink;.
+		</para>
+		</answer>
+	</qandaentry>
+	<qandaentry>
+		<question>
+		<para>Where can I post a question about this module?</para>
+		</question>
+		<answer>
+		<para>
+			First at all check if your question was already answered on one of
+			our mailing lists: 
+		</para>
+		<itemizedlist>
+			<listitem>
+			<para>User Mailing List - &kamailiouserslink;</para>
+			</listitem>
+			<listitem>
+			<para>Developer Mailing List - &kamailiodevlink;</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			E-mails regarding any stable &kamailio; release should be sent to 
+			&kamailiousersmail; and e-mails regarding development versions
+			should be sent to &kamailiodevmail;.
+		</para>
+		<para>
+			If you want to keep the mail private, send it to 
+			&kamailiohelpmail;.
+		</para>
+		</answer>
+	</qandaentry>
+	<qandaentry>
+		<question>
+		<para>How can I report a bug?</para>
+		</question>
+		<answer>
+		<para>
+			Please follow the guidelines provided at:
+			&kamailiobugslink;.
+		</para>
+		</answer>
+	</qandaentry>
+	</qandaset>
+</chapter>
+