Home --> Documentations --> PJNATH Reference

Compile-time configurations
[Base STUN objects]

Various compile time settings.


#define PJ_STUN_MAX_ATTR   16
#define PJ_STUN_RTO_VALUE   100
#define PJ_STUN_MAX_PKT_LEN   800
#define PJ_STUN_PORT   3478
#define PJ_STUN_SOCK_PKT_LEN   2000
#define PJ_TURN_MAX_PKT_LEN   3000
#define PJ_TURN_PERM_TIMEOUT   300
#define PJ_ICE_MAX_CAND   16
#define PJ_ICE_ST_MAX_CAND   8
#define PJ_ICE_COMP_BITS   1
#define PJ_ICE_MAX_CHECKS   32
#define PJ_ICE_TA_VAL   20
#define PJ_ICE_CANCEL_ALL   1
#define PJ_ICE_UFRAG_LEN   8

Define Documentation


For a controlled agent, specify how long it wants to wait (in milliseconds) for the controlling agent to complete sending connectivity check with nominated flag set to true for all components after the controlled agent has found that all connectivity checks in its checklist have been completed and there is at least one successful (but not nominated) check for every component.

When selecting the value, bear in mind that the connectivity check from controlling agent may be delayed because of delay in receiving SDP answer from the controlled agent.

Application may set this value to -1 to disable this timer.

Default: 10000 (milliseconds)

#define PJ_ICE_CANCEL_ALL   1

According to ICE Section 8.2. Updating States, if an In-Progress pair in the check list is for the same component as a nominated pair, the agent SHOULD cease retransmissions for its check if its pair priority is lower than the lowest priority nominated pair for that component.

If a higher priority check is In Progress, this rule would cause that check to be performed even when it most likely will fail.

The macro here controls if ICE session should cancel all In Progress checks for the same component regardless of its priority.

Default: 1 (yes, cancel all)


The number of bits to represent candidate type preference.

#define PJ_ICE_COMP_BITS   1

The number of bits to represent component IDs. This will affect the maximum number of components (PJ_ICE_MAX_COMP) value.


The number of bits to represent ICE candidate's local preference. The local preference is used to specify preference among candidates with the same type, and ICE draft suggests 65535 as the default local preference, which means we need 16 bits to represent the value. But since we don't have the facility to specify local preference, we'll just disable this feature and let the preference sorted by the type only.

Default: 0

#define PJ_ICE_MAX_CAND   16

Maximum number of ICE candidates.

Default: 16

#define PJ_ICE_MAX_CHECKS   32

Maximum number of ICE checks.

Default: 32


Maximum number of ICE components.


For controlling agent if it uses regular nomination, specify the delay to perform nominated check (connectivity check with USE-CANDIDATE attribute) after all components have a valid pair.

Default: 4*PJ_STUN_RTO_VALUE (milliseconds)


To prevent STUN keep-alives to be sent simultaneously, application should add random interval to minimum interval (PJ_ICE_SESS_KEEP_ALIVE_MIN). This setting specifies the maximum random value to be added to the minimum interval, in seconds.

Default: 5 seconds

See also:

Minimum interval value to be used for sending STUN keep-alive on the ICE session, in seconds. This minimum interval, plus a random value which maximum is PJ_ICE_SESS_KEEP_ALIVE_MAX_RAND, specify the actual interval of the STUN keep-alive.

Default: 15 seconds

See also:
#define PJ_ICE_ST_MAX_CAND   8

Maximum number of candidates for each ICE stream transport component.

Default: 8

#define PJ_ICE_TA_VAL   20

Default timer interval (in miliseconds) for starting ICE periodic checks.

Default: 20

#define PJ_ICE_UFRAG_LEN   8

This constant specifies the length of random string generated for ICE ufrag and password.

Default: 8 (characters)


The duration of the STUN keep-alive period, in seconds.

#define PJ_STUN_MAX_ATTR   16

Maximum number of attributes in the STUN packet (for the new STUN library).

Default: 16

#define PJ_STUN_MAX_PKT_LEN   800

Maximum size of STUN message.


Maximum number of STUN transmission count.

Default: 7 (as per RFC 3489-bis)


Enable pre-RFC3489bis-07 style of STUN MESSAGE-INTEGRITY and FINGERPRINT calculation. By default this should be disabled since the calculation is not backward compatible with current STUN specification.

#define PJ_STUN_PORT   3478

Default STUN port as defined by RFC 3489.


Duration to keep response in the cache, in msec.

Default: 10000 (as per RFC 3489-bis)

#define PJ_STUN_RTO_VALUE   100

The default initial STUN round-trip time estimation (the RTO value in RFC 3489-bis), in miliseconds. This value is used to control the STUN request retransmit time. The initial value of retransmission interval would be set to this value, and will be doubled after each retransmission.

#define PJ_STUN_SOCK_PKT_LEN   2000

The packet buffer size for the STUN transport.


Padding character for string attributes.

Default: ASCII 0


The STUN transaction timeout value, in miliseconds. After the last retransmission is sent and if no response is received after this time, the STUN transaction will be considered to have failed.

The default value is 16x RTO (as per RFC 3489-bis).


The TURN channel binding lifetime. This value should be taken from the TURN protocol specification.


The TURN session timer heart beat interval. When this timer occurs, the TURN session will scan all the permissions/channel bindings to see which need to be refreshed.


Maximum DNS SRV entries to be processed in the DNS SRV response

#define PJ_TURN_MAX_PKT_LEN   3000

Maximum TURN packet size to be supported.

#define PJ_TURN_PERM_TIMEOUT   300

The TURN permission lifetime setting. This value should be taken from the TURN protocol specification.


Number of seconds to refresh the permission/channel binding before the permission/channel binding expires. This value should be greater than PJ_TURN_PERM_TIMEOUT setting.


The log level for PJNATH error display.

default 1


Use the priority value according to the ice-draft.


ICE session pool increment size


ICE stream transport pool increment size


NAT detect pool increment size


STUN session pool increment size


STUN session transmit data pool increment size


TURN session pool increment size


TURN socket pool increment size


ICE session pool initial size.


ICE stream transport pool initial size.


NAT detect pool initial size


STUN session pool initial size


STUN session transmit data pool initial size


TURN session initial pool size


TURN socket initial pool size


PJNATH - Open Source NAT traversal helper library supporting STUN, TURN, and ICE
Copyright (C) 2006-2009 Teluu Inc.