RadAcct and Q.931 Disconnect Causes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi All,

  Ok, I'm a little stompped here, but I guess one of the "older"
hackerz around can lend a hand. I've been going over the Radius
information returned from GnuGK to the Radius Server, and to be
honest, most of the information is in there. However, I've noticed
that one important field is missing, well, at least if you wanna
debug stuff via your radius server.

Lets examine how GnuGK logs disconnect causes into the log file:

2004/01/12 16:14:37.746 4       ProxyChannel.cxx(373)   Q931    Received: {
  q931pdu = {
    protocolDiscriminator = 8
    callReference = 14794
    from = originator
    messageType = ReleaseComplete
    IE: Cause - No circuit/channel available = {
      80 a2                                              ..
    }
    IE: User-User = {
      25 80 06 00 08 91 4a 00  03 0b 18 11 00 34 30 30   %.....J......400
      32 63 63 66 30 66 66 66  66 65 38 36 33 01 00 01   2ccf0ffffe863...
      00 08 80 01 00                                     .....
    }
  }
  h225pdu = {
    h323_uu_pdu = {
      h323_message_body = releaseComplete {
        protocolIdentifier = 0.0.8.2250.0.3
        callIdentifier = {
          guid =  16 octets {
            34 30 30 32 63 63 66 30  66 66 66 66 65 38 36 33   4002ccf0ffffe863
          }
        }
        presentationIndicator = presentationAllowed <<null>>
        screeningIndicator = userProvidedNotScreened
      }
      h245Tunneling = FALSE
    }
  }
}

  Right after this DC messages, a CDR is created. Now, in Radius all
you get is:

  h323-setup-time = "h323-setup-time=09:37:52.000 GMT Tue Jan 13 2004"
  h323-disconnect-time = "h323-disconnect-time=09:37:56.000 GMT Tue Jan 13 2004"
  h323-disconnect-cause = "h323-disconnect-cause=22"

  Now, I'm missing just a very small part of the information that is
provided above, which is the "from =" field. Now, I've managed to
dig around the source and understand that I would need to add a method
to the CallRec class, to get this field then change the following part
of GkAcctLogger::Status RadAcct::LogAcctEvent to look something like
this:


if( evt & AcctStop ) { tm = call->GetDisconnectTime();

  // New information to be added to CallRec
  dcorigin = call->GetDisconnectOrigin();

  if( tm != 0 ) *pdu += new RadiusAttr(PString("h323-disconnect-time=")+
		      AsString(tm),CiscoVendorId, 29);
  *pdu += new RadiusAttr(PString("h323-disconnect-cause=")+
	PString(PString::Unsigned, (long)(call->GetDisconnectCause()), 16 ),
        CiscoVendorId, 30);
  // New field here
  *pdu += new RadiusAttr(PString("h323-disconnect-origin=")+
	AsString(dcorigin), [have no idea what to put here yet], [neither here]);
}

  Again, I may be barking up the wrong tree here, but I think that
many people would really like to have this information available
for Radius.

--
__________________________________________________________________
Nir Simionovich
IT Manager
m-Wise Ltd.
e-Mail: nirs@m-wise.com
  cell: +972-54-482826



-------------------------------------------------------
This SF.net email is sponsored by: Perforce Software.
Perforce is the Fast Software Configuration Management System offering
advanced branching capabilities and atomic changes on 50+ platforms.
Free Eval! http://www.perforce.com/perforce/loadprog.html
_______________________________________________
List: Openh323gk-users@lists.sourceforge.net
Archive: http://sourceforge.net/mailarchive/forum.php?forum_id=8549
Homepage: http://www.gnugk.org/

[Index of Archives]     [SIP]     [Open H.323]     [Gnu Gatekeeper]     [Asterisk PBX]     [ISDN Cause Codes]     [Yosemite News]

  Powered by Linux