# &adminguide;

## Overview

This module collects extensions from &kamailio; core.

&kamailio; Core CookBook is available at: http://kamailio.org/dokuwiki/

## Dependencies

### &kamailio; Modules

The following modules must be loaded before this module:

- No dependencies on other &kamailio; modules.

### External Libraries or Applications

The following libraries or applications must be installed before running &kamailio; with this module loaded:

- None.

## Functions

### `setsflag(flag)`

Set the script flag.

Meaning of the parameters is as follows:

- flag - the index of the script flag to be set. Can be integer or pseudo-variable with integer value.

This function can be used from ANY_ROUTE.

#### `setsflag` usage

    ...
    setsflag("1");
    ...
    $var(flag) = 11;
    setsflag("$var(flag)");
    ...

### `issflagset(flag)`

Return true of the script flag is set.

Meaning of the parameters is as follows:

- flag - the index of the script flag to be tested. Can be integer or pseudo-variable with integer value.

This function can be used from ANY_ROUTE.

#### `issflagset` usage

    ...
    if(issflagset("1"))
    {
        ...
    }
    ...

### `resetsflag(flag)`

Reset the script flag.

Meaning of the parameters is as follows:

- flag - the index of the script flag to be reset. Can be integer or pseudo-variable with integer value.

This function can be used from ANY_ROUTE.

#### `resetsflag` usage

    ...
    resetsflag("1");
    ...

### `setbflag(flag [, branch])`

Set the branch flag.

Meaning of the parameters is as follows:

- flag - the index of the branch flag to be set. Can be integer or pseudo-variable with integer value.

- branch - the index of the branch whose flag to be set. Can be integer or pseudo-variable with integer value. If omitted, then branch 0 is used (R-URI).

This function can be used from ANY_ROUTE.

#### `setbflag` usage

    ...
    setbflag("1");
    ...
    $var(flag) = 11;
    setbflag("$var(flag)", "1");
    ...

### `isbflagset(flag [, branch])`

Return true of the branch flag is set.

Meaning of the parameters is as follows:

- flag - the index of the branch flag to be tested. Can be integer or pseudo-variable with integer value.

- branch - the index of the branch whose flag to be set. Can be integer or pseudo-variable with integer value. If omitted, then branch 0 is used (R-URI).

This function can be used from ANY_ROUTE.

#### `isbflagset` usage

    ...
    if(isbflagset("1"))
    {
        ...
    }
    ...

### `resetbflag(flag [, branch])`

Reset the branch flag.

Meaning of the parameters is as follows:

- flag - the index of the branch flag to be reset. Can be integer or pseudo-variable with integer value.

- branch - the index of the branch whose flag to be set. Can be integer or pseudo-variable with integer value. If omitted, then branch 0 is used (R-URI).

This function can be used from ANY_ROUTE.

#### `resetbflag` usage

    ...
    resetbflag("1");
    ...

### `setdsturi(uri)`

Set the destination address URI (outbound proxy address).

Meaning of the parameters is as follows:

- uri - Valid SIP URI representing the address where to send the request. It must be a static string, no variables are evaluated at runtime. If you need to set outbound proxy address via a variable, use assginment to $du.

This function can be used from ANY_ROUTE.

#### `setdsturi` usage

    ...
    setdsturi("sip:10.0.0.10");
    ...

### `resetdsturi()`

Reset the destination address URI (outbound proxy address).

This function can be used from ANY_ROUTE.

#### `resetdsturi` usage

    ...
    resetdsturi();
    ...

### `isdsturiset()`

Check if the destination address URI (outbound proxy address) is set.

This function can be used from ANY_ROUTE.

#### `isdsturiset` usage

    ...
    if(isdsturiset())
    {
       ...
    }
    ...

### `pv_printf(var, str)`

Evalues the str and sets the resulting value to variable var. For backward compatibility reasons, the same function can be executed via 'avp_printf(var, str)'.

