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