[RADIATOR] Renaming attributes in Grouped AVP

Hugh Irvine hugh at open.com.au
Mon Sep 14 17:22:38 CDT 2009


Hello All -

There is something to be said for not typing before a morning  
coffee ....


sub
{
	my $p=${$_[0]};

	my @attribute;

	@attribute= $p->get_attr('Accounting-Input-Octets');

	$p->add_attr('Accounting-Input-Octets-Called-Side', $attribute[0];
	$p->add_attr('Accounting-Input-Octets-Calling-Side', $attribute[1];

	@attribute = $p->get_attr('Accounting-Output-Octets');

	$p->add_attr('Accounting-Output-Octets-Called-Side', $attribute[0];
	$p->add_attr('Accounting-Output-Octets-Calling-Side', $attribute[1];

	......

	return;
}



regards

Hugh



On 15 Sep 2009, at 08:08, Hugh Irvine wrote:

>
> Hello Arthur -
>
> My previous mail mentioned the example hook that processes multiple
> "cisco-avpairs".
>
> Here is the code for your convenience:
>
>
> createavpairs
>
> sub {
>         my $p=${$_[0]};
>         if (my @avpair = $p->get_attr('cisco-avpair')) {
>                 foreach my $avpair (@avpair) {
>                         $p->add_attr(split('=',$avpair));
>                 }
>         }
> }
>
>
> You simply need to call "get_attr()" in a list context to get all of
> the attributes with a particular name.
>
> In this case you could probably use something like this for each of
> the attributes you need to process:
>
>
> sub
> {
> 	my $p=${$_[0]};
>
> 	my @attribute;
>
> 	@attribute= $p->get_attr('Accounting-Input-Octets');
>
> 	$p->att_attr('Accounting-Input-Octets-Called-Side', $attribute[0];
> 	$p->att_attr('Accounting-Input-Octets-Calling-Side', $attribute[1];
>
> 	@attribute = $p->get_attr('Accounting-Output-Octets');
>
> 	$p->att_attr('Accounting-Output-Octets-Called-Side', $attribute[0];
> 	$p->att_attr('Accounting-Output-Octets-Calling-Side', $attribute[1];
>
> 	......
>
> 	return;
> }
>
>
> hope that helps
>
> regards
>
> Hugh
>
>
> On 15 Sep 2009, at 03:59, Arthur Konovalov wrote:
>
>> Thank You for the tip.
>>
>> From my understanding seems that in those examples single attributes
>> are processed.
>> My task is more complicated.
>> How can I memorize  AVP-s which belong to Called-Side group and  
>> others
>> with same names to Calling-Side?
>> Is there a way to store the whole group together and rename the
>> attributes afterwards in preprocessing hook?
>>
>> Regards,
>> Arthur
>>
>> Hugh Irvine wrote:
>>>
>>>
>>> Yes you can manipulate the attributes in a hook.
>>>
>>> There are many example hooks in "goodies/hooks.txt", including one
>>> that does something similar with multiple "cisco-avpairs".
>>>
>>> regards
>>>
>>> Hugh
>>>
>>>
>>>
>>>
>>> On 14 Sep 2009, at 19:40, Arthur Konovalov wrote:
>>>
>>>> Hi!
>>>>
>>>> I have a task to store statistics from Diameter accounting  
>>>> messages.
>>>> There are 2 identical Media-Statistics grouped AVP in one message-
>>>> one
>>>> from Calling-Side and another from Called-Side.
>>>>
>>>> Part of logfile:
>>>>
>>>> Mon Sep 14 11:20:11 2009: DEBUG: mmtest.emm.hot.ee <-
>>>> proxy1.emm.hot.ee
>>>> recv_v1msg:
>>>> Code:           271 (Accounting)
>>>> Version:        1
>>>> Flags:          0xc0 (RP)
>>>> Application ID: 3 (Base Accounting)
>>>> Hop-to-Hop ID:  319540787
>>>> End-to-End ID:  319540787
>>>> Attributes:
>>>>  Session-Id: .M., proxy1.emm.hot.ee;18;1081;ppb1_bs13-
>>>> R6A at blade_0_19
>>>>  Origin-Host: .M., proxy1.emm.hot.ee
>>>>  Origin-Realm: .M., emm.hot.ee
>>>>  Destination-Realm: .M., emm.hot.ee
>>>>  Destination-Host: .M., mmtest.emm.hot.ee
>>>>  Accounting-Record-Type: .M., STOP_RECORD
>>>>  Accounting-Record-Number: .M., 2
>>>>  Acct-Application-Id: .M., BASE_ACCOUNTING
>>>>  Event-Timestamp: .M., 3461905212
>>>>  Role-Of-Node: VM., 1
>>>>  Time-Stamps: VM.,
>>>>     SIP-Request-Timestamp: VM., 3461905212
>>>>     SIP-Response-Timestamp: VM., 3461905212
>>>>  IMS-Charging-Identifier: VM., proxy1.emm.hot.ee-1252-916407-737035
>>>>  Cause-Code: VM., 0
>>>>  Node-Functionality: VM., 110
>>>>  Media-Statistics: VM.,
>>>>     Media-Interface-Statistics: VM.,
>>>>        User-Side: VM., Called-Side
>>>>        Media-Interface-Flow-Statistics: VM.,
>>>>           Media-Component-Number: VM., 1
>>>>           Accounting-Input-Octets: .M., 32000
>>>>           Accounting-Input-Packets: .M., 160
>>>>           Accounting-Output-Octets: .M., 24636
>>>>           Accounting-Output-Packets: .M., 124
>>>>           Packets-Discarded-Filtering: VM., 0
>>>>           Octets-Discarded-Filtering: VM., 0
>>>>           Packets-Discarded-Policing: VM., 0
>>>>           Octets-Discarded-Policing: VM., 0
>>>>           Packets-Out-Of-Sequence: VM., 0
>>>>           Packets-Lost: VM., 0
>>>>           RTCP-Reported-Average-Jitter: VM., 0
>>>>           RTCP-Reported-Packets-Lost: VM., 0
>>>>     Media-Interface-Statistics: VM.,
>>>>        User-Side: VM., Calling-Side
>>>>        Media-Interface-Flow-Statistics: VM.,
>>>>           Media-Component-Number: VM., 1
>>>>           Accounting-Input-Octets: .M., 24636
>>>>           Accounting-Input-Packets: .M., 124
>>>>           Accounting-Output-Octets: .M., 32000
>>>>           Accounting-Output-Packets: .M., 160
>>>>           Packets-Discarded-Filtering: VM., 0
>>>>           Octets-Discarded-Filtering: VM., 0
>>>>           Packets-Discarded-Policing: VM., 0
>>>>           Octets-Discarded-Policing: VM., 0
>>>>           Packets-Out-Of-Sequence: VM., 0
>>>>           Packets-Lost: VM., 0
>>>>           RTCP-Reported-Average-Jitter: VM., 0
>>>>           RTCP-Reported-Packets-Lost: VM., 0
>>>> Mon Sep 14 11:20:11 2009: DEBUG: StateMachine::event R-Rcv-Message
>>>> in
>>>> state R-Open. Calling Process
>>>> Mon Sep 14 11:20:11 2009: DEBUG: mmtest.emm.hot.ee Process
>>>> Mon Sep 14 11:20:11 2009: DEBUG: Packet dump:
>>>> *** Diameter request converted to Radius request ....
>>>> Code:       Accounting-Request
>>>> Identifier: UNDEF
>>>> Authentic:  ,-<232><141><181><152><30>
>>>> +<180><128><212><137><251>MN<220>
>>>> Attributes:
>>>>      Acct-Session-Id =
>>>> "proxy1.emm.hot.ee;18;1081;ppb1_bs13-R6A at blade_0_19"
>>>>      NAS-Identifier = "proxy1.emm.hot.ee"
>>>>      Acct-Status-Type = 2
>>>>      Event-Timestamp = 3461905212
>>>>      Role-Of-Node = 1
>>>>      SIP-Request-Timestamp = 3461905212
>>>>      SIP-Response-Timestamp = 3461905212
>>>>      IMS-Charging-Identifier =
>>>> "proxy1.emm.hot.ee-1252-916407-737035"
>>>>      Cause-Code = 0
>>>>      Node-Functionality = 110
>>>>      User-Side = "Called-Side"
>>>>      Media-Component-Number = 1
>>>>      Acct-Input-Octets = 32000
>>>>      Acct-Input-Packets = 160
>>>>      Acct-Output-Octets = 24636
>>>>      Acct-Output-Packets = 124
>>>>      Packets-Discarded-Filtering = 0
>>>>      Octets-Discarded-Filtering = 0
>>>>      Packets-Discarded-Policing = 0
>>>>      Octets-Discarded-Policing = 0
>>>>      Packets-Out-Of-Sequence = 0
>>>>      Packets-Lost = 0
>>>>      RTCP-Reported-Average-Jitter = 0
>>>>      RTCP-Reported-Packets-Lost = 0
>>>>      User-Side = "Calling-Side"
>>>>      Media-Component-Number = 1
>>>>      Acct-Input-Octets = 24636
>>>>      Acct-Input-Packets = 124
>>>>      Acct-Output-Octets = 32000
>>>>      Acct-Output-Packets = 160
>>>>      Packets-Discarded-Filtering = 0
>>>>      Octets-Discarded-Filtering = 0
>>>>      Packets-Discarded-Policing = 0
>>>>      Octets-Discarded-Policing = 0
>>>>      Packets-Out-Of-Sequence = 0
>>>>      Packets-Lost = 0
>>>>      RTCP-Reported-Average-Jitter = 0
>>>>      RTCP-Reported-Packets-Lost = 0
>>>>
>>>>
>>>> I can't store in MySQL table two different attributes with same
>>>> name.
>>>> Is it possible to rename attributes (by script, for example) in
>>>> grouped
>>>> AVP to excluding names overlapping? For instance by adding prefix  
>>>> or
>>>> suffix to Calling and Called part attribute names.
>>>>
>>>> Please give me any hint, help or workaround.
>>>>
>>>> Regards,
>>>> Arthur
>>>>
>>>>
>>>> _______________________________________________
>>>> radiator mailing list
>>>> radiator at open.com.au
>>>> http://www.open.com.au/mailman/listinfo/radiator
>>>
>>>
>>>
>>> NB:
>>>
>>> Have you read the reference manual ("doc/ref.html")?
>>> Have you searched the mailing list archive
>>> (www.open.com.au/archives/radiator)?
>>> Have you had a quick look on Google (www.google.com)?
>>> Have you included a copy of your configuration file (no secrets),
>>> together with a trace 4 debug showing what is happening?
>>> Have you checked the RadiusExpert wiki:
>>> http://www.open.com.au/wiki/index.php/Main_Page
>>>
>>
>> _______________________________________________
>> radiator mailing list
>> radiator at open.com.au
>> http://www.open.com.au/mailman/listinfo/radiator
>
>
>
> NB:
>
> Have you read the reference manual ("doc/ref.html")?
> Have you searched the mailing list archive (www.open.com.au/archives/radiator)?
> Have you had a quick look on Google (www.google.com)?
> Have you included a copy of your configuration file (no secrets),
> together with a trace 4 debug showing what is happening?
> Have you checked the RadiusExpert wiki:
> http://www.open.com.au/wiki/index.php/Main_Page
>
> -- 
> Radiator: the most portable, flexible and configurable RADIUS server
> anywhere. Available on *NIX, *BSD, Windows, MacOS X.
> Includes support for reliable RADIUS transport (RadSec),
> and DIAMETER translation agent.
> -
> Nets: internetwork inventory and management - graphical, extensible,
> flexible with hardware, software, platform and database independence.
> -
> CATool: Private Certificate Authority for Unix and Unix-like systems.
>
>
> _______________________________________________
> radiator mailing list
> radiator at open.com.au
> http://www.open.com.au/mailman/listinfo/radiator



NB:

Have you read the reference manual ("doc/ref.html")?
Have you searched the mailing list archive (www.open.com.au/archives/radiator)?
Have you had a quick look on Google (www.google.com)?
Have you included a copy of your configuration file (no secrets),
together with a trace 4 debug showing what is happening?
Have you checked the RadiusExpert wiki:
http://www.open.com.au/wiki/index.php/Main_Page

-- 
Radiator: the most portable, flexible and configurable RADIUS server
anywhere. Available on *NIX, *BSD, Windows, MacOS X.
Includes support for reliable RADIUS transport (RadSec),
and DIAMETER translation agent.
-
Nets: internetwork inventory and management - graphical, extensible,
flexible with hardware, software, platform and database independence.
-
CATool: Private Certificate Authority for Unix and Unix-like systems.




More information about the radiator mailing list