Meaning of the parameters is as follows:

- var - name of a writable variable

- str - string that may contain variables which will be evaluated at runtime.

This function can be used from ANY_ROUTE.

#### `pv_printf` usage

    ...
    pv_printf("$ru", "sip:$rU@$fd");
    pv_printf("$avp(x)", "From: $fU - To: $tU");
    ...

### `is_myself(uri)`

Check if the parameter matches the 'myself' condition (i.e., is a local IP or domain).

Meaning of the parameters is as follows:

- uri - Valid SIP URI or IP address to check against the list of local IP addresses or domains. The parameter value can contain pseudo-variables.

This function can be used from ANY_ROUTE.

#### `is_myself` usage

    ...
    if(is_myself("$fu")) {
        ...
    }
    ...

### `setdebug(level)`

Set the debug log level per process.

Meaning of the parameters is as follows:

- level - the debug log level to be set. Can be integer or pseudo-variable with integer value.

This function can be used from ANY_ROUTE.

#### `setdebug` usage

    ...
    setdebug("1");
    ...
    $var(level) = 2;
    setdebug("$var(level)");
    ...

### `resetdebug()`

Reset the local debug log level back to the value of core parameter 'debug'.

This function can be used from ANY_ROUTE.

#### `resetdebug` usage

    ...
    resetdebug();
    ...

### `km_append_branch([uri])`

This function was replaced by append_branch() from corex module, starting with version 4.0.0.

## MI Commands

### `arg`

Print command line arguments.

Name: arg

Parameters: none.

MI FIFO Command Format:

    		:arg:_reply_fifo_file_
    		_empty_line_

### `kill`

Kill the application.

Name: kill

Parameters: none.

MI FIFO Command Format:

    		:kill:_reply_fifo_file_
    		_empty_line_

### `pwd`

Print working directory.

Name: pwd

Parameters: none.

MI FIFO Command Format:

    		:pwd:_reply_fifo_file_
    		_empty_line_

### `uptime`

Print uptime.

Name: uptime

Parameters: none.

MI FIFO Command Format:

    		:uptime:_reply_fifo_file_
    		_empty_line_

### `version`

Print version information.

Name: version

Parameters: none.

MI FIFO Command Format:

    		:version:_reply_fifo_file_
    		_empty_line_

### `which`

Print list of available MI commands.

Name: which

Parameters: none.

MI FIFO Command Format:

    		:which:_reply_fifo_file_
    		_empty_line_

### `get_statistics`

Print the list of available internal statistics.

Name: get_statistics

Parameters: statsid - which statistics to be printed. If set to 'all' then all statistics are printed; if set to 'statsgroup:' then all statistics in the group are printed; if set to 'statsname' then the statistics identified by the name is printed.

MI FIFO Command Format:

    		:get_statistics:_reply_fifo_file_
    		_statsid_
    		_empty_line_

### `reset_statistics`

Reset internal statistics.

Name: reset_statistics

Parameters: statsid - which statistics to be reset, give as name.

MI FIFO Command Format:

    		:reset_statistics:_reply_fifo_file_
    		_statsid_
    		_empty_line_

### `clear_statistics`

Return statistics and reset their value in one command.

Name: get_statistics

Parameters: statsid - same as for get_statistics.

MI FIFO Command Format:

    		:clear_statistics:_reply_fifo_file_
    		_statsid_
    		_empty_line_

## RPC Commands

### `pkg.stats`

Print private memory (pkg) usage statistics per process. It can take optinally a filter to print statistics only for a specific process or set of processes. If no filter is given, it prints statistics for all processes.

The filter can be:

- pid value - print statistics for specific process pid.

- rank value - print statistics for specific process rank.

- index value - print statistics for specific index in process table.

Examples:

    		&sercmd; pkg.stats
    		&sercmd; pkg.stats pid 1234
    		&sercmd; pkg.stats rank 1
    		&sercmd; pkg.stats index 10