RDMessage, ver5.txt 52.7 KB
Newer Older
		-- format:	PLMN-ID	3 octets (no. 1-3)
		-- 			LAC		2 octets (no. 4-5)
		-- 			SAC		2 octets (no. 6-7)
		-- 			(according to 3GPP TS 25.431 [10])
	oldRAI				[7] OCTET STRING (SIZE (6)) OPTIONAL,
		-- the "Routeing Area Identifier" in the old SGSN is coded in accordance with
		-- 3GPP TS 24.008 [9] without the Routing Area Identification IEI
		-- (only the last 6 octets are used)
		-- This parameter is duplicated from 3GPP TS 33.108 [11]
	...,
	postalLocation		[8] AddressInformation OPTIONAL
}

GSMLocation ::= CHOICE
{
	geoCoordinates 		[1] SEQUENCE
	{
		latitude	[1] UTF8String (SIZE(7..10)) OPTIONAL,
			-- format: XDDMMSS.SS
		longitude	[2] UTF8String (SIZE(8..11)) OPTIONAL,
			-- format: XDDDMMSS.SS
		mapDatum	[3] MapDatum OPTIONAL,
		azimuth		[4] INTEGER (0..359) OPTIONAL,
			-- The azimuth is the bearing, relative to true north
		...
	},
		-- format: XDDMMSS.SS (on latitudes) or XDDDMMSS.SS (on longitudes)
		-- 		X			: N(orth), S(outh), E(ast), W(est)
		-- 		DD or DDD 	: degrees (numeric characters)
		-- 		MM			: minutes (numeric characters)
		-- 		SS.SS 		: seconds, the second part (.SS) is optional
		-- Example:
		-- 		latitude (short form)		N502312
		-- 		longitude (long form)		E1122312.18
	utmCoordinates		[2] SEQUENCE
	{
		utm-Zone	[1] UTF8String (SIZE(3)) OPTIONAL,
		utm-East 	[2] UTF8String (SIZE(6)) OPTIONAL,
		utm-North 	[3] UTF8String (SIZE(7)) OPTIONAL,
			-- Universal Transverse Mercator
			-- example	utm-Zone	32U
			-- 			utm-North	5540736
		mapDatum	[4] MapDatum OPTIONAL,
		azimuth		[5] INTEGER (0..359) OPTIONAL,
			-- The azimuth is the bearing, relative to true north
		...
	},
	utmRefCoordinates	[3] SEQUENCE
	{
		utm-GridZone				[1] UTF8String (SIZE(2)) OPTIONAL,
			-- numerals from 1 to 60
		utm-GridBand				[2] UTF8String (SIZE(1)) OPTIONAL,
			-- character between C and X
		squareID					[3] UTF8String (SIZE(2)) OPTIONAL,
			-- characters from A to Z
		numericalLocationEasting	[4] UTF8String (SIZE(5)) OPTIONAL,
		numericalLocationNorthing	[5] UTF8String (SIZE(5)) OPTIONAL,
			-- Universal Transverse Mercator Reference = Military Grid Reference System (MGRS)
			-- example	utm-GridZone				32
			--			utm-GridBand				U
			--			squareID					PU
			--			numericalLocationEasting	9129
			--			mumericalLocationNorthing	4045
			-- In both panels, utm-GridBand and squareID the 'I' and 'O' characters are not used 
			-- because of their similarity to the digits one and zero.
		mapDatum				[6] MapDatum OPTIONAL,
		azimuth					[7] INTEGER (0..359) OPTIONAL,
			-- The azimuth is the bearing, relative to true north
		...
	},
	wGS84Coordinates 	[4] OCTET STRING,
		-- format is as defined in 3GPP TS 03.32 [12]
	...,
	geoCoordinatesDec 	[5] SEQUENCE
	{
		latitudeDec		[1] UTF8String (SIZE(3..12)) OPTIONAL,
			-- format: XDD.nnnnnnnn
		longitudeDec	[2] UTF8String (SIZE(4..13)) OPTIONAL,
			-- format: XDDD.nnnnnnnn
		mapDatum		[3] MapDatum OPTIONAL,
		azimuth			[4] INTEGER (0..359) OPTIONAL,
			-- The azimuth is the bearing, relative to true north
		...
	}
		-- format: XDD.nnnnnnnn (on latitudes) or XDDD.nnnnnnnn (on longitudes)
		-- 		X			: N(orth), S(outh), E(ast), W(est)
		-- 		DD or DDD 	: degrees (numeric characters)
		-- 		nnnnnnnn	: post decimal positions (numeric characters)
		-- Example:
		-- 		latitude		N50.38666667
		-- 		longitude		E112.38671670
}

