Domain Module

Juha Heinanen

Revision History
Revision $Revision: 1.3 $$Date: 2005/08/24 22:26:18 $

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.

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

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.

Parameters

Revision History
Revision $Revision: 1.3 $$Date: 2005/08/24 22:26:18 $

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")
	    

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
	    

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")
	    

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")
	    

Functions

Revision History
Revision $Revision: 1.2 $$Date: 2005/08/24 13:24:31 $

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()) {
    ...
};
...
	    

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()) {
    ...
};
...
	    

FIFO Interface

Revision History
Revision $Revision: 1.2 $$Date: 2005/08/24 13:24:31 $

domain_reload

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

domain_dump

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