UAC REGISTRANT module
Admin Guide
Section titled “Admin Guide”Overview
Section titled “Overview”The module enable OpenSIPS to register itself on a remote SIP registrar. Several registrant accounts can be defined, each account is specified by the “uac” parameter.
At startup, the registrant records are loaded into a hash table in memory and a timer is started. The hash index is computed over the AOR field. For better hash distribution, the size of the hash table is configurable. When the timer fires for the first time, the first hash table will be checked and REGISTERs will be sent out for each record that is found. On the next timeout fire, the second hash table will be checked and so on. The timer interval is configurable.
Each registrant has it’s own state. Registranr’s status can be inspected via “reg_list” MI comand.
UAC registrant states:
- 0 - NOT_REGISTERED_STATE - the initial state (no REGISTER has been sent out yet);
- 1 - REGISTERING_STATE - waiting for a reply from the registrar after a REGISTER without authentication header was sent;
- 2 - AUTHENTICATING_STATE - waiting for a reply from the registrar after a REGISTER with authentication header was sent;
- 3 - REGISTERED_STATE - the uac is successfully registered;
- 4 - REGISTER_TIMEOUT_STATE : no reply received from the registrar;
- 5 - INTERNAL_ERROR_STATE - some errors were found/encountered during the processing of a reply;
- 6 - WRONG_CREDENTIALS_STATE - credentials rejected by the registrar;
- 7 - REGISTRAR_ERROR_STATE - error reply received from the registrar;
Dependencies
Section titled “Dependencies”OpenSIPS Modules
Section titled “OpenSIPS Modules”The following modules must be loaded before this module:
- uac_auth - UAC authentication module
External Libraries or Applications
Section titled “External Libraries or Applications”None.
Exported Parameters
Section titled “Exported Parameters”hash_size (integer)
Section titled “hash_size (integer)”The size of the hash table internally used to keep the registrants. A larger table distributes better the registration load in time but consumes more memory. The hash size is a power of number two.
Default value is 1.
...modparam("uac_registrant", "hash_size", 2)...timer_interval (integer)
Section titled “timer_interval (integer)”Defines the periodic timer for checking the registrations status.
Default value is 100.
...modparam("uac_registrant", "timer_interval", 120)...uac (csv string)
Section titled “uac (csv string)”Defines the field parameters of a registration. Each field is separated by ’,’.
Meaning of the fields is as follows:
- registrar - URI pointing to the remote registrar (mandatory field);
- outbound proxy - URI pointing to the outbond proxy. An empty value means no putbound proxy (not mandatory);
- aor - URI defining the address of record (mandatory field);
- third party registrant - URI defining the third party registrant (not mandatory);
- username - username for authentication (mandatory if the registrar requires authentication);
- password - password for authentication (mandatory if the registrar requires authntication);
- binding URI - contact URI in REGISTER (mandatory field);
- binding params - contact params in REGISTER (not mandatory);
- expiry - expiration time (not mandatory). Default value: 3600;
- forced socket - socket for sending the REGISTER (not mandatory).
There is no default value. There can be several uac defined in the config file.
...modparam("uac_registrant", "uac","sip:opensips.org,,sip:user@opensips.org,,user,password,sip:user@ip,,,")...Exported Functions
Section titled “Exported Functions”None to be used in configuration file.
Exported MI Functions
Section titled “Exported MI Functions”reg_list
Section titled “reg_list”Lists the registrant records and their status.
Name: reg_list
Parameters: none
MI FIFO Command Format:
:reg_list:_reply_fifo_file__empty_line_Contributors
Section titled “Contributors”By Commit Statistics
Section titled “By Commit Statistics”Top contributors by DevScore(1), authored commits(2) and lines added/removed(3)
| # | Name | DevScore | Commits | Lines++ | Lines— |
|---|---|---|---|---|---|
| 1. | Ovidiu Sas (@ovidiusas) | 95 | 12 | 4317 | 2768 |
| 2. | Stefan Darius (@dariusstefan) | 8 | 5 | 224 | 30 |
| 3. | Vlad Paiu (@vladpaiu) | 4 | 2 | 13 | 10 |
| 4. | Razvan Crainea (@razvancrainea) | 3 | 1 | 2 | 2 |
(1) DevScore = author_commits + author_lines_added / (project_lines_added / project_commits) + author_lines_deleted / (project_lines_deleted / project_commits)
(2) including any documentation-related commits, excluding merge commits
(3) ignoring whitespace edits, renamed files and auto-generated files
By Commit Activity
Section titled “By Commit Activity”| # | Name | Commit Activity |
|---|---|---|
| 1. | Stefan Darius (@dariusstefan) | Jun 2026 - Jul 2026 |
| 2. | Razvan Crainea (@razvancrainea) | Jun 2026 - Jun 2026 |
| 3. | Ovidiu Sas (@ovidiusas) | Feb 2011 - Dec 2011 |
| 4. | Vlad Paiu (@vladpaiu) | Aug 2011 - Sep 2011 |
(1) including any documentation-related commits, excluding merge commits
Documentation
Section titled “Documentation”Contributors
Section titled “Contributors”Last edited by: Razvan Crainea (@razvancrainea), Ovidiu Sas (@ovidiusas).
License
Section titled “License”All documentation files (i.e. .md extension) are licensed under the Creative Common License 4.0