aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2006-05-02 19:44:12 +0000
committerAnders Broman <anders.broman@ericsson.com>2006-05-02 19:44:12 +0000
commit6cdc37b8b97922a5d38fe1637367b98d392d40ec (patch)
treecb447ff3a8ef2f73e26393cfa7f0070eb2ad1f72 /asn1
parente965973f31d82ba5a5ae5cf75110cd6598d870b4 (diff)
Add OMA UserPlane Location Protocol packet dissector
svn path=/trunk/; revision=18076
Diffstat (limited to 'asn1')
-rw-r--r--asn1/ulp/Makefile17
-rw-r--r--asn1/ulp/Makefile.nmake46
-rw-r--r--asn1/ulp/ULP.asn558
-rw-r--r--asn1/ulp/packet-ulp-template.c109
-rw-r--r--asn1/ulp/packet-ulp-template.h35
-rw-r--r--asn1/ulp/ulp.cnf18
6 files changed, 783 insertions, 0 deletions
diff --git a/asn1/ulp/Makefile b/asn1/ulp/Makefile
new file mode 100644
index 0000000000..317259b645
--- /dev/null
+++ b/asn1/ulp/Makefile
@@ -0,0 +1,17 @@
+# $Id$
+
+DISSECTOR_FILES=packet-ulp.c packet-ulp.h
+
+all: generate_dissector
+
+generate_dissector: $(DISSECTOR_FILES)
+
+$(DISSECTOR_FILES): ../../tools/asn2eth.py ULP.asn packet-ulp-template.c packet-ulp-template.h ulp.cnf
+ python ../../tools/asn2eth.py -X -e -p ulp -c ulp.cnf -s packet-ulp-template ULP.asn
+
+clean:
+ rm -f parsetab.py parsetab.pyc $(DISSECTOR_FILES)
+
+copy_files: generate_dissector
+ cp $(DISSECTOR_FILES) ../../epan/dissectors
+
diff --git a/asn1/ulp/Makefile.nmake b/asn1/ulp/Makefile.nmake
new file mode 100644
index 0000000000..5ddf0d924f
--- /dev/null
+++ b/asn1/ulp/Makefile.nmake
@@ -0,0 +1,46 @@
+## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
+#
+# $Id$
+
+include ../../config.nmake
+
+UNIX2DOS=$(PERL) ../../tools/unix2dos.pl
+
+PROTOCOL_NAME=ulp
+DISSECTOR_FILES=packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).h
+
+all: generate_dissector
+
+generate_dissector: $(DISSECTOR_FILES)
+
+$(DISSECTOR_FILES): ../../tools/asn2eth.py ULP.asn packet-ulp-template.c packet-ulp-template.h ulp.cnf
+!IFDEF PYTHON
+ $(PYTHON) ../../tools/asn2eth.py -X -e -p $(PROTOCOL_NAME) -c ulp.cnf -s packet-ulp-template ULP.asn
+!ELSE
+ @echo Error: You need Python to use asn2eth.py
+ @exit 1
+!ENDIF
+
+clean:
+ rm -f parsetab.py parsetab.pyc $(DISSECTOR_FILES)
+
+distclean: clean
+
+maintainer-clean: distclean
+
+# Fix EOL in generated dissectors. Cygwin's python generates files with
+# mixed EOL styles, which can't be commited to the SVN repository.
+# Stuff included from template and "cnf" files has "\r\n" on windows, while
+# the generated stuff has "\n".
+
+fix_eol: generate_dissector
+ move packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).c.tmp
+ move packet-$(PROTOCOL_NAME).h packet-$(PROTOCOL_NAME).h.tmp
+ $(UNIX2DOS) < packet-$(PROTOCOL_NAME).c.tmp > packet-$(PROTOCOL_NAME).c
+ $(UNIX2DOS) < packet-$(PROTOCOL_NAME).h.tmp > packet-$(PROTOCOL_NAME).h
+ del /f packet-$(PROTOCOL_NAME).c.tmp packet-$(PROTOCOL_NAME).h.tmp
+
+copy_files: generate_dissector fix_eol
+ xcopy packet-$(PROTOCOL_NAME).c ..\..\epan\dissectors /d /y
+ xcopy packet-$(PROTOCOL_NAME).h ..\..\epan\dissectors /d /y
+
diff --git a/asn1/ulp/ULP.asn b/asn1/ulp/ULP.asn
new file mode 100644
index 0000000000..7d84d68347
--- /dev/null
+++ b/asn1/ulp/ULP.asn
@@ -0,0 +1,558 @@
+ULP DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+--IMPORTS
+-- Version, SessionID
+-- FROM ULP-Components
+-- SUPLINIT
+-- FROM SUPL-INIT
+-- SUPLSTART
+-- FROM SUPL-START
+-- SUPLRESPONSE
+-- FROM SUPL-RESPONSE
+-- SUPLPOSINIT
+-- FROM SUPL-POS-INIT
+-- SUPLPOS
+-- FROM SUPL-POS
+-- SUPLEND
+-- FROM SUPL-END
+-- SUPLAUTHREQ
+-- FROM SUPL-AUTH-REQ
+-- SUPLAUTHRESP
+-- FROM SUPL-AUTH-RESP;
+
+-- general ULP PDU layout;
+ULP-PDU ::= SEQUENCE {
+ length INTEGER(0..65535),
+ version Version,
+ sessionID SessionID,
+ message UlpMessage}
+
+UlpMessage ::= CHOICE {
+ msSUPLINIT SUPLINIT,
+ msSUPLSTART SUPLSTART,
+ msSUPLRESPONSE SUPLRESPONSE,
+ msSUPLPOSINIT SUPLPOSINIT,
+ msSUPLPOS SUPLPOS,
+ msSUPLEND SUPLEND,
+ msSUPLAUTHREQ SUPLAUTHREQ,
+ msSUPLAUTHRESP SUPLAUTHRESP,
+ ...}
+
+-- END
+--ULP-Components DEFINITIONS AUTOMATIC TAGS ::=
+--BEGIN
+
+--EXPORTS
+-- Version, SessionID, IPAddress, SLPAddress, LocationId, Position, StatusCode,
+-- Velocity, QoP, PosMethod, Ver;
+
+-- protocol version expressed as x.y.z (e.g., 5.1.0)
+Version ::= SEQUENCE {
+ maj INTEGER(0..255),
+ min INTEGER(0..255),
+ servind INTEGER(0..255)}
+
+SessionID ::= SEQUENCE {
+ setSessionID SetSessionID OPTIONAL, -- the semantics of OPTIONAL applies to the encoding only. The parameter itself is MANDATORY. This is introduced only to minimize bandwidth for the SUPL INIT message. Since the setSessionID is allocated by the SET, there is no setSessionID to be transmitted in the SUPL INIT message.
+ slpSessionID SlpSessionID OPTIONAL -- the semantics of OPTIONAL applies to the encoding only. The parameter itself is MANDATORY. This is introduced only to minimize bandwidth for the SUPL START message. Since the slpSessionID is allocated by the SLP, there is no slpSessionID to be transmitted in the SUPL START message.--}
+
+SetSessionID ::= SEQUENCE {sessionId INTEGER(0..65535),
+ setId SETId}
+
+SETId ::= CHOICE {
+ msisdn OCTET STRING(SIZE (8)),
+ mdn OCTET STRING(SIZE (8)),
+ min BIT STRING(SIZE (34)), -- coded according to TIA-553
+ imsi OCTET STRING(SIZE (8)),
+ nai IA5String(SIZE (1..1000)),
+ iPAddress IPAddress,
+ ...}
+
+-- msisdn, mdn and imsi are a BCD (Binary Coded Decimal) string
+-- represent digits from 0 through 9,
+-- two digits per octet, each digit encoded 0000 to 1001 (0 to 9)
+-- bits 8765 of octet n encoding digit 2n
+-- bits 4321 of octet n encoding digit 2(n-1) +1
+-- not used digits in the string shall be filled with 1111
+SlpSessionID ::= SEQUENCE {
+ sessionID OCTET STRING(SIZE (4)),
+ slpId SLPAddress}
+
+IPAddress ::= CHOICE {
+ ipv4Address OCTET STRING(SIZE (4)),
+ ipv6Address OCTET STRING(SIZE (16))}
+
+SLPAddress ::= CHOICE {iPAddress IPAddress,
+ fQDN FQDN,
+ ...}
+
+FQDN ::= VisibleString(SIZE (1..255))
+-- VisibleString(FROM ("a".."z" | "A".."Z" | "0".."9" | ".-"))(SIZE (1..255))
+
+Ver ::= BIT STRING(SIZE (64))
+
+LocationId ::= SEQUENCE {gsmCell GsmCellInformation OPTIONAL,
+ wcdmaCell WcdmaCellInformation OPTIONAL,
+ cdmaCell CdmaCellInformation OPTIONAL,
+ status Status,
+ ...}
+
+Status ::= ENUMERATED {stale(0), current(1), unknown(2), ...
+ }
+
+CellInfo ::= CHOICE {
+ gsmCell GsmCellInformation,
+ wcdmaCell WcdmaCellInformation,
+ cdmaCell CdmaCellInformation,
+ ...
+ }
+
+Position ::= SEQUENCE {
+ timestamp UTCTime,
+ -- shall include seconds and shall use UTC time.
+ positionEstimate PositionEstimate,
+ velocity Velocity OPTIONAL,
+ ...
+ }
+
+PositionEstimate ::= SEQUENCE {
+ latitudeSign ENUMERATED {north, south},
+ latitude INTEGER(0..8388607),
+ longitude INTEGER(-8388608..8388607),
+ uncertainty
+ SEQUENCE {uncertaintySemiMajor INTEGER(0..127),
+ uncertaintySemiMinor INTEGER(0..127),
+ orientationMajorAxis INTEGER(0..180)} OPTIONAL,
+ -- angle in degree between major axis and North
+ confidence INTEGER(0..100) OPTIONAL,
+ altitudeInfo AltitudeInfo OPTIONAL,
+ ...}
+
+AltitudeInfo ::= SEQUENCE {
+ altitudeDirection ENUMERATED {height, depth},
+ altitude INTEGER(0..32767),
+ altUncertainty INTEGER(0..127),
+ ...} -- based on 3GPP TS 23.032
+
+CdmaCellInformation ::= SEQUENCE {
+ refNID INTEGER(0..65535), -- Network Id
+ refSID INTEGER(0..32767), -- System Id
+ refBASEID INTEGER(0..65535), -- Base Station Id
+ refBASELAT INTEGER(0..4194303), -- Base Station Latitude
+ reBASELONG INTEGER(0..8388607), -- Base Station Longitude
+ refREFPN INTEGER(0..511), -- Base Station PN Code
+ refWeekNumber INTEGER(0..65535), -- GPS Week Number
+ refSeconds INTEGER(0..4194303)-- GPS Seconds -- ,
+ ...}
+
+GsmCellInformation ::= SEQUENCE {
+ refMCC INTEGER(0..999), -- Mobile Country Code
+ refMNC INTEGER(0..999), -- Mobile Network Code
+ refLAC INTEGER(0..65535), -- Location area code
+ refCI INTEGER(0..65535), -- Cell identity
+ nMR NMR OPTIONAL,
+ tA INTEGER(0..255) OPTIONAL, --Timing Advance
+ ...}
+
+WcdmaCellInformation ::= SEQUENCE {
+ refMCC INTEGER(0..999), -- Mobile Country Code
+ refMNC INTEGER(0..999), -- Mobile Network Code
+ refUC INTEGER(0..268435455), -- Cell identity
+ frequencyInfo FrequencyInfo OPTIONAL,
+ primaryScramblingCode INTEGER(0..511) OPTIONAL,
+ measuredResultsList MeasuredResultsList OPTIONAL,
+ ...}
+
+FrequencyInfo ::= SEQUENCE {
+ modeSpecificInfo CHOICE {fdd FrequencyInfoFDD,
+ tdd FrequencyInfoTDD,
+ ...},
+ ...}
+
+FrequencyInfoFDD ::= SEQUENCE {
+ uarfcn-UL UARFCN OPTIONAL,
+ uarfcn-DL UARFCN,
+ ...}
+
+FrequencyInfoTDD ::= SEQUENCE {uarfcn-Nt UARFCN,
+ ...}
+
+UARFCN ::= INTEGER(0..16383)
+
+NMR ::= SEQUENCE (SIZE (1..15)) OF NMRelement
+
+NMRelement ::= SEQUENCE {
+ aRFCN INTEGER(0..1023),
+ bSIC INTEGER(0..63),
+ rxLev INTEGER(0..63),
+ ...}
+
+MeasuredResultsList ::= SEQUENCE (SIZE (1..maxFreq)) OF MeasuredResults
+
+MeasuredResults ::= SEQUENCE {
+ frequencyInfo FrequencyInfo OPTIONAL,
+ utra-CarrierRSSI UTRA-CarrierRSSI OPTIONAL,
+ cellMeasuredResultsList CellMeasuredResultsList OPTIONAL}
+
+CellMeasuredResultsList ::=
+ SEQUENCE (SIZE (1..maxCellMeas)) OF CellMeasuredResults
+
+-- SPARE: UTRA-CarrierRSSI, Max = 76
+-- Values above Max are spare
+UTRA-CarrierRSSI ::= INTEGER(0..127)
+
+CellMeasuredResults ::= SEQUENCE {
+ cellIdentity INTEGER(0..268435455) OPTIONAL,
+ modeSpecificInfo
+ CHOICE {fdd
+ SEQUENCE {primaryCPICH-Info PrimaryCPICH-Info,
+ cpich-Ec-N0 CPICH-Ec-N0 OPTIONAL,
+ cpich-RSCP CPICH-RSCP OPTIONAL,
+ pathloss Pathloss OPTIONAL},
+ tdd
+ SEQUENCE {cellParametersID CellParametersID,
+ proposedTGSN TGSN OPTIONAL,
+ primaryCCPCH-RSCP PrimaryCCPCH-RSCP OPTIONAL,
+ pathloss Pathloss OPTIONAL,
+ timeslotISCP-List TimeslotISCP-List OPTIONAL}}}
+
+CellParametersID ::= INTEGER(0..127)
+
+TGSN ::= INTEGER(0..14)
+
+PrimaryCCPCH-RSCP ::= INTEGER(0..127)
+
+-- SPARE: TimeslotISCP, Max = 91
+-- Values above Max are spare
+TimeslotISCP ::= INTEGER(0..127)
+
+TimeslotISCP-List ::= SEQUENCE (SIZE (1..maxTS)) OF TimeslotISCP
+
+PrimaryCPICH-Info ::= SEQUENCE {primaryScramblingCode INTEGER(0..511)}
+
+-- SPARE: CPICH-Ec-No, Max = 49
+-- Values above Max are spare
+CPICH-Ec-N0 ::= INTEGER(0..63)
+
+-- SPARE: CPICH- RSCP, Max = 91
+-- Values above Max are spare
+CPICH-RSCP ::= INTEGER(0..127)
+
+-- SPARE: Pathloss, Max = 158
+-- Values above Max are spare
+Pathloss ::= INTEGER(46..173)
+
+maxCellMeas INTEGER ::= 32
+
+maxFreq INTEGER ::= 8
+
+maxTS INTEGER ::= 14
+
+StatusCode ::= ENUMERATED {
+ unspecified(0), systemFailure(1), unexpectedMessage(2), protocolError(3),
+ dataMissing(4), unexpectedDataValue(5), posMethodFailure(6),
+ posMethodMismatch(7), posProtocolMismatch(8), targetSETnotReachable(9),
+ versionNotSupported(10), resourceShortage(11), invalidSessionId(12),
+ nonProxyModeNotSupported(13), proxyModeNotSupported(14),
+ positioningNotPermitted(15), authNetFailure(16), authSuplinitFailure(17), consentDeniedByUser(100),
+ consentGrantedByUser(101), ...
+ }
+
+QoP ::= SEQUENCE {
+ horacc INTEGER(0..127),
+ veracc INTEGER(0..127) OPTIONAL, -- as defined in 3GPP TS 23.032 “uncertainty altitude”-
+ maxLocAge INTEGER(0..65535) OPTIONAL,
+ delay INTEGER(0..7) OPTIONAL, -- as defined in 3GPP TS 44.031
+ ...}
+
+Velocity ::= CHOICE { -- velocity definition as per 23.032
+ horvel Horvel,
+ horandvervel Horandvervel,
+ horveluncert Horveluncert,
+ horandveruncert Horandveruncert,
+ ...}
+
+Horvel ::= SEQUENCE {
+ bearing BIT STRING(SIZE (9)),
+ horspeed BIT STRING(SIZE (16)),
+ ...}
+
+Horandvervel ::= SEQUENCE {
+ verdirect BIT STRING(SIZE (1)),
+ bearing BIT STRING(SIZE (9)),
+ horspeed BIT STRING(SIZE (16)),
+ verspeed BIT STRING(SIZE (8)),
+ ...}
+
+Horveluncert ::= SEQUENCE {
+ bearing BIT STRING(SIZE (9)),
+ horspeed BIT STRING(SIZE (16)),
+ uncertspeed BIT STRING(SIZE (8)),
+ ...}
+
+Horandveruncert ::= SEQUENCE {
+ verdirect BIT STRING(SIZE (1)),
+ bearing BIT STRING(SIZE (9)),
+ horspeed BIT STRING(SIZE (16)),
+ verspeed BIT STRING(SIZE (8)),
+ horuncertspeed BIT STRING(SIZE (8)),
+ veruncertspeed BIT STRING(SIZE (8)),
+ ...}
+
+PosMethod ::= ENUMERATED {
+ agpsSETassisted(0), agpsSETbased(1), agpsSETassistedpref(2),
+ agpsSETbasedpref(3), autonomousGPS(4), aFLT(5), eCID(6), eOTD(7), oTDOA(8),
+ noPosition(9), ...
+ }
+
+--END
+--SUPL-AUTH-REQ DEFINITIONS AUTOMATIC TAGS ::=
+--BEGIN
+
+--EXPORTS SUPLAUTHREQ;
+
+SUPLAUTHREQ ::= SEQUENCE {
+ sETNonce SETNonce,
+ keyIdentity2 KeyIdentity2,
+ ...}
+
+SETNonce ::= BIT STRING(SIZE (128))
+
+KeyIdentity2 ::= BIT STRING(SIZE (128))
+
+--END
+--SUPL-AUTH-RESP DEFINITIONS AUTOMATIC TAGS ::=
+--BEGIN
+
+--EXPORTS SUPLAUTHRESP;
+
+--IMPORTS StatusCode
+-- FROM ULP-Components;
+
+SUPLAUTHRESP ::= SEQUENCE {
+ sPCAuthKey SPCAuthKey OPTIONAL,
+ keyIdentity3 KeyIdentity3 OPTIONAL,
+ statusCode StatusCode OPTIONAL,
+ ...}
+
+SPCAuthKey ::= CHOICE {
+ shortKey BIT STRING(SIZE (128)),
+ longKey BIT STRING(SIZE (256)),
+ ...}
+
+KeyIdentity3 ::= BIT STRING(SIZE (128))
+
+--END
+--SUPL-END DEFINITIONS AUTOMATIC TAGS ::=
+--BEGIN
+
+--EXPORTS SUPLEND;
+
+--IMPORTS StatusCode, Position, Ver
+-- FROM ULP-Components;
+
+SUPLEND ::= SEQUENCE {
+ position Position OPTIONAL,
+ statusCode StatusCode OPTIONAL,
+ ver Ver OPTIONAL,
+ ...}
+
+
+--END
+--SUPL-INIT DEFINITIONS AUTOMATIC TAGS ::=
+--BEGIN
+
+--EXPORTS SUPLINIT;
+
+--IMPORTS SLPAddress, QoP, PosMethod
+-- FROM ULP-Components;
+
+SUPLINIT ::= SEQUENCE {
+ posMethod PosMethod,
+ notification Notification OPTIONAL,
+ sLPAddress SLPAddress OPTIONAL,
+ qoP QoP OPTIONAL,
+ sLPMode SLPMode,
+ mAC MAC OPTIONAL,
+ keyIdentity KeyIdentity OPTIONAL,
+ ...}
+
+Notification ::= SEQUENCE {
+ notificationType NotificationType,
+ encodingType EncodingType OPTIONAL,
+ requestorId OCTET STRING(SIZE (1..maxReqLength)) OPTIONAL,
+ requestorIdType FormatIndicator OPTIONAL,
+ clientName OCTET STRING(SIZE (1..maxClientLength)) OPTIONAL,
+ clientNameType FormatIndicator OPTIONAL,
+ ...}
+
+NotificationType ::= ENUMERATED {
+ noNotificationNoVerification(0), notificationOnly(1),
+ notificationAndVerficationAllowedNA(2),
+ notificationAndVerficationDeniedNA(3), privacyOverride(4), ...
+ }
+
+EncodingType ::= ENUMERATED {ucs2(0), gsmDefault(1), utf8(2), ...
+ }
+
+maxReqLength INTEGER ::= 50
+
+maxClientLength INTEGER ::= 50
+
+-- IMSPublicidentity is incorrect as identifiers must start with lower case char
+FormatIndicator ::= ENUMERATED {
+ logicalName(0), e-mailAddress(1), msisdn(2), url(3), sipUrl(4), min(5),
+ mdn(6), iMSPublicidentity(7), ...
+ }
+
+SLPMode ::= ENUMERATED {proxy(0), nonProxy(1)}
+
+MAC ::= BIT STRING(SIZE (64))
+
+KeyIdentity ::= BIT STRING(SIZE (128))
+
+--END
+--SUPL-POS DEFINITIONS AUTOMATIC TAGS ::=
+--BEGIN
+
+--EXPORTS SUPLPOS;
+
+--IMPORTS Velocity
+-- FROM ULP-Components;
+
+SUPLPOS ::= SEQUENCE {
+ posPayLoad PosPayLoad,
+ velocity Velocity OPTIONAL,
+ ...}
+
+PosPayLoad ::= CHOICE {
+ tia801payload OCTET STRING(SIZE (1..8192)),
+ rrcPayload OCTET STRING(SIZE (1..8192)),
+ rrlpPayload OCTET STRING(SIZE (1..8192)),
+ ...}
+
+--END
+--SUPL-POS-INIT DEFINITIONS AUTOMATIC TAGS ::=
+--BEGIN
+
+--EXPORTS SUPLPOSINIT;
+
+--IMPORTS
+-- SUPLPOS
+-- FROM SUPL-POS
+-- SETCapabilities
+-- FROM SUPL-START
+-- LocationId, Position, Ver
+-- FROM ULP-Components;
+
+SUPLPOSINIT ::= SEQUENCE {
+ sETCapabilities SETCapabilities,
+ requestedAssistData RequestedAssistData OPTIONAL,
+ locationId LocationId,
+ position Position OPTIONAL,
+ sUPLPOS SUPLPOS OPTIONAL,
+ ver Ver OPTIONAL,
+ ...}
+
+RequestedAssistData ::= SEQUENCE {
+ almanacRequested BOOLEAN,
+ utcModelRequested BOOLEAN,
+ ionosphericModelRequested BOOLEAN,
+ dgpsCorrectionsRequested BOOLEAN,
+ referenceLocationRequested BOOLEAN,
+ referenceTimeRequested BOOLEAN,
+ acquisitionAssistanceRequested BOOLEAN,
+ realTimeIntegrityRequested BOOLEAN,
+ navigationModelRequested BOOLEAN,
+ navigationModelData NavigationModel OPTIONAL,
+ ...}
+
+NavigationModel ::= SEQUENCE {
+ gpsWeek INTEGER(0..1023),
+ gpsToe INTEGER(0..167),
+ nSAT INTEGER(0..31),
+ toeLimit INTEGER(0..10),
+ satInfo SatelliteInfo OPTIONAL,
+ ...}
+
+-- Further information on this fields can be found
+-- in 3GPP TS 44.031 and 49.031
+SatelliteInfo ::= SEQUENCE (SIZE (1..31)) OF SatelliteInfoElement
+
+SatelliteInfoElement ::= SEQUENCE {
+ satId INTEGER(0..63),
+ iODE INTEGER(0..255),
+ ...}
+
+--END
+
+--SUPL-RESPONSE DEFINITIONS AUTOMATIC TAGS ::=
+--BEGIN
+
+--EXPORTS SUPLRESPONSE;
+
+--IMPORTS PosMethod, SLPAddress
+-- FROM ULP-Components;
+
+SUPLRESPONSE ::= SEQUENCE {
+ posMethod PosMethod,
+ sLPAddress SLPAddress OPTIONAL,
+ sETAuthKey SETAuthKey OPTIONAL,
+ keyIdentity4 KeyIdentity4 OPTIONAL,
+ ...}
+
+SETAuthKey ::= CHOICE {
+ shortKey BIT STRING(SIZE (128)),
+ longKey BIT STRING(SIZE (256)),
+ ...}
+
+KeyIdentity4 ::= BIT STRING(SIZE (128))
+
+--END
+--SUPL-START DEFINITIONS AUTOMATIC TAGS ::=
+--BEGIN
+
+--EXPORTS SUPLSTART, SETCapabilities;
+
+--IMPORTS LocationId, QoP
+-- FROM ULP-Components;
+
+SUPLSTART ::= SEQUENCE {
+ sETCapabilities SETCapabilities,
+ locationId LocationId,
+ qoP QoP OPTIONAL,
+ ...}
+
+SETCapabilities ::= SEQUENCE {
+ posTechnology PosTechnology,
+ prefMethod PrefMethod,
+ posProtocol PosProtocol,
+ ...}
+
+PosTechnology ::= SEQUENCE {
+ agpsSETassisted BOOLEAN,
+ agpsSETBased BOOLEAN,
+ autonomousGPS BOOLEAN,
+ aFLT BOOLEAN,
+ eCID BOOLEAN,
+ eOTD BOOLEAN,
+ oTDOA BOOLEAN,
+ ...}
+
+PrefMethod ::= ENUMERATED {
+ agpsSETassistedPreferred, agpsSETBasedPreferred, noPreference}
+
+PosProtocol ::= SEQUENCE {
+ tia801 BOOLEAN,
+ rrlp BOOLEAN,
+ rrc BOOLEAN,
+ ...}
+
+END
+
+
+
+
+
+
diff --git a/asn1/ulp/packet-ulp-template.c b/asn1/ulp/packet-ulp-template.c
new file mode 100644
index 0000000000..f3c1c94cbb
--- /dev/null
+++ b/asn1/ulp/packet-ulp-template.c
@@ -0,0 +1,109 @@
+/* packet-ulp.c
+ * Routines for OMA UserPlane Location Protocol packet dissection
+ * Copyright 2006, Anders Broman <anders.broman@ericsson.com>
+ *
+ * $Id$
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * ref OMA-TS-ULP-V1_0-20060127-C
+ * http://www.openmobilealliance.org
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/conversation.h>
+
+#include <stdio.h>
+#include <string.h>
+
+#include "packet-ulp.h"
+
+#include "packet-ber.h"
+#include "packet-per.h"
+
+#define PNAME "OMA UserPlane Location Protocol"
+#define PSNAME "ULP"
+#define PFNAME "ulp"
+
+static dissector_handle_t ulp_handle=NULL;
+
+guint gbl_ulp_port = 59910;
+
+/* Initialize the protocol and registered fields */
+static int proto_ulp = -1;
+
+
+#include "packet-ulp-hf.c"
+
+/* Initialize the subtree pointers */
+static gint ett_ulp = -1;
+#include "packet-ulp-ett.c"
+
+/* Include constants */
+#include "packet-ulp-val.h"
+
+#include "packet-ulp-fn.c"
+
+
+/*--- proto_register_ulp -------------------------------------------*/
+void proto_register_ulp(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] = {
+
+#include "packet-ulp-hfarr.c"
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+ &ett_ulp,
+#include "packet-ulp-ettarr.c"
+ };
+
+
+ /* Register protocol */
+ proto_ulp = proto_register_protocol(PNAME, PSNAME, PFNAME);
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_ulp, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+
+}
+
+
+/*--- proto_reg_handoff_ulp ---------------------------------------*/
+void
+proto_reg_handoff_ulp(void)
+{
+
+ ulp_handle = create_dissector_handle(dissect_ULP_PDU_PDU, proto_ulp);
+
+ dissector_add("tcp.port", gbl_ulp_port, ulp_handle);
+
+ /* application/oma-supl-ulp */
+ dissector_add_string("media_type","application/oma-supl-ulp", ulp_handle);
+
+}
+
+
diff --git a/asn1/ulp/packet-ulp-template.h b/asn1/ulp/packet-ulp-template.h
new file mode 100644
index 0000000000..70dbb221c4
--- /dev/null
+++ b/asn1/ulp/packet-ulp-template.h
@@ -0,0 +1,35 @@
+/* packet-ulp.h
+ * Routines for OMA UserPlane Location Protocol packet dissection
+ * Copyright 2006, Anders Broman <anders.broman@ericsson.com>
+ *
+ * $Id$
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef PACKET_ULP_H
+#define PACKET_ULP_H
+
+
+
+/* #include "packet-ulp-exp.h" */
+
+#endif /* PACKET_UPL_H */
+
+
diff --git a/asn1/ulp/ulp.cnf b/asn1/ulp/ulp.cnf
new file mode 100644
index 0000000000..52738e6f8d
--- /dev/null
+++ b/asn1/ulp/ulp.cnf
@@ -0,0 +1,18 @@
+# upl.cnf
+# upl conformation file
+# Copyright 2006 Anders Broman
+# $Id$
+
+#.PDU
+ULP-PDU
+
+#.FN_BODY ULP-PDU
+
+ proto_tree_add_item(tree, proto_ulp, tvb, 0, -1, FALSE);
+
+ if (check_col(pinfo->cinfo, COL_PROTOCOL))
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ %(DEFAULT_BODY)s \ No newline at end of file