1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393
|
$Id: NEWS,v 1.1.1.1 2005/06/13 16:47:26 bogdan_iancu Exp $
******************************************************************
* Release notes for OpenSER *
******************************************************************
0.9.0 changes
NOTE: OpenSER is derived from SER v0.9.2, having new feature added and
being 99% compatible with SER configuration file and database structure
(see README for more details). To avoid confusion and overlapping of
files between OpenSER and SER, all names and paths that included "ser"
are now with "openser".
NOTE: The next list presents what OpenSER brings new from SER 0.8.14. With
(NEW) are marked the differences between OpenSER and SER 0.9.2.
new archs:
- alpha experimental support
- mips2/cobalt experimental support
- x86_64 support
- OS X (darwin) support
- sparc32 single cpu highly experimental support
- ppc64 experimental support
modules:
ACC
features:
-(NEW) extra accounting - all accounting bakends (syslog, mysql,
radius, diameter) extended to support extra date to be logged. What
to be additionally logged can be dynamically configured via module
parameters.
fixes:
-(NEW) TM callbacks - fixed a callback type which was never
triggered by TM -> fix missed_calls accounting
AUTH
features:
-(NEW) RPID AVP accepts full AVP specification (ID, NAME, Alias).
-(NEW) add parser function for the specifications of the
additional credentials to be loaded during authentication. To be
used by auth backends (only auth_db) for the moment.
-(NEW) new internal API
ATUH_DB
features:
-(NEW) load_credential list (credentials to be additionally
loaded during authentication) supports full AVP specification
(ID, NAME, Alias).
ATUH_RADIUS
features:
-(NEW) additional credentials - RADIUS authentication response
may contain several SIP-AVP RADIUS AVPs carrying additional
credentials (format is AVP_NAME:INT_VAL or AVP_NAME#STR_VAL).
These additional credentials will be loaded in SER NAME AVPs.
For backward compatibility reasons, old A_SIP_RPID (containing
the RPID value) may still be recognize and loaded if the
module parameter rpid_old_compat is turned on. In this case
the RPIS will be saved in SIP AVP, it's name being taken from
the auth module via the API.
ENUM
features:
-support for more than one NAPTR
MSILO
features:
-explicit multidomain support -- recipient's user ID is stored in
the columns username and domain -- r_uri column kept for compatibility
reasons (will be removed in future) but not filled by this version of
module
MYSQL
feature:
-implements a connection pool, all modules will use same connection
to access the database
NATHELPER
features (backported from cvs head):
-multiple balanced RTPProxys supported
-support for multiple media streams (audio or/and video) added
-generic media support (not only audio) - enables proper fax support
-uac received port test (flag 16 for nat_uac_test): compares the
source port of the message with sip port in the first Via and returns
true if different.
-(NEW) nat ping are sent out from the same interface as REGISTER
received on (fetched via USRLOC)
PDT
features (backported from from cvs head):
-no delimiter is required anymore after prefix
-longest prefix match implemented
-prefixes definition cached at startup from DB
- ADD and REMOVE prefix FIFO function added
PERMISSIONS
features:
-support for multiple allow/deny files via function parameters
-allow_register() new function
-allow_trusted() new function -- checks based on request's source
address, protocol, and from field if request can be trusted without
authentication. Based on database with or without caching.
PIKE
fixes:
-(NEW)several race conditions fixed
-(NEW)brought the stable version
REGISTRAR
features:
-save_memory() new function - saves the registered contacts only
in memory without being flushed to database (if DB support is
enabled).
-max_contacts new module parameter - maximum accepted contacts
per user
-received_avp new module parameter - avp which my contain
the original received information (proto,ip, port)
-rcv_param new module parameter - URI parameter name used for
appending the received information (proto,ip, port) to the
contacts in REGISTER's replies.
-(NEW) add_sock_hdr() new function - adds to request a new header
with all information about received socket - useful when
replicating REGISTER with NAT info.
-(NEW) sock_hdr_name new module parameter - use the socket info
from this header instead of the real received socket info
(useful for replicated REGISTERs)
-(NEW) sock_flag new module parameter - flag which enable the
sock_hdr_name lookup.
RR
feature:
-(NEW) add_rr_param() new function - adds a parameter to the
Record-Route URI
-(NEW) check_route_param() new function - checks the URI parameters
of the local Route header
-add_username new module parameter - if the user part should be added
in Record-Route header
-loose_route() performs internal check for preloaded routing set.
SL
features:
-(NEW) replies are sent back exactly from the same interface as
the request was received on
TEXTOPS
features:
-append_time() new function - adds a date header
TM
fixes:
-(NEW) proper CANCEL-ling of branches with no reply - instead of ignoring
them (which was leading to timeout), they are terminated
-(NEW) callbacks test - fixed the test if a callback type is or not
registered for a transaction
-(NEW) dst_uri proper reset - avoid to inherit dst_uri from a previous
branch.
-msg_cloner fixed - auth_hooks mixed during cloning
-race in ACK sending fixed
features:
-restart_fr_on_each_reply new module parameter - if set (default)
fr_inv timer will be restarted for each provisional reply, if not set
it will be restarted only for the first reply and for replies >=180
(but only if increasing, eg.: 180, 181 ...). Useful when dealing with bad
UAs that re-transmit 180s.
-proper management of AVP list - TM saves the AVP list into transactions
and make it available into callbacks, failure and reply routes.
-t_write_unix("announcement","/tmp/sems.sock") new function- sends a
message using unix socket interface instead of FIFO interface.
-tw_append new module parameter - defines lists of additional information
(AVPs, hdrs) to be written by t_write_fifo and t_write_unix
-unix_tx_timeout new module parameter-- it specifies the transmit timeout
of t_write_sock
-VM functionality was transferred into TM module. vm() function was
replaced with t_write_req(). Instead of being fetch from DB (as VM), the
email value will be additionally specify as AVP via tw_append.
-vm_reply() fifo functions was replaced by TM with t_reply() fifo function
NOTE!! because current version of SEMS may try to send reply via vm_reply,
it might not work with this TM version.
-fr_timer_avp new module parameter - AVP specs (ID, NAME, ALIAS) which may
contain a new value for the final response timeout -> custom timeout per
transaction
-fr_inv_timer_avp new module parameter - AVP specs (ID, NAME, ALIAS) which
may contain a new value for the INVITE final response timeout -> custom
timeout per transaction
-(NEW) t_flush_flags function - takes no parameter and flush the flags only
from request to transaction
-(NEW) t_local_replied new function - tells if last or all replies were
local generated (and not received from downstream)
-(NEW) proper serial forking - branch selection is done only from the last
serial forked set of branches - ensure proper branch selection during
sequential forks.
-(NEW) light tm_load - more compact and light version of tm_load - the TM
API is loaded without find_export() -> no need to export via module
interface
all inter-modules functions.
-(NEW) replies are sent back exactly from the same interface as the request
was received on
URI
features:
-uri_param("param") and uri_param("param","value") new function - looks if
the RURI has a specific param (and a specific value)
-add_uri_param("param") new function - adds a new param to RURI
-tel2sip() new function - converts Request-URI, if it is tel URI,
to SIP URI
USRLOC
features:
-ZOMBIE states removed; all internal "replicate" and "state" stuff removed
-> "replicate" and "state" columns removed from DB.
-"received from" information -source- (proto,IP,port) saved in usrloc ->
"received" new column in DB; useful for NAT traversal
-(NEW) received socket information -local socket destination- (IP,port)
saved in usrloc -> "socket" new column DB; useful for proper NAT traversal
and for multi-homed systems.
XLOG (backported from cvs head)
features:
-printing the body of any header by specifying the name.
-new specifiers for user-agent, message buffer, message length, message's
flags, message id.
-(NEW)new specifiers for printing any header or AVP
-(NEW)new specifiers for printing dst_uri and message's flags in hexa format
new modules:
- alias_db - per user alias engine based only on database queries without any
caching (easy to provision).
- avp_radius - load AVPs via RADIUS
- avpops - flexible module for operations with avps and database, introducing
a pseudo-variable support in OpenSER configuration file (backported from cvs
head)
- cpl-c - implementation of Call Processing Language interpreter
- dispatcher - implements a dispatcher for incoming requests using hashes
over parts of the request to select the destination
- diversion - implements the Diversion extensions as per
draft-levy-sip-diversion-08
- flatstore - simple module that implements very fast inserts for accounting
purposes
- gflags - keeps a bitmap of flags in shared memory and may be used to change
behavior of server based on value of the flags
- options - answer server options requests
- speeddial - provides on-server per user speed dial facilities
- uri_db - split from uri module, performs various checks related to SIP URI
over database fields
removed modules:
- vm - the functionality was transferred to tm module (see t_write_req(...)
method)
-(NEW) extcmd - the functionality not required anymore
-(NEW) ext - the functionality overlaps to exec
-(NEW) print - demo module
core:
- fixes:
-(NEW) if script functions return 0, the entire script will be terminated,
not only the top route; It's important since many TM functions relay
on this behavior.
-(NEW) exit - terminates the whole script, not only the current route
- new parts:
- UNIX domain socket server implemented
- AVP (Attribute-Value Pair) core implemented
- global AVP alias support implemented
- changes:
- command line: removed -p port and extended -l:
-l [proto:]addr[:port] , where proto=udp|tcp and
addr= host|ip_address|interface_name. The format is the same
as for listen in the config file. ipv6 addresses must be enclosed in
[].
- multicast support added (see mcast_loopback & mcast_ttl)
- saving of process group id enabled, if the -G option is specified
(a safe way to quickly kill all ser processes)
- core dump-ing is enabled by default, see also disable_core_dump
-(NEW) dset (destination set) stores also the socket to be used for
sending the branch -. each branch of the same transaction may be
be sent out on different interfaces.
- Database API
-database api changed to support usage of different drivers
simultaneously. The database URL must start now with the name of the
driver (module). Example: for mysql the DB URL
'sql://user:password@dbhost:port/database' must be specified now as
'mysql://user:password@dbhost:port/database'
- new config features
- added from_uri & to_uri: behave exactly like uri but use the
"From:"/"To:" uris
(e.g.: if (from_uri==myself) ..., if (to_uri=~"^sip:test@")... )
- config: better escape support in strings (e.g. \", \<cr>, \x0a, \012)
- bad network addresses are now automatically fixed
(e.g. 192.168.1.80/27 => 192.168.1.64/27)
- protocol and port can be specified in the alias and listen lines, e.g.:
alias= tcp:foo.bar:* udp:test.bar:5080 foo.com
listen= eth0 tcp:eth0:5065 udp:127.0.0.1 [3ffe::1]
- multiple operator support: ==, != for special operations (e.g myself, ip)
==, !=, ~= for strings
==, !=, >, <, >=, <= for integers
- new config variables:
mcast_loopback = <yes/no> - loopback sent multicast datagram, default no.
mcast_ttl = number - set multicast ttl, default OS specific (usually 1).
sock_mode = <permissions> (e.g. sock_mode=0600: default value = 0660)
ser unix sockets and fifo will be created with this permissions
(old name fifo_mode is still supported, but deprecated)
sock_user = username|"uid"
sock_group = groupname|"gid"
change the owner and/or group of the ser unix sockets or fifo
Short example config snippet:
sock_mode=0600 # ser socket/fifo mode
sock_user="www-data" # ser socket/fifo owner
sock_group=nogroup
user=nobody # ser user (ser will suid to it)
disable_core_dump= yes|no
by default core dump limits are set to unlimited or a high enough
value, set this config variable o yes to disable core dump-ing
(will set core limits to 0)
open_files_limit= number
if set and bigger than the current open file limit, ser will try
to increase its open file limit to this number. Note: ser must be
started as root to be able to increase a limit past the hard limit
(which, for open files, is 1024 on most systems)
tcp_connect_timeout= seconds
time before an ongoing connect will be aborted
tcp_send_timeout= seconds
time after a tcp connection will be closed if it is not available
for writing in this interval (and ser wants to send something on it)
tcp_accept_aliases= yes|no
if a message received over a tcp connection has "alias" in its via
a new tcp alias port will be created for the connection the message
came from (the alias port will be set to the via one).
Based on draft-ietf-sip-connect-reuse-00.txt, but using only the port
(host aliases are too dangerous IMHO, involve extra DNS
lookups and the need for them is questionable)
See force_tcp_alias for more details.
log_facility = LOG_LOCAL0
if ser logs to syslog, you can control the facility for logging. Very
useful when you want to divert all ser logs to a different log file.
See man page syslog(3) for more details.
unix_sock = "/tmp/ser.sock"
The name of the socket the unixsock server should listen on.
unix_sock_children = 1
The number of children that will listen on the unix domain socket.
unix_tx_timeout = 2000
Timeout (in ms) used when sending replies through unix sockets.
- new script commands:
(NEW) return(int) - exits from the current route and sets "int" as
route returning code. Now you can easily return and test the code
from sub-routes.
force_send_socket([proto:]address[:port])
sends the message from the specified socket (it _must_ be one of the
sockets ser listens on). If the protocol doesn't match (e.g. udp
message "forced" to a tcp socket) the closest socket of the same
protocol is used.
force_tcp_alias()
force_tcp_alias(port)
adds a tcp port alias for the current connection (if tcp).
Useful if you want to send all the traffic to port_alias through
the same connection this request came from [it could help
for firewall or nat traversal].
With no parameters adds the port from the message via as the alias.
When the "aliased" connection is closed (e.g. it's idle for too
much time), all the port aliases are removed.
Note: by default ser closes idle connection after 3 minutes (stable)
or 1 minute (unstable) so to take full advantage of tcp aliases for
things like firewall and nat traversal, redefine TCP_CON_*TIMEOUT
in tcp_conn.h and recompile. Also right now there can be maximum
3 port aliases to a connection (you shouldn't need more than one).
To change this redefine TCP_CON_MAX_ALIASES in the same file
(set it to you desired value + 1; 1 is needed for the real port).
utilities:
- (NEW) you can create resource file for openserctl (formerly serctl) and
place it in your home directory as ".openserctlrc". You can set in this
file the values of the variables from openserctl, helpful to avoid
overwriting of changed openserctl values at a new installation.
- (NEW) you can create resource file for openser_mysql.sh (formerly
ser_mysql.sh) and place it in your home directory as ".opensermysqlrc"
- (NEW) openserctl includes now commands for managing AVPs, speeddial and
database aliases (alias_db).
- ngrep patch for displaying new lines in captured SIP messages is no longer
needed; use ngrep V 1.42 with the option "-W byline".
|