MapDatum ::= ENUMERATED
{
	wGS84(1),
		-- World Geodetic System 1984
	wGS72(2),
	eD50(3),
		-- European Datum 50
	rD(4),
		-- Rijks Driehoek (Netherlands)
	potsdamDatum(5),
	datumAustria(6),
	eTRS89(7),
		-- European Terrestrial Reference System 1989
	nAD27(8),
		-- North American Datum 1927
	oSGB36(9),
		-- Ordnance Survey of Great Britain
	oSNI52(10),
		-- Ordnance Survey of Northern Ireland
	tM65(11),
	iTM(12),
		-- Irish Transverse Mercator
	...
}

UMTSLocation ::= CHOICE
{
	point					[1] GA-Point,
	pointWithUnCertainty	[2] GA-PointWithUnCertainty,
	polygon					[3] GA-Polygon,
	...
}

GeographicalCoordinates ::= SEQUENCE
{
	latitudeSign	[1] ENUMERATED
	{
	} OPTIONAL,
	latitude		[2] INTEGER (0..8388607) OPTIONAL,
	longitude		[3] INTEGER (-8388608..8388607) OPTIONAL,
	...
}

GA-Point ::= SEQUENCE
{
	geographicalCoordinates		[1] GeographicalCoordinates,
	...
}

GA-PointWithUnCertainty ::=SEQUENCE
{
	geographicalCoordinates		[1] GeographicalCoordinates,
	uncertaintyCode				[2] INTEGER (0..127)
}

maxNrOfPoints					INTEGER ::= 15

GA-Polygon ::= SEQUENCE (SIZE (1..maxNrOfPoints)) OF GA-Polygon-Elements

GA-Polygon-Elements ::= SEQUENCE
{
	geographicalCoordinates		[1] GeographicalCoordinates,
	...
}

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

PartyNumber ::= UTF8String
	-- E164 address of the node in international format

MessageRecord ::= CHOICE
{
	msgSubscriber			[1] MsgSubscriber,
	msgServiceUsage			[2] MsgServiceUsage,
	...
}

-- ======================================
-- Definitions of Message Subscriber Data
-- ======================================

MsgSubscriber ::= SEQUENCE
	-- Generic information on a service subscriber, supplemented with information specific to
	-- asynchronous message services
{
	validity		[1] TimeSpan OPTIONAL,
	subscriberID	[2] MsgSubscriberID OPTIONAL,
	msgStores		[3] SEQUENCE OF MsgStore OPTIONAL,
		-- message stores allocated to this subscriber
	subscriber		[4] GenericSubscriberInfo OPTIONAL,
	...
}

MsgSubscriberID ::= OCTET STRING
	-- Unique identifier for this subscriber, e.g. account number

