This is an old revision of the document!
−Table of Contents
This is a work in progress
The Configuration File
Configuration Elements
For the sake and sanity of the user of this software, we need to cover the basic elements of the configuration before getting to the meat and potatoes.
- Configuration Directives
- Comments
- Instruction Separator
Configuration Directives
There are five (5) types of configuration directives used with Kamailio.
Each configuration directive type uses its own syntax!
- C-Style Control Directives
- Apache-Like Name/Value Pairs
- Normal Name/Value Pairs
- Modify Parameter Procedure
- Route Functions
Comments
The first thing you should understand is the comment syntax used in the configuration file.
Comments in the configuration file are a mixture of C-Style (not C++) and scripting language syntaxes.
It closely resembles the PHP style, except you can not use double-slash ( ⁄ ⁄ ) for line comments. Only the hash (#) may be used for line comments.
It can be confusing seeing the C-Style Control Directives (explained later) that begin with a hash-bang (#!) mixed with line comments begin with a hash (#).
/* This is a ... block comment */ // this is NOT a line comment # this is a line comment #!c_style_directive <-- VALID CONFIGURATION DIRECTIVE / NOT A COMMENT
Instruction Separator
Just getting this out of the way before covering the Configuration Directives.
The semicolon (;) is not required and may be used as an instruction separator for all configuration directives except Route Functions1).
The general use is to allow for comments or additional configuration directives be placed on the same line.
configuration_directive_a configuration_directive_b; configuration_directive_c; configuration_directive_d configuration_directive_e; # comment about the configuration directive
Configuration Directives
Type | Format | Comment |
---|---|---|
C-Style Control Directives | #!directive NAME VALUE | Begins with hash-bang (#!) |
Apache-Like Name/Value Pairs | name “value” | Delimited by a space & Value within quotes |
Normal Name/Value Pairs | name=value | Delimited by an equals sign |
Modify Parameter Procedure | modparam(“MODULE”, “PARAMETER”, “VALUE”) | |
Route Functions | route {…} | Scripting Language |
C-Style Control Directives
Available directives:
- #!define NAME - define a keyword
- #!define NAME VALUE - define a keyword with value
- #!ifdef NAME - check if a keyword is defined
- #!ifndef - check if a keyword is not defined
- #!else - swtich to false branch of ifdef/ifndef region
- #!endif - end ifdef/ifndef region
- #!trydef - add a define if not already defined
- #!redefine - force redefinition even if already defined
- #!subst
- #!substdef
#!define MODULE_NAME #!ifdef MODULE_NAME .. set directives .. #!else .. set alternate directives .. #!endif
Apache Name/Value Pairs
name "value"
The value MUST be enclosed in quotes.
loadmodule "module_name.so" loadmodule "another_module.so" include_file "file_to_include.cfg" import_file "/path/to/file_to_import.cfg"
Normal Name/Value Pairs
name=value
(delimited by an equals sign)
memdbg=5 memlog=5 log_facility=LOG_LOCAL0 fork=yes children=4 #disable_tcp=yes auto_aliases=no alias="sip.mydomain.com"
Modify Parameter Procedure
modparam("first_module", "module_parameter_text", "new_value"); # Set Text Value modparam("second_module", "module_parameter_number", 10000); # Set Numeric Value modparam("second_module", "module_parameter_on", 1); # Enable Parameter modparam("third_module", "module_parameter_on", 0); # Disable Parameter