SIP Data Access Layer Objects
General¶
The new SIP channel driver for Asterisk will have a clear separation of persistent data from the various modules and implementations therein. This will allow the persistent data to be stored using different methods such as: flat file, astdb, and other databases with no changes required elsewhere. A common API will be designed and implemented to allow this to happen. Before this occurs though the objects exposed by this data access layer need to be defined with minimal content and relationships. The objects listed will evolve and change with additional objects being added as development progresses. This page aims to propose an initial idea for the minimum required and to solicit feedback.
Transport¶
The transport object contains information about configured SIP transports. These are what send and receive SIP traffic.
Variable Name | Type | Contents |
---|---|---|
name | string | Unique name for transport |
type | enum | Type of transport (UDP, TCP, TLS, WS, WSS) |
host | ast_sockaddr | IP address for transport to bind to (may be optional) |
port | integer | Port to bind to (may be optional) |
TLS Specific¶
Variable Name | Type | Contents |
---|---|---|
authority | string | Certificate authority filename or path |
certificate | string | Path to certificate to use |
key | string | Path to private key |
password | string | Password for private key |
verifyserver | bool | Whether to require verification of server certificate or not |
verifyclient | bool | Whether to require verification of client certificate or not |
requireclient | bool | Whether to require a client certificate or not |
Endpoint¶
The endpoint object contains information about a SIP trunk or SIP device.
Variable Name | Type | Contents |
---|---|---|
name | string | Unique name for endpoint |
codecs | ast_format_cap | Allowed formats |
dtmf | enum | DTMF method to use (inband, INFO, RFC2833) |
transport | string | Name of transport to force endpoint to use |
cid_num | string | Caller ID number |
cid_name | string | Caller ID name |
cid_tag | string | Caller ID tag |
context | string | Context to place incoming calls into |
registrations | list | Outgoing registrations associated with endpoint |
domain | string | Domain that the endpoint belongs to |
aor | string | Address of record to use for endpoint |
Registration¶
The registration object contains information about an outgoing registration.
Variable Name | Type | Contents |
---|---|---|
host | string | IP address or host to register to |
port | int | Port to contact server on |
username | string | Username to authenticate as |
password | string | Password to use for authentication |
Domain¶
The domain object holds information about a specific SIP domain.
Variable Name | Type | Contents |
---|---|---|
name | string | Unique name for domain |
context | string | Context to place incoming calls into, if unauthenticated |
AOR¶
The address of record object contains information used by a registrar for registrations.
Variable Name | Type | Contents |
---|---|---|
name | string | Unique name for AOR |
expiration | int | Default expiration if registration does not provide it |
contacts | list | List of contacts associated with this AOR |
domain | string | Domain that the AOR belongs to |
Contact¶
The contact object contains information about an inbound registration.
Variable Name | Type | Contents |
---|---|---|
uri | string | Full URI to contact |
expiration | timeval | When this contact should expire |
Notes¶
The above objects represent a minimum required to achieve basic functionality. They do not reflect all needed variables and objects and as previously stated will evolve and grow.