SER CVS head, new select identifiers info - was - Re: [Serusers] Textops with AVPs?

Greger V. Teigre greger at
Wed Jul 12 08:47:11 CEST 2006

It's in head only (0.10.x track)

sip wrote:
> Greger,
> Sounds incredibly handy. Is this available only in SER head or is it something
> that's been around for a little while (i.e. do I have any hope of using it in
> ser 0.9.6) ? 
> N. 
> On Tue, 11 Jul 2006 21:18:38 +0200, Greger V. Teigre wrote
>> I repost Jan's original description of the "select identifier"
> functionality. Since then, more select identifiers have been added, both from
> core and modules.
> g-)
> SER core can parse select identifiers using the configuration parser.
>  A select identifiers begins with @ characters and contains several
>  components/tokens delimited by . (unless it is integer component).
>  Integer components are enclosed in [], for example:
> @contact[1].uri
> This identifier is converted into binary structure which contains the
>  array of components. After that the parser tries to lookup function
>  that matches the identifier.
> Available functions are arranged in a tree-like structure. When
>  looking up a function the tree is traversed (starting at the root)
>  until the parser finds corresponding function. The part of the tree
>  containing TLS functions looks like:
> "tls"-+-"peer"-+-"subj"-+-"name" (select_peer_name())
>  | \
>  | "state" (select_peer_state())
>  |
>  +-"issuer"-+-"name" (select_peer_issuer_name())
>  \
>  "state" (select_peer_issuer_state())
> Thus when you write @tls.peer.subj.state in the configuration file
>  then the parser will traverse the tree until it reaches
>  select_peer_state() function and then it would remember that this
>  function should be called.
> The tree of identifiers and functions is built dynamically at runtime.
>  This is a nice feature becase this way modules can register their own
>  functions or whole subtrees and make their functions available in the
>  configuration file.
> Thus if you load TLS module then all @tls.* selects become avaiable,
>  if you do not load the module they are not available. Only a couple of
>  core functions and the framework is built in the core, the rest can be
>  in modules.
> This framework is currently used in tls and xmlrpc modules. XMLRPC
>  module exports the name of the XML-RPC method to the script. TLS
>  module exports information from TLS layer.
> The SER core itself contains a couple of functions that can retrieve
>  various parts of a SIP message:
> @from, @from.uri, @to, @to.uri, @from.tag,, @to.tag.
>, @from.params, @to.params, @contact, @contact.uri,
>  @contact.params, @contact.expires, @contact.q, @via, and so on.
> TLS related functions are described in a separate email.
>> sip wrote: Sounds like something I might look more into. Thanks, Greger. Is
> there
> anything written more about @var constructs? I checked the admin guide (I
> know... that was kind of silly considering how out of date it is ;) ), and
> tried to do a search in Google (it seems to ignore the @, so @var just gives
> me every message with the word 'var' in it) and didn't see anything. Is there
> anything over at OnSIP discussing it? 
> N.
> On Tue, 11 Jul 2006 08:35:11 +0200, Greger V. Teigre wrote
>    If this functionality was added in later openser versions than 0.9,
>  it will most likely not be in SER. What you are describing is hard 
> to do with the avpops version in 0.9. The avpops module was generic 
> enough to do more than it was designed for; making some code 
> operations quite dirty in 0.9 (using the ruri as a temporary storage 
> while manipulating a variable). SER head uses @var to more directly 
> access data instead of going through a module. You may want to have 
> a look at it! g-)
> sip wrote:
>    Is there a version of textops that can do substs with AVPs that will work on
> SER 0.9.6 or is that an openSER-only modification of the code? 
> I'm curious because we're ALSO running into the issues of charging the
> call-forwarding user for forwarding a call to the PSTN instead of charging the
> calling party. Ideally, I'd like to rewrite the from address solely for the
> purpose of authenticating the user who's doing the forwarding and charging him
> for the call, but that would likely break things as there'd be no way to get
> back to the original user if I just rewrote the from username. 
> SO, I thought, why not let the b2bua handle the details and just forward a uri
> with a prefix string that includes the user who's forwarding the call (the
> original RURI instead of just the rewritten one). 
> And there's the trick. How do I craft a RURI out of bits and pieces of things
> into one long RURI? 
> If it were all the same number, I could use prefix, but it's dynamic (as is
> the nature of most things), so prefix won't work.
> How do I take
> RURI=1105
> And add to it:
> The rewritten RURI from the call forwarding info: 18005551212
> AND the prefix for the b2bua auth: 9999
> To make:
> new ruri: 9999110518005551212
> N.
> _______________________________________________
> Serusers mailing list
> Serusers at lists.iptel.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the sr-users mailing list