============
Keyword list
============

*If you want a literal left bracket instead of a keyword, use* ``\x5b`` *where you want a* ``[``.


``[last_*]``
============
:Description: The '[last_*]' keyword is replaced automatically by the specified header if it was present
  in the last message received (except if it was a retransmission). If the header was not present or if
  no message has been received, the '[last_*]' keyword is discarded, and all bytes
  until the end of the line are also discarded. If the specified header
  was present several times in the message, all occurrences are
  concatenated (CRLF separated) to be used in place of the '[last_*]' keyword.

``[last_cseq_number]``
======================
:Description: The numeric value from the ``CSeq:`` as would've been found in ``[last_CSeq:]``.

``[last_message]``
==================
:Description: The last received message.

``[last_Request_URI]``
======================
:Description: The URI found inside the ``To:`` as would've been found in ``[last_To:]``.

``[service]``
=============
:Default: (service)
:Description: Service field, as passed in the -s service_name

``[server_ip]``
===============
:Description: Local IP as identified on the server socket.

``[remote_host]``
=================
:Description: Remote hostname, as passed on the command line.

``[remote_ip]``
===============
:Description: Remote IP address, resolved from the hostname as passed on the command line.

``[remote_port]``
=================
:Default: 5060
:Description: Remote IP port, as passed on the command line.
  You can add a computed offset [remote_port+3] to this value.

``[transport]``
===============
:Default: UDP
:Description: Depending on the value of -t parameter, this will take the values "UDP" or "TCP".

``[local_ip]``
==============
:Description: (Primary host IP address) Will take the value of -i parameter.

``[local_ip_type]``
===================
:Description: Depending on the address type of -i parameter (IPv4 or IPv6),
  local_ip_type will have value "4"  for IPv4 and "6" for IPv6.

``[local_port]``
================
:Default: Chosen by the system
:Description: Will take the value of -p parameter.
  You can add a computed offset [local_port+3] to this value.

``[len]``
==========
:Description: Computed length of the SIP body. To be used in "Content-Length" header.
  You can add a computed offset [len+3] to this value.

``[call_number]``
=================
:Description: Index. The call_number starts from "1" and is incremented by 1 for each call.

``[cseq]``
===========
:Description: Provides the CSeq value of the last request received. This value can be
  incremented (e.g. ``[cseq+1]`` adds 1 to the cseq value of the last request).
  The first cseq can be set using the ``-base_cseq`` command line option.

``[call_id]``
=============
:Description: A call_id identifies a call and is generated by SIPp for each new call. In client mode, it is mandatory
  to use the value generated by SIPp in the "Call-ID" header. Otherwise, SIPp will not recognise the answer to the
  message sent as being part of an existing call. Note: [call_id] can be prepended with an arbitrary string using
  '///'. Example: Call-ID: ABCDEFGHIJ///[call_id] - it will still be recognized by SIPp as part of the same call.

``[peer_tag_param]``
====================
:Description: The ``;tag=XXX`` found in the ``To:`` header of the last response.

``[media_ip]``
===============
:Description: Depending on the value of -mi parameter, it is the local IP address for RTP echo.

``[media_ip_type]``
===================
:Description: Depending on the address type of -mi parameter (IPv4 or IPv6), media_ip_type
  will have value "4" for IPv4 and "6" for IPv6. Useful to build the SDP independently of the media IP type.

``[media_port]``
================
:Description: Depending on the locally selected media port, which in turn
  depends on the -min_rtp_port/-max_rtp_port parameters, it is local RTP echo
  port number. You can add a computed offset [media_port+3] to this value.

``[field0-n file=<filename> line=<number>]``
============================================
:Description: Used to inject
  values from an external CSV file. See "Injecting values from an
  external CSV during calls" section. The optional file and line
  parameters allow you to select which of the injection files specified
  on the command line to use and which line number from that file.

``[file name=<filename>]``
==========================
:Description: Inserts the entire contents of filename into the
  message. Whitespace, including carriage returns and newlines at the
  end of the line in the file are not processed as with other keywords;
  thus your file must be formatted exactly as you would like the bytes
  to appear in the message.

``[date]``
==========
:Description: The current datetime in RFC2822 format: ``Mon, 25 Oct 2021 07:20:55 GMT``

``[timestamp]``
===============
:Description: The current time using the same format as error log messages.

``[$n]``
========
:Description: Used to inject the value of call variable number n. See `Actions_` section

``[authentication]``
====================
:Description: Used to put the
  authentication header. This field can have parameters, in the
  following form: [authentication username=myusername
  password=mypassword]. If no username is provided, the value from the
  -au (authentication username) or -s (service) command line parameter
  is used. If no password is provided, the value from -ap command line
  parameter is used. See "Authentication" section

``[dynamic_id]``
================
:Description: Incrementing integer that is unique per message, except when it wraps around.

``[pid]``
=========
:Description: Provide the process ID (pid) of the main SIPp thread.

``[routes]``
=============
:Description: If the "rrs" attribute in a recv command is set to "true", then the "Record-Route:"
  header of the message received is stored and can be recalled using the [routes] keyword.

``[next_url]``
==============
:Description: If the "rrs" attribute in a recv command
  is set to "true", then the [next_url] contains the contents of the
  Contact header (i.e within the '<' and '>' of Contact)

``[branch]``
============
:Description: Provide a branch value which is a concatenation of magic cookie
  (z9hG4bK) + call number + message index in scenario.
  An offset (like [branch-N]) can be appended if you need to have the
  same branch value as a previous message.

``[msg_index]``
===============
:Description: Provide the message number in the scenario.

``[clock_tick]``
================
:Description: Includes the internal SIPp clock tick value in the message.

``[sipp_version]``
==================
:Description: Includes the SIPp version string in the message.

``[tdmmap]``
============
:Description: Includes the tdm map values used by the call in the message
  (see -tdmmap option).

``[fill]``
============
:Description:  Injects filler characters into the
  message. The length of the fill text is equal to the call variable
  stored in the variable=N parameter. By default the text is a sequence
  of X's, but can be controlled with the text="text" parameter.

``[users]``
=============
:Description: If the -users command line option is specified, then this keyword
  contains the number of users that are currently instantiated.

``[userid]``
=============
:Description: If the -users command line option is specified, then this keyword
  contains the integer identifier of the current user (starting at zero
  and ending at [users-1]).