MsgStore ::= SEQUENCE
	-- Location into which messages are temporarily stored. All asynchronous message services by
	-- definition require some message store. E.g. in the case of e-mail this will be a mailbox
{
	validity		[1] TimeSpan OPTIONAL,
	msgStoreID		[2] MsgStoreID OPTIONAL,
	aliases			[3] SEQUENCE OF MsgAddress OPTIONAL,
		-- The complete list of all addresses that get delivered into this message store.
	providerID		[4] MsgProviderID OPTIONAL,
    -- Unique identifier of the message store. Since not all IDs will necessarily be human
    -- readable, a generic byte string is used

    -- Messaging address, an address to which messages can be sent. In the case of Internet e-mail
    -- this will be an RFC822-style address
    -- NOTE – as of v1.2.1, this field has changed from OCTET STRING to UTF8String
	-- Unique identifier for a service provider, e.g. company name
     -- NOTE – as of v1.2.1, this field has changed from OCTET STRING to UTF8String

-- ====================================
-- Definitions of Message Service Usage
-- ====================================

MsgServiceUsage ::= CHOICE
	-- Choice of different types of activities
	-- Manipulation of stored address books is outside the scope
{
	msgTransmission		[1] MsgTransmission,
	msgStoreOperation	[2] MsgStoreOperation,
	...
}

MsgTransmission ::= SEQUENCE
	-- Sending of an outgoing message, or reception of an incoming message
{
	dateTime				[1] GeneralizedTime OPTIONAL,
	subscriberID			[2] MsgSubscriberID OPTIONAL,
	senderAddress			[3] MsgAddress OPTIONAL,
	recipients				[4] SEQUENCE OF MsgAddress OPTIONAL,
	msgStores				[5] SEQUENCE OF MsgStoreID OPTIONAL,
		-- List of all local msgStores that received a copy of the message
		-- For transit messages this field is not used
	deliveryStatus			[6] ENUMERATED
	{
		unknown(0),
		succeeded(1),
			-- Delivery might still fail at a subsequent mail server
		failed(2),
			-- E.g. when mailbox quota exceeded (mailbox full)
		retried(3),
			-- Deferred and retried at a later time
		...
	} OPTIONAL,
	clientID				[8] IPAddress OPTIONAL,
	serverID				[9] IPAddress OPTIONAL,
	...,
	messageID				[10] MessageID OPTIONAL,
	sourceServerName		[11] UTF8String OPTIONAL,
	destinationServerName	[12] UTF8String OPTIONAL
}

MsgStoreOperation ::= SEQUENCE
	-- Manipulation of a message store.
{
	dateTime		[1] GeneralizedTime OPTIONAL,
	subscriberID	[2] MsgSubscriberID OPTIONAL,
	msgStore		[3] MsgStoreID OPTIONAL,
	operation		[4] ENUMERATED
	{
		connect(0),
			-- Successful authorization for access to msgStore
		disconnect(1),
		retrieveMsg(2),
			-- Viewing msg using a webmail client is also considered retrieval
		partialretrieveMsg(3),
			-- E.g. the TOP command in POP3
		deleteMsg(4),
		addMsg(5),
			-- E.g. the APPEND command in IMAP
	} OPTIONAL,
	senderAddress	[5] MsgAddress OPTIONAL,
		-- For Internet email, use the From address in the mail headers
	recipients		[6] SEQUENCE OF MsgAddress OPTIONAL,
		-- For Internet email, use the To, CC, and BCC addresses in the mail headers
	protocol		[7] ENUMERATED
	{
		pop(0),
		imap(1),
	} OPTIONAL,
	clientID		[8] IPAddress OPTIONAL,
	serverID		[9] IPAddress OPTIONAL,
	...,
	messageID		[10] MessageID OPTIONAL
MessageID ::= UTF8String
	-- Unique identifier for this message, e.g RFC 822 header

1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609
MultimediaRecord ::= CHOICE
{
	multimediaSubscriber		[1] MultimediaSubscriber,
	multimediaBillingDetails	[2] MultimediaBillingDetails,
	multimediaServiceUsage		[3] MultimediaServiceUsage,
	...
}

-- ==============================
-- Definitions of Subscriber Data
-- ==============================

MultimediaSubscriber ::= SEQUENCE
{
	subscriberID					[1] MultimediaSubscriberID OPTIONAL,
		-- unique identifier for this subscriber, e.g. account number
	genericSubscriberInfo			[2] GenericSubscriberInfo OPTIONAL,
		-- generic personal information about this subscriber
	multimediaSubscriberInfo		[3] MultimediaSubscriberInfo OPTIONAL,
		-- service-specific information about this subscriber
	subscribedMultimediaServices	[4] SEQUENCE OF SubscribedMultimediaServices OPTIONAL,
		-- a subscriber (or account) may have more than one service listed against them
	...
}

MultimediaSubscriberInfo ::= SEQUENCE
{
	nationalMultimediaSubscriberInfo	[1] NationalMultimediaSubscriberInfo OPTIONAL,
	...
}

MultimediaSubscriberID ::= UTF8String
	-- unique identifier for this subscriber, e.g. account number

SubscribedMultimediaServices ::= SEQUENCE
{
	serviceID					[1] UTF8String OPTIONAL,
		-- Unique identifier for this service within the operator
	providerID					[2] UTF8String OPTIONAL,
		-- Unique identifier for the service provider
	timeSpan					[3] TimeSpan OPTIONAL,
		-- Start and end data, if applicable, of the subscription
	registeredIdentifiers		[4] SEQUENCE OF PartyIdentity OPTIONAL,
		-- The set of identifiers registered for this service
	registeredICCID				[5] UTF8String OPTIONAL,
	serviceType					[6] MultimediaServiceType OPTIONAL,
	installationAddress			[7] AddressInformation OPTIONAL,
		-- installation address, if different from the registered address
	connectionDate				[8] GeneralizedTime OPTIONAL,
		-- Date the subscriber was actually connected 
		-- (May differ from the start of subscription)
	iMSI						[9] IMSI OPTIONAL,
	carrierPreselect			[10] BOOLEAN OPTIONAL,
	lineStatus					[11] UTF8String OPTIONAL,
		-- CSP-specific description of current line status,
		-- e.g. "Active", "Ceased", etc.
	nationalMultimediaServices	[12] NationalMultimediaServices OPTIONAL,
		-- national extension
	...
}

MultimediaServiceType ::= ENUMERATED
{
	private(0),
	privatePABX(1),
	publicPayphone(2),
	geographicalfixed(3),
	geographicalindependent(4),
	...
}

-- =================================
-- Definitions of Service Usage Data
-- =================================

MultimediaServiceUsage ::= SEQUENCE
{
	partyInformation				[1] SEQUENCE OF MultimediaPartyInformation OPTIONAL,
		-- This parameter provides the concerned party (Originating, Terminating or 
		-- forwarded party), the identity(ies) of the party and all the information
		-- provided by the party
	communicationTime				[2] TimeSpan OPTIONAL,
		-- Time and duration of the communication
	reasonCause						[3] INTEGER OPTIONAL,
		-- cause code for call termination e.g. SIP Reason code
	communicationType				[4] MultimediaCommunicationType OPTIONAL,
	bearerService					[5] MultimediaBearerService OPTIONAL,
	qualityOfService				[6] QualityOfService OPTIONAL,
	ringDuration					[7] INTEGER OPTIONAL,
	callID							[8] MultimediaCallID OPTIONAL,
	originalCallID					[9] MultimediaCallID OPTIONAL,
	callState						[10] ENUMERATED
	{ 
		bNotReached(1),
		bAlert(2),
		bAnswered(3),
		...
	} OPTIONAL,
	answerTime						[11] GeneralizedTime OPTIONAL,
	contentType						[12] SEQUENCE OF UTF8String OPTIONAL,
	mediaComponents					[13] SEQUENCE OF MediaComponent OPTIONAL,
	imsInformation					[14] ImsInformation OPTIONAL,
	nationalMultimediaServiceUsage	[15] NationalMultimediaServiceUsage OPTIONAL,
	serviceID						[16] UTF8String OPTIONAL,
	providerID						[17] UTF8String OPTIONAL,
	...
}

MultimediaPartyInformation ::= SEQUENCE
{
	partyRole 							[1] MultimediaPartyRole OPTIONAL,
	partyIdentity						[2] PartyIdentity OPTIONAL,
	subscriberID						[3] MultimediaSubscriberID OPTIONAL,
	communicationTime					[4] TimeSpan OPTIONAL,
		-- Time and duration of the communication
	iCCID								[5] UTF8String OPTIONAL,
		-- Integrated Circuit Card ID (ICCID) number of the party, in ASCII format
	iMSI								[6] IMSI OPTIONAL,
	natureOfAddress						[7] UTF8String OPTIONAL,
		-- Nature of address indicator, e.g. "National", "International"
	uRI									[8] UTF8String OPTIONAL,
	partyNumber							[9] PartyNumber OPTIONAL,
	naAssignedAddress					[10] NAAssignedAddress OPTIONAL,
	forwardedTransferredIdentifier		[11] PartyIdentity OPTIONAL,
	terminatingTransferredIdentifier	[12] PartyIdentity OPTIONAL,
	nationalMultimediaPartyInformation	[13] NationalMultimediaPartyInformation OPTIONAL,
	...
}

MultimediaCallID	::=	UTF8String

MultimediaCommunicationType	::=	ENUMERATED
{
	multimediaFixed(0),
	multimediaWireless(1),
	multimediaNetworkIndependent(2),
	...
}

MultimediaPartyRole	::=	ENUMERATED
{
	calling(0),
	called(1),
	calledAssertedIdentity(2),
	calledApplicationServer(3),
	originalCalled(4),
	redirecting(5),
	multimediaNetworkIndependent(6),
	directory(7),
	broadcastReceiver(8),
	broadcastSender(9),
	...
}

MultimediaBearerService	::=	ENUMERATED
{
	speech(0),
	data(1),
	fax(2),
	video(3),
	emergencyCall(4),
	...
}

ImsInformation	::=	SEQUENCE
{
	service				[1] ENUMERATED
	{
		session(1),
		message(2),
		refer(3),
		...
	} OPTIONAL,
	roleOfNode			[2] ENUMERATED
	{
		originating(1),
		terminating(2),
		proxy(3),
		b2bua(4),
		...
	} OPTIONAL,
	serviceInfo			[4] SEQUENCE OF ImsServiceInfo OPTIONAL,
	...
}

ImsServiceInfo ::= SEQUENCE
{
	serviceData 	[1] OCTET STRING OPTIONAL,
		-- service data
	serviceType 	[2] INTEGER OPTIONAL,
		-- service type
	    ...
}

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,
	...
}

-- ==============================
-- 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
	...
}

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,
		-- i.e. credit card etc. 
	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
	...
}

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

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

