Ethereal-dev: [Ethereal-dev] Dissection of Diameter Credit Control Application

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Thomas Steffen <steffen.list.account@xxxxxxxxx>
Date: Wed, 30 Nov 2005 14:10:33 +0100
Dear Ethereal developers and users

I am working with the Diameter Credit Control Application (RFC4006 and
several 3GPP standards). Due to the data driver structure of the
Diameter dissector, I was able to add this (sub-)protocol without any
coding (good job!).

I assume that this would be useful for other users, too, so I would
like to get it into subversion, but I have two questions:

1. I have not defined all AVPs given in the protocol, but only the
ones that I need. I am not sure whether I will have time to complete
it, and I don't have any opportunity to test the missing AVPs. Is that
a problem? Maybe someone could help out here.

2. The Service-Parameter-Info AVP is defined for vendor specific
applications. I such a vendor specific extension. Would it be
acceptable to include the enum values based on this extension? There
is basically no chance of a conflict, so it should not hurt any other
application.

I have attached my XML definition below. If you want to use it, you
have to copy it into /usr/share/ethereal/diameter/, and included it
from the main XML document diameter.xml using an entity.

If the definition is ok, I can send a patch for integration.

Thomas
<?xml version="1.0" encoding="UTF-8"?>

	<application id="4" name="Diameter Charge Control Application" uri="http://www.ietf.org/rfc/rfc4006.txt";>

		<command name="Credit-Control" code="272" vendor-id="None"/>

		<!-- ************************* DCCA AVPs ************************ -->
                <!-- This list is not complete yet -->
		<avp name="CC-Correlation-Id" code="411" mandatory="may" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<type type-name="OctetString"/>
		</avp>
		<avp name="CC-Request-Number" code="415" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<type type-name="Unsigned32"/>
		</avp>
		<avp name="CC-Request-Type" code="416" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<type type-name="Unsigned32"/>
			<enum name="INITIAL_REQUEST"     code="1"/>
			<enum name="UPDATE_REQUEST"      code="2"/>
			<enum name="TERMINATION_REQUEST" code="3"/>
			<enum name="EVENT_REQUEST"       code="4"/>
		</avp>
		<avp name="Cost-Information" code="423" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<grouped>
				<gavp name="Unit-Value"/>
				<gavp name="Currency-Code"/>
				<gavp name="Cost-Unit"/>
			</grouped>
		</avp>
		<avp name="Cost-Unit" code="424" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<type type-name="UTF8String"/>
		</avp>
		<avp name="Currency-Code" code="425" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<type type-name="Unsigned32"/>
		</avp>
		<avp name="Exponent" code="429" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<type type-name="Integer32"/>
		</avp>
		<avp name="Requested-Action" code="436" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<type type-name="Unsigned32"/>
			<enum name="DIRECT_DEBITING"  code="0"/>
			<enum name="REFUND_ACCOUNT"   code="1"/>
			<enum name="CHECK_BALANCE"    code="2"/>
			<enum name="PRICE_ENQUIRY"    code="3"/>
		</avp>
		<avp name="Service-Identifier" code="439" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<type type-name="Unsigned32"/>
		</avp>
		<avp name="Service-Parameter-Info" code="440" mandatory="may" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<grouped>
				<gavp name="Service-Parameter-Type"/>
				<gavp name="Service-Parameter-Value"/>
			</grouped>
		</avp>
		<avp name="Service-Parameter-Type" code="441" mandatory="may" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<type type-name="Unsigned32"/>
                        <!-- This field is vendor defined. -->
		</avp>
		<avp name="Service-Parameter-Value" code="442" mandatory="may" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<type type-name="OctetString"/>
		</avp>
		<avp name="Subscription-Id" code="443" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<grouped>
				<gavp name="Subscription-Id-Data"/>
				<gavp name="Subscription-Id-Type"/>
			</grouped>
		</avp>
		<avp name="Subscription-Id-Data" code="444" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<type type-name="UTF8String"/>
		</avp>
		<avp name="Subscription-Id-Type" code="450" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<type type-name="Unsigned32"/>
			<enum name="END_USER_E164"    code="0"/>
			<enum name="END_USER_IMSI"    code="1"/>
			<enum name="END_USER_SIP_URI" code="2"/>
			<enum name="END_USER_NAI"     code="3"/>
			<enum name="END_USER_PRIVATE" code="4"/>
		</avp>
		<avp name="Unit-Value" code="445" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<grouped>
				<gavp name="Value-Digits"/>
				<gavp name="Exponent"/>
			</grouped>
		</avp>
		<avp name="Value-Digits" code="447" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<type type-name="Integer64"/>
		</avp>
		<avp name="Service-Context-Id" code="461" mandatory="must" may-encrypt="yes" protected="may" vendor-bit="mustnot">
			<type type-name="UTF8String"/>
		</avp>
	</application>