lib/srdb1: updated path to root folder in Makefile for db schema
[sip-router] / NEWS
1 Release notes for Kamailio/SIP Router (sr)
2 ***********************************************
3
4 Starting with release 3.2, release notes have
5 been posted to the Kamailio website. Release
6 notes for previous versions are posted below.
7
8 For releases after 3.1, please visit:
9
10 http://www.kamailio.org/wiki/features/new-in-4.4.x
11 http://www.kamailio.org/wiki/features/new-in-4.3.x
12 http://www.kamailio.org/wiki/features/new-in-4.2.x
13 http://www.kamailio.org/wiki/features/new-in-4.1.x
14 http://www.kamailio.org/wiki/features/new-in-4.0.x
15 http://www.kamailio.org/wiki/features/new-in-3.3.x
16 http://www.kamailio.org/wiki/features/new-in-3.2.x
17
18 Earlier verisons are listed below.
19 ===================================================
20
21 sip-router 3.1 changes
22
23 core:
24   - Dragonfly BSD support
25   - statistics / counters support for tcp and sctp (enable by default)
26   - statistics / counters api
27   - networks addresses support in ip comparisons (src_ip, dst_ip, to_ip)
28     with strings or rvalue expressions.
29     E.g.: $ip=10.0.0.0;  if (src_ip == $ip +"/8") ....
30   - lots of module functions automatically support now expressions or
31       variables in function parameters. This applies to all the module
32       functions declared without a fixup, with a fixup and the corresponding
33       free_fixup function or with a compatible ser or kamailio style standard
34       fixup (declared in sr_module.h or mod_fix.h).
35       E.g.: f($a, "b = " + $b);  t_set_fr($v + 2 + $x).
36             t_set_fr($foo) (equivalent now with t_set_fr("$foo")).
37   - all the module functions can now be called with any constant expression
38       as parameters. E.g.: f("7 *" +" 6 = " + 7 * 6);
39   - major performance increase on Linux multi-cpu machines that send a lot
40      of UDP IPv4 packets (40-50% faster in stateless mode). For it to work
41      udp4_raw must be enabled or set into auto mode in sr.cfg and sr must be
42      started as root or with CAP_NET_RAW. Note that even if udp4_raw is
43      off (default), if sr was started with enough privileges, it can be
44      enabled at runtime.
45      The support for using raw sockets is also available on FreeBSD (compiled
46      by default but not tested for performance yet), NetBSD, OpenBSD and
47      Darwin (not tested and not compiled by default, needs
48      make cfg extra_defs=-DUSE_RAW_SOCKS). To check if the support is
49      compiled, use ser -V |grep --color RAW_SOCKS or for a running
50      ser: sercmd core.udp4_raw_info.
51      See udp4_raw, udp4_raw_mtu and udp4_raw_ttl below.
52   - asynchronous TLS support
53   - onreply_route {...} is now equivalent with onreply_route[0] {...}
54   - global, per protocol blacklist ignore masks (via extended send_flags).
55     See dst_blacklist_udp_imask a.s.o (dst_blacklist_*_imask).
56   - per message blacklist ignore masks
57   - route() now supports rvalue expressions (e.g. route("test"+$i))
58   - support for permanent entries in the DNS cache.
59
60 new config variables:
61   - udp4_raw - enables raw socket support for sending UDP IPv4 datagrams 
62       (40-50% performance increase on linux multi-cpu).
63       Possible values: 0 - disabled (default), 1 - enabled, -1 auto.
64       In "auto" mode it will be enabled if possible (sr started as root or
65       with CAP_NET_RAW).
66       udp4_raw can be used on Linux and FreeBSD. For other BSDs and Darwin
67       one must compile with -DUSE_RAW_SOCKS.
68       On Linux one should also set udp4_raw_mtu if the MTU on any network
69       interface that could be used for sending is smaller then 1500.
70       Can be set at runtime as long as sr was started with enough privileges
71       (core.udp4_raw).
72   - udp4_raw_mtu - MTU value used for UDP IPv4 packets when udp4_raw is
73       enabled.  It should be set to the minimum MTU of all the network
74       interfaces that could be used for sending. The default value is 1500.
75       Note that on BSDs it does not need to be set (if set it will be ignored,
76       the proper MTU will be used automatically by the kernel). On Linux it
77       should be set.
78       Can be set at runtime (core.udp4_raw_mtu).
79   - udp4_raw_ttl - TTL value used for UDP IPv4 packets when udp4_raw is
80       enabled. By default it is set to auto mode (-1), meaning that the
81       same TTL will be used as for normal UDP sockets.
82       Can be set at runtime (core.udp4_raw_ttl).
83   - dst_blacklist_udp_imask - global blacklist events ignore mask for udp
84     (a blacklist event/reason set in this variable will be ignored when 
85     deciding whether or not to blacklist an udp destination). Can be set
86     at runtime. Default: 0 (no blacklist reason is ignored).
87     Possible values:  0 -disabled, 2 - send error; 4 - connect error,
88                       8 - icmp (reserverd), 16 - transaction timeout,
89                      32 - 503 received, 64 - administratively prohibited
90                      (manually set).
91    - dst_blacklist_tcp_imask - like dst_blacklist_udp_imask, but for tcp.
92    - dst_blacklist_tls_imask - like dst_blacklist_tls_imask, but for tcp.
93    - dst_blacklist_sctp_imask -like dst_blacklist_sctp_imask, but for tcp.
94    - dns_cache_rec_pref - DNS cache record preference:
95                 0 - do not check duplicates (default)
96                 1 - prefer old records
97                 2 - prefer new records
98                 3 - prefer records with longer lifetime
99
100 modules:
101    - counters: functions and RPCs for manipulating counters (statistics):
102            modparam("counters", "script_counter", name)
103            cnt_inc(name)
104            cnt_add(name, val)
105            cnt_reset(name)
106    - blst: functions for ignoring blacklist events per message:
107            blst_set_ignore(mask):  set the events in mask in the per
108             per message blacklist ignore mask for a request
109             (see dst_blacklist_udp_imask for possible values).
110             The basic operation is: msg_blst_ignore_mask|=mask.
111            blst_clear_ignore(mask): like blst_set_ignore(mask), but instead
112             of setting some events, it clears them
113             (msg_blst_ignore_mask&=~mask).
114            blst_rpl_set_ignore(mask): like blst_set_ignore(mask), but sets
115             the mask for possible local replies to the current message.
116            blst_rpl_clear_ignore(mask): like blst_rpl_ignore(mask), but
117             clears instead of setting.
118    - tls:
119           certificate revocation list (CRL) support.
120           asynchronous TLS support
121           new TLS RPCs (tls.info, tls.options), tls.list more detailed.
122           removed handshake_timeout and send_timeout module parameters /
123             config variables. The values from tcp are used instead
124             (tcp_connect_timeout and tcp_send_timeout).
125           runtime config support
126           more config options:
127             crl - certificate revocation list file path (PEM format).
128             send_close_notify - enables/disables sending close notify
129               alerts prior to closing the corresponding TCP connection.
130               Sending the close notify prior to tcp shutdown is "nicer"
131               from a TLS point of view, but it has a measurable
132               performance impact. Default: off. Can be set at runtime
133               (tls.send_close_notify).
134             con_ct_wq_max - per connection tls maximum clear text write
135               queue size.  The TLS clear-text write queues are used when a
136               send attempt has to be delayed due to an on-going TLS level
137               renegotiation. Can be set at runtime (tls.con_ct_wq_max).
138               Default: 65536 (64 Kb).
139             ct_wq_max - maximum total for all the tls clear text write
140               queues (summed). Can be set at runtime (tls.ct_wq_max).
141               Default: 10485760 (10 Mb).
142             ct_wq_blk_size - internal TLS pre-write (clear-text) queue
143               minimum block size (advance tunning or debugging).
144               Can be set at runtime (tls.ct_wq_blk_size).
145               Default: 4096 (4 Kb).
146           verbose debug messages can be enable by re-compiling with
147             -DTLS_RD_DEBUG (for the read path) and -DTLS_WR_DEBUG
148             (for the write path).
149           new options for better tuning memory usage for modern openssl
150             versions: ssl_release_buffers (default 1), ssl_freelist_max_len
151             (default 0), ssl_max_send_fragment, ssl_read_ahead (default 0).
152             For more info see modules/doc/tls/README.
153           compression is now disabled by default. To enable it set
154             tls_disable_compression to 0, but note that memory usage will
155             increase dramatically especially for large number of
156             connections (>1000).
157 tm:
158    - reason header support (RFC3326) both for CANCELs generated due to a
159       received final reply and for hop by hop CANCELs generated because of a
160       received CANCEL.
161       E.g.: reason header added for a CANCEL generated after a 200 reply was
162             received on one of the branches "Reason: SIP;cause=200".
163       The reason header support can be turned on/off using either tm
164       module parameters or in the end to end CANCEL case also on a per
165       transaction basis, using a script function:
166        local_cancel_reason = 0 | 1 (default 1/on) - turns on adding reason
167          headers for CANCELs generated due to a final reply. Can be changed
168          at runtime.
169        e2e_cancel_reason = 0 | 1 (default 1/on) - turns on copying reason
170          headers from a received end to end CANCEL (the generated hop by hop
171          CANCELs will have the same reason headers as the received CANCEL).
172          Can be changed at runtime.
173        t_set_no_e2e_cancel_reason(0|1) - enable/disable cancel reason 
174          header copying on a per transaction basis (0 - enable, 1 disable).
175    - t_reply() can be used both from the main/core onreply_route{} and tm
176      onreply_route[...]{}s.
177
178
179
180 sip-router 3.0 changes
181
182 core:
183   - type casts operators: (int), (str).
184   - new operators eq, ne for string compares and ieq, ine for interger 
185     compares. The names are not yet final (use them at your own risk).
186     Future version might use ==/!= only for ints (ieq/ine) and eq/ne for
187     strings (under debate).
188     They are almost equivalent to == or !=, but they force the conversion 
189     of their operands (eq to string and ieq to int), allowing among other
190     things better type checking on startup and more optimizations.
191     Non equiv. examples: 0 == "" (true) is not equivalent to 0 eq ""
192     (false: it evaluates to "0" eq ""). "a" ieq "b" (true: (int)"a" is 0
193      and (int)"b" is 0) is not equivalent to "a" == "b" (false).
194     Note: internally == and != are converted on startup to eq/ne/ieq/ine 
195     whenever possible (both operand types can be safely determined at
196     start time and they are the same).
197   - try to guess what the user wanted when operators that support multiple
198      types are used on different typed operands. In general convert the
199      the right operand to the type of the left operand and then perform the
200      operation. Exception: the left operand is undef.
201      This applies to the following operators: +, == and !=.
202      Special case: undef as left operand:
203      For +: undef + expr -> undef is converted to string => "" + expr.
204      For == and !=:   undef == expr -> undef is converted to type_of expr.
205      If expr is undef, then undef == undef is true (internally is converted
206      to string).
207   - expression evaluation changes: auto-convert to interger or string
208      in function of the operators: 
209        int(undef)==0,  int("")==0, int("123")==123, int("abc")==0
210        str(undef)=="", str(123)=="123".
211   - new script operators: defined, strlen, strempty
212       defined expr - returns true if expr is defined, and false if not.
213                      Note: only a standalone avp or pvar can be
214                      undefined, everything else is defined.
215       strlen(expr) - returns the lenght of expr evaluated as string.
216       strempty(expr) - returns true if expr evaluates to the empty
217                        string (equivalent to expr=="").
218     e.g.: if (defined $v && !strempty($v)) $len=strlen($v);
219   - msg:len max_len comparison obsoleted and removed (it did not make any
220     sense, msg:len > max_len was always false, use something like 
221     4096 or 16384 in its place).
222   - module search path support: loadpath takes now a list of directories
223     separated by ':'. The list is searched in-order. For each directory d
224     $d/${module_name}.so and $d/${module_name}/${module_name}.so are tried.
225   - dns TXT, EBL and PTR support (both cache and non-cached resolver)
226   - support for dual module interfaces: ser and kamailio
227 config script changes:
228   - script mode can be switched between ser compatible, kamailio compatible
229     and max compatibility (compatible with both as much as possible), using
230       #!SER
231       #!KAMAILIO
232       #!OPENSER
233       #!ALL
234       #!MAXCOMPAT
235     where #!KAMAILIO is equivalent with #!OPENSER and #!ALL with #!MAXCOMPAT
236   - support for kamailio style pvars
237   - C-like switch()/case (integer only)
238   - while()
239   - include file support: include_file "somefile"
240   - event route support: event_route[module_name:eventid]
241   - user and shm_force_alloc must now appear prior to any modparam() or route
242      block.
243   - per message send_flags support (see set_forward_no_connect(),
244      set_forward_reply_no_connect(), set_forward_close() & set_reply_close())
245
246 build system:
247   - multiple modules directories are now supported (defined in Makefile.dirs)
248
249 new config variables:
250   - max_while_loops - maximum iterations allowed for a while  (can be changed
251        at runtime). Default 100.
252   - log_name - set the application name used when printing to syslog.
253   - mem_summary - memory debugging info logged on exit or on SIGUSR1.
254        The value is a combination of flags: 0 - off,
255        1 - dump all used memory blocks and some statistics (lots of output),
256        2 - dump a summary of the used memory blocks (works only if
257            compiled with DBG_QM_MALLOC or DBG_F_MALLOC).
258        Default: 1.
259        Can be changed at runtime.
260   - shm = number  or shm_mem = number  - size of shared memory in MB. It's
261        overwritten if a value is specified on the command line (-m val).
262        Default: 32 Mb. Must appear prior to any modparam() or route block.
263
264 new script commands:
265   add_local_rport() - adds the rport parameter to the added via header
266        (rfc3581).
267   set_forward_no_connect() - the message will be forwarded only if there is
268        already an existing connection to the destination (it applies only to
269        connection oriented protocols like tcp, tls and in the future sctp).
270   set_reply_no_connect() - like set_forward_no_connect(),  but works for
271        replies to the current message.
272   set_forward_close()  - try to close the connection after forwarding the
273        current message (it applies only when the underlying protocol is
274        connection oriented).
275   set_reply_close() - like set_forward_close(), but it works for replies to
276        the current message.
277
278 tm:
279   disable_6xx_block parameter - if set, will treat 6xx replies like normal
280        replies (non rfc conformant). Default: off.
281        See also t_set_disable_6xx().
282   t_set_disable_6xx(0|1) - can be used to turn off/on the special 6xx handling
283        on a per transaction basis.
284   t_set_disable_failover(0|1) - can be used to turn off/on dns failover on a
285        per transaction basis.
286
287
288
289 2.1.0 changes
290
291 modules:
292  - textops   - functions:
293                         - remove_hf_re("regexp") -- filter message headers out
294                           by matching the header name field against a regular
295                           expression.
296  - avp       - export new selects table to allow dissecting the content of an
297                attribute by interpreting it as a "name-addr" value 
298  - auth      - experimental support for one-time nonces: when enabled a nonce
299                will be accepted only for one response (each new request will
300                be challenged). See one_time_nonce.
301              - experimental support for nc checking when qop=auth
302                (fast, non-locking implementation, see nonce_count, 
303                 nc_array_size, nc_array_order and nid_pool_no) 
304              - switched to base64 nonces
305              - record nonce generation time inside the nonce so that a 
306                received nonce can be checked against ser start time
307                (if older => stale). This allows gracefully handling ser
308                restarts with different auth configs.
309              - added extra authentication checks support, to protect
310                against various reply attacks.
311              - params:
312                        - nonce_auth_max_drift - maximum difference in seconds
313                           from the current time, if a nonce appears to be
314                           created in the future (if exceeded the nonce is 
315                           considered stale).
316                        - one_time_nonce - if enabled each nonce is allowed 
317                           only once => each new request (including 
318                           retransmissions!) will be challenged. It should be
319                           used only in stateful mode (so that tm deals with
320                           the retransmissions). The major disadvantage is that
321                           the UA won't be able to used any cached credentials
322                           (=> extra messages, extra round trips, more work for
323                            the proxy)
324                        - otn_in_flight_no - maximum number of in-flight nonces
325                           for one-time-nonces. It must be a number of the form
326                           2^k (if not it will be automatically rounded down).
327                           The memory used will be otn_in_flight_no/8
328                        - otn_in_flight_order - like otn_in_flight_no, but 
329                           instead of specifying the number as 2^k, it directly
330                           sets k (otn_in_flight_no=2^otn_in_flight_order)
331                        - nonce_count - if enabled and qop=auth or 
332                           qop=auth-int, store and check received nc values
333                           (for details see rfc2617 and auth/doc). It should be
334                           used only in stateful mode (so that tm deals with
335                           the retransmissions which would otherwise be 
336                           challenged). The major advantage is greatly 
337                           enhanced security (extremely small probability of
338                           a succesfull replay attack) combine with support
339                           for cached credentials (if the UAs do support qop 
340                           and auth)
341                        - nc_array_size - size of the array used for storing
342                           nc values, default 1Mb. It will be rounded down to
343                           a 2^k value. It represents the maximum number of
344                           in-flight nonces supported
345                        - nc_array_order - equivalent to nc_array_size, but 
346                           instead of specifying the size in bytes, it can 
347                           be used to directly set the power of 2 used
348                           (nc_array_size=2^nc_array_order)
349                        - nid_pool_no - number of nc and one-time-nonce array 
350                           and index partitions, useful for increasing 
351                           performance on multi-cpu systems (default 1,
352                           recommended 4)
353                        - auth_checks_register, auth_checks_no_dlg, 
354                          auth_checks_in_dlg - flags specifying which extra
355                           message part/parts will be checked for change before
356                           allowing nonce reuse. See the auth module docs for
357                           for more information (modules/auth/README).
358  - blst      - new module containing script blacklist manipulations functions
359                (the source of a message can be blacklisted, removed from the
360                 blacklist or checked for presence in the blacklist).
361  - tm        - added API function t_get_canceled_ident(): returns the hash 
362                coordinates (bucket/index) of the transaction the currently 
363                processed CANCEL is targeting. Requires AS support enabled.
364              - added API function ack_local_uac(): allow generating the ACKs 
365                for 2xx'ed locally originated INVITEs - new headers and body can
366                now also be appended to it. Requires AS support enabled.
367              - matching of E2E ACKs no longer requires full From HF identity,
368                but rather only tag equality (this behaviour can be changed by
369                defining TM_E2E_ACK_CHECK_FROM_URI)
370              - added t_reset_fr(), t_reset_retr(), t_reset_max_lifetime()
371              - t_relay_to renamed to t_relay_to_avp (undocumented function)
372              - t_relay() can now also take host and port parameters (e.g.
373                t_relay(host, port)), behaving like a statefull 
374                forwad(host, port) version (forward to host:port using the same
375                protocol on which the message was received)
376              - t_relay_to_udp(), t_relay_to_tcp() and t_relay_to_tls() work
377                now even with no parameters: in this case the message is 
378                forwarded using the request uri, but with the specified protocol
379                (equivalent to a t_relay() with a forced protocol)
380              - method for canceling unreplied branches can now be selected
381                using the new cancel_b_method tm parameter.
382              - support for adding a 503 reply source to the blacklist for
383                the time specified in the Retry-After header (see the new tm
384                parameters blst_503, blst_503_def_timeout, blst_503_min_timeout
385                and blst_503_max_timeout).
386              - different error replies for too many branches (500 but with
387                different text), resolve error (478) or send error
388                (477).
389              - tm can be configured not to automatically send 100 replies
390                for invites either globally (see the auto_inv_100 parameter)
391                or on a per transaction basis (see t_set_auto_inv_100(...))
392              - t_relay* error reply are delayed till the end of the script
393                to allow the script writer to overwrite them
394              - branches are always canceled hop by hop
395              - cancels for silently canceled branches (no replies ever 
396                received) are automatically generated if later a provisional
397                reply arrives on such a branch
398              - noisy_ctimer is now 1 (on) by default
399              - added maximum transaction lifetime - a transaction is not
400                allowed to be active longer then this interval. See
401                t_set_max_lifetime(), max_inv_lifetime and max_noninv_lifetime.
402              - support for changing the retransmission intervals on the fly,
403                on a per transaction basis (it is enabled if tm is compiled
404                with -DTM_DIFF_RT_TIMEOUT -- default): t_set_retr(t1, t2).
405              - transaction are deleted the moment they are not referenced 
406                anymore (removed the need for the delete timer) -- this 
407                should improve memory usage on very busy proxies.
408              - lots of callbacks added
409              - new onsend callbacks support (require defining TMCB_ONSEND prior
410                to compiling tm)
411              - behaviour when receiving a CANCEL which doesn't match any 
412                transaction can be selected using the unmatched_cancel param.
413              - params: 
414                         - cancel_b_method - selects one of the three methods
415                           for dealing with unreplied branches when the 
416                           transaction must be canceled. The possible values
417                           are 0 (old behaviour) for stopping request 
418                           retransmission on the branch and act as if 
419                           the branch was immediately replied with a 487,
420                           1 for continuing to retransmit the request until an
421                           answer is received or the timeout kicks in (default)
422                           and
423                           2 for stopping the request retransmission and sending
424                           CANCEL on the branch (not rfc conforming).
425                           For more information see tm docs.
426                         - blst_503 - if set and if the blacklist is used
427                           (use_dst_blacklist=1), add the source of a 503 reply
428                           to the blacklist
429                         - blst_503_def_timeout - if the Retry-After header from
430                           a 503 reply is missing, use this value for the 
431                           blacklist timeout (in s). Depends on blst_503.
432                           The default value is 0 ( do not blacklist if no
433                           Retry-After is present).
434                         - blst_503_min_timeot (in s) - if the 503 reply 
435                           Retry-After header value is less, use this value
436                           for the blacklist timeout. Depends on blst_503.
437                           The default value is 0.
438                         - blst_503_max_timeout (in s) - if the 503 reply 
439                           Retry-After header value is greater, use this value
440                           instead. Depends on blst_503.
441                           The default value is 3600 s.
442                         - auto_inv_100 - if set (default) tm will automatically
443                           send an 100 reply to INVITEs (see also 
444                          t_set_auto_inv_100())
445                         - noisy_ctimer is now 1 by default
446                         - max_inv_lifetime & max_noninv_lifetime - default
447                           maximum lifetimes for an invite or non-invite 
448                           transaction. After this interval has passed from 
449                           the transaction creation the transaction will be 
450                           either switched into the wait state or in the
451                           final response retransmission state => a transaction
452                           will be kept in memory for maximum: 
453                            max_*inv_lifetime + fr_timer /*ack w.*/ +wait_timer.
454                         - unmatched_cancel - selects between forwarding cancels
455                            that do not match any transaction statefully (0, 
456                            default value), statelessly (1) or dropping them
457                            (2). Note that the statefull forwarding has an 
458                            additional hidden advantage: tm will be able to
459                            recognize INVITEs that arrive after their CANCEL.
460                            Note also that this feature could be used to try
461                            a memory exhaustion DOS attack against a proxy that
462                            authenticates all requests, by continuously flooding
463                            the victim with CANCELs to random destinations 
464                            (since the CANCEL cannot be authenticated, each
465                            received bogus CANCEL will create a new transaction 
466                            that will live by default 30s).
467              - functions:
468                         - t_reset_fr() -- resets the current transaction 
469                           fr_inv_timer and fr_timer to the default values
470                           (set via the tm modparams fr_inv_timer and fr_timer).
471                         - t_reset_retr() -- resets the current transaction
472                           retransmission intervals on the fly, to the default
473                           values (set via the tm modparams retr_timer1 and 
474                           retr_timer2).
475                         - t_reset_max_lifetime() -- resets the current 
476                           transaction maximum lifetime to the default value
477                           (set via the tm  modparam max_inv_lifetime or 
478                            max_noninv_lifetime).
479                         - t_grep_status("code") -- returns true if any branch
480                           received code as the final reply (or if no final 
481                           reply was yet received, but a "code" provisional 
482                           reply).
483                         - t_set_auto_inv_100(on/off) - switch automatically
484                           sending 100 replies to INVITEs on/off on a per
485                           transaction basis. It overrides the tm param.
486                           auto_inv_100.
487                         - t_set_max_lifetime(inv, noninv) - changes the 
488                           maximum transaction lifetime on the fly, for the
489                           current or next to be created transaction.
490                         - t_set_retr(t1, t2) - changes the retransmissions
491                            intervals on the fly, on a per transaction basis.
492 core:
493              - most tcp config vars migrated to the dynamic config framework
494                (can be changed at runtime, e.g. 
495                  sercmd cfg.set_now_int tcp connection_lifetime 180 )
496              - fallback to tcp or other congestion controlled transport 
497                protocol if a forwarded udp sip request is greater then 
498                udp_mtu (config). Default off. See udp_mtu and 
499                udp_mtu_try_proto.
500              - sctp support (one-to-many, work in progress, for now linux
501                and freebsd only)
502              - partial cygwin (windows) support revived: core+static modules, 
503                no ipv6, no tcp, no dynamic modules
504              - most of the config variables can now be changed on the fly,
505                without ser restart  (migration work in progress)
506              - tcp improvements (better tcp timers, send fd cache, special
507                 options support)
508              - dns naptr support (see dns_try_naptr and dns_<proto>_pref)
509              - dns srv based load balancing support (see dns_srv_lb)
510              - support for locking ser's pages in memory, pre-mapping
511                all the shared memory on startup (fill it with 0)
512              - real time options
513              - devel: new PROC_INIT rank, init_child(PROC_INIT) called first
514              - futex support on linux (better behaviour when waiting on 
515                long held locks, almost no performance impact otherwise)
516              - when dns search list was used for resolution, store the "link"
517                between the short name and long name in cache as CNAME record
518
519 new config variables:
520   tcp_rd_buf_size = buffer size used for tcp reads.
521                     A high buffer size increases performance on server with few
522                     connections and lot of traffic on them, but also increases
523                      memory consumption (so for lots of connection is better 
524                     to use a low value). Note also that this value limits the
525                     maximum datagram size that can be received over tcp.
526                     Default: 4096, can be changed at runtime.
527   tcp_wq_blk_size = block size used for tcp async writes. It should be big
528                     enough to hold a few datagrams. If it's smaller then a
529                     datagram (in fact a tcp write()) size, it will be rounded
530                     up. It has no influenced on the number of datagrams 
531                     queued (for that see tcp_conn_wq_max or tcp_wq_max).
532                     It has mostly debugging and testing value (can be ignored).
533                     Default: 2100 (~ 2 INVITEs), can be changed at runtime.
534   tcp_no_connect = yes/no - disable connects, ser will only accept new 
535                      connections, it will never try to open new ones.
536                      Default: no, can be changed at runtime.
537   udp_mtu = number - fallback to another protocol (udp_mtu_try_proto must be
538                      set also either globally or per packet) if the constructed
539                      request size is greater then udp_mtu.
540                      Recommended size: 1300. Default: 0 (off).
541   udp_mtu_try_proto = TCP|TLS|SCTP|UDP - if udp_mtu !=0 and udp forwarded
542                      request size (after adding all the "local" headers) >
543                      udp_mtu, use this protocol instead of udp. Only the
544                      Via header will be updated (e.g. The Record-Route
545                      will be the one built for udp).
546                      Default: UDP (off). Recommended: TCP.
547   force_rport =yes/no - like force_rport(), but works globally.
548   disable_sctp = yes/no - disable sctp support (default auto, see enable_sctp)
549   enable_sctp = 0/1/2  - disable (0)/enable (1)/auto (2) sctp support, 
550                          default auto (2)
551   sctp_children = number - sctp children no (similar to udp children)
552   sctp_socket_rcvbuf = number - size for the sctp socket receive buffer
553   sctp_socket_sndbuf = number - size for the sctp socket send buffer
554   sctp_autoclose = seconds - number of seconds before autoclosing an idle
555                    association (default: 180 s).
556                    Can be changed at runtime, but it will affect only new
557                    associations. E.g.:
558                    $ sercmd cfg.set_now_int sctp autoclose 120
559   sctp_send_ttl = milliseconds - number of milliseconds before an unsent
560                   message/chunk is dropped (default: 32000 ms or 32 s).
561                   Can be changed at runtime, e.g.:
562                   $ sercmd cfg.set_now_int sctp send_ttl 180000
563   sctp_send_retries - how many times to attempt re-sending a message on a
564                       re-opened association, if the sctp stack did give up
565                       sending it (it's not related to sctp protocol level
566                       retransmission). Useful to improve reliability with
567                       peers that reboot/restart or fail over to another 
568                       machine. WARNING: use with care and low values (e.g.
569                       1-3) to avoid "multiplying" traffic to unresponding 
570                       hosts (default: 0).
571                       Can be changed at runtime.
572   sctp_assoc_tracking = yes/no - controls whether or not sctp associations
573      are tracked inside ser/sip-router. Turning it off would result in
574      less memory being used and slightly better performance, but it will also
575      disable some other features that depend on it (e.g. sctp_assoc_reuse).
576      Default: yes.
577      Can be changed at runtime (sercmd sctp assoc_tracking 0), but changes
578      will be allowed only if all the other features that depend on it are
579      turned off (for example it can be turned off only if first
580      sctp_assoc_reuse was turned off).
581      Note: turning sctp_assoc_tracking on/off will delete all the tracking
582      information for all the currently tracked associations and might introduce
583      a small temporary delay in the sctp processing if lots of associations
584      were tracked.
585      Config options depending on sctp_assoc_tracking being on:
586       sctp_assoc_reuse.
587   sctp_assoc_reuse = yes/no - controls sctp association reuse. For now only
588      association reuse for replies is affected by it. Default: yes.
589      Depends on sctp_assoc_tracking being on.
590      Note that even if turned off, if the port in via corresponds to the
591      source port of the association the request was sent on or if rport is
592      turned on (force_rport() or via containing a rport option), the
593      association will be automatically reused by the sctp stack.
594      Can be changed at runtime (sctp assoc_reuse), but it can be turned on
595      only if sctp_assoc_tracking is on.
596   sctp_max_assocs = number - maximum number of allowed open sctp associations.
597      -1 means maximum allowed by the OS. Default: -1.
598      Can be changed at runtime (e.g.:
599       sercmd cfg.set_now_int sctp max_assocs 10 ).
600      When the maximum associations number is exceeded and a new associations
601      is opened by a remote host, the association will be immediately closed.
602      However it is possible that some sip packets get through (especially if
603      they are sent early, as part of the 4-way handshake).
604      When ser/sip-router tries to open a new association and the max_assocs
605      is exceeded the exact behaviour depends on whether or not
606      sctp_assoc_tracking is on. If on, the send triggering the active open
607      will gracefully fail, before actually opening the new association and no
608      packet will be sent. However if sctp_assoc_tracking is off, the
609      association will first be opened and then immediately closed. In general
610      this means that the initial sip packet will be sent (as part of the 4-way
611      handshake).
612   sctp_srto_initial = milliseconds - initial value of the retr. timeout, used
613      in RTO calculations (default: OS specific).
614      Can be changed at runtime (sctp srto_initial) but it will affect only new
615      associations.
616   sctp_srto_max = milliseconds - maximum value of the retransmission timeout
617      (RTO) (default: OS specific).
618      WARNING: values lower then the sctp sack_delay will cause lots of
619      retransmissions and connection instability (see sctp_srto_min for more
620      details).
621      Can be changed at runtime (sctp srto_max) but it will affect only new
622      associations.
623   sctp_srto_min = milliseconds - minimum value of the retransmission timeout
624      (RTO) (default: OS specific).
625      WARNING: values lower then the sctp sack_delay of any peer might cause
626      retransmissions and possible interoperability problems. According to the
627      standard the sack_delay should be between 200 and 500 ms, so avoid trying
628      values lower then 500 ms unless you control all the possible sctp peers
629      and you do make sure their sack_delay is higher or their sack_freq is 1.
630      Can be changed at runtime (sctp srto_min) but it will affect only new
631      associations.
632   sctp_asocmaxrxt   = number - maximum retransmissions attempts per association
633      (default: OS specific). It should be set to sctp_pathmaxrxt * no. of
634      expected paths.
635      Can be changed at runtime (sctp asocmaxrxt) but it will affect only new
636      associations.
637   sctp_init_max_attempts = number - maximum INIT retransmission attempts
638      (default: OS specific).
639      Can be changed at runtime (sctp init_max_attempts).
640   sctp_init_max_timeo = milliseconds - maximum INIT retransmission timeout (RTO
641      max for INIT). Default: OS specific.
642      Can be changed at runtime (sctp init_max_timeo).
643   sctp_hbinterval = milliseconds - sctp heartbeat interval. Setting it to -1
644      will disable the heartbeats. Default: OS specific.
645      Can be changed at runtime (sctp hbinterval) but it will affect only new
646      associations.
647   sctp_pathmaxrxt = number - maximum retransmission attempts per path (see also
648      sctp_asocmaxrxt). Default: OS specific.
649      Can be changed at runtime (sctp pathmaxrxt) but it will affect only new
650      associations.
651   sctp_sack_delay = milliseconds - delay until an ACK is generated after
652      receiving a packet. Default: OS specific.
653      WARNING: a value higher then srto_min can cause a lot of retransmissions
654      (and strange problems). A value higher then srto_max will result in very
655      high connections instability. According to the standard the sack_delay
656      value should be between 200 and 500 ms.
657      Can be changed at runtime (sctp sack_delay) but it will affect only new
658      associations.
659   sctp_sack_freq = number - number of packets received before an ACK is sent
660      (without waiting for the sack_delay to expire).  Default: OS specific.
661      Note: on linux with lksctp up to and including 1.0.9 is not possible to
662      set this value (having it in the config will produce a warning on
663      startup).
664      Can be changed at runtime (sctp sack_freq) but it will affect only new
665      associations.
666   sctp_max_burst = number - maximum burst of packets that can be emitted by an
667      association. Default: OS specific.
668      Can be changed at runtime (sctp max_burst) but it will affect only new 
669      associations.
670   server_id = number - A configurable unique server id that can be used to
671                        discriminate server instances within a cluster of
672                        servers when all other information, such as IP addresses
673                        are the same.
674   loadpath = <modules path> - directory where to load the modules from (-L
675      equivalent); modules can be loaded simply by specifying their name
676      (loadmodule "maxfwd")
677   tcp_fd_cache = yes | no (default yes) - if enabled FDs used for sending
678      will be cached inside the process calling tcp_send (performance increase
679      for sending over tcp at the cost of slightly slower connection closing and
680      extra FDs kept open)
681   tcp_async = yes | no (default yes) - if enabled all the tcp  writes that 
682      would block / wait for connect to finish, will be queued and attempted
683      latter (see also tcp_conn_wq_max and tcp_wq_max).
684   tcp_buf_write = obsoleted synonim for tcp_async
685   tcp_conn_wq_max = bytes (default 32 K) - maximum bytes queued for write 
686      allowed per connection. Attempting to queue more bytes would result
687      in an error and in the connection being closed (too slow). If 
688      tcp_write_buf is not enabled, it has no effect.
689   tcp_wq_max = bytes (default 10 Mb) - maximum bytes queued for write allowed
690      globally. It has no effect if tcp_write_buf is not enabled.
691   tcp_defer_accept =  yes | no (default no) on freebsd  / number of seconds
692         before timeout on linux (default disabled) - tcp accepts will be 
693         delayed until some data is received (improves performance on proxies
694         with lots of opened tcp connections). See linux tcp(7) TCP_DEFER_ACCEPT
695         or freebsd ACCF_DATA(0). For now linux and freebsd only.
696         WARNING: the  linux TCP_DEFER_ACCEPT is buggy (<=2.6.23) and doesn't 
697          work exactly as expected (if no data is received it will retransmit 
698          syn acks for ~ 190 s, irrespective of the set timeout and then it will
699          silently drop the connection without sending a RST or FIN). Try to 
700          use it together with tcp_syncnt (this way the number of retrans.
701           SYNACKs can be limited => the timeout can be controlled in some way).
702   tcp_delayed_ack  = yes | no (default yes when supported) - initial ACK for
703         opened connections will be delayed and sent with the first data
704         segment (see linux tcp(7) TCP_QUICKACK). For now linux only.
705   tcp_syncnt = number of syn retr. (default not set) - number of SYN 
706         retransmissions before aborting a connect attempt (see linux tcp(7)
707         TCP_SYNCNT). Linux only.
708   tcp_linger2 = seconds (not set by default) - lifetime of orphaned sockets
709         in FIN_WAIT2 state (overrides tcp_fin_timeout on, see linux tcp(7) 
710         TCP_LINGER2). Linux only.
711   tcp_keepalive = yes | no (default yes) - enables keepalive for tcp.
712   tcp_keepidle  = seconds (not set by default) - time before starting to send
713          keepalives, if the connection is idle. Linux only.
714   tcp_keepintvl = seconds (not set by default) - time interval between 
715          keepalive probes, when the previous probe failed. Linux only.
716   tcp_keepcnt = number (not set by default) - number of keepalives sent before
717          dropping the connection. Linux only.
718   tcp_crlf_ping = yes | no (set by default) - enable CRLF keepalives aka
719          SIP outbound.
720   pmtu_discovery = 0 | 1 (default 0) - set DF bit in outbound IP if enabled
721   dns_srv_lb = yes | no (default no) - enable dns srv weight based load 
722     balancing (see doc/dns.txt)
723   dns_try_naptr = yes | no (default no) - enable naptr support 
724     (see doc/dns.txt for more info)
725   dns_{udp,tcp,tls,sctp}_pref = number - ser preference for each protocol
726     when doing naptr lookups. By default dns_udp_pref=30, dns_tcp_pref=20, 
727     dns_tls_pref=10 and dns_sctp_pref=20. To use the remote site preferences
728     set all dns_*_pref to the same positive value (e.g. dns_udp_pref=1,
729     dns_tcp_pref=1, dns_tls_pref=1, dns_sctp_pref=1). To completely ignore 
730     NAPTR records for a specific protocol, set the corresponding protocol 
731     preference to -1 (or any other negative number).  (see doc/dns.txt for 
732     more info)
733   dns_search_full_match = yes | no (default yes) - when name was resolved 
734     using dns search list, check the domain added in the answer matches with
735     one from the search list (small performance hit, but more safe)
736   mlock_pages = yes |no (default no) - locks all ser pages into memory making 
737     it unswappable (in general one doesn't want his sip proxy swapped out :-))
738   shm_force_alloc = yes | no (default no) - tries to pre-fault all the 
739     shared memory, before starting. When on start time will increase, but
740     combined with mlock_pages will guarantee ser will get all its memory from
741     the beginning (no more kswapd slow downs)
742   real_time = <int> (flags) (default off). - sets real time priority
743      for all the ser processes, or the timers. 
744      Possible values:   0  - off
745                         1  - the "fast" timer
746                         2  - the "slow" timer
747                         4  - all processes, except the timers
748      Example: real_time= 7 => everything switched to real time priority.
749   rt_prio = <int> (default 0) - real time priority used for everything except
750      the timers, if real_time is enabled
751   rt_policy= <0..3> (default 0)- real time scheduling policy, 0 = SCHED_OTHER,
752      1= SCHED_RR and 2=SCHED_FIFO
753   rt_timer1_prio=<int> (default 0) - like rt_prio but for the "fast" timer
754      process (if real_time & 1)
755   rt_timer1_policy=<0..3> (default 0) - like rt_policy but for the "fast" timer
756   rt_timer2_prio=<int> (default 0) - like rt_prio but for the "slow" timer
757   rt_timer2_policy=<0..3> (default 0) - like rt_policy but for the "slow" timer
758   tcp_source_ipv4 = IPv4 address
759   tcp_source_ipv6 = IPv6 address
760     Set the given source IP for all outbound TCP connections.
761     If setting the IP fails the TCP connection will use the default.
762   dns_cache_init = on | off (default on) - if off, the dns cache is not
763     initialized at startup and cannot be enabled runtime, that saves some
764     memory.
765   dst_blacklist_init = on | off (default on) - if off, the blacklist
766     is not initialized at startup and cannot be enabled runtime,
767     that saves some memory.
768
769 new script commands:
770   udp_mtu_try_proto(TCP|TLS|SCTP|UDP) - same as udp_mtu_try_proto=... (see
771     above), but works per packet and not globally.
772
773
774 build system:
775  - check defines and includes used at compile time and if different 
776    force rebuilding everything in the current dir (creates a new file: 
777    makecfg.lst that stores the compile defines & includes used at compile 
778    time)
779  - make cfg / config support: store the build config in an autogenerated file 
780    (config.mak) and use it for future compiles (e.g.: 
781    make cfg include_modules=mysql skip_modules=print CPU=pentium-m; make all).
782    Main advantages are easier usage and faster builds (e.g. make proper is
783     +16 times faster, make clean ~9 times, make with previously generated
784     config is 2.6 times faster and a make that has nothing to do is ~9 times
785     faster).
786
787
788
789
790 2.0.0 changes
791
792
793 new archs:
794
795
796 modules:
797  - tls        - new module that enables tls support (set enable_tls=yes
798                 in the config file and load the tls module)
799  - ctl        - new  fifo/unixsocket/xmlrpc like module, using a space 
800                 efficient binary encoding for the requests.
801                 It supports multiple clients on tcp, udp, unix stream or
802                 unix datagram modes. By default (no modparams) it opens
803                 one unix stream control socket in /tmp/ser_ctl.
804                 It also includes extended fifo support: multiple fifos,
805                 fifo over tcp, udp and unix sockets (see ctl/ctl.cfg).
806                 Use utils/sercmd/sercmd to send commands to it.
807  - dispatcher - added hashing after request uri and to uri
808               - added a new flag parameter which can be used (for now) to
809                 select only the username or the username, host and port when
810                 hashing after an uri (to, from or request uri)
811               - improved uri hashing (password is ignored, port is used only
812                 if != 5060 or 5061)
813  - tm        - aggregate challenges (WWW/Proxy-Authenticate) from all the
814                401 & 407 if the final reply is a 401/407. To turn this off
815                and fall back to the old behaviour set tm aggregate_challenges
816                parameter to 0.
817              - if a relayed 503 is the final reply, replace it by a 500
818              - if a 503 reply is received try the dns based failover
819                (forward to another ip if the original destination uri 
820                 resolved to several SRV, A or AAAA records)
821              - on 6xx immediately cancel all the branches for which a 
822                provisional response was received and wait for all the 
823                branches to finish (either timeout, the 487 from the CANCEL
824                or a final response still on the wire in the moment the
825                CANCEL was sent)
826              - better final reply selection: 6xx is preferred over other 
827                negative replies; from several 4xx prefer 401, 407, 415, 420,
828                484 (in this order). For all the other cases, return the lowest
829                code (as before)
830              - special functions for checking for timeout, if a reply was
831                received or if the current transaction was canceled
832              - dns failover and dst blacklist support
833              - migrated to the new timers (tm timers completely rewritten)
834              - improved speed and less memory usage
835              - much more precise retransmissions timing
836              - params: - retr_timer1p1, retr_timer1p2, retr_timer1p3 removed
837                          and replaced by retr_timer1 and retr_timer2
838                        - all timer values are now expressed in milliseconds
839                          (they were in seconds before).
840                          Affected params: fr_timer, fr_inv_timer, wt_timer,
841                          delete_timer, retr_timer1, retr_timer2
842                        - retr_timer1 (first retransmission) changed to 500 ms
843                        - delete_timer changed to 200 ms
844                        - unix_tx_timeout expressed now in milliseconds; default
845                          value changed to 500 ms
846              - functions:
847                        - t_branch_timeout() -- returns true if the failure
848                          route is executed for a branch that did timeout
849                          (failure_route only).
850                        - t_branch_replied() -- returns true if the failure 
851                          route is executed for a branch that did receive at
852                          least one reply in the past (the current reply 
853                           is not taken into account). It can be used
854                          together with t_branch_timeout() to distinguish 
855                          between a remote side that doesn't respond (some 
856                          provisional reply received) and one that is completely
857                           dead. (failure_route only)
858                        - t_any_timeout() -- returns true if any of the current
859                          transaction branches did timeout.
860                        - t_any_replied() -- returns true if at least one branch
861                           of the current transaction received one reply in the
862                           past. If called from a failure_route or an
863                           onreply_route, the "current" reply is not taken into
864                           account.
865                        - t_is_canceled() -- returns true if the current 
866                          transaction  has been canceled.
867                        - new t_set_fr(timeout_fr_inv, timeout_fr) -- allows
868                          changing the transaction timer from script, even if
869                          the transaction was already created (see tm docs for
870                          more).
871             - t_relay will not stop script execution anymore in case of
872               send error
873  - textops  - search() can be used in the onsend_route where it will search
874               on the "new" message (after applying all script changes, adding
875               Vias a.s.o) and not on the original message
876  
877 core:
878  - compiled by default with tls hooks support (so that no recompile is
879    needed before loading the tls module and enabling the tls support)
880  -  enable_tls config option added (the reverse of disable_tls)
881  - added STUN keep-alive functionality in accordance with 
882    draft-ietf-behave-rfc3489bis-04.txt
883  - dns cache and dns failover support added (see doc/dns.txt)
884  - destination blacklist added -- destinations to which forwarding fails
885    (send error, tm timeout a.s.o) are temporarily added to a blacklist which 
886     is consulted before each send => faster send error detection
887     in the near future (see doc/dst_blacklist.txt)
888  - default log level switched to 0 (only messages < L_WARN will be printed
889    by default)
890  - separate memdbg log level which controls the memory/malloc related
891    debug messages (to see them ser must be compiled with malloc debuging:
892      -DDBG_QM_MALLOC or -DDBG_FM_MALLOC and memdbg must be <= debug )
893  - added named routes: names can be used instead of numbers in all the
894    route commads or route declarations. route(number) is equivalent to
895    route("number").
896    Example:
897      route("test");
898       route["test"]{
899            ...
900      }
901  - added named flags, declared at the beginning of the config file with:
902      flags  flag1_name[:position],  flag2_name ...
903    Example:
904        flags test, a:1, b:2 ;
905        route{
906               setflag(test);
907               if (isflagset(a)){ # equiv. to isflagset(1)
908                 ....
909               }
910               resetflag(b);  # equiv. to resetflag(2) 
911  - added return [val] which returns from a route. if no value is specified, or
912    a route reaches its end without executing a return statement, it returns 1.
913    If return is used in the top level route is equivalent with exit [val].
914  - drop /exit [n] now will end the script execution
915    exit n will exit with code n (usefull in onreply/onsend routes where
916    if script code !=0 a reply is generated/the message is sent or to force
917    script errors)
918  - added $? which can be used to check the return code of the last executed
919    route{} (e.g. route(1); if ($?==1){ /* ... */}else if ($?==2) ... )
920  - onsend_route added: special route executed before a request is sent.
921                        Only a limited number of commands are allowed (drop, if
922                        + all the checks, msg flag manipulations, send(), log(),
923                        textops::search()). In this route the final destination
924                        of the message is available an can be checked (with
925                        snd_ip, snd_port, to_ip, to_port, snd_proto, snd_af).
926                        This route is executed only when forwarding requests.
927                        It's not executed for replies, retransmissions, or
928                        locally generated messages (e.g. via fifo uac).
929       short example:
930             onsend_route{  if(to_ip==1.2.3.4 && !isflagset(12)){
931                               log(1, "message blocked\n");
932                               drop;
933                            }
934                          }
935  - onsend_route specific checks:
936      - snd_ip, snd_port - behave like src_ip/src_port, but contain the
937        ip/port ser will use to send the message
938      - to_ip, to_port - like above, but contain the ip/port the message will
939        be sent to (not to be confused with dst_ip/dst-port, which are the
940        destination of the original message: ser's ip and port on which the
941        message was received)
942      - snd_proto, snd_af - behave like proto/af but contain the 
943        protocol/address family that ser will use to send the message
944      - msg:len - when used in an onsend_route, msg:len will contain the length
945        of the message on the wire (after all the changes in the script are
946        applied, Vias are added a.s.o) and not the lentgh of the original 
947        message
948  - timer: - improved performance/precision, new api, see doc/timers.txt 
949  - tcp: - improved  performance (io event handling), using OS specific
950            optimizations
951         - 1024 connections limit removed (see tcp_max_connections)
952 -  resolver: - timeouts, retries a.s.o can now be set from ser.cfg
953              (see below dns_* and man resolv.conf(6)).
954              The maximum time a dns request can take (before failing) is:
955               (dns_retr_time*dns_retr_no)*(search_list_domains)
956              If dns_try_ipv6 is yes, mutliply it again by 2.
957              The fastest possible dns config (max 1s):
958                 dns_try_ipv6=no
959                 dns_retr_time=1
960                 dns_retr_no=1
961                 dns_use_search_list=no
962 - default on reply route added: onreply_route {.. } will add a default 
963     onreply route that will be executed for any reply (usefull to catch
964     replies without using tm)
965 - branch_routes added (tm triggered), only a very limited number of commands
966    are available (see tm docs)
967 - avps directly accessible from script with %avp_name (variable style)
968 new config variables:
969    enable_tls/disable_tls = enable/disable tls support, default disable.
970        Note: a tls "engine" is still needed (e.g. the tls module must
971               be loaded, enable_tls by itself is not enough).
972    exit_timeout = seconds - how much time ser will wait for all the shutdown
973        procedures to complete. If this time is exceeded, all the remaining
974        processes are immediately killed and ser exits immediately (it might
975        also generate a core dump if the cleanup part takes too long).
976        Default: 60 s. Use 0 to disable.
977    stun_refresh_interval = number in millisecond (default 0); value for 
978       attribute REFRESH INTERVAL
979    stun_allow_stun = 0 | 1 (off | on - default 1); use STUN or not if compiled
980    stun_allow_fp = 0 | 1 (off | on - default 1); use FINGERPRINT attribute
981    use_dns_cache = on | off  (default on)  
982    use_dns_failover = on | off (default off)
983    dns_cache_flags = number (default 0)
984    dns_cache_negative_ttl = number in seconds (default 60)
985    dns_cache_min_ttl = time in seconds (default 0)
986    dns_cache_max_ttl = time in seconds (default MAXINT)
987    dns_cache_mem = maximum memory used for the dns cache in Kb (default 500 K)
988    dns_cache_gc_interval = interval in seconds after which the dns cache is
989       garbage collected (default: 120 s)
990    use_dst_blacklist = on | off (default off)
991    dst_blacklist_expire = time in s (default 60)
992    dst_blacklist_mem = maximum memory used for the blacklist in Kb (default 250
993       K)
994    dst_blacklist_gc_interval = interval in seconds after which the destination 
995       blacklist is garbage collected (default 60)
996    tos = number  - ip type of service (TOS) value
997    dns_try_ipv6 = yes/no - if yes and a dns lookup fails, it will retry it
998       for ipv6 (AAAA record). Default: yes
999    dns_retr_time = time - time in s before retrying a dns request.
1000       Default: system specific, depends also on the/etc/resolv.conf content
1001       (usually 5s).
1002    dns_retr_no = no. - number of dns retransmissions before giving up.
1003       Default: see above (usually 4)
1004    dns_servers_no = no. - how many dns servers from the ones defined in 
1005       /etc/resolv.conf will be used. Default: all of them.
1006    dns_use_search_list= yes/no - if no, the search list in /etc/resolv.conf
1007       will be ignored (=> fewer lookups => gives up faster). Default: yes.
1008       HINT: even if you don't have a search list defined, setting this option
1009       to "no" will still be "faster", because an empty search list is in 
1010       fact search "" (so even if the search list is empty/missing there will
1011       still be 2 dns queries, eg. foo+'.' and foo+""+'.')
1012    tcp_connection_lifetime = value (s) - how long the lifetime of a
1013       tcp connection will be exteneded after an IO event (accept, connect, 
1014       read, write). Default: 120 s.
1015    tcp_poll_method = poll|select|sigio_rt|epoll_et|epoll-lt|kqueue|devpoll - 
1016       poll method used (by default the best one for the current OS is selected)
1017    tcp_max_connections = no. - maximum number of tcp connections (if the number
1018       is exceeded no new tcp connections will be accepted). Default: 2048.
1019
1020 tools:
1021   utils/sercmd - command line serctl like tool for interrogating ser ctl
1022                  module (uses the binrpc encoding). Supports various
1023                  connection methods (udp, tcp, unix stream & datagram sockets),
1024                  reply formating (see -f, e.g. sercmd -f "pid:%v %v\n" core.ps)
1025                  , interactive mode, command line completion (if compiled with 
1026                  libreadline) a.s.o.
1027
1028 WARNING: - older 0.10.99-dev version (< 0.10.99-dev46) returned a 480 reply
1029  on invite transaction timeout, if a provisional reply was received. Newer
1030  versions reverted to returning 408 on all timeouts (one can use 
1031   t_branch_timeout() and t_branch_replied() to distinguish between the two
1032   timeout types)
1033
1034
1035
1036 0.9.4 fixes/improvements (0.9.4 is a bug fix release for 0.9.3)
1037  
1038 general:
1039  - gcc 4.0 support
1040  - mutlicast options are set for all the sockets
1041  - mediaproxy: memory leak, unchecked memory allocations
1042  - postgress: some bugs and cleanups (compiles cleanly now)
1043  - tm: shm cloned lumps (SER-55) 
1044  - tm: t_fifo: 64-bit fix
1045  - tm: dst_uri clone fix
1046  - tm: t_newtran/t_restransmit* races  (!)
1047  - usloc: memory leak
1048
1049 solaris:
1050  - serctl, better ISA detection, signals
1051 *bsd:
1052  - multicast options are properly set
1053 openbsd:
1054  - tcp 64 bit fix
1055
1056
1057
1058 0.9.3 changes
1059
1060
1061 new archs:
1062  - alpha experimental support
1063  - mips2/cobalt experimental support
1064  - x86_64 support
1065  - OS X (darwin) support
1066  - sparc32 single cpu highly experimental support
1067  - ppc64 support
1068
1069 modules:
1070  - enum - support for more than one NAPTR
1071  - msilo - explicit multidomain support -- recipient's user ID is stored in
1072    the columns username and domain -- r_uri column kept for compatibility
1073    reasons (will be removed in future) but not filled by this version of
1074    module
1075  - mysql - implements a connection pool, all modules will use same connection
1076    to access the database
1077  - nathelper received port  test (flag 16 for nat_uac_test): compares the
1078    source port of the message with sip port in the first Via and returns
1079    true if different.
1080  - permsions - support for multiple allow/deny files, allow_register function
1081  - TM has a new parameter: restart_fr_on_each_reply. If set (default)
1082    fr_inv timer will be restarted for each provisional reply, if not set
1083    it will be restarted only for the first reply and for replies >=180
1084    (but only if increasing, eg.: 180, 181 ...). Usefull when dealing with bad
1085    UAs that re-transmit 180s.
1086  - TM saves the avp list into transactions, and make it available into
1087    callbacks, failure and reply routes.
1088  - TM contains new command - t_write_unix("/tmp/sems.sock", "announcement")
1089    sends a message using unix socket interface instead of FIFO interface.
1090  - TM contains new config variable - unix_tx_timeout -- it specifies the
1091    transmit timeout of t_write_sock
1092  - VM functionality was transfered into TM module. Instead of fetching the
1093    email value from DB (as VM), TM looks for the "email" attribute to get the
1094    value.
1095    vm() function was replaced with t_write_req()
1096    vm_reply() fifo functions was replcated by TM with t_reply() fifo function
1097    NOTE!! because current version of SEMS/AA try to send reply via vm_reply,
1098    it will not work with the TM version.
1099  - xlog - printing the body of any header by specifying the name; new
1100    specifiers for user-agent, message buffer, message length, message's flags,
1101    message id.
1102
1103 new modules:
1104  - avp / avp_db / avp_radius - load and check avps per caller or callee
1105  - avpops - flexible module for operations with avps and database, introducing
1106    a pseudo-varible support in SER configuration file
1107  - cpl-c - implementation of Call Processing Language
1108  - dispatcher - implements a dispatcher for incoming requests using hashes
1109    over parts of the request to select the destination
1110  - diversion - implements the Diversion extensions as per 
1111    draft-levy-sip-diversion-08
1112  - flatstore - simple module that implements very fast inserts for accounting
1113    purposes
1114  - gflags - keeps a bitmap of flags in shared memory and may be used to change
1115    behaviour of server based on value of the flags
1116  - options - answer server options requests
1117  - speeddial - provides on-server speed dial facilities
1118  - uri_db - split from uri module, performs various checks related to SIP URI
1119    over database fields
1120
1121 removed modules:
1122  - vm - the functionality was transfered to tm module (see t_write_req(...)
1123    method)
1124
1125 core:
1126  - new parts:
1127        UNIX domain socket server implemented
1128  - changes: 
1129     - command line: removed -p port and extended -l:
1130        -l [proto:]addr[:port] , where proto=udp|tcp and 
1131        addr= host|ip_address|interface_name. The format is the same
1132        as for listen in the config file. ipv6 addresses must be enclosed in
1133        [].
1134     - added from_uri & to_uri: behave exactly like uri but use the
1135       "From:"/"To:" uris
1136        (e.g.: if (from_uri==myself) ..., if (to_uri=~"^sip:test@")... )
1137     - config: better escape support in strings (e.g. \", \<cr>, \x0a, \012)
1138     - bad network addresses are now automatically fixed
1139       (e.g. 192.168.1.80/27 => 192.168.1.64/27)
1140     - avp (Attribute-Value Pair) support added
1141     - avp alias support added
1142     - multicast support added (see mcast_loopback & mcast_ttl)
1143     - saving of procces group id enabled, if the -G option is specified
1144       (a safe way to quickly kill all ser processes)
1145     - core dump-ing is enabled by default, see also disable_core_dump
1146     - protocol and port can be specified in the alias and listen lines, e.g.:
1147         alias= tcp:foo.bar:* udp:test.bar:5080 foo.com
1148         listen= eth0   tcp:eth0:5065 udp:127.0.0.1 [3ffe::1]
1149     - multiple operator support: ==, != for special operations (e.g myself, ip)
1150                               ==, !=, ~= for strings
1151                               ==, !=, >, <, >=, <= for integers
1152     - database api changed to support usage of different drivers
1153       simultaneously. The database URL must start now with the name of the
1154       driver (module). Example: for mysql the DB URL
1155       'sql://user:password@dbhost:port/database' must be specified now as
1156       'mysql://user:password@dbhost:port/database'
1157  - new config variables:
1158    mcast_loopback = <yes/no> - loopback sent multicast datagram, default no.
1159    mcast_ttl = number - set multicast ttl, default OS specific (usually 1).
1160    sock_mode = <permissions> (e.g. sock_mode=0600:  default value = 0660)
1161        ser unix sockets and fifo will be created with this permissions
1162        (old name fifo_mode is still supported, but deprecated)
1163    sock_user = username|"uid"
1164    sock_group = groupname|"gid"
1165       change the owner and/or group of the ser unix sockets or fifo
1166       Short example config snippet:
1167            sock_mode=0600        # ser socket/fifo mode
1168            sock_user="www-data"  # ser socket/fifo owner
1169            sock_group=nogroup  
1170            user=nobody       # ser user (ser will suid to it)
1171    disable_core_dump= yes|no 
1172        by default core dump limits are set to unlimited or a high enough
1173        value, set this config variable o yes to disable core dump-ing
1174        (will set core limits to 0)
1175    open_files_limit= number
1176        if set and bigger than the current open file limit, ser will try
1177        to increase its open file limit to this number. Note: ser must be
1178        started as root to be able to increase a limit past the hard limit
1179        (which, for open files, is 1024 on most systems)
1180    tcp_connect_timeout= seconds
1181        time before an ongoing connect will be aborted
1182    tcp_send_timeout= seconds
1183        time after a tcp connection will be closed if it is not available 
1184        for writing in this interval (and ser wants to send something on it)
1185    tcp_accept_aliases= yes|no
1186        if a message received over a tcp connection has "alias" in its via
1187        a new tcp alias port will be created for the connection the message
1188        came from (the alias port will be set to the via one).
1189        Based on draft-ietf-sip-connect-reuse-00.txt, but using only the port
1190        (host aliases are too dangerous IMHO, involve extra DNS
1191         lookups and the need for them is questionable)
1192        See force_tcp_alias for more details.
1193    log_facility = LOG_LOCAL0
1194        if ser logs to syslog, you can control the facility for logging. Very
1195        useful when you want to divert all ser logs to a different log file.
1196        See man page syslog(3) for more detailes.
1197    unix_sock = "/tmp/ser.sock"
1198        The name of the socket the unixsock server should listen on.
1199    unix_sock_children = 1
1200        The number of children that will listen on the unix domain socket.
1201    unix_tx_timeout = 2000
1202        Timeout (in ms) used when sending replies through unix sockets.
1203  - new script commands:
1204    force_send_socket([proto:]address[:port])
1205        sends the message from the specified socket (it _must_ be one of the
1206        sockets ser listens on). If the protocol doesn't match (e.g. udp
1207        message "forced" to a tcp socket) the closest socket of the same
1208        protocol is used.
1209    force_tcp_alias()
1210    force_tcp_alias(port)
1211        adds a tcp port alias for the current connection (if tcp).
1212        Usefull if you want to send all the trafic to port_alias through
1213        the same connection this request came from [it could help 
1214        for firewall or nat traversal].
1215        With no parameters adds the port from the message via as the alias.
1216        When the "aliased" connection is closed (e.g. it's idle for too
1217        much time), all the port aliases are removed.
1218        Note: by default ser closes idle connection after 3 minutes (stable)
1219        or 1 minute (unstable) so to take full advantage of tcp aliases for
1220        things like firewall and nat traversal, redefine TCP_CON_*TIMEOUT
1221        in tcp_conn.h and recompile. Also right now there can be maximum
1222        3 port aliases to a connection (you shouldn't need more than one).
1223        To change this redefine TCP_CON_MAX_ALIASES in the same file
1224        (set it to you desired value + 1; 1 is needed for the real port).
1225
1226 utilities:
1227  - ngrep patch for displaying new lines in captured SIP messages is no longer
1228    needed; use ngrep V 1.42 with the option "-W byline"
1229
1230
1231
1232 ***********************************************
1233 * Changes/fixes introduced in 0.8.12
1234 ***********************************************
1235 +--------------------------------------------------------+
1236 | WARNING: if you want to use a 0.8.11 config script     |
1237 | with 0.8.12, replace if ( len_gt(number) ) with:       |
1238 |                      if ( msg:len > bumber )           |
1239 +--------------------------------------------------------+
1240
1241 New Features
1242 ============
1243
1244 texops:
1245  - subst('s/re/repl/flags') support
1246 core:
1247  - added switch to check the config file (-c)
1248  - changes: removed len_gt() and replaced with if (msg:len op number|max_len)
1249  - multiple operator support: ==, != for special operations (e.g myself, ip)
1250                               ==, !=, ~= for strings
1251                               ==, !=, >, <, >=, <= for integers
1252  - new config variables:
1253      advertised_address= ip | string
1254        address advertised in via and in the DST_* lumps (e.g RR)
1255        This is the default value, if empty (default) the socket
1256        address will be used.
1257        WARNING: - don't set it unless you know what you are doing
1258                  (e.g. nat traversal)
1259                - you can set anything here, no check is made
1260                 (e.g. foo.bar will be accepted even if 
1261                  foo.bar doesn't exist)
1262     advertised_port= no
1263        port advertised in via and in the DST_*lumps (e.g. RR)
1264        This is the default value, if empty (default) the socket
1265        port will be used.
1266        Same warnings as above.
1267  - new script commands:
1268     set_advertised_address(ip|string)
1269        same as advertised_address but it affects only the current message:
1270        Message host/lump address= the set_advertised one if
1271        present, else advertised_address else socket address.
1272     set_advertised_port(no)
1273        same as advertised_port but it affects only the current
1274        message; see set_advertised_address & s/address/port/g
1275
1276 usrloc:
1277  - usernames are case insensitive
1278  
1279 registrar:
1280  - lookup function succeeds when appending of a branch failed
1281
1282 auth_db:
1283  - support for rpid stored in database (thanks to Jakob Schlyter)
1284
1285 Bug fixes
1286 =========
1287 - memory leak in digest credentials parser fixed
1288 - authenticathion ha1 didn't include domain if username was of the form
1289   user@domain and calculate_ha1 was set to yes (modules/auth_db)
1290 - tm reply processing race condition (modules/tm), special thanks go to
1291  Dong Liu
1292 - Many bugs in pa module fixed, works with registrar again.
1293  
1294 Security updates
1295 ================
1296  
1297 - fifo processing code will write responses only to other
1298  fifos and only if they are not hard-linked, also default
1299  ser fifo persmissions were changed to 0600.
1300                                                                                 
1301 Performance improvements
1302 ========================
1303 - tuned internal malloc implementation parameters to better reflect the
1304 actual workload (malloc is a little bit faster now)
1305
1306
1307
1308 ***********************************************
1309 * Changes introduced in 0.8.11
1310 ***********************************************
1311
1312 +--------------------------------------------------------+
1313 | CAUTION: the 0.8.11 release include changes which      |
1314 | are incompatible with scripts and databases used       |
1315 | in previous versions. Care is advised when upgrading   |
1316 | from previous releases to 0.8.11.                      |
1317 +--------------------------------------------------------+
1318
1319 New features
1320 =============
1321 - RFC3261 support
1322     - TCP support and cross-transport forwarding [core]
1323     - loose routing support [rr module]
1324 - New modules
1325     - vm -- voicemail interface [vm]
1326     - ENUM support [enum]
1327     - presence agent [pa]
1328     - dynamic domain management -- allows to manipulate 
1329       hosting of multiple domains in run-time [module]
1330     - flat-text-file database support [dbtext]
1331     - rich access control lists [permissions]
1332 - Feature Improvements
1333     - click-to-dial, which is based on improved tm/FIFO 
1334       that better supports external applications [tm module]
1335     - web accounting -- acc module can report to serweb
1336         on placed calls [acc module]
1337     - improved exec module (header fields passed now
1338       as environment variables to scripts) [exec module]
1339 - Architectural Improvements
1340     - powerpc fast locking support
1341     - netbsd support
1342     - 64 bits arch. support (e.g. netbsd/sparc64).
1343 - New Experimental Features (not tested at all yet)
1344     - nathelper utility for Cisco/ATA NAT traversal [nathelper]
1345     - another NAT traversal utility [mangler]
1346     - postgress support [postgress]
1347     - fcp module [fcp]
1348     - pdt module (prefix2domain) [pdt]
1349
1350 Changes to use of ser scripts
1351 =============================
1352
1353 About Multiple Transport Support
1354 --------------------------------
1355 SER now suports multiple transport protocols: UDP and TCP. As there
1356 may be UAs which support only either protocol and cannot speak to
1357 each other directly, we recommend to alway record-route SIP requests,
1358 to keep the transport-translating SER in path. Also, if a destination
1359 transport is not known, stateful forwarding is recommended -- use of
1360 stateless forwarding for TCP2UDP would result in loss of reliability.
1361
1362
1363 core
1364 ----
1365 - reply_route has been renamed to failure_route -- the old name caused
1366   too much confusion
1367 - forward_tcp and forward_udp can force SER to forward via specific
1368   transport protocol
1369
1370 acc module:
1371 -----------
1372 - radius and sql support integrated in this module; you need to
1373   recompile to enable it
1374 - acc_flag is now called log_flag to better reflect it relates
1375   to the syslog mode (as opposed to sql/radius); for the same
1376   reasons, the accounting action is now called "acc_log_request"
1377   and the option for missed calls "log_missed_calls"
1378 - log_fmt allows now to specify what will be printed to syslog
1379
1380 auth module:
1381 ------------
1382 - auth module has been split in auth, auth_db, auth_radius, group
1383   group_radius, uri and uri_radius 
1384 - all the parameters that were part of former auth module are now 
1385   part of auth_db module
1386 - auth_db module contains all functions needed for database
1387   authentication
1388 - auth_radius contains functions needed for radius authentication
1389 - group module contains group membership checking functions
1390 - group_radius contains radius group membeship checking functions
1391 - is_in_group has been renamed to is_user_in and places to groups
1392   module
1393 - check_to and check_from have been moved to the uri module
1394  
1395
1396 im module:
1397 ----------
1398 - im is no longer used and has been obsoleted by TM
1399
1400 exec module:
1401 ------------
1402 - exec_uri and exec_user have been obsoleted by exec_dset; 
1403   exec_dset is identical to exec_uri in capabilities; it 
1404   additionaly passes content of request elements (header 
1405   fields and URI parts) in environment variables; users of 
1406   exec_user can use exec_dset now and use the "URI_USER"  
1407   variable to learn user part of URI
1408 - exec_dset and exec_msg return false, if return value of 
1409   script does not euqal zero
1410 - exec_dset takes an additional parameter, which enables 
1411   validation of SIP URIs returned by external application
1412
1413 jabber module:
1414 --------------
1415 - presence support for Jabber users is enabled loading the PA
1416   module and using handle_subscribe("jabber") for SUBSCRIBE 
1417   requests to jabber user 
1418
1419 msilo module:
1420 -------------
1421 - m_store has now a parameter to set what should be considered
1422   for storing as destination uri. This enables support for saving
1423   the messages on negative replies.
1424
1425 radius_acc module:
1426 ------------------
1427 - radius_acc module has been removed and radius accounting 
1428   is now part of acc module
1429
1430 registrar/usrloc modules:
1431 -------------------------
1432 - multi domain support, the modules user username@domain as AOR
1433   if enabled
1434 - descent modification time ordering of contacts
1435 - case sensitive/insensitive comparison of URI can be enabled
1436
1437 rr module:
1438 ----------
1439 - addRecordRoute has been replaced with record_route
1440 - rewriteFromRoute has been replaced with loose_route()
1441 - a new option, "enable_full_lr" can be set to make life
1442   with misimplemented UAs easier and put LR in from "lr=on"
1443 - rr module can insert two Record-Route header fields when
1444   necesarry (disconnected networks, UDP->TCP and so on)
1445
1446 tm module:
1447 ----------
1448 - t_reply_unsafe, used in former versions within reply_routes,
1449   is deprecated; now t_reply is used from any places in script
1450 - t_on_negative is renamed to t_on_failure -- the old name just
1451   caused too much confusion
1452 - FIFO t_uac used by some applications (like serweb) has been
1453   replaced with t_uac_dlg (which allows easier use by dialog-
1454   oriented applications, like click-to-dial) 
1455 - if you wish to do forward to another destination from 
1456   failure_route (reply_route formerly), you need to call t_relay
1457   or t_relay_to explicitely now
1458 - t_relay_to has been replaced with t_relay_to_udp and t_relay_to_tcp
1459