res_hep: Provide an option to pick the UUID type
authorMatt Jordan <mjordan@digium.com>
Thu, 12 May 2016 01:17:15 +0000 (20:17 -0500)
committerMatt Jordan <mjordan@digium.com>
Sat, 14 May 2016 14:42:20 +0000 (09:42 -0500)
commite06a23681ca8c6933d705ad9e52c24395ed0a506
treeb73c08250482a2741a1466836fa65413817e53bb
parentd9c5882e69e28c11e6de82329f6d9a9bd40d7dc0
res_hep: Provide an option to pick the UUID type

At one point in time, it seemed like a good idea to use the Asterisk
channel name as the HEP correlation UUID. In particular, it felt like
this would be a useful identifier to tie PJSIP messages and RTCP
messages together, along with whatever other data we may eventually send
to Homer. This also had the benefit of keeping the correlation UUID
channel technology agnostic.

In practice, it isn't as useful as hoped, for two reasons:
1) The first INVITE request received doesn't have a channel. As a
   result, there is always an 'odd message out', leading it to be
   potentially uncorrelated in Homer.
2) Other systems sending capture packets (Kamailio) use the SIP Call-ID.
   This causes RTCP information to be uncorrelated to the SIP message
   traffic seen by those capture nodes.

In order to support both (in case someone is trying to use res_hep_rtcp
with a non-PJSIP channel), this patch adds a new option, uuid_type, with
two valid values - 'call-id' and 'channel'. The uuid_type option is used
by a module to determine the preferred UUID type. When available, that
source of a correlation UUID is used; when not, the more readily available
source is used.

For res_hep_pjsip:
 - uuid_type = call-id: the module uses the SIP Call-ID header value
 - uuid_type = channel: the module uses the channel name if available,
                        falling back to SIP Call-ID if not
For res_hep_rtcp:
 - uuid_type = call-id: the module uses the SIP Call-ID header if the
                        channel type is PJSIP and we have a channel,
                        falling back to the Stasis event provided
                        channel name if not
 - uuid_type = channel: the module uses the channel name

ASTERISK-25352 #close

Change-Id: Ide67e59a52d9c806e3cc0a797ea1a4b88a00122c
CHANGES
configs/samples/hep.conf.sample
include/asterisk/res_hep.h
res/res_hep.c
res/res_hep.exports.in
res/res_hep_pjsip.c
res/res_hep_rtcp.c