RDMessage.asn 85.1 KB
Newer Older
}

MediaComponent ::= SEQUENCE
{
	time								[1] GeneralizedTime OPTIONAL,
	mediaName							[2] UTF8String OPTIONAL,
	mediaDescription					[3] UTF8String OPTIONAL,
	mediaInitiator						[4] PartyIdentity OPTIONAL,
	accessCorrelationID					[5] OCTET STRING OPTIONAL,
	nationalMultimediaMediaComponent	[6] NationalMultimediaMediaComponent OPTIONAL,
	...
}

AccessNetworkInfo ::= CHOICE
{
	paniHeaderInfo		[1] PaniHeaderInfo,
	...
}

PaniHeaderInfo	::= SEQUENCE
{
	accessType 		[1] OCTET STRING OPTIONAL,
    -- ASCII string '3GPP-E-UTRAN-TDD', ' IEEE-802.11'... : see ETSI TS 124 229 [xx] clause 7.2A.4 
    accessClass  		[2] OCTET STRING OPTIONAL,
    -- ASCII string '3GPP-UTRAN', '3GPP-E-UTRAN',... : see ETSI TS 124 229 [xx] clause 7.2A.4
    networkProvided	[3] NULL OPTIONAL,
    -- present if provided by the network
    paniLocation		[4] Location OPTIONAL,
	-- Cell-ID and location information if available
	paniTime			[5] GeneralizedTime OPTIONAL,
	-- indicates the time when the location was reported at the start of the session, 
	-- or during or at the end of the session if the location is retained for the event
    ...,
	paniHeaderContent    [6] OCTET STRING OPTIONAL
		-- Complete content of the P-Access-Network-Info header field
-- ==============================
-- Definitions of Billing Data
-- ==============================

MultimediaBillingDetails ::= SEQUENCE
{
	subscriberID						[1] MultimediaSubscriberID OPTIONAL,
	serviceID						[2] UTF8String OPTIONAL,
	billingAddress						[3] ContactDetails OPTIONAL,
	billingIdentifier					[4] MultimediaBillingIdentifier OPTIONAL,
	billingRecords						[5] SEQUENCE OF MultimediaBillingRecords OPTIONAL,
	nationalMultimediaBillingDetails			[6] NationalMultimediaBillingDetails OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	multimediaBillingAddress				[7] MultimediaBillingAddress OPTIONAL,
	copyOfBill						[8] SEQUENCE OF File OPTIONAL
MultimediaBillingAddress ::= SEQUENCE
{
	addressSuppliedTime			[1] GeneralizedTime OPTIONAL,
	name						[2] PersonName OPTIONAL,
	address						[3] AddressInformation  OPTIONAL,
	...
}

NationalMultimediaBillingDetails ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

MultimediaBillingIdentifier ::= OCTET STRING
	-- Used to correlate billing information
	-- useful if the bill-payer is not the subscriber, e.g. company mobiles

MultimediaBillingRecords ::= SEQUENCE
{
	time								[1] GeneralizedTime OPTIONAL,
	place								[2] UTF8String OPTIONAL,
	amount								[3] REAL OPTIONAL,
	currency							[4] UTF8String (SIZE(3)) OPTIONAL,
		-- as per ISO 4217 [5]
	method								[5] UTF8String OPTIONAL,
	nationalMultimediaBillingRecords	[6] NationalMultimediaBillingRecords OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	multimediaTransactionID				[7] UTF8String OPTIONAL,
		-- Unique reference for this transaction/billing record
		-- Details to be defined on a national basis
	multimediaTransactionStatus			[8] UTF8String OPTIONAL
		-- Status of the transaction (i.e. "declined", "succeeded", etc.)
		-- Details to be defined on a national bases
}

NationalMultimediaBillingRecords ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

-- ===================
-- General definitions
-- ===================

PartyIdentity ::= UTF8String
	-- E.164 address of the party in international format, or
	-- SIP URI or TEL URI representing E.164

QualityOfService ::= UTF8String
	-- Free text description of the invoked quality of service

NationalMultimediaSubscriberInfo ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

NationalMultimediaServices ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

NationalMultimediaServiceUsage ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

NationalMultimediaPartyInformation ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

NationalMultimediaMediaComponent ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}
-- =======================
-- Device Data definitions
-- =======================

MultimediaDevice ::= SEQUENCE
{
	deviceIDType					[1] ENUMERATED
		-- Type of identifier for telephony device
	{
		unknown(0),
		imei(1),
		macAddress(2),
		...
	} OPTIONAL,
	multimediaDeviceID				[2] MultimediaDeviceID OPTIONAL,
		-- Unique identifier for this device according to type of identifier
	subscriberID					[3] MultimediaSubscriberID OPTIONAL,
		-- Identifier for a known user of this equipment.
		-- Usage of this parameter is subject to national legislation.
	nationalMultimediaDevice		[4] NationalMultimediaDevice OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	...
}

NationalMultimediaDevice ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

MultimediaDeviceID ::= OCTET STRING
	-- A unique identifier for the multimedia device. For example, the IMEI number
	-- of a mobile handset

NetworkAccessRecord::= CHOICE
{
	naSubscriber		[1] NASubscriber,
	naServiceUsage		[2] NAServiceUsage,
	naDevice			[3] NADevice,
	naNetworkElement	[4] NANwElement,
	naBillingDetails	[5] NABillingDetails,
	...
}

-- =============================================
-- Definitions of Network Access Subscriber Data
-- =============================================

NAProviderID ::= UTF8String

NAAuthID ::= UTF8String

NaSubscriberID ::= UTF8String

NASubscriber ::= SEQUENCE
	-- Generic information on a service subscriber, supplemented with information specific to
	-- network access services.
{
	validity			[1] TimeSpan OPTIONAL,
	subscriberID		[2] NaSubscriberID OPTIONAL,
		-- Unique identifier for this subscriber, e.g. account number
	naSubscriptions		[3] SEQUENCE OF NAServiceSubscription OPTIONAL,
		-- List of all known services subscribed to by this user
	allocatedDeviceIDs	[4] SEQUENCE OF NADeviceId OPTIONAL,
		-- List of all known devices allocated to this user.
	subscriber			[5] GenericSubscriberInfo OPTIONAL,
		-- Name, address and other generic subscriber information
	...,
	allocatedDevices	[6] SEQUENCE OF NADevice OPTIONAL
		-- If present, contains device details for all elements from allocatedDeviceIDs
}

NAServiceSubscription ::= SEQUENCE
	-- Description of the subscription to a Network Access service
{
	validity				[1] TimeSpan OPTIONAL,
	naServiceID				[2] UTF8String OPTIONAL,
		-- Identifier for the service, e.g. account plan name.
	naProviderID				[3] NAProviderID OPTIONAL,
		-- Unique identifier for the provider of the service, e.g. company name
	naAuthID				[4] NAAuthID OPTIONAL,
		-- Unique identifier for this subscription, e.g. logon name
	options					[5] UTF8String OPTIONAL,
		-- Human readable text with restrictions or options to the subscription
	installationAddress			[6] AddressInformation OPTIONAL,
	fixIpAddress				[7] IPAddress OPTIONAL,
	allocatedDeviceIDs			[9] SEQUENCE OF NADeviceId OPTIONAL,
	naServiceStatus				[10] UTF8String OPTIONAL,
		-- CSP-specific description of current service status, e.g. "Active", "Ceased", etc.
	registeredICCID				[11] UTF8String OPTIONAL,
	nationalNASubscription			[12] NationalNASubscription OPTIONAL,
	paymentDetails				[13] PaymentDetails OPTIONAL,
	additionalIPAddresses			[14] SEQUENCE OF IPAddressSetOrRangeOrMask OPTIONAL,
	subscriptionType			[15] SubscriptionType OPTIONAL,
		-- Describes the nature of the subscription
	deliveryAddress				[16] AddressInformation OPTIONAL,
	resellerAddress				[17] AddressInformation OPTIONAL,
	otherAddresses				[18] SEQUENCE OF OtherAddress OPTIONAL,
	allocatedDevices			[19] SEQUENCE OF NADevice OPTIONAL,
		-- If present, contains device details for all elements from allocatedDeviceIDs
	mSISDNs					[20] SEQUENCE OF PartyNumber OPTIONAL,
	registeredICCIDs			[21] SEQUENCE OF ICCIDInfo OPTIONAL,
	paymentTransactions			[22] SEQUENCE OF BillingRecords OPTIONAL,
	sUPI					[23] SUPI OPTIONAL,
	gPSI					[24] GPSI OPTIONAL
NationalNASubscription ::= SEQUENCE
	-- Description of the subscription to a Network Access service
{
	countryCode				[1] UTF8String (SIZE(2)),
		-- see comment in NationalRequestParameters
	...
}

-- ===========================================
-- Definitions of Network Access Service Usage
-- ===========================================

NAServiceUsage ::= SEQUENCE
{
	naAccessTime					[1] GeneralizedTime OPTIONAL,
		-- Time of connection to the NAS
	naAuthID					[2] NAAuthID OPTIONAL,
		-- Username used to obtain network access
	nwAccessType					[3] NwAccessType OPTIONAL,
		-- Type of network access attempted. If not undefined(0), this should be one of the types
		-- supported by the NAS (identified below by naNwElementID)
	{
		unknown(0),
		succeeded(1),
			-- Authentication OK and access granted
		failed(2),
			-- Authentication failure (wrong credentials or time out)
		rejected(3),
			-- Rejected by the CSP (e.g. usage limits exceeded)
		...
	} OPTIONAL,
	interval					[5] TimeSpan OPTIONAL,
		-- Start time and end time (duration) of network access.
	naDeviceId					[6] NADeviceId OPTIONAL,
		-- Device used to access the service
	naNwElementID					[7] NANwElementID OPTIONAL,
		-- Network element (NAS) onto which the naDevice is connected
	naAssignedAddress				[8] SEQUENCE OF NAAssignedAddress OPTIONAL,
		-- IP address assigned by the network access service. May be fixed or dynamic
	location					[9] Location OPTIONAL,
		-- Location of the access (for e.g. GPRS handsets)
	dialUpInformation				[10] DialUpInformation OPTIONAL,
	gprsInformation					[11] GprsInformation OPTIONAL,
	octetsDownloaded				[12] INTEGER OPTIONAL,
	octetsUploaded					[13] INTEGER OPTIONAL,
	endReason					[14] NAEndReason OPTIONAL,
	subscriberID					[15] NaSubscriberID OPTIONAL,
		-- Identifier for a known user of this network access
	ePSInformation					[16] EPSInformation OPTIONAL,
	wifiInformation					[17] WifiInformation OPTIONAL,
	addressTranslationRecords			[18] SEQUENCE OF AddressTranslationRecord OPTIONAL,
		-- contains extended information about the NAT or PAT operations carried out within this
		-- service usage session
	naDevice					[19] NADevice OPTIONAL,
		-- If present, contains the device details for the device referenced in naDeviceID
	additionalLocations				[20] SEQUENCE OF TimedLocation OPTIONAL,
		-- List of additional locations and optional access time during the network access service
		-- usage
	sNSSAI						[21] OCTET STRING (SIZE(4)) OPTIONAL,
	notifyUri					[22] OCTET STRING (SIZE(3..8)) OPTIONAL,
	fiveGSInformation				[23] FIVEGSInformation OPTIONAL
TimedLocation	::= SEQUENCE
{
	location			[1]	Location,
	naAccessTime		[2] GeneralizedTime OPTIONAL,
	...
}
	bSSID								[1] OCTET STRING (SIZE (6)) OPTIONAL,
		-- The Basic Service Set Identification for the connection.
		-- This is also the MAC address of the access point (the present document assumes
		-- that records are for infrastructure mode, not ad-hoc mode).
		-- The MAC address of the user is given in the naDeviceID in the structure (one level up)
	sSID								[2] UTF8String OPTIONAL,
		-- The human-readable Service Set Identifier
		-- It should be noted that this is typically only available on the air interface and so
		-- is not likely to be logged by CSPs (though may be recorded at a more local level).
		-- Therefore requesting organizations should not expect this to be populated typically.
		-- It is not guaranteed to be unique.
	username							[3] UTF8String OPTIONAL,
	locationOfAccessPoint				[4] Location OPTIONAL,
	-- Location of the Access Point as lat/long, grid reference or postal address.
	-- Requesting organizations should be aware that Access Points can be moved, sometimes
	-- without the knowledge of the CSP
	authenticationType					[5] AuthenticationType OPTIONAL,
	additionalAuthenticationInformation	[6] AdditionalAuthenticationInformation OPTIONAL,
	accessPointIPAddress				[7] IPAddress  OPTIONAL,
	accessPointAdditionalDescriptions	[8] SEQUENCE OF UTF8String OPTIONAL,
			-- Informal description of location, category or type of access point,
			-- or a name of the network to which the access point belongs.
	accessPointAdditionalProviders		[9] SEQUENCE OF UTF8String OPTIONAL
			-- For WiFi, there may be other parties involved in hosting or owning the
			-- Access Points, e.g. access point provider or partner providers
}

AuthenticationType ::= ENUMERATED
{
	authenticationBySMS(1),
		-- Used if authentication arranged through a code sent to mobile
		-- additionalAuthenticationInformation shall contain the phone number
	authenticationByCookie(2),
		-- If authentication was granted on the basis of a cookie left from a previous visit to a
		-- site.
		-- No other mandatory addtionalAuthenticationInformation
		-- If authentication was granted because the MAC address of the UE was recognised due
		-- to a previous visit.
		-- additionalAuthenticationInformation shall contain the MAC Address unless it is already
		-- populated as NADeviceID in this record.
	authenticationByEAPSIM(4),
		-- If authenticated by EAP SIM see TS 33.234 [36]
		-- additionalAuthenticationInformation shall contain the IMSI
		-- Other varieties of EAP could be added here later, together with any extra information
		-- they could provide.
	authenticationByUsernameAndPassword(5),
		-- additionalAuthenticationInformation should contain username and password if appropriate
	authenticationByPaymentOrVoucher(6),
		-- additionalAuthenticationInformation should contain Voucher or Payment details
		-- if appropriate.
	...
}

AdditionalAuthenticationInformation ::= SEQUENCE
{
	phoneNumber			[1] PartyNumber OPTIONAL,
		-- e.g. number to which an SMS was sent
	mACAddress			[2] OCTET STRING (SIZE (6)) OPTIONAL,
	iMSI				[3] IMSI OPTIONAL,
	username			[4] UTF8String OPTIONAL,
			-- Names supplied are unlikely to be verified
	password			[5] UTF8String OPTIONAL,
			-- Only to be populated if it is both appropriate and available
	paymentReference	[6] UTF8String OPTIONAL,
		-- For example, the number of a voucher that was used in authentication
	...
}

AddressTranslationRecord ::= SEQUENCE
{
	validity							[1] TimeSpan OPTIONAL,
		-- time at which the address translation started and/or ended
	privateIPAddress					[2] IPAddress OPTIONAL,
	privatePort							[3] INTEGER OPTIONAL,
		-- the private port of the host
	publicIPAddress						[4] IPAddress OPTIONAL,
		-- the translated IP of the host, i.e. the address known by the remote host
	publicPort							[5] AddressTranslationPortAssignment OPTIONAL,
		-- the translated port(s) of the host, i.e. the port(s) known by the remote host, if
		-- applicable
	destinationIPAddress				[6] IPAddress OPTIONAL,
		-- the IP address of the remote host
	destinationPort						[7] INTEGER OPTIONAL,
		-- the port of the remote host
	connectionType						[8] ENUMERATED
	{
		...
	} OPTIONAL,
	...
}

AddressTranslationPortAssignment ::= CHOICE
{
	singlePort						[1] INTEGER,
		-- only one port is assigned to the host, that port number is specified here
	portRange						[2] SEQUENCE OF PortRange,
		-- if a range of translated ports is assigned to the host, specify it here
	...
}

PortRange ::= SEQUENCE
{
	-- The range given is inclusive of both ends
	lowerBound		[1] INTEGER OPTIONAL,
	upperBound		[2] INTEGER OPTIONAL,
	...
}

NAEndReason ::= ENUMERATED
{
	unknownReason(0),
	timeout(1),
	userDisconnect(2),
		-- e.g. user logs off
	networkDisconnect(3),
		-- e.g. user's time/credits have been used up
}

NwAccessType ::= ENUMERATED
{
	undefined(0),
	dialUp(1),
		-- DialUp access
	xDSL(2),
		-- DSL access
	cableModem(3),
		-- Cable access
	lAN(4),
		-- LAN access
		-- Wireless LAN access (e.g. hotspot)
	wimax(6),
	mobilePacketData(7),
		-- Network access over GSM/3GPP GPRS, UMTS, etc.
	diallingNumber		[1] PartyNumber OPTIONAL,
		-- Telephone number used for dial-up access
	dialledNumber		[2] PartyNumber OPTIONAL,
	callback			[3] PartyNumber OPTIONAL,
		-- Call back number used for dial-up access
	...
}

GprsInformation ::= SEQUENCE
{
	iMSI					[1] IMSI OPTIONAL,
	mSISDN					[2] PartyNumber OPTIONAL,
	sgsnAddress				[3] SEQUENCE OF IPAddress OPTIONAL,
	ggsnAddress				[4] IPAddress OPTIONAL,
	pDP-address-allocated	[5] IPAddress OPTIONAL,
	aPN						[6] UTF8String OPTIONAL,
	pDP-type				[7] OCTET STRING (SIZE(2)) OPTIONAL,
		-- format as per TS 101 671 [6]
	gPRSEvent				[8] GPRSEvent OPTIONAL
		-- format as per 3GPP TS 33.108 [11]
	-- Tag [9] was used in the past and shall not be reused.
{
	pDPContextActivation(1),
	pDPContextDeactivation(4),
	gPRSAttach(5),
	gPRSDetach(6),
	locationInfoUpdate(10),
		-- sMS ommited from 3GPP TS 33.108 [11]
	pDPContextModification(11),
	servingSystem(12),
	iMSIUnauthenticatedFlag	[2] IMSIUnauthenticatedFlag OPTIONAL,
	mSISDN						[3] PartyNumber OPTIONAL,
	iMEISV						[4] IMEI OPTIONAL,
	s-GWAddress					[5] IPAddress OPTIONAL,
	p-GWAddress					[6] IPAddress OPTIONAL,
	p-GWPLMNIdentifier				[7] P-GWPLMN-ID OPTIONAL,
	aPNNetworkID					[8] AccessPointNameNI OPTIONAL,
	pDP-PDNType					[9] OCTET STRING (SIZE (1))OPTIONAL,
		-- PDN/PDP Type number as defined in ETSI TS 129 274 [32] clause 8.34
	pDP-PDNAddress					[10] IPAddress OPTIONAL,
		-- IP address allocated to the PDP context / PDN connection
		-- i.e. IPv4 address when PDP/PDN Type is IPv4 or IPv6 prefix
		-- when PDP/PDN Type is IPv6 or IPv4v6.
	pDP-PDNAddressExtension				[11] IPAddress OPTIONAL,
		-- IPv4 address of the served IMSI when PDP/PDN type is IPv4v6
	dynamicAddressFlag				[12] DynamicAddressFlag OPTIONAL,
	dynamicAddressFlagExt				[13] DynamicAddressFlagExt OPTIONAL,
	rATType						[14] INTEGER (0..255) OPTIONAL,
		-- RAT Type coding according to ETSI TS 129 274 [32] clause 8.17
		-- NOTE - as of v1.23.1 of the present document, this field has changed to optional
	ePSEvent					[15] EPSEvent OPTIONAL,
IMSIUnauthenticatedFlag ::= BOOLEAN
	-- TRUE if unauthenticated IMSI vs. FALSE for authenticated IMSI

P-GWPLMN-ID ::= OCTET STRING (SIZE (3))
	-- This is a copy from the Tracking Area Identity (TAI) IE
	-- specified in TS 29.274 [32] clause 8.21.4:
	--	Bits   8  7  6  5  4  3  2  1
	--		1st OCTET MCC digit 2	MCC digit 1
	--		2nd OCTET MNC digit 3	MCC digit 3
	--		3rd OCTET MNC digit 2	MNC digit 1

AccessPointNameNI ::= IA5String (SIZE(1..63))
	-- Network Identifier part of APN in dot representation.
	-- For example, if the complete APN is "apn1a.apn1b.apn1c.mnc022.mcc111.gprs"
	-- NI is "apn1a.apn1b.apn1c"
	-- TRUE if the PDP/PDN address is dynamic.
	-- FALSE if IPv4 address is static when PDN type is IPv6 or IPv4v6
	-- TRUE if IPv4 PDP/PDN address is dynamic, which is allocated during IP CAN bearer activation,
	-- initial attach and UE requested PDN connectivity with PDP/PDN type IPv4v6.
	-- FALSE if IPv4 address is static.
EPSEvent ::= ENUMERATED
	-- The list of "EPSEvent" below is partly taken from 3GPP TS 33.108 [11] EpsHI2Operations
	-- from the "EPSEvent ::=ENUMERATED" module
	e-UTRANAttach(16),
	e-UTRANDetach(17),
	bearerActivation(18),
	bearerModification(20),
	bearerDeactivation(21),
	trackingAreaUpdate(25),
	servingEvolvedPacketSystem(26),
FIVEGSInformation ::= SEQUENCE
{
	sUPI									[1] SUPI OPTIONAL,
	dNN										[2] UTF8String OPTIONAL,
	gPSI									[3] GPSI OPTIONAL,
	pEI										[4] PEI OPTIONAL,
	pDUSessionID							[6] INTEGER (0..255) OPTIONAL,
	sNSSAI									[7] OCTET STRING (SIZE(4)) OPTIONAL,
	pDUIpv4Address							[8] IPAddress OPTIONAL,
	pDUIpv6Address							[9] IPAddress OPTIONAL,
	pDUAddressPrefixLength					[10] INTEGER (0..128) OPTIONAL,
	rFSPIndex								[11] INTEGER (1..255) OPTIONAL,
	applicationId							[12] UTF8String OPTIONAL,
	applicationServiceProviderIdentity		[13] UTF8String OPTIONAL,
	serviceId								[14] INTEGER OPTIONAL,
	chargingId								[15] UTF8String OPTIONAL,
	pDUType									[16] PDUSessionType OPTIONAL,
	sSCMode									[17] SSCMode OPTIONAL,
	vPLMNId									[18] PLMNID OPTIONAL,
	hPLMNId									[19] PLMNID OPTIONAL,
	chargingCharacteristics					[20] UTF8String OPTIONAL,
	chargingCharacteristicsSelectionMode	[21] UTF8String OPTIONAL,
	pDUSessionStartTime						[22] GeneralizedTime OPTIONAL,
	pDUSessionStopTime						[23] GeneralizedTime OPTIONAL,
	lowPriorityIndicator					[24] BOOLEAN OPTIONAL,
	dataOffStatus							[25] BOOLEAN OPTIONAL,
	diagnostics								[26] INTEGER OPTIONAL,
	uETimeZone								[27] UTF8String OPTIONAL,
	uPFAddress								[28] IPAddress OPTIONAL,
	aMFAddress								[29] IPAddress OPTIONAL,
	uDMAddress								[30] IPAddress OPTIONAL,
	sMFAddress								[31] IPAddress OPTIONAL,
	uPFId									[32] UUID OPTIONAL, 
	aMFIdentifier							[33] AMFID OPTIONAL,
	uDMIdentifier							[34] UUID OPTIONAL,
	sMFIdentifier							[35] UUID OPTIONAL,
	uPFPDNAddress							[36] IPAddress OPTIONAL,
	uPFPDNAddressExtension					[37] IPAddress OPTIONAL,
	dynamicAddressFlag						[38] BOOLEAN OPTIONAL,
	dynamicAddressFlagExt					[39] BOOLEAN OPTIONAL,
	rAT5Type								[40] RAT5Type OPTIONAL,
	flowQosInfo								[41] OCTET STRING OPTIONAL,
	serviceID								[42] INTEGER OPTIONAL

}

PDUSessionType ::= ENUMERATED
{
    iPv4(1),
    iPv6(2),
    iPv4v6(3),
    unstructured(4),
    ethernet(5)
}

-- ====================================
-- Definitions of Network Access Device
-- ====================================

NADeviceId ::= UTF8String

NADevice ::= SEQUENCE
{
	naDeviceId		[1] NADeviceId OPTIONAL,
	description		[2] UTF8String OPTIONAL,
		-- Human readable description of device
	location		[3] Location OPTIONAL,
	macAddress		[4] OCTET STRING (SIZE (6)) OPTIONAL,
		-- MAC or ethernet address
	dslID			[5] UTF8String OPTIONAL,
	imei			[6] IMEI OPTIONAL,
	...,
	subscriberID	[7] NaSubscriberID OPTIONAL
SUPI ::= CHOICE
{
    iMSI        [1] IMSI,
    nAI         [2] NAI,
	...
}

GPSI ::= CHOICE
{
    mSISDN      [1] PartyNumber,
    nAI         [2] NAI,
	...
}

PEI ::= CHOICE
{
    iMEI        [1] IMEI,
    iMEISV      [2] IMEISV
}

IMEI ::= OCTET STRING (SIZE(8))
	-- format as per 3GPP TS 09.02 [8]
	-- NOTE: When comparing IMEIs, an IMEI can be considered "equal to" the requested IMEI even
	-- if the checksum or software version digits are different or not present.
IMSI ::= OCTET STRING (SIZE(3..8))
	-- format as per 3GPP TS 09.02 [8]
-- ======================================
-- Definitions of Message Network element
-- ======================================

NANwElementID ::= UTF8String

NANwElement ::= SEQUENCE
	-- In this context, the network element is more commonly referred to as NAS
{
	validity				[1] TimeSpan OPTIONAL,
		-- Period for which this interval is valid
	naNwElementID			[2] NANwElementID OPTIONAL,
		-- Unique ID of this NAS (Network Access Server)
	naProviderID			[3] NAProviderID OPTIONAL,
		-- Unique identifier of the provider managing this NAS.
	supportedAccessTypes	[4] SEQUENCE OF NwAccessType OPTIONAL,
	location				[5] Location OPTIONAL,
	...
}

IPAddress ::= CHOICE
{
	iPv4BinaryAddress	[1] OCTET STRING (SIZE(4)),
	iPv6BinaryAddress	[2] OCTET STRING (SIZE(16)),
	iPTextAddress		[3] IA5String (SIZE(7..45)),
	addressSetOrRangeOrMask		[1] IPAddressSetOrRangeOrMask OPTIONAL,
	portNumber					[2] INTEGER OPTIONAL,
		-- populated with the outbound port number
		internal(1),
		external(2),
		...
	} OPTIONAL,
	assignedTime				[4] TimeSpan OPTIONAL,
	...,
	destinationAddress			[5] IPAddress OPTIONAL,
		-- used in cases where a single external IP/port pair is translated to multiple internal
		-- IP/port pairs, with the destination IP/port used to multiplex them
	destinationPort				[6] INTEGER OPTIONAL
		-- used in cases where a single external IP/port pair is translated to multiple internal
		-- IP/port pairs, with the destination IP/port used to multiplex them
	set		[0] SEQUENCE OF IPAddress,
	range	[1] IPRange,
	mask	[2] IPMask
	-- Things like 172.16.10.0/26
{
	prefix			[0] IPAddress,
	subnetlength	[1] INTEGER (1..128)
}

IPMask ::= SEQUENCE
	-- Things like 172.16.10.0/255.255.255.240
{
	base	[0] IPAddress,
	mask	[1] IPAddress
{
	subscriberID		[1] NaSubscriberID OPTIONAL,
	serviceID		[2] UTF8String OPTIONAL,
	billingAddress		[3] ContactDetails OPTIONAL,
	billingIdentifier	[4] BillingIdentifier OPTIONAL,
	billingRecords		[5] SEQUENCE OF BillingRecords OPTIONAL,
	...,
	naTransactionID		[6] UTF8String OPTIONAL,
		-- Unique reference for this transaction/billing record
		-- Details to be defined on a national basis
	naTransactionStatus	[7] UTF8String OPTIONAL
		-- Status of the transaction (i.e. "declined", "succeeded", etc.)
		-- Details to be defined on a national basis
SSCMode ::= ENUMERATED
{
    sSCMode1(1),
    sSCMode2(2),
    sSCMode3MultiPDUSession(3),
    sSCMode3Multihome(4),
	...
}

PLMNID ::= OCTET STRING (SIZE(3))

UUID ::= OCTET STRING (SIZE(16))

RAT5Type ::= ENUMERATED
{
    nr(1),
    eutra(2),
    wlan(3),
    virtual(4),
	...
}

AMFID ::= SEQUENCE
{
    aMFRegionID [1] AMFRegionID,
    aMFSetID    [2] AMFSetID,
    aMFPointer  [3] AMFPointer
}

AMFRegionID ::= INTEGER (0..255)

AMFSetID ::= INTEGER (0..63)

AMFPointer ::= INTEGER (0..1023)