PartyIdentity ::= UTF8String
	-- E164 address of the node in international format, or
	-- SIP URL or TEL URL as in ETSI EN 300 356 [7]


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
	...
}
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
	...
}

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
		-- Unique identifier for this subscription, e.g. logon name
		-- Human readable text with restrictions or options to the subscription
	installationAddress	[6] AddressInformation OPTIONAL,
	fixIpAddress			[7] IPAddress OPTIONAL,
	allocatedDeviceIDs		[9] SEQUENCE OF NADeviceId OPTIONAL
}

-- ===========================================
-- 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)
	naStatus			[4] ENUMERATED
	{
		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
}

NwAccessType ::= ENUMERATED
{
	undefined(0),
	dialUp(1),
		-- DialUp access
	xDSL(2),
		-- DSL access
	cableModem(3),
		-- Cable access
	lAN(4),
		-- LAN access
	wirelessLAN(5),
		-- Wireless LAN access (e.g. hotspot)
	wimax(6),
	mobilePacketData(7),
		-- Network access over GSM/3GPP GPRS, UMTS, etc.
	...
}

DialUpInformation ::= SEQUENCE
{
	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]
}

GPRSEvent ::= ENUMERATED 
{
	pDPContextActivation(1),
	pDPContextDeactivation(4),
	gPRSAttach(5),
	gPRSDetach(6),
	locationInfoUpdate(10),
		-- sMS ommited from 3GPP TS 33.108 [11],
	pDPContextModification(11),
	servingSystem(12),
	...
}

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

NADeviceId ::= UTF8String

NADevice ::= SEQUENCE
{
	naDeviceId		[1] NADeviceId OPTIONAL,
		-- Identifier of this device. 
	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,
	...
}

IMEI ::= OCTET STRING (SIZE(8)) 
	-- format as per 3GPP TS 09.02 [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
}

IPRange ::= SEQUENCE 
	-- 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
}

NABillingDetails	::= SEQUENCE
{
	subscriberID		[1] NaSubscriberID OPTIONAL,
	serviceID			[2] UTF8String OPTIONAL,
	billingAddress		[3] ContactDetails OPTIONAL,
	billingIdentifier	[4] BillingIdentifier OPTIONAL,
	billingRecords		[5] SEQUENCE OF BillingRecords OPTIONAL,
	...
}