Merge pull request #2326 from NGSegovia/keepalive/first_check_on_start
[sip-router] / src / modules / rtpengine / README
1 rtpengine Module
2
3 Maxim Sobolev
4
5    Sippy Software, Inc.
6
7 Juha Heinanen
8
9    TuTPro, Inc.
10
11 Edited by
12
13 Maxim Sobolev
14
15 Bogdan-Andrei Iancu
16
17 Juha Heinanen
18
19 Sas Ovidiu
20
21 Carsten Bock
22
23    ng-voice GmbH
24
25 Richard Fuchs
26
27    Sipwise GmbH
28
29    Copyright © 2003-2008 Sippy Software, Inc.
30
31    Copyright © 2005 Voice Sistem SRL
32
33    Copyright © 2009-2014 TuTPro Inc.
34
35    Copyright © 2010 VoIPEmbedded Inc.
36
37    Copyright © 2013-2019 Sipwise GmbH
38      __________________________________________________________________
39
40    Table of Contents
41
42    1. Admin Guide
43
44         1. Overview
45         2. Usage With Multiple RTPEngine Instances
46         3. Dependencies
47
48               3.1. Kamailio Modules
49               3.2. External Libraries or Applications
50
51         4. Parameters
52
53               4.1. rtpengine_sock (string)
54               4.2. rtpengine_disable_tout (integer)
55               4.3. aggressive_redetection (integer)
56               4.4. rtpengine_tout_ms (integer)
57               4.5. rtpengine_allow_op (integer)
58               4.6. queried_nodes_limit (integer)
59               4.7. rtpengine_retr (integer)
60               4.8. extra_id_pv (string)
61               4.9. setid_avp (string)
62               4.10. force_send_interface (string)
63               4.11. read_sdp_pv (string)
64               4.12. write_sdp_pv (string)
65               4.13. rtp_inst_pvar (string)
66               4.14. hash_table_size (integer)
67               4.15. hash_table_tout (integer)
68               4.16. db_url (string)
69               4.17. table_name (string)
70               4.18. setid_col (string)
71               4.19. url_col (string)
72               4.20. weight_col (string)
73               4.21. disabled_col (string)
74               4.22. setid_default (integer)
75               4.23. media_duration (string)
76               4.24. mos_min_pv (string)
77               4.25. mos_min_at_pv (string)
78               4.26. mos_min_packetloss_pv (string)
79               4.27. mos_min_jitter_pv (string)
80               4.28. mos_min_roundtrip_pv (string)
81               4.29. mos_max_pv (string)
82               4.30. mos_max_at_pv (string)
83               4.31. mos_max_packetloss_pv (string)
84               4.32. mos_max_jitter_pv (string)
85               4.33. mos_max_roundtrip_pv (string)
86               4.34. mos_average_pv (string)
87               4.35. mos_average_packetloss_pv (string)
88               4.36. mos_average_jitter_pv (string)
89               4.37. mos_average_roundtrip_pv (string)
90               4.38. mos_average_samples_pv (string)
91               4.39. mos_A_label_pv (string)
92               4.40. mos_min_A_pv (string)
93               4.41. mos_min_at_A_pv (string)
94               4.42. mos_min_packetloss_A_pv (string)
95               4.43. mos_min_jitter_A_pv (string)
96               4.44. mos_min_roundtrip_A_pv (string)
97               4.45. mos_max_A_pv (string)
98               4.46. mos_max_at_A_pv (string)
99               4.47. mos_max_packetloss_A_pv (string)
100               4.48. mos_max_jitter_A_pv (string)
101               4.49. mos_max_roundtrip_A_pv (string)
102               4.50. mos_average_A_pv (string)
103               4.51. mos_average_packetloss_A_pv (string)
104               4.52. mos_average_jitter_A_pv (string)
105               4.53. mos_average_roundtrip_A_pv (string)
106               4.54. mos_average_samples_A_pv (string)
107               4.55. mos_B_label_pv (string)
108               4.56. mos_min_B_pv (string)
109               4.57. mos_min_at_B_pv (string)
110               4.58. mos_min_packetloss_B_pv (string)
111               4.59. mos_min_jitter_B_pv (string)
112               4.60. mos_min_roundtrip_B_pv (string)
113               4.61. mos_max_B_pv (string)
114               4.62. mos_max_at_B_pv (string)
115               4.63. mos_max_packetloss_B_pv (string)
116               4.64. mos_max_jitter_B_pv (string)
117               4.65. mos_max_roundtrip_B_pv (string)
118               4.66. mos_average_B_pv (string)
119               4.67. mos_average_packetloss_B_pv (string)
120               4.68. mos_average_jitter_B_pv (string)
121               4.69. mos_average_roundtrip_B_pv (string)
122               4.70. mos_average_samples_B_pv (string)
123               4.71. control_cmd_tos (integer)
124               4.72. hash_algo (integer)
125
126         5. Functions
127
128               5.1. set_rtpengine_set(setid[, setid])
129               5.2. rtpengine_offer([flags])
130               5.3. rtpengine_answer([flags])
131               5.4. rtpengine_info([flags])
132               5.5. rtpengine_delete([flags])
133               5.6. rtpengine_query([flags])
134               5.7. rtpengine_manage([flags])
135               5.8. start_recording([flags])
136               5.9. stop_recording([flags])
137               5.10. block_dtmf([flags])
138               5.11. unblock_dtmf([flags])
139               5.12. block_media([flags])
140               5.13. unblock_media([flags])
141               5.14. start_forwarding([flags])
142               5.15. stop_forwarding([flags])
143               5.16. play_media([flags])
144               5.17. stop_media([flags])
145               5.18. play_dtmf([flags])
146
147         6. Exported Pseudo Variables
148
149               6.1. $rtpstat
150
151         7. RPC Commands
152
153               7.1. rtpengine.reload
154               7.2. rtpengine.enable proxy_url/all 0/1
155               7.3. rtpengine.show proxy_url/all
156               7.4. rtpengine.ping proxy_url/all
157               7.5. rtpengine.get_hash_total
158
159    2. Frequently Asked Questions
160
161    List of Examples
162
163    1.1. Set rtpengine_sock parameter
164    1.2. Set rtpengine_disable_tout parameter
165    1.3. Set aggressive_redetection parameter
166    1.4. Set rtpengine_tout_ms parameter
167    1.5. Set rtpengine_allow_op parameter
168    1.6. Set queried_nodes_limit parameter
169    1.7. Set rtpengine_retr parameter
170    1.8. Set extra_id_pv parameter
171    1.9. Set setid_avp parameter
172    1.10. Set force_send_interface parameter
173    1.11. Set read_sdp_pv parameter
174    1.12. Set write_sdp_pv parameter
175    1.13. Set rtp_inst_pvar parameter
176    1.14. Set hash_table_size parameter
177    1.15. Set hash_table_tout parameter
178    1.16. Set db_url parameter
179    1.17. Set table_name parameter
180    1.18. Setup rtpengine table
181    1.19. Set setid_col parameter
182    1.20. Set url_col parameter
183    1.21. Set weight_col parameter
184    1.22. Set disabled_col parameter
185    1.23. Set setid_default parameter
186    1.24. Set media_duration parameter
187    1.25. Set mos_min_pv parameter
188    1.26. Set mos_min_at_pv parameter
189    1.27. Set mos_min_packetloss_pv parameter
190    1.28. Set mos_min_jitter_pv parameter
191    1.29. Set mos_min_roundtrip_pv parameter
192    1.30. Set mos_max_pv parameter
193    1.31. Set mos_max_at_pv parameter
194    1.32. Set mos_max_packetloss_pv parameter
195    1.33. Set mos_max_jitter_pv parameter
196    1.34. Set mos_max_roundtrip_pv parameter
197    1.35. Set mos_average_pv parameter
198    1.36. Set mos_average_packetloss_pv parameter
199    1.37. Set mos_average_jitter_pv parameter
200    1.38. Set mos_average_roundtrip_pv parameter
201    1.39. Set mos_average_samples_pv parameter
202    1.40. Set mos_A_label_pv parameter
203    1.41. Set mos_min_A_pv parameter
204    1.42. Set mos_min_at_A_pv parameter
205    1.43. Set mos_min_packetloss_A_pv parameter
206    1.44. Set mos_min_jitter_A_pv parameter
207    1.45. Set mos_min_roundtrip_A_pv parameter
208    1.46. Set mos_max_A_pv parameter
209    1.47. Set mos_max_at_A_pv parameter
210    1.48. Set mos_max_packetloss_A_pv parameter
211    1.49. Set mos_max_jitter_A_pv parameter
212    1.50. Set mos_max_roundtrip_A_pv parameter
213    1.51. Set mos_average_A_pv parameter
214    1.52. Set mos_average_packetloss_A_pv parameter
215    1.53. Set mos_average_jitter_A_pv parameter
216    1.54. Set mos_average_roundtrip_A_pv parameter
217    1.55. Set mos_average_samples_A_pv parameter
218    1.56. Set mos_B_label_pv parameter
219    1.57. Set mos_min_B_pv parameter
220    1.58. Set mos_min_at_B_pv parameter
221    1.59. Set mos_min_packetloss_B_pv parameter
222    1.60. Set mos_min_jitter_B_pv parameter
223    1.61. Set mos_min_roundtrip_B_pv parameter
224    1.62. Set mos_max_B_pv parameter
225    1.63. Set mos_max_at_B_pv parameter
226    1.64. Set mos_max_packetloss_B_pv parameter
227    1.65. Set mos_max_jitter_B_pv parameter
228    1.66. Set mos_max_roundtrip_B_pv parameter
229    1.67. Set mos_average_B_pv parameter
230    1.68. Set mos_average_packetloss_B_pv parameter
231    1.69. Set mos_average_jitter_B_pv parameter
232    1.70. Set mos_average_roundtrip_B_pv parameter
233    1.71. Set mos_average_samples_B_pv parameter
234    1.72. Set control_cmd_tos parameter
235    1.73. Set control_cmd_tos parameter
236    1.74. set_rtpengine_set usage
237    1.75. rtpengine_offer usage
238    1.76. rtpengine_answer usage
239    1.77. rtpengine_info usage
240    1.78. rtpengine_delete usage
241    1.79. rtpengine_query usage
242    1.80. rtpengine_manage usage
243    1.81. start_recording usage
244    1.82. stop_recording usage
245    1.83. block_dtmf usage
246    1.84. unblock_dtmf usage
247    1.85. block_media usage
248    1.86. unblock_media usage
249    1.87. start_forwarding usage
250    1.88. stop_forwarding usage
251    1.89. play_media usage
252    1.90. stop_media usage
253    1.91. play_dtmf usage
254    1.92. $rtpstat Usage
255    1.93. rtpengine.reload usage
256    1.94. rtpengine.enable usage
257    1.95. rtpengine.show usage
258    1.96. rtpengine.ping usage
259    1.97. rtpengine.get_hash_total usage
260
261 Chapter 1. Admin Guide
262
263    Table of Contents
264
265    1. Overview
266    2. Usage With Multiple RTPEngine Instances
267    3. Dependencies
268
269         3.1. Kamailio Modules
270         3.2. External Libraries or Applications
271
272    4. Parameters
273
274         4.1. rtpengine_sock (string)
275         4.2. rtpengine_disable_tout (integer)
276         4.3. aggressive_redetection (integer)
277         4.4. rtpengine_tout_ms (integer)
278         4.5. rtpengine_allow_op (integer)
279         4.6. queried_nodes_limit (integer)
280         4.7. rtpengine_retr (integer)
281         4.8. extra_id_pv (string)
282         4.9. setid_avp (string)
283         4.10. force_send_interface (string)
284         4.11. read_sdp_pv (string)
285         4.12. write_sdp_pv (string)
286         4.13. rtp_inst_pvar (string)
287         4.14. hash_table_size (integer)
288         4.15. hash_table_tout (integer)
289         4.16. db_url (string)
290         4.17. table_name (string)
291         4.18. setid_col (string)
292         4.19. url_col (string)
293         4.20. weight_col (string)
294         4.21. disabled_col (string)
295         4.22. setid_default (integer)
296         4.23. media_duration (string)
297         4.24. mos_min_pv (string)
298         4.25. mos_min_at_pv (string)
299         4.26. mos_min_packetloss_pv (string)
300         4.27. mos_min_jitter_pv (string)
301         4.28. mos_min_roundtrip_pv (string)
302         4.29. mos_max_pv (string)
303         4.30. mos_max_at_pv (string)
304         4.31. mos_max_packetloss_pv (string)
305         4.32. mos_max_jitter_pv (string)
306         4.33. mos_max_roundtrip_pv (string)
307         4.34. mos_average_pv (string)
308         4.35. mos_average_packetloss_pv (string)
309         4.36. mos_average_jitter_pv (string)
310         4.37. mos_average_roundtrip_pv (string)
311         4.38. mos_average_samples_pv (string)
312         4.39. mos_A_label_pv (string)
313         4.40. mos_min_A_pv (string)
314         4.41. mos_min_at_A_pv (string)
315         4.42. mos_min_packetloss_A_pv (string)
316         4.43. mos_min_jitter_A_pv (string)
317         4.44. mos_min_roundtrip_A_pv (string)
318         4.45. mos_max_A_pv (string)
319         4.46. mos_max_at_A_pv (string)
320         4.47. mos_max_packetloss_A_pv (string)
321         4.48. mos_max_jitter_A_pv (string)
322         4.49. mos_max_roundtrip_A_pv (string)
323         4.50. mos_average_A_pv (string)
324         4.51. mos_average_packetloss_A_pv (string)
325         4.52. mos_average_jitter_A_pv (string)
326         4.53. mos_average_roundtrip_A_pv (string)
327         4.54. mos_average_samples_A_pv (string)
328         4.55. mos_B_label_pv (string)
329         4.56. mos_min_B_pv (string)
330         4.57. mos_min_at_B_pv (string)
331         4.58. mos_min_packetloss_B_pv (string)
332         4.59. mos_min_jitter_B_pv (string)
333         4.60. mos_min_roundtrip_B_pv (string)
334         4.61. mos_max_B_pv (string)
335         4.62. mos_max_at_B_pv (string)
336         4.63. mos_max_packetloss_B_pv (string)
337         4.64. mos_max_jitter_B_pv (string)
338         4.65. mos_max_roundtrip_B_pv (string)
339         4.66. mos_average_B_pv (string)
340         4.67. mos_average_packetloss_B_pv (string)
341         4.68. mos_average_jitter_B_pv (string)
342         4.69. mos_average_roundtrip_B_pv (string)
343         4.70. mos_average_samples_B_pv (string)
344         4.71. control_cmd_tos (integer)
345         4.72. hash_algo (integer)
346
347    5. Functions
348
349         5.1. set_rtpengine_set(setid[, setid])
350         5.2. rtpengine_offer([flags])
351         5.3. rtpengine_answer([flags])
352         5.4. rtpengine_info([flags])
353         5.5. rtpengine_delete([flags])
354         5.6. rtpengine_query([flags])
355         5.7. rtpengine_manage([flags])
356         5.8. start_recording([flags])
357         5.9. stop_recording([flags])
358         5.10. block_dtmf([flags])
359         5.11. unblock_dtmf([flags])
360         5.12. block_media([flags])
361         5.13. unblock_media([flags])
362         5.14. start_forwarding([flags])
363         5.15. stop_forwarding([flags])
364         5.16. play_media([flags])
365         5.17. stop_media([flags])
366         5.18. play_dtmf([flags])
367
368    6. Exported Pseudo Variables
369
370         6.1. $rtpstat
371
372    7. RPC Commands
373
374         7.1. rtpengine.reload
375         7.2. rtpengine.enable proxy_url/all 0/1
376         7.3. rtpengine.show proxy_url/all
377         7.4. rtpengine.ping proxy_url/all
378         7.5. rtpengine.get_hash_total
379
380 1. Overview
381
382    This is a module that enables media streams to be proxied via an RTP
383    proxy. The only RTP proxy currently known to work with this module is
384    the Sipwise rtpengine https://github.com/sipwise/rtpengine. The
385    rtpengine module is a modified version of the original rtpproxy module
386    using a new control protocol. The module is designed to be a drop-in
387    replacement for the old module from a configuration file point of view,
388    however due to the incompatible control protocol, it only works with
389    RTP proxies which specifically support it.
390
391 2. Usage With Multiple RTPEngine Instances
392
393    The rtpengine module can support multiple RTPEngine instances for
394    balancing/distribution and control/selection purposes.
395
396    The module allows definition of several sets of RTPEngines.
397    Load-balancing will be performed over a set and the admin has the
398    ability to choose what set should be used. The set is selected via its
399    id - the id being defined with the set. Refer to the “rtpengine_sock”
400    module parameter definition for syntax description.
401
402    The balancing inside a set is done automatically by the module based on
403    the weight of each RTPEngine from the set.
404
405    The selection of the set is done from script prior using
406    rtpengine_delete(), rtpengine_offer() or rtpengine_answer() functions -
407    see the set_rtpengine_set() function.
408
409    Another way to select the set is to define setid_avp module parameter
410    and assign setid to the defined avp before calling rtpengine_offer() or
411    rtpengine_manage() function. If forwarding of the requests fails and
412    there is another branch to try, remember to unset the avp after calling
413    rtpengine_delete() function.
414
415    For backward compatibility reasons, a set with no id take by default
416    the id 0. Also if no set is explicitly set before rtpengine_delete(),
417    rtpengine_offer() or rtpengine_answer() the 0 id set will be used.
418
419    IMPORTANT: if you use multiple sets, take care and use the same set for
420    both rtpengine_offer()/rtpengine_answer() and rtpengine_delete()!! If
421    the set was selected using setid_avp, the avp needs to be set only once
422    before rtpengine_offer() or rtpengine_manage() call.
423
424    From the current implementation point of view, the sets of rtpengine
425    nodes are in shared memory(shm), so all processes can see a common list
426    of nodes. There is no locking when setting the nodes enabled/disabled
427    (to keep the memory access as fast as possible). Thus, problems related
428    to node state might appear for concurrent processes that might set the
429    nodes enabled/disabled(e.g. by fifo command). These robustness problems
430    are overcome as follows.
431
432    If the current process sees the selected node as disabled, the node is
433    force tested before the current process actually accepts the disabled
434    state. If the test succeeds, the process will set the node as enabled
435    (but other concurrent process might still see it as disabled).
436
437    If the current process sees the selected node as enabled, it does no
438    additional checks and sends the command which will fail in case the
439    machine is actually broken. The process will set the node as disabled
440    (but other concurrent process might still see it as enabled).
441
442    The 'kamctl fifo' commands (including rtpengine ones) are executed by
443    an exclusive process which operate on the same shared memory node list.
444
445    All the nodes are pinged in the beginning by all the processes, even if
446    the node list is shared memory.
447
448 3. Dependencies
449
450    3.1. Kamailio Modules
451    3.2. External Libraries or Applications
452
453 3.1. Kamailio Modules
454
455    The following modules must be loaded before this module:
456      * tm module - (optional) if you want to have rtpengine_manage() fully
457        functional
458
459 3.2. External Libraries or Applications
460
461    The following libraries or applications must be installed before
462    running Kamailio with this module loaded:
463      * None.
464
465 4. Parameters
466
467    4.1. rtpengine_sock (string)
468    4.2. rtpengine_disable_tout (integer)
469    4.3. aggressive_redetection (integer)
470    4.4. rtpengine_tout_ms (integer)
471    4.5. rtpengine_allow_op (integer)
472    4.6. queried_nodes_limit (integer)
473    4.7. rtpengine_retr (integer)
474    4.8. extra_id_pv (string)
475    4.9. setid_avp (string)
476    4.10. force_send_interface (string)
477    4.11. read_sdp_pv (string)
478    4.12. write_sdp_pv (string)
479    4.13. rtp_inst_pvar (string)
480    4.14. hash_table_size (integer)
481    4.15. hash_table_tout (integer)
482    4.16. db_url (string)
483    4.17. table_name (string)
484    4.18. setid_col (string)
485    4.19. url_col (string)
486    4.20. weight_col (string)
487    4.21. disabled_col (string)
488    4.22. setid_default (integer)
489    4.23. media_duration (string)
490    4.24. mos_min_pv (string)
491    4.25. mos_min_at_pv (string)
492    4.26. mos_min_packetloss_pv (string)
493    4.27. mos_min_jitter_pv (string)
494    4.28. mos_min_roundtrip_pv (string)
495    4.29. mos_max_pv (string)
496    4.30. mos_max_at_pv (string)
497    4.31. mos_max_packetloss_pv (string)
498    4.32. mos_max_jitter_pv (string)
499    4.33. mos_max_roundtrip_pv (string)
500    4.34. mos_average_pv (string)
501    4.35. mos_average_packetloss_pv (string)
502    4.36. mos_average_jitter_pv (string)
503    4.37. mos_average_roundtrip_pv (string)
504    4.38. mos_average_samples_pv (string)
505    4.39. mos_A_label_pv (string)
506    4.40. mos_min_A_pv (string)
507    4.41. mos_min_at_A_pv (string)
508    4.42. mos_min_packetloss_A_pv (string)
509    4.43. mos_min_jitter_A_pv (string)
510    4.44. mos_min_roundtrip_A_pv (string)
511    4.45. mos_max_A_pv (string)
512    4.46. mos_max_at_A_pv (string)
513    4.47. mos_max_packetloss_A_pv (string)
514    4.48. mos_max_jitter_A_pv (string)
515    4.49. mos_max_roundtrip_A_pv (string)
516    4.50. mos_average_A_pv (string)
517    4.51. mos_average_packetloss_A_pv (string)
518    4.52. mos_average_jitter_A_pv (string)
519    4.53. mos_average_roundtrip_A_pv (string)
520    4.54. mos_average_samples_A_pv (string)
521    4.55. mos_B_label_pv (string)
522    4.56. mos_min_B_pv (string)
523    4.57. mos_min_at_B_pv (string)
524    4.58. mos_min_packetloss_B_pv (string)
525    4.59. mos_min_jitter_B_pv (string)
526    4.60. mos_min_roundtrip_B_pv (string)
527    4.61. mos_max_B_pv (string)
528    4.62. mos_max_at_B_pv (string)
529    4.63. mos_max_packetloss_B_pv (string)
530    4.64. mos_max_jitter_B_pv (string)
531    4.65. mos_max_roundtrip_B_pv (string)
532    4.66. mos_average_B_pv (string)
533    4.67. mos_average_packetloss_B_pv (string)
534    4.68. mos_average_jitter_B_pv (string)
535    4.69. mos_average_roundtrip_B_pv (string)
536    4.70. mos_average_samples_B_pv (string)
537    4.71. control_cmd_tos (integer)
538    4.72. hash_algo (integer)
539
540 4.1. rtpengine_sock (string)
541
542    Definition of socket(s) used to connect to (a set) RTP proxy. It may
543    specify a UNIX socket or an IPv4/IPv6 UDP socket.
544
545    Default value is “NONE” (disabled).
546
547    Example 1.1. Set rtpengine_sock parameter
548 ...
549 # single rtproxy
550 modparam("rtpengine", "rtpengine_sock", "udp:localhost:12221")
551 # multiple rtproxies for LB with weights (missing weight defaults to 1)
552 modparam("rtpengine", "rtpengine_sock",
553         "udp:localhost:12221=2 udp:localhost:12222=1")
554 # multiple sets of multiple rtproxies
555 modparam("rtpengine", "rtpengine_sock",
556         "1 == udp:localhost:12221 udp:localhost:12222")
557 modparam("rtpengine", "rtpengine_sock",
558         "2 == udp:localhost:12225")
559 ...
560
561 4.2. rtpengine_disable_tout (integer)
562
563    Once an RTP proxy was found unreachable and marked as disabled, the
564    rtpengine module will not attempt to establish communication to that
565    RTP proxy for rtpengine_disable_tout seconds.
566
567    Default value is “60”.
568
569    Can be set at runtime, e.g.:
570                         $ kamcmd cfg.set_now_int rtpengine rtpengine_disable_tou
571 t 20
572
573    Example 1.2. Set rtpengine_disable_tout parameter
574 ...
575 modparam("rtpengine", "rtpengine_disable_tout", 20)
576 ...
577
578 4.3. aggressive_redetection (integer)
579
580    This parameter determines what happens when all potential rtpengines
581    are found to be unreachable. If enabled, the sip server will send pings
582    to all rtpengines, else no rtpengine will be queried until its
583    rtpengine_disable_tout timeout passes.
584
585    Default value is “1” (enabled).
586
587    Can be set at runtime, e.g.:
588                         $ kamcmd cfg.set_now_int rtpengine aggressive_redetectio
589 n 0
590
591    Example 1.3. Set aggressive_redetection parameter
592 ...
593 modparam("rtpengine", "aggressive_redetection", 0)
594 ...
595
596 4.4. rtpengine_tout_ms (integer)
597
598    Timeout value expressed in milliseconds in waiting for reply from RTP
599    proxy.
600
601    Default value is “1000”.
602
603    Can be set at runtime, e.g.:
604                         $ kamcmd cfg.set_now_int rtpengine rtpengine_tout_ms 100
605 0
606
607    Example 1.4. Set rtpengine_tout_ms parameter
608 ...
609 modparam("rtpengine", "rtpengine_tout_ms", 2000)
610 ...
611
612 4.5. rtpengine_allow_op (integer)
613
614    Enable this setting to allow finishing the current sessions while
615    denying new sessions for the manually deactivated nodes via kamctl
616    command i.e. "disabled(permanent)" nodes. Probably the manually
617    deactivated machine is still running(did not crash).
618
619    This is useful when deactivating a node for maintenance and reject new
620    sessions but allow current ones to finish.
621
622    The behaviour is the same for a rtpengine deleted table node. When the
623    node is deleted from the table and the table reloaded (see
624    nh_reload_rtpp) the node actually is disabled(permanent) and hidden for
625    display. Next time the same node will be added in the table, and the
626    database content reloaded, the re-activated node will be updated and
627    re-displayed.
628
629    Default value is “0” to keep the current behaviour.
630
631    Example 1.5. Set rtpengine_allow_op parameter
632 ...
633 modparam("rtpengine", "rtpengine_allow_op", 1)
634 ...
635
636 4.6. queried_nodes_limit (integer)
637
638    The total number of nodes inside a set (sets are configurable via
639    rtpengine_sock function) to be queried before giving up establishing a
640    session. This brings more flexibility in case checking all rtpengines
641    would take too long. Max limit is 30.
642
643    By default all nodes in a set are tried before giving up communicating
644    with the rtpengines.
645
646    Can be set at runtime, e.g.:
647                         $ kamcmd cfg.set_now_int rtpengine queried_nodes_limit 5
648
649    Example 1.6. Set queried_nodes_limit parameter
650 ...
651 modparam("rtpengine", "queried_nodes_limit", 5)
652 ...
653
654 4.7. rtpengine_retr (integer)
655
656    How many times the module should retry to send and receive after
657    timeout was generated.
658
659    Default value is “5”.
660
661    Can be set at runtime, e.g.:
662                         $ kamcmd cfg.set_now_int rtpengine rtpengine_retr 5
663
664    Example 1.7. Set rtpengine_retr parameter
665 ...
666 modparam("rtpengine", "rtpengine_retr", 2)
667 ...
668
669 4.8. extra_id_pv (string)
670
671    The parameter sets the PV definition to use when the “via-branch”
672    parameter is used on rtpengine_delete(), rtpengine_offer(),
673    rtpengine_answer() or rtpengine_manage() command.
674
675    Default is empty, the “via-branch” parameter may not be used then.
676
677    Example 1.8. Set extra_id_pv parameter
678 ...
679 modparam("rtpengine", "extra_id_pv", "$avp(extra_id)")
680 ...
681
682 4.9. setid_avp (string)
683
684    The parameter defines an AVP that, if set, determines which RTP proxy
685    set rtpengine_offer(), rtpengine_answer(), rtpengine_delete(), and
686    rtpengine_manage() functions use.
687
688    There is no default value.
689
690    Example 1.9. Set setid_avp parameter
691 ...
692 modparam("rtpengine", "setid_avp", "$avp(setid)")
693 ...
694
695 4.10. force_send_interface (string)
696
697    Forces all control messages between the SIP proxy and the RTP proxy to
698    be sent from the specified local interface. Both IPv4 and IPv6
699    addresses are supported. If not specified, the default interface
700    selected by the operating system will be used. Note: when
701    rtpengine_sock is a IPv6 link-local address, one _must_ set this
702    parameter in order to successfully connect to RTP engine. This is
703    necessarily because OS needs additional scope_id hint to communicate
704    over IPv6 link locals. The scope_id is resolved based on the given
705    IPv6.
706
707    There is no default value.
708
709    Example 1.10. Set force_send_interface parameter
710 ...
711 modparam("rtpengine", "force_send_interface", "10.3.7.123")
712 modparam("rtpengine", "force_send_interface", "2001:8d8:1ff:10c0:9a90:96ff:fea8:
713 fd99")
714 ...
715
716 4.11. read_sdp_pv (string)
717
718    If this parameter is set to a valid AVP or script var specifier,
719    rtpengine will take the input SDP from this pv instead of the message
720    body.
721
722    There is no default value.
723
724    Example 1.11. Set read_sdp_pv parameter
725 ...
726 modparam("rtpengine", "read_sdp_pv", "$var(sdp)")
727 ...
728 route {
729         ...
730         $var(sdp) = $rb + "a=foo:bar\r\n";
731         rtpengine_manage();
732 }
733
734 4.12. write_sdp_pv (string)
735
736    If this parameter is set to a valid AVP or script var specifier, the
737    SDP returned by rtpengine in the offer/answer operations is returned in
738    the specified variable instead of the message body.
739
740    There is no default value.
741
742    Example 1.12. Set write_sdp_pv parameter
743 ...
744 modparam("rtpengine", "write_sdp_pv", "$avp(sdp)")
745 ...
746 route {
747         ...
748         rtpengine_manage();
749         set_body("$avp(sdp)a=baz123\r\n", "application/sdp");
750 }
751
752 4.13. rtp_inst_pvar (string)
753
754    A pseudo variable to store the chosen RTP Engine IP address. If this
755    parameter is set, the IP address and port of the instance chosen will
756    be stored in the given variable.
757
758    By default, this parameter is not set.
759
760    Example 1.13. Set rtp_inst_pvar parameter
761 ...
762 modparam("rtpengine", "rtp_inst_pvar", "$avp(RTP_INSTANCE)")
763 ...
764
765 4.14. hash_table_size (integer)
766
767    To maintain information about a selected rtp machine node for a given
768    call, entries are added in a hashtable of (callid, node) pairs. This
769    parameter sets the size of the hash table. Default value is 256.
770
771    NOTE: If configured size is less than 1, the size will be defaulted to
772    1.
773
774    Example 1.14. Set hash_table_size parameter
775 ...
776 modparam("rtpengine", "hash_table_size", 123)
777 ...
778
779 4.15. hash_table_tout (integer)
780
781    Number of seconds after an rtpengine hash table entry is marked for
782    deletion. By default, this parameter is set to 3600 (seconds).
783
784    To maintain information about a selected rtp machine node for a given
785    call, entries are added in a hashtable of (callid, node) pairs. When
786    command comes the callid is looked up in this table. If found, the
787    chosen node is used. If not found, choose a new node, insert the callid
788    in the hashtable and return the chosen node.
789
790    NOTE: In the current implementation, the actual deletion happens on the
791    fly, while insert/remove/lookup the hastable, only for the entries in
792    the insert/remove/lookup path.
793
794    NOTE: When configuring this parameter, one should consider maximum call
795    time VS share memory for unfinished calls.
796
797    Example 1.15. Set hash_table_tout parameter
798 ...
799 modparam("rtpengine", "hash_table_tout", 300)
800 ...
801
802 4.16. db_url (string)
803
804    The rtpengine database url. If present and valid, it activates database
805    mode. In this mode the node information is read from database, not from
806    configuration modparam parameters.
807
808    By default, the database url is NULL (not set).
809
810    Example 1.16. Set db_url parameter
811 ...
812 modparam("rtpengine", "db_url", "mysql://pass@localhost/db")
813 ...
814
815 4.17. table_name (string)
816
817    The rtpengine table name. If database mode is activated (i.e. valid
818    db_url), sets the name of the rtpengine table, on startup.
819
820    By default, the rtpengine table name is "rtpengine".
821
822    NOTE: One needs to add the version of the rtpengine table in the
823    version table. The current version is version 1.
824
825    Example 1.17. Set table_name parameter
826 ...
827 modparam("rtpengine", "table_name", "rtpengine_table_name")
828 ...
829
830    Example 1.18. Setup rtpengine table
831 mysql> describe rtpengine;
832 +----------+------------------+------+-----+---------------------+-------+
833 | Field    | Type             | Null | Key | Default             | Extra |
834 +----------+------------------+------+-----+---------------------+-------+
835 | setid    | int(10) unsigned | NO   | PRI | 0                   |       |
836 | url      | varchar(64)      | NO   | PRI | NULL                |       |
837 | weight   | int(10) unsigned | NO   |     | 1                   |       |
838 | disabled | int(1)           | NO   |     | 0                   |       |
839 | stamp    | datetime         | NO   |     | 1900-01-01 00:00:01 |       |
840 +----------+------------------+------+-----+---------------------+-------+
841
842 mysql> select * from rtpengine;
843 +-------+----------------------------+--------+----------+---------------------+
844 | setid | url                        | weight | disabled | stamp               |
845 +-------+----------------------------+--------+----------+---------------------+
846 |     0 | udp:rtpengine1.domain:8800 |      1 |        0 | 2016-03-10 10:30:54 |
847 |     0 | udp:rtpengine2.domain:8800 |      1 |        1 | 2016-03-10 10:30:54 |
848 +-------+----------------------------+--------+----------+---------------------+
849
850 mysql> select * from version;
851 +---------------------------+---------------+
852 | table_name                | table_version |
853 +---------------------------+---------------+
854 | rtpengine                 |             1 |
855 +---------------------------+---------------+
856
857 4.18. setid_col (string)
858
859    Column name for the "setid" in the rtpengine table. If database mode is
860    activated (i.e. valid db_url), set the setid of rtp nodes according to
861    this column, on startup. The MySQL value for this column should be INT
862    UNSIGNED.
863
864    By default, the column name is "setid".
865
866    Example 1.19. Set setid_col parameter
867 ...
868 modparam("rtpengine", "setid_col", "setid_column_name")
869 ...
870
871 4.19. url_col (string)
872
873    Column name for the url in the rtpengine table. If database mode is
874    activated (i.e. valid db_url), set the url of rtp nodes according to
875    this column, on startup. The MySQL value for this column should be
876    VARCHAR.
877
878    By default, the column name is "url".
879
880    Example 1.20. Set url_col parameter
881 ...
882 modparam("rtpengine", "url_col", "url_column_name")
883 ...
884
885 4.20. weight_col (string)
886
887    Column name for weight in the rtpengine table. If database mode is
888    activated (i.e. valid db_url), set the weight of rtp nodes according to
889    this column, on startup. The column value has priority over the URL
890    weight. The MySQL value for this column should be INT UNSIGNED.
891
892    By default, the column name is "weight".
893
894    Example 1.21. Set weight_col parameter
895 ...
896 modparam("rtpengine", "weight_col", "weight_column_name")
897 ...
898
899 4.21. disabled_col (string)
900
901    Column name in the rtpengine table. If database mode is activated (i.e.
902    valid db_url), set the state of rtp nodes according to this column, on
903    startup. The MySQL value for this column should be INT.
904
905    By default, the column name is "disabled".
906
907    Example 1.22. Set disabled_col parameter
908 ...
909 modparam("rtpengine", "disabled_col", "disabled_column_name")
910 ...
911
912 4.22. setid_default (integer)
913
914    The default set of nodes to be used.
915
916    By default, the setid is 0.
917
918    NOTE that if setid_avp is configured, this value will be ignored and
919    the active set will be chosen according to the setid_avp.
920
921    Example 1.23. Set setid_default parameter
922 ...
923 modparam("rtpengine", "setid_default", 11)
924 ...
925
926 4.23. media_duration (string)
927
928    The name of a pseudovariable to be filled in with the length of the
929    media being played back after a call to “play_media”, expressed in
930    milliseconds. It's set to -1 if the length of the media could not be
931    determined.
932
933    By default, this parameter is not set.
934
935    Example 1.24. Set media_duration parameter
936 ...
937 modparam("rtpengine", "media_duration", "$avp(MEDIA_DURATION)")
938 ...
939
940 4.24. mos_min_pv (string)
941
942    The name of a pseudovariable to hold the minimum encountered MOS value
943    for the call. The value typically has a range of 1.0 through 5.0.
944
945    There is no default value.
946
947    This value is filled in after invoking“rtpengine_delete”,
948    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
949    deletion of the call (or call branch).
950
951    Example 1.25. Set mos_min_pv parameter
952 ...
953 modparam("rtpengine", "mos_min_pv", "$avp(mos_min)")
954 ...
955
956 4.25. mos_min_at_pv (string)
957
958    The name of a pseudovariable to hold the timestamp of when the minimum
959    MOS value was encountered during the call, such as “0:30” for 30
960    seconds after the start of the call.
961
962    There is no default value.
963
964    This value is filled in after invoking “rtpengine_delete”,
965    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
966    deletion of the call (or call branch).
967
968    Example 1.26. Set mos_min_at_pv parameter
969 ...
970 modparam("rtpengine", "mos_min_at_pv", "$avp(mos_min_at)")
971 ...
972
973 4.26. mos_min_packetloss_pv (string)
974
975    The name of a pseudovariable to hold the amount of packetloss in
976    percent at the time the minimum MOS value was encountered;
977
978    There is no default value.
979
980    This value is filled in after invoking “rtpengine_delete”,
981    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
982    deletion of the call (or call branch).
983
984    Example 1.27. Set mos_min_packetloss_pv parameter
985 ...
986 modparam("rtpengine", "mos_min_packetloss_pv", "$avp(mos_min_packetloss)")
987 ...
988
989 4.27. mos_min_jitter_pv (string)
990
991    The name of a pseudovariable to hold the amount of jitter in
992    milliseconds at the time the minimum MOS value was encountered;
993
994    There is no default value.
995
996    This value is filled in after invoking “rtpengine_delete”,
997    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
998    deletion of the call (or call branch).
999
1000    Example 1.28. Set mos_min_jitter_pv parameter
1001 ...
1002 modparam("rtpengine", "mos_min_jitter_pv", "$avp(mos_min_jitter)")
1003 ...
1004
1005 4.28. mos_min_roundtrip_pv (string)
1006
1007    The name of a pseudovariable to hold the packet round-trip time in
1008    milliseconds at the time the minimum MOS value was encountered;
1009
1010    There is no default value.
1011
1012    This value is filled in after invoking “rtpengine_delete”,
1013    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1014    deletion of the call (or call branch).
1015
1016    Example 1.29. Set mos_min_roundtrip_pv parameter
1017 ...
1018 modparam("rtpengine", "mos_min_roundtrip_pv", "$avp(mos_min_roundtrip)")
1019 ...
1020
1021 4.29. mos_max_pv (string)
1022
1023    The name of a pseudovariable to hold the maximum encountered MOS value
1024    for the call. The value typically has a range of 1.0 through 5.0.
1025
1026    There is no default value.
1027
1028    This value is filled in after invoking“rtpengine_delete”,
1029    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1030    deletion of the call (or call branch).
1031
1032    Example 1.30. Set mos_max_pv parameter
1033 ...
1034 modparam("rtpengine", "mos_max_pv", "$avp(mos_max)")
1035 ...
1036
1037 4.30. mos_max_at_pv (string)
1038
1039    The name of a pseudovariable to hold the timestamp of when the maximum
1040    MOS value was encountered during the call, such as “0:30” for 30
1041    seconds after the start of the call.
1042
1043    There is no default value.
1044
1045    This value is filled in after invoking “rtpengine_delete”,
1046    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1047    deletion of the call (or call branch).
1048
1049    Example 1.31. Set mos_max_at_pv parameter
1050 ...
1051 modparam("rtpengine", "mos_max_at_pv", "$avp(mos_max_at)")
1052 ...
1053
1054 4.31. mos_max_packetloss_pv (string)
1055
1056    The name of a pseudovariable to hold the amount of packetloss in
1057    percent at the time the maximum MOS value was encountered;
1058
1059    There is no default value.
1060
1061    This value is filled in after invoking “rtpengine_delete”,
1062    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1063    deletion of the call (or call branch).
1064
1065    Example 1.32. Set mos_max_packetloss_pv parameter
1066 ...
1067 modparam("rtpengine", "mos_max_packetloss_pv", "$avp(mos_max_packetloss)")
1068 ...
1069
1070 4.32. mos_max_jitter_pv (string)
1071
1072    The name of a pseudovariable to hold the amount of jitter in
1073    milliseconds at the time the maximum MOS value was encountered;
1074
1075    There is no default value.
1076
1077    This value is filled in after invoking “rtpengine_delete”,
1078    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1079    deletion of the call (or call branch).
1080
1081    Example 1.33. Set mos_max_jitter_pv parameter
1082 ...
1083 modparam("rtpengine", "mos_max_jitter_pv", "$avp(mos_max_jitter)")
1084 ...
1085
1086 4.33. mos_max_roundtrip_pv (string)
1087
1088    The name of a pseudovariable to hold the packet round-trip time in
1089    milliseconds at the time the maximum MOS value was encountered;
1090
1091    There is no default value.
1092
1093    This value is filled in after invoking “rtpengine_delete”,
1094    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1095    deletion of the call (or call branch).
1096
1097    Example 1.34. Set mos_max_roundtrip_pv parameter
1098 ...
1099 modparam("rtpengine", "mos_max_roundtrip_pv", "$avp(mos_max_roundtrip)")
1100 ...
1101
1102 4.34. mos_average_pv (string)
1103
1104    The name of a pseudovariable to hold the average (median) MOS value for
1105    the call. The value typically has a range of 1.0 through 5.0.
1106
1107    There is no default value.
1108
1109    This value is filled in after invoking“rtpengine_delete”,
1110    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1111    deletion of the call (or call branch).
1112
1113    Example 1.35. Set mos_average_pv parameter
1114 ...
1115 modparam("rtpengine", "mos_average_pv", "$avp(mos_average)")
1116 ...
1117
1118 4.35. mos_average_packetloss_pv (string)
1119
1120    The name of a pseudovariable to hold the average (median) amount of
1121    packetloss in percent present throughout the call.
1122
1123    There is no default value.
1124
1125    This value is filled in after invoking “rtpengine_delete”,
1126    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1127    deletion of the call (or call branch).
1128
1129    Example 1.36. Set mos_average_packetloss_pv parameter
1130 ...
1131 modparam("rtpengine", "mos_average_packetloss_pv", "$avp(mos_average_packetloss)
1132 ")
1133 ...
1134
1135 4.36. mos_average_jitter_pv (string)
1136
1137    The name of a pseudovariable to hold the average (median) amount of
1138    jitter in milliseconds present throughout the call.
1139
1140    There is no default value.
1141
1142    This value is filled in after invoking “rtpengine_delete”,
1143    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1144    deletion of the call (or call branch).
1145
1146    Example 1.37. Set mos_average_jitter_pv parameter
1147 ...
1148 modparam("rtpengine", "mos_average_jitter_pv", "$avp(mos_average_jitter)")
1149 ...
1150
1151 4.37. mos_average_roundtrip_pv (string)
1152
1153    The name of a pseudovariable to hold the average (median) packet
1154    round-trip time in milliseconds present throughout the call.
1155
1156    There is no default value.
1157
1158    This value is filled in after invoking “rtpengine_delete”,
1159    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1160    deletion of the call (or call branch).
1161
1162    Example 1.38. Set mos_average_roundtrip_pv parameter
1163 ...
1164 modparam("rtpengine", "mos_average_roundtrip_pv", "$avp(mos_average_roundtrip)")
1165 ...
1166
1167 4.38. mos_average_samples_pv (string)
1168
1169    The name of a pseudovariable to hold the number of samples used to
1170    determine the other “average” MOS data points.
1171
1172    There is no default value.
1173
1174    This value is filled in after invoking “rtpengine_delete”,
1175    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1176    deletion of the call (or call branch).
1177
1178    Example 1.39. Set mos_average_samples_pv parameter
1179 ...
1180 modparam("rtpengine", "mos_average_samples_pv", "$avp(mos_average_samples)")
1181 ...
1182
1183 4.39. mos_A_label_pv (string)
1184
1185    The name of a pseudovariable to hold a custom label used in rtpengine
1186    signalling. If set, all the statistics pseudovariables with the “_A”
1187    suffix will be filled in with statistics only from the call legs that
1188    match the label given in this variable.
1189
1190    There is no default value.
1191
1192    Example 1.40. Set mos_A_label_pv parameter
1193 ...
1194 modparam("rtpengine", "mos_A_label_pv", "$avp(mos_A_label)")
1195 ...
1196
1197 4.40. mos_min_A_pv (string)
1198
1199    The name of a pseudovariable to hold the minimum encountered MOS value
1200    for the call. The value typically has a range of 1.0 through 5.0.
1201
1202    There is no default value.
1203
1204    This value is filled in after invoking“rtpengine_delete”,
1205    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1206    deletion of the call (or call branch).
1207
1208    Only call legs matching the rtpengine label given in the
1209    “mos_A_label_pv” will be used in calculating this statistics value.
1210
1211    Example 1.41. Set mos_min_A_pv parameter
1212 ...
1213 modparam("rtpengine", "mos_min_A_pv", "$avp(mos_min_A)")
1214 ...
1215
1216 4.41. mos_min_at_A_pv (string)
1217
1218    The name of a pseudovariable to hold the timestamp of when the minimum
1219    MOS value was encountered during the call, such as “0:30” for 30
1220    seconds after the start of the call.
1221
1222    There is no default value.
1223
1224    This value is filled in after invoking “rtpengine_delete”,
1225    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1226    deletion of the call (or call branch).
1227
1228    Only call legs matching the rtpengine label given in the
1229    “mos_A_label_pv” will be used in calculating this statistics value.
1230
1231    Example 1.42. Set mos_min_at_A_pv parameter
1232 ...
1233 modparam("rtpengine", "mos_min_at_A_pv", "$avp(mos_min_at_A)")
1234 ...
1235
1236 4.42. mos_min_packetloss_A_pv (string)
1237
1238    The name of a pseudovariable to hold the amount of packetloss in
1239    percent at the time the minimum MOS value was encountered;
1240
1241    There is no default value.
1242
1243    This value is filled in after invoking “rtpengine_delete”,
1244    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1245    deletion of the call (or call branch).
1246
1247    Only call legs matching the rtpengine label given in the
1248    “mos_A_label_pv” will be used in calculating this statistics value.
1249
1250    Example 1.43. Set mos_min_packetloss_A_pv parameter
1251 ...
1252 modparam("rtpengine", "mos_min_packetloss_A_pv", "$avp(mos_min_packetloss_A)")
1253 ...
1254
1255 4.43. mos_min_jitter_A_pv (string)
1256
1257    The name of a pseudovariable to hold the amount of jitter in
1258    milliseconds at the time the minimum MOS value was encountered;
1259
1260    There is no default value.
1261
1262    This value is filled in after invoking “rtpengine_delete”,
1263    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1264    deletion of the call (or call branch).
1265
1266    Only call legs matching the rtpengine label given in the
1267    “mos_A_label_pv” will be used in calculating this statistics value.
1268
1269    Example 1.44. Set mos_min_jitter_A_pv parameter
1270 ...
1271 modparam("rtpengine", "mos_min_jitter_A_pv", "$avp(mos_min_jitter_A)")
1272 ...
1273
1274 4.44. mos_min_roundtrip_A_pv (string)
1275
1276    The name of a pseudovariable to hold the packet round-trip time in
1277    milliseconds at the time the minimum MOS value was encountered;
1278
1279    There is no default value.
1280
1281    This value is filled in after invoking “rtpengine_delete”,
1282    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1283    deletion of the call (or call branch).
1284
1285    Only call legs matching the rtpengine label given in the
1286    “mos_A_label_pv” will be used in calculating this statistics value.
1287
1288    Example 1.45. Set mos_min_roundtrip_A_pv parameter
1289 ...
1290 modparam("rtpengine", "mos_min_roundtrip_A_pv", "$avp(mos_min_roundtrip_A)")
1291 ...
1292
1293 4.45. mos_max_A_pv (string)
1294
1295    The name of a pseudovariable to hold the maximum encountered MOS value
1296    for the call. The value typically has a range of 1.0 through 5.0.
1297
1298    There is no default value.
1299
1300    This value is filled in after invoking“rtpengine_delete”,
1301    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1302    deletion of the call (or call branch).
1303
1304    Only call legs matching the rtpengine label given in the
1305    “mos_A_label_pv” will be used in calculating this statistics value.
1306
1307    Example 1.46. Set mos_max_A_pv parameter
1308 ...
1309 modparam("rtpengine", "mos_max_A_pv", "$avp(mos_max_A)")
1310 ...
1311
1312 4.46. mos_max_at_A_pv (string)
1313
1314    The name of a pseudovariable to hold the timestamp of when the maximum
1315    MOS value was encountered during the call, such as “0:30” for 30
1316    seconds after the start of the call.
1317
1318    There is no default value.
1319
1320    This value is filled in after invoking “rtpengine_delete”,
1321    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1322    deletion of the call (or call branch).
1323
1324    Only call legs matching the rtpengine label given in the
1325    “mos_A_label_pv” will be used in calculating this statistics value.
1326
1327    Example 1.47. Set mos_max_at_A_pv parameter
1328 ...
1329 modparam("rtpengine", "mos_max_at_A_pv", "$avp(mos_max_at_A)")
1330 ...
1331
1332 4.47. mos_max_packetloss_A_pv (string)
1333
1334    The name of a pseudovariable to hold the amount of packetloss in
1335    percent at the time the maximum MOS value was encountered;
1336
1337    There is no default value.
1338
1339    This value is filled in after invoking “rtpengine_delete”,
1340    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1341    deletion of the call (or call branch).
1342
1343    Only call legs matching the rtpengine label given in the
1344    “mos_A_label_pv” will be used in calculating this statistics value.
1345
1346    Example 1.48. Set mos_max_packetloss_A_pv parameter
1347 ...
1348 modparam("rtpengine", "mos_max_packetloss_A_pv", "$avp(mos_max_packetloss_A)")
1349 ...
1350
1351 4.48. mos_max_jitter_A_pv (string)
1352
1353    The name of a pseudovariable to hold the amount of jitter in
1354    milliseconds at the time the maximum MOS value was encountered;
1355
1356    There is no default value.
1357
1358    This value is filled in after invoking “rtpengine_delete”,
1359    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1360    deletion of the call (or call branch).
1361
1362    Only call legs matching the rtpengine label given in the
1363    “mos_A_label_pv” will be used in calculating this statistics value.
1364
1365    Example 1.49. Set mos_max_jitter_A_pv parameter
1366 ...
1367 modparam("rtpengine", "mos_max_jitter_A_pv", "$avp(mos_max_jitter_A)")
1368 ...
1369
1370 4.49. mos_max_roundtrip_A_pv (string)
1371
1372    The name of a pseudovariable to hold the packet round-trip time in
1373    milliseconds at the time the maximum MOS value was encountered;
1374
1375    There is no default value.
1376
1377    This value is filled in after invoking “rtpengine_delete”,
1378    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1379    deletion of the call (or call branch).
1380
1381    Only call legs matching the rtpengine label given in the
1382    “mos_A_label_pv” will be used in calculating this statistics value.
1383
1384    Example 1.50. Set mos_max_roundtrip_A_pv parameter
1385 ...
1386 modparam("rtpengine", "mos_max_roundtrip_A_pv", "$avp(mos_max_roundtrip_A)")
1387 ...
1388
1389 4.50. mos_average_A_pv (string)
1390
1391    The name of a pseudovariable to hold the average (median) MOS value for
1392    the call. The value typically has a range of 1.0 through 5.0.
1393
1394    There is no default value.
1395
1396    This value is filled in after invoking“rtpengine_delete”,
1397    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1398    deletion of the call (or call branch).
1399
1400    Only call legs matching the rtpengine label given in the
1401    “mos_A_label_pv” will be used in calculating this statistics value.
1402
1403    Example 1.51. Set mos_average_A_pv parameter
1404 ...
1405 modparam("rtpengine", "mos_average_A_pv", "$avp(mos_average_A)")
1406 ...
1407
1408 4.51. mos_average_packetloss_A_pv (string)
1409
1410    The name of a pseudovariable to hold the average (median) amount of
1411    packetloss in percent present throughout the call.
1412
1413    There is no default value.
1414
1415    This value is filled in after invoking “rtpengine_delete”,
1416    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1417    deletion of the call (or call branch).
1418
1419    Only call legs matching the rtpengine label given in the
1420    “mos_A_label_pv” will be used in calculating this statistics value.
1421
1422    Example 1.52. Set mos_average_packetloss_A_pv parameter
1423 ...
1424 modparam("rtpengine", "mos_average_packetloss_A_pv", "$avp(mos_average_packetlos
1425 s_A)")
1426 ...
1427
1428 4.52. mos_average_jitter_A_pv (string)
1429
1430    The name of a pseudovariable to hold the average (median) amount of
1431    jitter in milliseconds present throughout the call.
1432
1433    There is no default value.
1434
1435    This value is filled in after invoking “rtpengine_delete”,
1436    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1437    deletion of the call (or call branch).
1438
1439    Only call legs matching the rtpengine label given in the
1440    “mos_A_label_pv” will be used in calculating this statistics value.
1441
1442    Example 1.53. Set mos_average_jitter_A_pv parameter
1443 ...
1444 modparam("rtpengine", "mos_average_jitter_A_pv", "$avp(mos_average_jitter_A)")
1445 ...
1446
1447 4.53. mos_average_roundtrip_A_pv (string)
1448
1449    The name of a pseudovariable to hold the average (median) packet
1450    round-trip time in milliseconds present throughout the call.
1451
1452    There is no default value.
1453
1454    This value is filled in after invoking “rtpengine_delete”,
1455    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1456    deletion of the call (or call branch).
1457
1458    Only call legs matching the rtpengine label given in the
1459    “mos_A_label_pv” will be used in calculating this statistics value.
1460
1461    Example 1.54. Set mos_average_roundtrip_A_pv parameter
1462 ...
1463 modparam("rtpengine", "mos_average_roundtrip_A_pv", "$avp(mos_average_roundtrip_
1464 A)")
1465 ...
1466
1467 4.54. mos_average_samples_A_pv (string)
1468
1469    The name of a pseudovariable to hold the number of samples used to
1470    determine the other “average” MOS data points.
1471
1472    There is no default value.
1473
1474    This value is filled in after invoking “rtpengine_delete”,
1475    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1476    deletion of the call (or call branch).
1477
1478    Only call legs matching the rtpengine label given in the
1479    “mos_A_label_pv” will be used in calculating this statistics value.
1480
1481    Example 1.55. Set mos_average_samples_A_pv parameter
1482 ...
1483 modparam("rtpengine", "mos_average_samples_A_pv", "$avp(mos_average_samples_A)")
1484 ...
1485
1486 4.55. mos_B_label_pv (string)
1487
1488    The name of a pseudovariable to hold a custom label used in rtpengine
1489    signalling. If set, all the statistics pseudovariables with the “_B”
1490    suffix will be filled in with statistics only from the call legs that
1491    match the label given in this variable.
1492
1493    There is no default value.
1494
1495    Example 1.56. Set mos_B_label_pv parameter
1496 ...
1497 modparam("rtpengine", "mos_B_label_pv", "$avp(mos_B_label)")
1498 ...
1499
1500 4.56. mos_min_B_pv (string)
1501
1502    The name of a pseudovariable to hold the minimum encountered MOS value
1503    for the call. The value typically has a range of 1.0 through 5.0.
1504
1505    There is no default value.
1506
1507    This value is filled in after invoking“rtpengine_delete”,
1508    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1509    deletion of the call (or call branch).
1510
1511    Only call legs matching the rtpengine label given in the
1512    “mos_B_label_pv” will be used in calculating this statistics value.
1513
1514    Example 1.57. Set mos_min_B_pv parameter
1515 ...
1516 modparam("rtpengine", "mos_min_B_pv", "$avp(mos_min_B)")
1517 ...
1518
1519 4.57. mos_min_at_B_pv (string)
1520
1521    The name of a pseudovariable to hold the timestamp of when the minimum
1522    MOS value was encountered during the call, such as “0:30” for 30
1523    seconds after the start of the call.
1524
1525    There is no default value.
1526
1527    This value is filled in after invoking “rtpengine_delete”,
1528    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1529    deletion of the call (or call branch).
1530
1531    Only call legs matching the rtpengine label given in the
1532    “mos_B_label_pv” will be used in calculating this statistics value.
1533
1534    Example 1.58. Set mos_min_at_B_pv parameter
1535 ...
1536 modparam("rtpengine", "mos_min_at_B_pv", "$avp(mos_min_at_B)")
1537 ...
1538
1539 4.58. mos_min_packetloss_B_pv (string)
1540
1541    The name of a pseudovariable to hold the amount of packetloss in
1542    percent at the time the minimum MOS value was encountered;
1543
1544    There is no default value.
1545
1546    This value is filled in after invoking “rtpengine_delete”,
1547    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1548    deletion of the call (or call branch).
1549
1550    Only call legs matching the rtpengine label given in the
1551    “mos_B_label_pv” will be used in calculating this statistics value.
1552
1553    Example 1.59. Set mos_min_packetloss_B_pv parameter
1554 ...
1555 modparam("rtpengine", "mos_min_packetloss_B_pv", "$avp(mos_min_packetloss_B)")
1556 ...
1557
1558 4.59. mos_min_jitter_B_pv (string)
1559
1560    The name of a pseudovariable to hold the amount of jitter in
1561    milliseconds at the time the minimum MOS value was encountered;
1562
1563    There is no default value.
1564
1565    This value is filled in after invoking “rtpengine_delete”,
1566    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1567    deletion of the call (or call branch).
1568
1569    Only call legs matching the rtpengine label given in the
1570    “mos_B_label_pv” will be used in calculating this statistics value.
1571
1572    Example 1.60. Set mos_min_jitter_B_pv parameter
1573 ...
1574 modparam("rtpengine", "mos_min_jitter_B_pv", "$avp(mos_min_jitter_B)")
1575 ...
1576
1577 4.60. mos_min_roundtrip_B_pv (string)
1578
1579    The name of a pseudovariable to hold the packet round-trip time in
1580    milliseconds at the time the minimum MOS value was encountered;
1581
1582    There is no default value.
1583
1584    This value is filled in after invoking “rtpengine_delete”,
1585    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1586    deletion of the call (or call branch).
1587
1588    Only call legs matching the rtpengine label given in the
1589    “mos_B_label_pv” will be used in calculating this statistics value.
1590
1591    Example 1.61. Set mos_min_roundtrip_B_pv parameter
1592 ...
1593 modparam("rtpengine", "mos_min_roundtrip_B_pv", "$avp(mos_min_roundtrip_B)")
1594 ...
1595
1596 4.61. mos_max_B_pv (string)
1597
1598    The name of a pseudovariable to hold the maximum encountered MOS value
1599    for the call. The value typically has a range of 1.0 through 5.0.
1600
1601    There is no default value.
1602
1603    This value is filled in after invoking“rtpengine_delete”,
1604    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1605    deletion of the call (or call branch).
1606
1607    Only call legs matching the rtpengine label given in the
1608    “mos_B_label_pv” will be used in calculating this statistics value.
1609
1610    Example 1.62. Set mos_max_B_pv parameter
1611 ...
1612 modparam("rtpengine", "mos_max_B_pv", "$avp(mos_max_B)")
1613 ...
1614
1615 4.62. mos_max_at_B_pv (string)
1616
1617    The name of a pseudovariable to hold the timestamp of when the maximum
1618    MOS value was encountered during the call, such as “0:30” for 30
1619    seconds after the start of the call.
1620
1621    There is no default value.
1622
1623    This value is filled in after invoking “rtpengine_delete”,
1624    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1625    deletion of the call (or call branch).
1626
1627    Only call legs matching the rtpengine label given in the
1628    “mos_B_label_pv” will be used in calculating this statistics value.
1629
1630    Example 1.63. Set mos_max_at_B_pv parameter
1631 ...
1632 modparam("rtpengine", "mos_max_at_B_pv", "$avp(mos_max_at_B)")
1633 ...
1634
1635 4.63. mos_max_packetloss_B_pv (string)
1636
1637    The name of a pseudovariable to hold the amount of packetloss in
1638    percent at the time the maximum MOS value was encountered;
1639
1640    There is no default value.
1641
1642    This value is filled in after invoking “rtpengine_delete”,
1643    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1644    deletion of the call (or call branch).
1645
1646    Only call legs matching the rtpengine label given in the
1647    “mos_B_label_pv” will be used in calculating this statistics value.
1648
1649    Example 1.64. Set mos_max_packetloss_B_pv parameter
1650 ...
1651 modparam("rtpengine", "mos_max_packetloss_B_pv", "$avp(mos_max_packetloss_B)")
1652 ...
1653
1654 4.64. mos_max_jitter_B_pv (string)
1655
1656    The name of a pseudovariable to hold the amount of jitter in
1657    milliseconds at the time the maximum MOS value was encountered;
1658
1659    There is no default value.
1660
1661    This value is filled in after invoking “rtpengine_delete”,
1662    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1663    deletion of the call (or call branch).
1664
1665    Only call legs matching the rtpengine label given in the
1666    “mos_B_label_pv” will be used in calculating this statistics value.
1667
1668    Example 1.65. Set mos_max_jitter_B_pv parameter
1669 ...
1670 modparam("rtpengine", "mos_max_jitter_B_pv", "$avp(mos_max_jitter_B)")
1671 ...
1672
1673 4.65. mos_max_roundtrip_B_pv (string)
1674
1675    The name of a pseudovariable to hold the packet round-trip time in
1676    milliseconds at the time the maximum MOS value was encountered;
1677
1678    There is no default value.
1679
1680    This value is filled in after invoking “rtpengine_delete”,
1681    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1682    deletion of the call (or call branch).
1683
1684    Only call legs matching the rtpengine label given in the
1685    “mos_B_label_pv” will be used in calculating this statistics value.
1686
1687    Example 1.66. Set mos_max_roundtrip_B_pv parameter
1688 ...
1689 modparam("rtpengine", "mos_max_roundtrip_B_pv", "$avp(mos_max_roundtrip_B)")
1690 ...
1691
1692 4.66. mos_average_B_pv (string)
1693
1694    The name of a pseudovariable to hold the average (median) MOS value for
1695    the call. The value typically has a range of 1.0 through 5.0.
1696
1697    There is no default value.
1698
1699    This value is filled in after invoking“rtpengine_delete”,
1700    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1701    deletion of the call (or call branch).
1702
1703    Only call legs matching the rtpengine label given in the
1704    “mos_B_label_pv” will be used in calculating this statistics value.
1705
1706    Example 1.67. Set mos_average_B_pv parameter
1707 ...
1708 modparam("rtpengine", "mos_average_B_pv", "$avp(mos_average_B)")
1709 ...
1710
1711 4.67. mos_average_packetloss_B_pv (string)
1712
1713    The name of a pseudovariable to hold the average (median) amount of
1714    packetloss in percent present throughout the call.
1715
1716    There is no default value.
1717
1718    This value is filled in after invoking “rtpengine_delete”,
1719    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1720    deletion of the call (or call branch).
1721
1722    Only call legs matching the rtpengine label given in the
1723    “mos_B_label_pv” will be used in calculating this statistics value.
1724
1725    Example 1.68. Set mos_average_packetloss_B_pv parameter
1726 ...
1727 modparam("rtpengine", "mos_average_packetloss_B_pv", "$avp(mos_average_packetlos
1728 s_B)")
1729 ...
1730
1731 4.68. mos_average_jitter_B_pv (string)
1732
1733    The name of a pseudovariable to hold the average (median) amount of
1734    jitter in milliseconds present throughout the call.
1735
1736    There is no default value.
1737
1738    This value is filled in after invoking “rtpengine_delete”,
1739    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1740    deletion of the call (or call branch).
1741
1742    Only call legs matching the rtpengine label given in the
1743    “mos_B_label_pv” will be used in calculating this statistics value.
1744
1745    Example 1.69. Set mos_average_jitter_B_pv parameter
1746 ...
1747 modparam("rtpengine", "mos_average_jitter_B_pv", "$avp(mos_average_jitter_B)")
1748 ...
1749
1750 4.69. mos_average_roundtrip_B_pv (string)
1751
1752    The name of a pseudovariable to hold the average (median) packet
1753    round-trip time in milliseconds present throughout the call.
1754
1755    There is no default value.
1756
1757    This value is filled in after invoking “rtpengine_delete”,
1758    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1759    deletion of the call (or call branch).
1760
1761    Only call legs matching the rtpengine label given in the
1762    “mos_B_label_pv” will be used in calculating this statistics value.
1763
1764    Example 1.70. Set mos_average_roundtrip_B_pv parameter
1765 ...
1766 modparam("rtpengine", "mos_average_roundtrip_B_pv", "$avp(mos_average_roundtrip_
1767 B)")
1768 ...
1769
1770 4.70. mos_average_samples_B_pv (string)
1771
1772    The name of a pseudovariable to hold the number of samples used to
1773    determine the other “average” MOS data points.
1774
1775    There is no default value.
1776
1777    This value is filled in after invoking “rtpengine_delete”,
1778    “rtpengine_query”, or “rtpengine_manage” if the command resulted in a
1779    deletion of the call (or call branch).
1780
1781    Only call legs matching the rtpengine label given in the
1782    “mos_B_label_pv” will be used in calculating this statistics value.
1783
1784    Example 1.71. Set mos_average_samples_B_pv parameter
1785 ...
1786 modparam("rtpengine", "mos_average_samples_B_pv", "$avp(mos_average_samples_B)")
1787 ...
1788
1789 4.71. control_cmd_tos (integer)
1790
1791    The parameter is used to set the value of “type of service (tos)” for
1792    the control commands (such as rtpengine_offer(), rtpengine_answer()
1793    etc).
1794
1795    There is no default value. By default this feature is not used.
1796
1797    The values not falling into the range “0-255” will be simply ignored.
1798
1799    Example 1.72. Set control_cmd_tos parameter
1800 ...
1801 modparam("rtpengine", "control_cmd_tos", 144)
1802 ...
1803
1804 4.72. hash_algo (integer)
1805
1806    Hashing algorithm to be used in node selection algorithm. Now there are
1807    2 possibilities: legacy algorithm - 0(very basic hash over callid) or
1808    SHA1 - 1(apply sha1 over the callid and calculate hash).
1809
1810    Default value is 0, legacy algorithm.
1811
1812    The values not falling into the range “0-1” are ignored.
1813
1814    Example 1.73. Set control_cmd_tos parameter
1815 ...
1816 ### use SHA1 instead of legacy algorithm
1817 modparam("rtpengine", "hash_algo", 1)
1818 ...
1819
1820 5. Functions
1821
1822    5.1. set_rtpengine_set(setid[, setid])
1823    5.2. rtpengine_offer([flags])
1824    5.3. rtpengine_answer([flags])
1825    5.4. rtpengine_info([flags])
1826    5.5. rtpengine_delete([flags])
1827    5.6. rtpengine_query([flags])
1828    5.7. rtpengine_manage([flags])
1829    5.8. start_recording([flags])
1830    5.9. stop_recording([flags])
1831    5.10. block_dtmf([flags])
1832    5.11. unblock_dtmf([flags])
1833    5.12. block_media([flags])
1834    5.13. unblock_media([flags])
1835    5.14. start_forwarding([flags])
1836    5.15. stop_forwarding([flags])
1837    5.16. play_media([flags])
1838    5.17. stop_media([flags])
1839    5.18. play_dtmf([flags])
1840
1841 5.1.  set_rtpengine_set(setid[, setid])
1842
1843    Sets the ID of the RTP proxy set to be used for the next
1844    rtpengine_delete(), rtpengine_offer(), rtpengine_answer() or
1845    rtpengine_manage() command. The parameter can be an integer or a config
1846    variable holding an integer.
1847
1848    A second set ID can be specified to daisy-chain two RTP proxies. The
1849    two set IDs must be distinct from each other and there must not be any
1850    overlap in the proxies present in both sets. In this use case, the
1851    request (offer, answer, etc) is first sent to an RTP proxy from the
1852    first set, which rewrites the SDP body and sends it back to the module.
1853    The rewritten SDP body is then used to make another request to an RTP
1854    proxy from the second set, which rewrites the SDP body another time and
1855    sends it back to the module to be placed back into the SIP message.
1856    This is useful if you have a set of RTP proxies that the caller must
1857    use, and another distinct set of RTP proxies that the callee must use.
1858    This is supported by all rtpengine commands except rtpengine_manage().
1859
1860    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
1861    BRANCH_ROUTE.
1862
1863    Example 1.74. set_rtpengine_set usage
1864 ...
1865 set_rtpengine_set("2");
1866 rtpengine_offer();
1867 ...
1868
1869 5.2.  rtpengine_offer([flags])
1870
1871    Rewrites SDP body to ensure that media is passed through an RTP proxy.
1872    To be invoked on INVITE for the cases the SDP bodies are in INVITE and
1873    200 OK and on 200 OK when SDP bodies are in 200 OK and ACK.
1874
1875    The function will return true on success and false (-1) on various
1876    failures, like using rtp_engine_offer() on a SIP MESSAGE request or
1877    communication with rtpengine fails.
1878
1879    Meaning of the parameters is as follows:
1880      * flags - flags to turn on some features.
1881        The “flags” string is a list of space-separated items. Each item is
1882        either an individual token, or a token in “key=value” format. The
1883        possible tokens are described below.
1884           + via-branch=... - Include the “branch” value of one of the
1885             “Via” headers in the request to the RTP proxy. Possible values
1886             are: “1” - use the first “Via” header; “2” - use the second
1887             “Via” header; “auto” - use the first “Via” header if this is a
1888             request, or the second one if this is a reply; “extra” - don't
1889             take the value from a header, but instead use the value of the
1890             “extra_id_pv” variable; “next” - use the branch ID generated
1891             by Kamailio for the next outgoing branch; “auto-next” - use
1892             “next” in requests and “1” in replies; “auto-extra” - use
1893             “extra” in requests and “1” in replies. This can be used to
1894             create one media session per branch on the RTP proxy. When
1895             sending a subsequent “delete” command to the RTP proxy, you
1896             can then stop just the session for a specific branch when
1897             passing the flag '1' or '2' in the “rtpengine_delete”, or stop
1898             all sessions for a call when not passing one of those two
1899             flags there. This is especially useful if you have serially
1900             forked call scenarios where the RTP proxy gets an “offer”
1901             command for a new branch, and then a “delete” command for the
1902             previous branch, which would otherwise delete the full call,
1903             breaking the subsequent “answer” for the new branch. This flag
1904             is only supported by the Sipwise rtpengine RTP proxy at the
1905             moment!
1906           + asymmetric - flags that UA from which message is received
1907             doesn't support symmetric RTP. Disables learning of endpoint
1908             addresses in the Sipwise rtpengine proxy.
1909           + no-redis-update - this flag can be used by Kamailio in order
1910             to tell rtpengine not to persist the call into Redis upon
1911             receiving offer/answer() control commands. If flag is not set,
1912             default action is rtpengine persists call to redis.
1913           + force-answer - force “answer”, that is, only rewrite SDP when
1914             corresponding session already exists in the RTP proxy. By
1915             default is on when the session is to be completed.
1916           + direction=... - this option specifies a logical network
1917             interface and should be given exactly twice. It enables RTP
1918             bridging between different addresses or networks of the same
1919             family (e.g. IPv4 to IPv4). The first instance of the option
1920             specifies the interface that the originator of this message
1921             should be using, while the second instance specifies the
1922             interface that the target should be using. For example, if the
1923             SIP message was sent by an endpoint on a private network and
1924             will be sent to an endpoint on the public internet, you would
1925             use “direction=priv direction=pub” if those two logical
1926             network interfaces were called “priv” and “pub” in your RTP
1927             proxy's configuration respectively. The direction must only be
1928             specified in for initial SDP offer; answers or subsequent
1929             offers can omit this option.
1930           + internal, external - shorthand for “direction=internal” and
1931             “direction=external” respectively. Useful for brevity or as
1932             legacy option if the RTP proxy only supports two network
1933             interfaces instead of multiple, arbitrarily named ones.
1934           + address-family=... - instructs the RTP proxy that the
1935             recipient of this SDP body expects to see addresses of a
1936             particular family. Possible values are “IP4” and “IP6”. For
1937             example, if the SDP body contains IPv4 addresses but the
1938             recipient only speaks IPv6, you would use “address-family=IP6”
1939             to bridge between the two address families.
1940             Sipwise rtpengine remembers the address family preference of
1941             each party after it has seen an SDP body from them. This means
1942             that normally it is only necessary to explicitly specify the
1943             address family in the “offer”, but not in the “answer”.
1944             Note: Please note, that this will only work properly with
1945             non-dual-stack user-agents or with dual-stack clients
1946             according to RFC6157 (which suggest ICE for Dual-Stack
1947             implementations). This short-cut will not work properly with
1948             RFC4091 (ANAT) compatible clients, which suggests having
1949             different m-lines with different IP-protocols grouped
1950             together.
1951           + force - instructs the RTP proxy to ignore marks inserted by
1952             another RTP proxy in transit to indicate that the session is
1953             already goes through another proxy. Allows creating a chain of
1954             proxies. Not supported and ignored by Sipwise rtpengine.
1955           + trust-address - flags that IP address in SDP should be
1956             trusted. Starting with rtpengine 3.8, this is the default
1957             behaviour. In older versions, without this flag the RTP proxy
1958             ignores the address in the SDP and uses source address of the
1959             SIP message as media address which is passed to the RTP proxy.
1960           + SIP-source-address - the opposite of trust-address. Restores
1961             the old default behaviour of ignoring endpoint addresses in
1962             the SDP body.
1963           + replace-origin - flags that IP from the origin description
1964             (o=) should be also changed.
1965           + replace-session-connection - flags to change the session-level
1966             SDP connection (c=) IP if media description also includes
1967             connection information.
1968           + symmetric - flags that for the UA from which message is
1969             received, support symmetric RTP must be forced. Does nothing
1970             with the Sipwise rtpengine proxy as it is the default.
1971           + repacketize=NN - requests the RTP proxy to perform
1972             re-packetization of RTP traffic coming from the UA which has
1973             sent the current message to increase or decrease payload size
1974             per each RTP packet forwarded if possible. The NN is the
1975             target payload size in ms, for the most codecs its value
1976             should be in 10ms increments, however for some codecs the
1977             increment could differ (e.g. 30ms for GSM or 20ms for G.723).
1978             The RTP proxy would select the closest value supported by the
1979             codec. This feature could be used for significantly reducing
1980             bandwith overhead for low bitrate codecs, for example with
1981             G.729 going from 10ms to 100ms saves two thirds of the network
1982             bandwith. Not supported by Sipwise rtpengine.
1983           + ICE=... - controls the RTP proxy's behaviour regarding ICE
1984             attributes within the SDP body. Possible values are: “force” -
1985             discard any ICE attributes already present in the SDP body and
1986             then generate and insert new ICE data, leaving itself as the
1987             only ICE candidates; “force-relay” - discard any “relay” type
1988             ICE attributes already present in the SDP body and then
1989             generate and insert itself as the only ICE “relay” candidates;
1990             “remove” instructs the RTP proxy to discard any ICE attributes
1991             and not insert any new ones into the SDP. The default (if no
1992             “ICE=...” is given at all), new ICE data will only be
1993             generated if no ICE was present in the SDP originally;
1994             otherwise the RTP proxy will only insert itself as additional
1995             ICE candidate. Other SDP substitutions (c=, m=, etc) are
1996             unaffected by this flag.
1997           + RTP, SRTP, DTLS, AVP, AVPF - These flags control the RTP
1998             transport protocol that should be used towards the recipient
1999             of the SDP. If none of them are specified, the protocol given
2000             in the SDP is left untouched. Otherwise, the “SRTP” flag
2001             indicates that SRTP should be used, while “RTP” indicates that
2002             SRTP should not be used. “AVPF” indicates that the advanced
2003             RTCP profile with feedback messages should be used, and “AVP”
2004             indicates that the regular RTCP profile should be used. See
2005             also the next set of flags below.
2006           + RTP/AVP, RTP/SAVP, UDP/TLS/RTP/SAVP, RTP/AVPF, RTP/SAVPF,
2007             UDP/TLS/RTP/SAVPF - these serve as an alternative, more
2008             explicit way to select between the different RTP protocols and
2009             profiles supported by the RTP proxy. For example, giving the
2010             flag “RTP/SAVPF” has the same effect as giving the two flags
2011             “SRTP AVPF”.
2012           + to-tag - force inclusion of the “To” tag. Normally, the “To”
2013             tag is always included when present, except for “delete”
2014             messages. Including the “To” tag in a “delete” messages allows
2015             you to be more selective about which dialogues within a call
2016             are being torn down.
2017           + to-tag=... - use the specified string as “To” tag instead of
2018             the actual “To” tag from the SIP message, and force inclusion
2019             of the tag in the message as per above.
2020           + from-tag=... - use the specified string as “From” tag instead
2021             of the actual “From” tag from the SIP message.
2022           + call-id=... - use the specified string as “Call-ID” instead of
2023             the actual “Call-ID” from the SIP message.
2024           + rtcp-mux-demux - if rtcp-mux (RFC 5761) was offered, make the
2025             RTP proxy accept the offer, but not offer it to the recipient
2026             of this message.
2027           + rtcp-mux-reject - if rtcp-mux was offered, make the RTP proxy
2028             reject the offer, but still offer it to the recipient. Can be
2029             combined with “rtcp-mux-offer” to always offer it.
2030           + rtcp-mux-offer - make the RTP proxy offer rtcp-mux to the
2031             recipient of this message, regardless of whether it was
2032             offered originally or not.
2033           + rtcp-mux-accept - if rtcp-mux was offered, make the RTP proxy
2034             accept the offer and also offer it to the recipient of this
2035             message. Can be combined with “rtcp-mux-offer” to always offer
2036             it.
2037           + media-address=... - force a particular media address to be
2038             used in the SDP body. Address family is detected
2039             automatically.
2040           + TOS=... - change the IP TOS value for all outgoing RTP packets
2041             within the entire call in both directions. Only honoured in an
2042             “offer”, ignored for an “answer”. Valid values are 0 through
2043             255, given in decimal. If this option is not specified, the
2044             TOS value will revert to the default TOS (normally 184). A
2045             value of -1 may be used to leave the currently used TOS
2046             unchanged.
2047           + delete-delay=... - override the default delay (in seconds)
2048             before a call is actually deleted from memory. Can be set to
2049             zero to effectuate immediate deletion. This option only makes
2050             sense for delete operations.
2051           + strict-source - instructs the RTP proxy to check the source
2052             addresses of all incoming RTP packets and drop the packets if
2053             the address doesn't match.
2054           + media-handover - the antithesis of strict-source. Instructs
2055             the RTP proxy not only to accept mismatching RTP source
2056             addresses (as it normally would), but also to accept them as
2057             the new endpoint address of the opposite media flow. Not
2058             recommended as it allows media streams to be hijacked by an
2059             attacker.
2060           + DTLS=... - influence the behaviour of DTLS-SRTP. Possible
2061             values are “no” or “off” to suppress offering or accepting
2062             DTLS-SRTP, and “passive” to prefer participating in DTLS-SRTP
2063             in a passive role.
2064           + SDES-off - don't offer SDES when it normally would. In an SRTP
2065             context, this leaves DTLS-SRTP as the only other option.
2066           + SDES-unencrypted_srtp, SDES-unencrypted_srtcp,
2067             SDES-unauthenticated_srtp - these directly reflect the SDES
2068             session parameters from RFC 4568 and will make the RTP proxy
2069             offer these parameters when offering SDES.
2070           + SDES-encrypted_srtp, SDES-encrypted_srtcp,
2071             SDES-authenticated_srtp - the opposites of the flags above.
2072             Useful if accepting these parameters is not desired and they
2073             should be rejected instead.
2074           + unidirectional - allows kernelization of one-way streams in
2075             the Sipwise rtpengine proxy. This is especially useful when
2076             the first call leg is handled by some rtpengine machine while
2077             the second call leg is handled by other rtpengine machine.
2078           + record-call=on - instructs RTPEngine to record the session.
2079             Use it in rtpengine_offer() to start recording immediately and
2080             save the call metadata, as alternative to start_recording().
2081           + metadata - a generic metadata string. The metadata will be
2082             used when recording calls to provide custom additional
2083             information. More details about this are found in the
2084             rtpengine README.
2085           + codec-transcode=... - allows codecs to be added to the list of
2086             offered codecs even if they were not present in the original
2087             list of codecs. In this case, the transcoding engine will be
2088             engaged. Only codecs that are supported for both decoding and
2089             encoding can be added in this manner. More details about this
2090             are found in the rtpengine README.
2091           + codec-strip=... - strips given codec from sdp
2092           + codec-offer=... - offer given codec from sdp. More details
2093             about this are found in the rtpengine README.
2094           + codec-mask=... - Similar to strip except that codecs listed
2095             here will still be accepted and used for transcoding on the
2096             offering side.Useful only in combination with codec-transcode.
2097             all keyword can be used to mask all offered codecs
2098           + T.38=decode - If the offered SDP contains a media section
2099             advertising T.38 over UDPTL, translate it to a regular audio
2100             media section over RTP. By default, PCMU and PCMA will be used
2101             as audio codecs, but that can be overriden using the codec
2102             options described above. Other transport protocols (e.g. SRTP)
2103             can also be selected in the same way. If the offered SDP does
2104             not contain a T.38 section, then this flag has no effect.
2105           + T.38=force - Any audio media section (over RTP) in the offered
2106             SDP will be translated into a T.38 section over UDPTL.
2107           + T.38=stop - Stops a previously established T.38 to audio
2108             gateway and reverts the session back to media passthrough.
2109             This is useful when handling a rejected T.38 offer.
2110        Check also the documentation of RTPEngine, these flags are
2111        documented there as well: https://github.com/sipwise/rtpengine.
2112
2113    This function can be used from ANY_ROUTE.
2114
2115    Example 1.75. rtpengine_offer usage
2116 route {
2117 ...
2118     if (is_method("INVITE")) {
2119         if (has_body("application/sdp")) {
2120             if (rtpengine_offer())
2121                 t_on_reply("1");
2122         } else {
2123             t_on_reply("2");
2124         }
2125     }
2126     if (is_method("ACK") && has_body("application/sdp"))
2127         rtpengine_answer();
2128 ...
2129 }
2130
2131 onreply_route[1]
2132 {
2133 ...
2134     if (has_body("application/sdp"))
2135         rtpengine_answer();
2136 ...
2137 }
2138
2139 onreply_route[2]
2140 {
2141 ...
2142     if (has_body("application/sdp"))
2143         rtpengine_offer();
2144 ...
2145 }
2146 ...
2147 if (has_body("application/sdp")) {
2148                 if (rtpengine_offer("codec-mask=all codec-transcode=PCMU codec-t
2149 ranscode=PCMA"))
2150                                 t_on_reply("1");
2151 }
2152
2153 ...
2154
2155 5.3.  rtpengine_answer([flags])
2156
2157    Rewrites SDP body to ensure that media is passed through an RTP proxy.
2158    To be invoked on 200 OK for the cases the SDP bodies are in INVITE and
2159    200 OK and on ACK when SDP bodies are in 200 OK and ACK.
2160
2161    See rtpengine_offer() function description above for the meaning of the
2162    parameters.
2163
2164    This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE,
2165    FAILURE_ROUTE, BRANCH_ROUTE.
2166
2167    Example 1.76. rtpengine_answer usage
2168
2169    See rtpengine_offer() function example above for example.
2170
2171 5.4.  rtpengine_info([flags])
2172
2173    Send an updated offer to rtpengine. This is meant to be used when
2174    processing Trickle ICE SDP Fragments that are carried in SIP INFO
2175    messages and are proxied to endpoints that do not support ICE. With a
2176    matching content type, the SDP fragment is used to update rtpengine's
2177    list of ICE candidates. No new SDP is returned and so the SIP INFO
2178    message should be consumed after calling this function.
2179
2180    While this function supports the same flags as “rtpengine_offer” et al,
2181    it is not normally necessary to provide any.
2182
2183    This function can be used from ANY_ROUTE.
2184
2185    Example 1.77. rtpengine_info usage
2186 ...
2187 rtpengine_info();
2188 ...
2189
2190 5.5.  rtpengine_delete([flags])
2191
2192    Tears down the RTP proxy session for the current call. This populates
2193    the statistics pseudovariables (such “mos_min_pv” etc).
2194
2195    See rtpengine_offer() function description above for the meaning of the
2196    parameters. Note that not all flags make sense for a “delete”.
2197
2198    This function can be used from ANY_ROUTE.
2199
2200    Example 1.78. rtpengine_delete usage
2201 ...
2202 rtpengine_delete();
2203 ...
2204
2205 5.6.  rtpengine_query([flags])
2206
2207    Queries the RTP proxy about the current status and statistics of a
2208    running call. This populates the statistics pseudovariables (such
2209    “mos_min_pv” etc).
2210
2211    See rtpengine_offer() function description above for the meaning of the
2212    parameters. Note that not all flags make sense for a “query”.
2213
2214    This function can be used from ANY_ROUTE.
2215
2216    Example 1.79. rtpengine_query usage
2217 ...
2218 rtpengine_query();
2219 ...
2220
2221 5.7.  rtpengine_manage([flags])
2222
2223    Manage the RTPEngine session - it combines the functionality of
2224    rtpengine_offer(), rtpengine_answer() and rtpengine_delete(), detecting
2225    internally based on message type and method which one to execute.
2226
2227    It can take the same parameters as rtpengine_offer(). The flags
2228    parameter to rtpengine_manage() can be a configuration variable
2229    containing the flags as a string.
2230
2231    Functionality:
2232      * If INVITE with SDP, then do rtpengine_offer()
2233      * If INVITE with SDP, when the tm module is loaded, mark transaction
2234        with internal flag FL_SDP_BODY to know that the 1xx and 2xx are for
2235        rtpengine_answer()
2236      * If ACK with SDP, then do rtpengine_answer()
2237      * If BYE or CANCEL, or called within a FAILURE_ROUTE[], then call
2238        rtpengine_delete(). Be careful with calling this function after
2239        resuming a suspended transaction (e.g., after t_continue()),
2240        because the context of executed route is FAILURE ROUTE (in other
2241        words, rtpengine_manage() in the route block of t_continue() does
2242        the same as in failure_route; use a branch route to engage
2243        rtpengine for a forwarded branch after resuming the transaction).
2244      * It does nothing if used inside event_route[tm:branch-failure:...]
2245      * If reply to INVITE with code >= 300 do rtpengine_delete()
2246      * If reply with SDP to INVITE having code 1xx and 2xx, then do
2247        rtpengine_answer() if the request had SDP or tm is not loaded,
2248        otherwise do rtpengine_offer()
2249
2250    This function can be used from ANY_ROUTE.
2251
2252    Example 1.80. rtpengine_manage usage
2253 ...
2254 rtpengine_manage();
2255 ...
2256
2257 5.8.  start_recording([flags])
2258
2259    This function will send a signal to the RTP relay to record the RTP
2260    stream flowing through it. See also the option “record-call=on” for
2261    rtpengine_manage()/rtpengine_offer(), which offers an alternative for
2262    call recording, saving also call metadata from SDP.
2263
2264    It can take the same parameters as rtpengine_manage(). The flags
2265    parameter to start_recording can be a configuration variable containing
2266    the flags as a string. The call-id flag can be used to start recording
2267    for a different call.
2268
2269    This function can be used from REQUEST_ROUTE and ONREPLY_ROUTE.
2270
2271    Example 1.81. start_recording usage
2272 ...
2273 start_recording();
2274 ...
2275
2276 5.9.  stop_recording([flags])
2277
2278    This function will send a signal to the RTP relay to stop recording the
2279    RTP stream flowing through it. See also the option “record-call=off”
2280    for rtpengine_manage()/rtpengine_offer(), which offers an alternative
2281    for call recording.
2282
2283    It can take the same parameters as rtpengine_manage(). The flags
2284    parameter to start_recording can be a configuration variable containing
2285    the flags as a string. The call-id flag can be used to stop recording
2286    for a different call.
2287
2288    This function can be used from REQUEST_ROUTE and ONREPLY_ROUTE.
2289
2290    Example 1.82. stop_recording usage
2291 ...
2292 stop_recording();
2293 ...
2294
2295 5.10.  block_dtmf([flags])
2296
2297    This function will instruct the RTP proxy to start blocking DTMF event
2298    packets (RFC 4733). DTMF events will still be processed by the RTP
2299    proxy, but they won't be forwarded to the receiving peer.
2300
2301    The call-id flag can be used to block DTMF for a different call.
2302
2303    Without any flags given, DTMF events will be blocked for the entire
2304    call. It's possible to block DTMF directionally only for individual
2305    participants. If the “directional” flag is given, DTMF events will be
2306    blocked for the UA with the currently matching “From” tag. Events can
2307    be blocked for a different UA either by specifying an alternative
2308    “from-tag=...”, or by matching UAs against the media address they
2309    advertised in the SDP using the “address=...” flag (which can contain
2310    either an IPv4 or IPv6 address).
2311
2312    This function can be used from REQUEST_ROUTE and ONREPLY_ROUTE.
2313
2314    Example 1.83. block_dtmf usage
2315 ...
2316 block_dtmf();
2317 block_dtmf("directional");
2318 block_dtmf("address=192.168.42.42");
2319 ...
2320
2321 5.11.  unblock_dtmf([flags])
2322
2323    Reverses the effects of a previously issued block_dtmf call. See above
2324    for a description of which flags can be used.
2325
2326    If DTMF events were previously blocked for individual UAs, then
2327    unblocking DTMF events for the entire call (i.e. no flags given) will
2328    not remove these blocks. The flag “all” can be used to achieve this.
2329
2330    Example 1.84. unblock_dtmf usage
2331 ...
2332 unblock_dtmf();
2333 unblock_dtmf("all");
2334 ...
2335
2336 5.12.  block_media([flags])
2337
2338    Analogous to “block_dtmf”, but blocks media RTP packets instead of DTMF
2339    events. When media is blocked, DTMF events still pass through the RTP
2340    proxy.
2341
2342    See “block_dtmf” for a description of the flags that can be used.
2343
2344    Example 1.85. block_media usage
2345 ...
2346 block_media();
2347 block_media("directional");
2348 block_media("address=192.168.42.42");
2349 ...
2350
2351 5.13.  unblock_media([flags])
2352
2353    Analogous to “unblock_dtmf”, but applies to media RTP packets instead
2354    of DTMF events.
2355
2356    See “unblock_dtmf” for a description of the flags that can be used.
2357
2358    Example 1.86. unblock_media usage
2359 ...
2360 unblock_media();
2361 unblock_media("all");
2362 ...
2363
2364 5.14.  start_forwarding([flags])
2365
2366    Controls the PCM forwarding feature of the recording daemon. Unlike the
2367    recording feature, PCM forwarding can be done directionally for
2368    individual call participants only, therefore this command takes the
2369    same flags as the media/DTMF blocking commands above.
2370
2371    See “block_dtmf” for a description of the flags that can be used.
2372
2373    Example 1.87. start_forwarding usage
2374 ...
2375 start_forwarding();
2376 start_forwarding("directional");
2377 start_forwarding("address=192.168.42.42");
2378 ...
2379
2380 5.15.  stop_forwarding([flags])
2381
2382    Analogous to “unblock_dtmf”, but controls the PCM forwarding feature
2383    instead of DTMF blocking.
2384
2385    See “unblock_dtmf” for a description of the flags that can be used.
2386
2387    Example 1.88. stop_forwarding usage
2388 ...
2389 stop_forwarding();
2390 stop_forwarding("all");
2391 ...
2392
2393 5.16.  play_media([flags])
2394
2395    Instructs rtpengine to play a prerecorded announcement to the selected
2396    call participant, either from a local file or from a file stored in a
2397    database. The participant must be selected using the same flags as are
2398    described under the “block_dtmf” function. If none of these flags are
2399    given, then the “From” tag from the current SIP message context is
2400    used.
2401
2402    If successful, the “media_duration” pseudovariable is filled in with
2403    the duration of the media being played, expressed in milliseconds. If
2404    the length of the media could not be determined, it's set to -1.
2405
2406    Example 1.89. play_media usage
2407 ...
2408 play_media("file=/use/share/media/hello.wav");
2409 play_media("from-tag=tfugklbildfydrtuykgfv db-id=12345");
2410 ...
2411
2412 5.17.  stop_media([flags])
2413
2414    Stops the playback of media previously started by “play_media”. Media
2415    playback is automatically stopped when the end of the media file is
2416    reached, so this function is only useful to prematurely stop playback.
2417
2418    Example 1.90. stop_media usage
2419 ...
2420 stop_media();
2421 stop_media("from-tag=5yqaeriguhxcikxj");
2422 ...
2423
2424 5.18.  play_dtmf([flags])
2425
2426    Injects a DTMF event into the media stream. Depending on which codecs
2427    were negotiated, this either injects an RFC 2833/4733 DTMF event, or an
2428    in-band PCM DTMF tone into the audio stream. The flag “inject DTMF”
2429    must have been present in both offer and answer messages when the call
2430    was established, which forces all audio to go through rtpengine's
2431    transcoding engine.
2432
2433    Usage is similar to “play_media” with the following exceptions. The
2434    selected party is not the party that will receive the DTMF event, but
2435    rather the party which is generating the event. This is to support DTMF
2436    events that are carried in SIP INFO messages. Instead of specifying a
2437    media file, a DTMF event code must be specified, as well as optionally
2438    a duration and the volume. The “code” can be a number 0 through 15, or
2439    a DTMF digit (0-9, A-D, *, #). The “duration” is specified in
2440    milliseconds and defaults to 250, within a range of 100-5000. The
2441    “volume” is specified in absolute decibels, with a default of -8 db.
2442
2443    Multiple consecutive DTMF events can be queued up by calling this
2444    function multiple times consecutively. RTPengine will play out the DTMF
2445    events in sequence, separated by a default pause of 100 ms. An
2446    alternative pause length can be given through the “pause” option,
2447    between 100 and 5000 ms.
2448
2449    Example 1.91. play_dtmf usage
2450 ...
2451 play_dtmf("from-tag=5yqaeriguhxcikxj code=#");
2452 play_dtmf("code=1 volume=5 duration=300 pause=150");
2453 ...
2454
2455 6. Exported Pseudo Variables
2456
2457    6.1. $rtpstat
2458
2459 6.1. $rtpstat
2460
2461    Returns the RTP statistics from the RTP proxy. The RTP statistics from
2462    the RTP proxy are provided as a string and it does contain several
2463    packet counters. The statistics must be retrieved before the session is
2464    deleted (before rtpengine_delete()).
2465
2466    Example 1.92. $rtpstat Usage
2467 ...
2468     append_hf("X-RTP-Statistics: $rtpstat\r\n");
2469 ...
2470
2471 7. RPC Commands
2472
2473    7.1. rtpengine.reload
2474    7.2. rtpengine.enable proxy_url/all 0/1
2475    7.3. rtpengine.show proxy_url/all
2476    7.4. rtpengine.ping proxy_url/all
2477    7.5. rtpengine.get_hash_total
2478
2479 7.1. rtpengine.reload
2480
2481    Reloads the database node table content if configured. Returns specific
2482    message related to success, failure and no db_url configured.
2483
2484    NOTE: The current behaviour updates the nodes state or creates new ones
2485    or hides old ones, based on the database content. If allow_op modparam
2486    is enabled, the sessions are still allowed to finish for the hidden old
2487    nodes.
2488
2489    Example 1.93.  rtpengine.reload usage
2490 ...
2491 $ kamcmd rtpengine.reload
2492 ...
2493
2494 7.2. rtpengine.enable proxy_url/all 0/1
2495
2496    Enables a RTP proxy if the second parameter value is greater than 0.
2497    Disables it if a zero value is given. The first parameter is either a
2498    specific RTP proxy url (exactly as defined in the config file) or the
2499    keyword all. The second parameter value must be a number in decimal.
2500
2501    When try to enable the RTP proxy, an application ping command is sent
2502    to it. If it fails, the proxy is not enabled. Displays success or fail
2503    when try to enable/disable.
2504
2505    NOTE: If a RTP proxy is defined multiple times (in the same or diferent
2506    sets), all of its instances will be enabled/disabled.
2507
2508    NOTE: If a RTP proxy is in the disabled permanent state and one tries
2509    to enable it, even if the ping fails, it is moved to a disabled
2510    temporary state and a recheck_ticks are given to it. While the
2511    recheck_ticks are grater than 0, the proxy is considered disabled
2512    temporary, and it is not taken into consideration for sending data.
2513    When the recheck_ticks are 0, the proxy is retested when trying to send
2514    data (not automatically retested), and data can be send to it on
2515    success.
2516
2517    NOTE: If you specify an IPv6 RTP, the proxy url must be prefixed with
2518    :: to escape the :: from the IPv6 address. See the example below.
2519
2520    Example 1.94.  rtpengine.enable usage
2521 ...
2522 $ kamcmd rtpengine.enable udp:192.168.2.133:8081 0
2523 $ kamcmd rtpengine.enable ::udp6:fe80::9a90:96ff:fea8:fd99:9999 1
2524 $ kamcmd rtpengine.enable all 1
2525 ...
2526
2527 7.3. rtpengine.show proxy_url/all
2528
2529    Displays all the RTP proxies and their information: set and status
2530    (disabled or not, weight and recheck_ticks). If a RTP proxy has been
2531    disabled by nh_enable_rtpp mi command a "(permanent)" quote will appear
2532    when printing the disabled status. This is to differentiate from a
2533    temporary disable due to the proxy being not found responsive by
2534    kamailio. In addition, when disabled permanent, recheck_ticks have no
2535    meaning and "N\A" is printed instead of the value.
2536
2537    It takes either a specific RTP proxy url (exactly as defined in the
2538    config file) or the keyword all as a parameter.
2539
2540    NOTE: When specify the IPv6 RTP proxy url one must prefix it with :: to
2541    escape the :: from the IPv6 address. See the example below.
2542
2543    Example 1.95.  rtpengine.show usage
2544 ...
2545 $ kamcmd rtpengine.show udp:192.168.2.133:8081
2546 $ kamcmd rtpengine.show ::udp6:fe80::9a90:96ff:fea8:fd99:9999
2547 $ kamcmd rtpengine.show all
2548 ...
2549
2550 7.4. rtpengine.ping proxy_url/all
2551
2552    Sends an application ping command to the RTP proxy. If the proxy does
2553    not respond, it will be disabled, but not permanent. If the proxy
2554    responds, no action is taken. Displays the ping result, i.e. success or
2555    fail when try to ping.
2556
2557    It takes either a specific RTP proxy url (exactly as defined in the
2558    config file) or the keyword all as a parameter.
2559
2560    NOTE: When specify the IPv6 RTP proxy url one must prefix it with :: to
2561    escape the :: from the IPv6 address. See the example below.
2562
2563    Example 1.96.  rtpengine.ping usage
2564 ...
2565 $ kamcmd rtpengine.ping udp:192.168.2.133:8081
2566 $ kamcmd rtpengine.ping ::udp6:fe80::9a90:96ff:fea8:fd99:9999
2567 $ kamcmd rtpengine.ping all
2568 ...
2569
2570 7.5. rtpengine.get_hash_total
2571
2572    Print the total number of hash entries in the hash table at a given
2573    moment.
2574
2575    Example 1.97.  rtpengine.get_hash_total usage
2576 ...
2577 $ kamcmd rtpengine.get_hash_total
2578 ...
2579
2580 Chapter 2. Frequently Asked Questions
2581
2582    2.1. How do I migrate from “rtpproxy” or “rtpproxy-ng” to “rtpengine”?
2583    2.2. Where can I find more about Kamailio?
2584    2.3. Where can I post a question about this module?
2585    2.4. How can I report a bug?
2586
2587    2.1.
2588
2589    How do I migrate from “rtpproxy” or “rtpproxy-ng” to “rtpengine”?
2590
2591    For the most part, only the names of the functions have changed, with
2592    “rtpproxy” in each name replaced with “rtpengine”. For example,
2593    “rtpproxy_manage()” has become “rtpengine_manage()”. A few name
2594    duplications have also been resolved, for example there is now a single
2595    “rtpengine_delete()” instead of “unforce_rtp_proxy()” and the identical
2596    “rtpproxy_destroy()”.
2597
2598    The largest difference to the old module is how flags are passed to
2599    “rtpengine_offer()”, “rtpengine_answer()”, “rtpengine_manage()” and
2600    “rtpengine_delete()”. Instead of having a string of single-letter
2601    flags, they now take a string of space-separated items, with each item
2602    being either a single token (word) or a “key=value” pair.
2603
2604    For example, if you had a call “rtpproxy_offer("FRWOC+PS");”, this
2605    would then become:
2606 rtpengine_offer("force trust-address symmetric replace-origin replace-session-co
2607 nnection ICE=force RTP/SAVPF");
2608
2609    Finally, if you were using the second parameter (explicit media
2610    address) to any of these functions, this has been replaced by the
2611    “media-address=...” option within the first string of flags.
2612
2613    2.2.
2614
2615    Where can I find more about Kamailio?
2616
2617    Take a look at https://www.kamailio.org/.
2618
2619    2.3.
2620
2621    Where can I post a question about this module?
2622
2623    First at all check if your question was already answered on one of our
2624    mailing lists:
2625      * User Mailing List -
2626        https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
2627      * Developer Mailing List -
2628        https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev
2629
2630    E-mails regarding any stable Kamailio release should be sent to
2631    <sr-users@lists.kamailio.org> and e-mails regarding development
2632    versions should be sent to <sr-dev@lists.kamailio.org>.
2633
2634    2.4.
2635
2636    How can I report a bug?
2637
2638    Please follow the guidelines provided at:
2639    https://github.com/kamailio/kamailio/issues.