Diameter Cx interface

16 views
Skip to first unread message

Victor Neiman

unread,
Jun 19, 2012, 10:24:45 AM6/19/12
to little...@googlegroups.com
Hi,

I have been looking at the CxManager class in the HSS and S-CSCF in order to try and plan how to write an Rx Diameter interface for the P-CSCF. I have a question regarding receiving Diameter messages: I can see that on the HSS side the CxManager class has the methods sendPpr() and sendRtr() and those methods are responsible for sending the messages off to the S-CSCF but I do not understand how Diameter messages that are sent to the HSS from the S-CSCF are received and processed, I was expecting to find methods along the lines of receivePpa(), receiveRta() and so on, on the HSS but there are none.

Regards
Victor

Victor Neiman

unread,
Jun 19, 2012, 10:39:45 AM6/19/12
to little...@googlegroups.com
sorry, found the methods I was looking for in the Hss class: doLir(), doUar(), doMar().

Victor Neiman

unread,
Jun 21, 2012, 10:12:55 AM6/21/12
to little...@googlegroups.com
Hello again, I have been doing some reading up and plan to implement the Rx interface as soon as I understand the details of how CxManager was implemented. I have another question to do with AVPs that are associated with a Diameter message.

The question is: how are the AVPs set on, for example, the sendPpr() method:

<pre>
/**
     * <pre>
     *   < Push-Profile-Request > ::= < Diameter Header: 305, REQ, PXY, 16777216 >
     *   < Session-Id >
     *   { Vendor-Specific-Application-Id }
     *   { Auth-Session-State }
     *   { Origin-Host }
     *   { Origin-Realm }
     *   { Destination-Host }
     *   { Destination-Realm }
     *   { User-Name }
     *  *[ Supported-Features ]
     *   [ User-Data ]
     *   [ Charging-Information ]
     *   [ SIP-Auth-Data-Item ]
     *  *[ AVP ]
     *  *[ Proxy-Info ]
     *  *[ Route-Record ]
     * </pre>
     * @throws IOException
     */
    public void sendPpr(PublicIdentity publicIdentity) throws IOException
    {
        Scscf scscf = publicIdentity.getScscf();
       
        if (scscf == null)
        {
            __log.info("No S-CSCF assigned to " + publicIdentity + ", could not send PPR request");
            _publicIdsToUpdate.remove(publicIdentity.getIdentity());
            return;
        }
       
        if (!_publicIdsToUpdate.contains(publicIdentity.getIdentity()))
        {
            __log.info("The public identity " + publicIdentity + " has been already updated.");
            return;
        }
           
       
        DiameterServletRequest request = newRequest(Cx.PPR, scscf);
        String privateIdentity = getPrivateIdentity(publicIdentity);       
        request.add(Common.USER_NAME, privateIdentity);
        String serviceProfile = publicIdentity.getImsSubscriptionAsXml(privateIdentity, null, false);
        request.getAVPs().add(Sh.USER_DATA, serviceProfile.getBytes());
        request.send();
       
        if (publicIdentity instanceof PublicUserIdentity)
        {
            ImplicitRegistrationSet set = ((PublicUserIdentity) publicIdentity).getImplicitRegistrationSet();
            for (PublicIdentity publicId : set.getPublicIdentities())
                _publicIdsToUpdate.remove(publicId.getIdentity());
        }
        else
            _publicIdsToUpdate.remove(publicIdentity.getIdentity());
    }
</pre>

In the above code, I can see that the User-Data and User-Name AVPs are set with request.getAVPs().add(Sh.USER_DATA, serviceProfile.getBytes()) and  request.add(Common.USER_NAME, privateIdentity), but how are the other AVPs set, like  Charging-Information , SIP-Auth-Data-Item and Auth-Session-State  and so on?

Regards
Victor Neiman


On Tuesday, June 19, 2012 4:24:45 PM UTC+2, Victor Neiman wrote:
Reply all
Reply to author
Forward
0 new messages