1. Domain Module

Juha Heinanen

   <jh@song.fi>

   Copyright  2002, 2003 Juha Heinanen
   Revision History
   Revision $Revision: 1.8.10.1 $ $Date: 2008/06/11 13:11:58 $
     __________________________________________________________________

   1.1. Overview
   1.2. Dependencies
   1.3. Known Limitations
   1.4. Parameters

        1.4.1. db_url (string)
        1.4.2. db_mode (integer)
        1.4.3. domain_table (string)
        1.4.4. domain_column (string)

   1.5. Functions

        1.5.1. is_from_local()
        1.5.2. is_uri_host_local()

   1.6. FIFO Interface

        1.6.1. domain_reload
        1.6.2. domain_dump

1.1. Overview

   Domain module implements checks that based on domain table determine if
   a host part of an URI is "local" or not. A "local" domain is one that
   the proxy is responsible for.

   Domain module operates in caching or non-caching mode depending on
   value of module parameter db_mode. In caching mode domain module reads
   the contents of domain table into cache memory when the module is
   loaded. After that domain table is re-read only when module is given
   domain_reload fifo command. Any changes in domain table must thus be
   followed by domain_reload command in order to reflect them in module
   behavior. In non-caching mode domain module always queries domain table
   in the database.

   Caching is implemented using a hash table. The size of the hash table
   is given by HASH_SIZE constant defined in domain_mod.h. Its "factory
   default" value is 128.

1.2. Dependencies

   The module depends on the following modules (in the other words the
   listed modules must be loaded before this module):
     * database - Any database module

1.3. Known Limitations

   There is an unlikely race condition on domain list update. If a process
   uses a table, which is reloaded at the same time twice through FIFO,
   the second reload will delete the original table still in use by the
   process.

1.4. Parameters

   Revision History
   Revision $Revision: 1.8.10.1 $ $Date: 2008/06/11 13:11:58 $

1.4.1. db_url (string)

   This is URL of the database to be used.

   Default value is "mysql://serro:47serro11@localhost/ser"

   Example 1. Setting db_url parameter
modparam("domain", "db_url", "mysql://ser:pass@db_host/ser")

1.4.2. db_mode (integer)

   Database mode. 0 means non-caching, 1 means caching.

   Default value is 0 (non-caching).

   Example 2. nonce_expire example
modparam("domain", "db_mode", 1)   # Use caching

1.4.3. domain_table (string)

   Name of table containing names of local domains that the proxy is
   responsible for. Local users must have in their sip uri a host part
   that is equal to one of these domains.

   Default value is "domain".

   Example 3. Setting domain_table parameter
modparam("domain", "domain_table", "new_name")

1.4.4. domain_column (string)

   Name of column containing domains in domain table.

   Default value is "domain".

   Example 4. Setting domain_column parameter
modparam("domain", "domain_column", "domain_col")

1.5. Functions

   Revision History
   Revision $Revision: 1.8.10.1 $ $Date: 2008/06/11 13:11:58 $

1.5.1. is_from_local()

   Checks based on domain table if host part of From header uri is one of
   the local domains that the proxy is responsible for

   Example 5. is_from_local usage
...
if (is_from_local()) {
    ...
};
...

1.5.2. is_uri_host_local()

   Checks based on domain table if host part of Request-URI is one of the
   local domains that the proxy is responsible for

   Example 6. is_uri_host_local_local usage
...
if (is_uri_host_local()) {
    ...
};
...

1.6. FIFO Interface

   Revision History
   Revision $Revision: 1.8.10.1 $ $Date: 2008/06/11 13:11:58 $

1.6.1. domain_reload

   Causes domain module to re-read the contents of domain table into cache
   memory.

1.6.2. domain_dump

   Causes domain module to dump hash indexes and domain names in its cache
   memory.
