# &adminguide;

## Overview

ACC_RADIUS module is used to account transaction information to RADIUS server. It binds to ACC module API and uses the same accounting mechanisms as for other backends.

Therefore you need this module just to send accounting data to a RADIUS server - for more documentation regarding accounting, see the ACC readme.

## Dependencies

### &kamailio; Modules

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

- acc - accounting module

### External Libraries or Applications

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

- radiusclient-ng 0.5.0 or higher, freeradius-client https://github.com/FreeRADIUS/freeradius-client/ or radcli http://radcli.github.io/radcli/.

- freeradius-client library can be used after setting FREERADIUS variable in source code with 'export FREERADIUS=1' before compile.

- radcli library can be used after setting RADCLI variable in source code with 'export RADCLI=1' before compile.

## Parameters

### `radius_config` (string)

This parameter is radius specific. Path to radius client configuration file, set the referred config file correctly and specify there address of server, shared secret (should equal that in /usr/local/etc/raddb/clients for freeRadius servers) and dictionary, see etc for an example of config file and dictionary.

If the parameter is set to empty string, the RADIUS accounting support will be disabled (even if compiled).

Default value is NULL.

#### radius_config example

    ...
    modparam("acc_radius", "radius_config", "/etc/radiusclient/radiusclient.conf")
    ...

### `radius_flag` (integer)

Request flag which needs to be set to account a transaction -- RADIUS specific.

Default value is not-set (no flag).

#### radius_flag example

    ...
    modparam("acc_radius", "radius_flag", 2)
    ...

### `radius_missed_flag` (integer)

Request flag which needs to be set to account missed calls -- RADIUS specific.

Default value is not-set (no flag).

#### radius_missed_flag example

    ...
    modparam("acc_radius", "radius_missed_flag", 3)
    ...

### `service_type` (integer)

Radius service type used for accounting.

Default value is 15 (SIP).

#### service_type example

    ...
    modparam("acc_radius", "service_type", 16)
    ...

### `radius_extra` (string)

Extra values to be logged via RADIUS - RADIUS specific.

Default value is NULL.

#### radius_extra example

    ...
    modparam("acc_radius", "radius_extra", "via=$hdr(Via[*]); email=$avp(s:email)")
    ...

### `rad_time_mode`(integer)

Radius Event-Timestamp for accounting.

Values can be:

- 0 - (default), format is only unix timestamp for Event-Timestamp (For example: 1445590624)

- 1 - format is unix timestamp with microseconds in Addition, it needs to change Event-Timestamp attribute type in dictionary to string both radius server and client (For example: 1445590624.377372)

Default value is 0 (Unix timestamp).

#### rad_time_mode example

    ...
    modparam("acc_radius", "rad_time_mode", 1)
    ...

## Functions

### `acc_rad_request(comment)`

Like `acc_log_request` of acc module, `acc_rad_request` reports on a SIP request event. It reports to radius server as configured in radius_config.

Meaning of the parameters is as follows:

- comment - Comment to be appended. The first token can be a SIP response code that it is wanted to be interpreted as event type (e.g., using 200 means the transaction is considered successfully responded).

This function can be used from REQUEST_ROUTE, FAILURE_ROUTE.

#### acc_rad_request usage

    ...
    acc_rad_request("Some comment");
    ...
    # write record as when the transaction was responded with a 200 code
    acc_rad_request("200 From Config");
    ...