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