So... I've had ser 0.9.6 running on RH EL3, and FC3 and 4. I'm building out a
server on RH EL4 for SER, but I've run into a snag. I'm sure it's something
simple, but it has me stumped at the moment.
I've recompiled mysql.so on the new server... compiles fine (as do the rest of
the modules). However, when I try to start up SER with mysql.so loaded, it
gives me this:
ERROR: load_module: could not open module
</usr/local/lib/ser/modules/mysql.so>: /usr/local/lib/ser/modules/mysql.so:
undefined symbol: log
Undefined symbol: log
Never seen this before. Anyone know what it means or, more importantly, how to
fix it (and no... I'm not going to scrap it all and go with Ottendorf yet, so
that's not a solution ;) )?
N.
Hello,
At present we are using "sys v semaphores"(USE_SYSV_SEM) for locking.
But we see a some delay while acquiring the lock to modify the usrloc's
location table.
We are in a thought to use "posix semaphores" (USE_POSIX_SEM), will this
improve any performance for usrloc location table.
Thoughts and Ideas will be appreciated.
--
Ramu Yadav
Hi everybody,
following to some discussions / requests from users, openser devel
branch has now core support for timers will resolution less than a
second. It uses time functions that can give a microsecond accuracy, but
for performance reasons, the utimer (microtimer) uses a ticking period
of 100 milliseconds. Of course, this can be changed at compile time.
First "beneficiary" of this timer, is TM, to gain more accuracy for
retransmissions:
* retransmission timers use the the core utimer (with microsecond
resolution),
having 100 milliseconds intervals.
* this will increase the retransmissions precision to an error of maximum
100 milliseconds.
* T1 (first retransmission) is done at 500 milliseconds (instead of 1
sec), as
the RFC3261 suggests.
* T1 and T2 (see RFC3261) can be configured via module parameters - the
inter-steps are automatically computed on startup based on the RFC3261
specifications.
Along with increasing the timer accuracy, the TM timer lists were
improved for faster operations:
* faster timers lists - use shortcut pointers (based on timeout values) for
faster walking through the list -> faster insert and expire
* for elements to be deleted from the timer lists, do not overwrite the
timeout
value as this will trigger more processing when inserting new elements
into
the list
The performance tests are not completed - I need more machines to stress
the proxy :D -, but I will come back with results during the testing phase.
regards,
bogdan
Hello,
two major changes were applied to avpops module in development branch
(1.2.0):
- avp_write() has been removed - same functionality is provided by
assignment operator in routing blocks, together with latest commit of PV
transformations
- avp_aliases parameter has been removed from avpops module and
introduced as core parameter. you can use it directly in core, in global
parameters section in form of:
avp_aliases="uuid=I:660;email=s:email_addr;fwd=i:753"
The value is the same as it was for avpops parameter. Now the AVP aliases can be used directly in routing blocks.
Cheers,
Daniel
Hello,
currently in CVS trunk of development version is a new feature
'transformations'. A transformations is basically a function that can be
applied to a pseudo-variable (PV). In this way, the value of PV is not
altered but the result is something different.
They are intended to facilitate access to different attributes of PV
(like strlen of value, parts of value, substrings) or complete different
value of PV (encoded in hexa, md5 value, escape/unescape PV value for DB
operations...).
The format is '{id[,parameters]}' and they can be used inside parenthesis of pseudo-variables (note that even short name pseudo-variables must be enclosed in '(' and ')' to be able to apply transformations)
For example:
- $(ru{s.len}) - returns the lenth of R-URI
- $(avp(i:3){s.md5}) - returns the md5 string over value of $avp(i:3)
The following classes of transformations are implemented
1) string - the name of transformation starts with 's.'. Available transformations in this class:
- {s.len} - returns strlen of PV value
- {s.md5} - returs md5 over PV value
- {s.substr,offset,length} - returns substring starting at offset having
size of 'length'. If offset is negative, then it is counted from the end of
PV value, -1 being the last char. In case of positive value, 0 is first
char. Length must be positive, in case of 0, substring to the end of
PV value is returned. offset and length can be PV as well. Example:
"abcd"{s.substr,1,0} = "bcd"
- {s.select,index,separator} - returns a field from PV value. The field is
selected based on separator and index. The separator must be a character
used to identify the fields. Index must be a integer value or a PV. If
index is negative, the count of fields starts from end of PV value, -1
being last field. If index is positive, 0 is the first field. Example:
"12,34,56"{s.select,1,,} = "34" ; "12,34,56"{s.select,-2,,} = "12"
- {s.encode.hexa} - returns encoding in hexa of PV value
- {s.decode.hexa} - returns decoding from hexa of PV value
- {s.escape.common} - returns escaped string of PV value. Characters escaped
are ''', '"', '\' and 0. Useful when doing DB queries (care should be
taken for non latin character set)
- {s.unescape.common} - returns unescaped string of PV value. Reverse of
above transformation.
2) uri - the name of transformation starts with 'uri.'. The PV value is considered to be a SIP URI. This transformation returns parts of SIP URI (see struct sip_uri). Available transformations in this class:
- {uri.user} - returns the user part
- {uri.host} or {uri.domain} - returns the domain part
- {uri.passwd} - returns the password
- {uri.port} - returns the port
- {uri.params} - returns the URI parameters in a string
- {uri.param,name} - returns the value of parameter with name 'name'
- {uri.headers} - returns URI headers
- {uri.transport} - returns the value of transport parameter
- {uri.ttl} - returns the value of ttl parameter
- {uri.uparam} - returns the value of user parameter
- {uri.maddr} - returns the value of maddr parameter
- {uri.method} - returns the value of method parameter
- {uri.lr} - returns the value of lr parameter
- {uri.r2} - returns the value of r2 parameter
3) parameters list - the name of the transformation starts with 'param.'. The PV value is considered to be a string like "name1=value1;name2=value2;...". The transformations returns the value for a specific parameter, or the name of a parameter at a specific index. Available transformations in this class:
- {param.value,name} - returns the value of parameter 'name'
Example: "a=1;b=2;c=3"{param.value,c} = "3"
- {param.name,index} - returns the name of parameter at position 'index'.
Example: "a=1;b=2;c=3"{param.name,1} = "b"
Within a PV, many transformation can be applied, being executed from left to right. Example:
$var(x) = "a=1;b=22;c=333";
$(var(x){param.value,$(var(x){param.name,1})}{s.len}) = 2
- the length of the value of parameter at position 1 (remember 0 is first
position, 1 is second position)
The transformations can be used anywhere, being considered parts of PV -- in xlog, avpops or other modules' functions and parameters, in right side assignment expressions or in comparisons.
Documentation page for transformations was opened at:
http://openser.org/dokuwiki/doku.php/transformations:devel
Feedback is welcome!
Cheers,
Daniel
We could use the IETF meeting in Prague in March. Actually, I have anticipated
that and there is a hotel room reserved already :-) Could folks willing to show
up and debate roadmap or whatever else appears important technically speak up
now?
-jiri
At 12:08 25/01/2007, Olle E Johansson wrote:
>As I am fighting the same issues and try to make chan_sip easier for
>the administrator, would it be
>a good idea with a joint Open Source SIP developer meeting somewhere
>in Europe this spring?
>
>We have a lot of common issues, need to settle with the same
>terminology and propably fight
>the same fights with RFCs to implement...
>
>A lot of of users use both Asterisk and SER/OPENSER, so they need
>interoperability.
>
>For my work on a new chan_sip, please check http://www.codename-pineapple.org
>
>/O
>_______________________________________________
>Serdev mailing list
>Serdev(a)lists.iptel.org
>http://lists.iptel.org/mailman/listinfo/serdev
--
Jiri Kuthan http://iptel.org/~jiri/
Hi,
I can not use www_challenge(realm,qop)function in ser.cfg file even though
auth module is loaded. The readme file has documentation for it.
When I use the following in config file and start SER, the following error
is thrown
if (!radius_www_authorize("")) {
www_challenge("", "1");
break;
};
parse error (197,49-50): unknown command, missing loadmodule?
Can any one help me to find out whats wrong with this module/function.
-Venkat
IMPORTANT NOTE: if you are receiving this auto responder after accessing Acme Packet's web portal or sending an email to a mailing list, rest assured that your message has been received and will be acted upon by the appropriate personnel.
I am taking Friday, February 2 through Tuesday, February 6 off and will be mostly unavailable during this time. I will not have access to a computer, but will be reachable via my cell phone in the event of emergencies.
For support issues, please contact support(a)acmepacket.com. For non-support issues, please contact Erin Medeiros, Vice President of Professional Services, at emedeiros(a)acmepacket.com.
Thank you,
Patrick Timmons
Vice President, Systems Engineering
Acme Packet, Inc.
hi!
I am trying to set up the call forwarding feature and I have some question bout the idea how to realize this.
My Idea was to do it with the usage of avp's.
First thing I do is the check if there is a call_forward parameter set in the database in user_attrs table.
I do this by invoking load_attrs("$fu", "$f.uid");
and then I do the check if ($tu.call_forward)
On the "what's new site" in the avps and selects article I found another method which performs similar task: lookup_user("$tu","@ruri")
What is the difference between those to methods?? Are they part of the SER core?
previously in ser 0.9.x I have it done by, first loading the avp by avp_db_load()
and then in case of call forwarding by making avp_pushto("$ruri","something") or
rewriteuri() and then t_relay().
What is now a preferred way to realized similar functions. I mean can I utilize those methods like load_attrs or lookup_user() and then substitute the ruri without avp_pushto or rewriteuri??
best
tomasz
Brandon,
the log_fmt parameter affects only the syslog accounting (logging via
syslog to log files). Flatstore is implemented as Write-Only DB engine,
so it be used by the DB part of the accounting module. You need to play
with the "db_*" related parameters from the ACC module.
regards,
bogdan
Brandon Armstead wrote:
> Bogdan-Andrei Iancu wrote:
>
>> Hi Brandon,
>>
>> what version of OpenSER are you using? There were important changes
>> in the latest version, so it is important to know it.
>>
>> regards,
>> bogdan
>>
>> Brandon Armstead wrote:
>>
>>> Hello everyone,
>>>
>>> Just a quick question, I have the following in my configuration:
>>> modparam("acc", "log_fmt", "miocrdfs01"), however, in the actual
>>> logging it is giving me back 14 different log "information", yet the
>>> format "miocrdfs01" is only 10, does flatstore use a different
>>> formatting mechanism, or does it force it to be that 14, and only
>>> that 14, or anyone know whats going on? Thanks
>>>
>>> Regards,
>>> Brandon
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users(a)openser.org
>>> http://openser.org/cgi-bin/mailman/listinfo/users
>>>
>>
>>
> Hello Bodgan,
>
> I'm currently using OpenSER version 1.1.1-notls. Thanks again!
>
> Regards,
> Brandon
>