[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