1 /* Do not modify this file. */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler */
4 /* ../../tools/asn2wrs.py -p ulp -c ulp.cnf -s packet-ulp-template ULP.asn SUPL.asn ULP-Components.asn */
6 /* Input file: packet-ulp-template.c */
8 #line 1 "packet-ulp-template.c"
10 * Routines for OMA UserPlane Location Protocol packet dissection
11 * Copyright 2006, Anders Broman <anders.broman@ericsson.com>
15 * Wireshark - Network traffic analyzer
16 * By Gerald Combs <gerald@wireshark.org>
17 * Copyright 1998 Gerald Combs
19 * This program is free software; you can redistribute it and/or
20 * modify it under the terms of the GNU General Public License
21 * as published by the Free Software Foundation; either version 2
22 * of the License, or (at your option) any later version.
24 * This program is distributed in the hope that it will be useful,
25 * but WITHOUT ANY WARRANTY; without even the implied warranty of
26 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27 * GNU General Public License for more details.
29 * You should have received a copy of the GNU General Public License
30 * along with this program; if not, write to the Free Software
31 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
33 * ref OMA-TS-ULP-V1_0-20060127-C
34 * http://www.openmobilealliance.org
42 #include <epan/packet.h>
43 #include <epan/conversation.h>
44 #include <epan/prefs.h>
45 #include <epan/asn1.h>
50 #include "packet-per.h"
51 #include <epan/emem.h>
52 #include "packet-tcp.h"
53 #include "packet-gsm_map.h"
55 #define PNAME "OMA UserPlane Location Protocol"
59 static dissector_handle_t ulp_handle = NULL;
60 static dissector_handle_t rrlp_handle = NULL;
62 /* IANA Registered Ports
63 * oma-ulp 7275/tcp OMA UserPlane Location
64 * oma-ulp 7275/udp OMA UserPlane Location
66 guint gbl_ulp_port = 7275;
68 /* Initialize the protocol and registered fields */
69 static int proto_ulp = -1;
72 #define ULP_HEADER_SIZE 2
74 gboolean ulp_desegment = TRUE;
77 /*--- Included file: packet-ulp-hf.c ---*/
78 #line 1 "packet-ulp-hf.c"
79 static int hf_ulp_ULP_PDU_PDU = -1; /* ULP_PDU */
80 static int hf_ulp_length = -1; /* INTEGER_0_65535 */
81 static int hf_ulp_version = -1; /* Version */
82 static int hf_ulp_sessionID = -1; /* SessionID */
83 static int hf_ulp_message = -1; /* UlpMessage */
84 static int hf_ulp_msSUPLINIT = -1; /* SUPLINIT */
85 static int hf_ulp_msSUPLSTART = -1; /* SUPLSTART */
86 static int hf_ulp_msSUPLRESPONSE = -1; /* SUPLRESPONSE */
87 static int hf_ulp_msSUPLPOSINIT = -1; /* SUPLPOSINIT */
88 static int hf_ulp_msSUPLPOS = -1; /* SUPLPOS */
89 static int hf_ulp_msSUPLEND = -1; /* SUPLEND */
90 static int hf_ulp_msSUPLAUTHREQ = -1; /* SUPLAUTHREQ */
91 static int hf_ulp_msSUPLAUTHRESP = -1; /* SUPLAUTHRESP */
92 static int hf_ulp_posMethod = -1; /* PosMethod */
93 static int hf_ulp_notification = -1; /* Notification */
94 static int hf_ulp_sLPAddress = -1; /* SLPAddress */
95 static int hf_ulp_qoP = -1; /* QoP */
96 static int hf_ulp_sLPMode = -1; /* SLPMode */
97 static int hf_ulp_mAC = -1; /* MAC */
98 static int hf_ulp_keyIdentity = -1; /* KeyIdentity */
99 static int hf_ulp_notificationType = -1; /* NotificationType */
100 static int hf_ulp_encodingType = -1; /* EncodingType */
101 static int hf_ulp_requestorId = -1; /* OCTET_STRING_SIZE_1_maxReqLength */
102 static int hf_ulp_requestorIdType = -1; /* FormatIndicator */
103 static int hf_ulp_clientName = -1; /* OCTET_STRING_SIZE_1_maxClientLength */
104 static int hf_ulp_clientNameType = -1; /* FormatIndicator */
105 static int hf_ulp_sETCapabilities = -1; /* SETCapabilities */
106 static int hf_ulp_locationId = -1; /* LocationId */
107 static int hf_ulp_posTechnology = -1; /* PosTechnology */
108 static int hf_ulp_prefMethod = -1; /* PrefMethod */
109 static int hf_ulp_posProtocol = -1; /* PosProtocol */
110 static int hf_ulp_agpsSETassisted = -1; /* BOOLEAN */
111 static int hf_ulp_agpsSETBased = -1; /* BOOLEAN */
112 static int hf_ulp_autonomousGPS = -1; /* BOOLEAN */
113 static int hf_ulp_aFLT = -1; /* BOOLEAN */
114 static int hf_ulp_eCID = -1; /* BOOLEAN */
115 static int hf_ulp_eOTD = -1; /* BOOLEAN */
116 static int hf_ulp_oTDOA = -1; /* BOOLEAN */
117 static int hf_ulp_tia801 = -1; /* BOOLEAN */
118 static int hf_ulp_rrlp = -1; /* BOOLEAN */
119 static int hf_ulp_rrc = -1; /* BOOLEAN */
120 static int hf_ulp_sETAuthKey = -1; /* SETAuthKey */
121 static int hf_ulp_keyIdentity4 = -1; /* KeyIdentity4 */
122 static int hf_ulp_shortKey = -1; /* BIT_STRING_SIZE_128 */
123 static int hf_ulp_longKey = -1; /* BIT_STRING_SIZE_256 */
124 static int hf_ulp_requestedAssistData = -1; /* RequestedAssistData */
125 static int hf_ulp_position = -1; /* Position */
126 static int hf_ulp_sUPLPOS = -1; /* SUPLPOS */
127 static int hf_ulp_ver = -1; /* Ver */
128 static int hf_ulp_almanacRequested = -1; /* BOOLEAN */
129 static int hf_ulp_utcModelRequested = -1; /* BOOLEAN */
130 static int hf_ulp_ionosphericModelRequested = -1; /* BOOLEAN */
131 static int hf_ulp_dgpsCorrectionsRequested = -1; /* BOOLEAN */
132 static int hf_ulp_referenceLocationRequested = -1; /* BOOLEAN */
133 static int hf_ulp_referenceTimeRequested = -1; /* BOOLEAN */
134 static int hf_ulp_acquisitionAssistanceRequested = -1; /* BOOLEAN */
135 static int hf_ulp_realTimeIntegrityRequested = -1; /* BOOLEAN */
136 static int hf_ulp_navigationModelRequested = -1; /* BOOLEAN */
137 static int hf_ulp_navigationModelData = -1; /* NavigationModel */
138 static int hf_ulp_gpsWeek = -1; /* INTEGER_0_1023 */
139 static int hf_ulp_gpsToe = -1; /* INTEGER_0_167 */
140 static int hf_ulp_nSAT = -1; /* INTEGER_0_31 */
141 static int hf_ulp_toeLimit = -1; /* INTEGER_0_10 */
142 static int hf_ulp_satInfo = -1; /* SatelliteInfo */
143 static int hf_ulp_SatelliteInfo_item = -1; /* SatelliteInfoElement */
144 static int hf_ulp_satId = -1; /* INTEGER_0_63 */
145 static int hf_ulp_iODE = -1; /* INTEGER_0_255 */
146 static int hf_ulp_posPayLoad = -1; /* PosPayLoad */
147 static int hf_ulp_velocity = -1; /* Velocity */
148 static int hf_ulp_tia801payload = -1; /* OCTET_STRING_SIZE_1_8192 */
149 static int hf_ulp_rrcPayload = -1; /* OCTET_STRING_SIZE_1_8192 */
150 static int hf_ulp_rrlpPayload = -1; /* T_rrlpPayload */
151 static int hf_ulp_statusCode = -1; /* StatusCode */
152 static int hf_ulp_sETNonce = -1; /* SETNonce */
153 static int hf_ulp_keyIdentity2 = -1; /* KeyIdentity2 */
154 static int hf_ulp_sPCAuthKey = -1; /* SPCAuthKey */
155 static int hf_ulp_keyIdentity3 = -1; /* KeyIdentity3 */
156 static int hf_ulp_maj = -1; /* INTEGER_0_255 */
157 static int hf_ulp_min = -1; /* INTEGER_0_255 */
158 static int hf_ulp_servind = -1; /* INTEGER_0_255 */
159 static int hf_ulp_setSessionID = -1; /* SetSessionID */
160 static int hf_ulp_slpSessionID = -1; /* SlpSessionID */
161 static int hf_ulp_sessionId = -1; /* INTEGER_0_65535 */
162 static int hf_ulp_setId = -1; /* SETId */
163 static int hf_ulp_msisdn = -1; /* T_msisdn */
164 static int hf_ulp_mdn = -1; /* OCTET_STRING_SIZE_8 */
165 static int hf_ulp_minsi = -1; /* BIT_STRING_SIZE_34 */
166 static int hf_ulp_imsi = -1; /* T_imsi */
167 static int hf_ulp_nai = -1; /* IA5String_SIZE_1_1000 */
168 static int hf_ulp_iPAddress = -1; /* IPAddress */
169 static int hf_ulp_sessionSlpID = -1; /* OCTET_STRING_SIZE_4 */
170 static int hf_ulp_slpId = -1; /* SLPAddress */
171 static int hf_ulp_ipv4Address = -1; /* OCTET_STRING_SIZE_4 */
172 static int hf_ulp_ipv6Address = -1; /* OCTET_STRING_SIZE_16 */
173 static int hf_ulp_fQDN = -1; /* FQDN */
174 static int hf_ulp_cellInfo = -1; /* CellInfo */
175 static int hf_ulp_status = -1; /* Status */
176 static int hf_ulp_gsmCell = -1; /* GsmCellInformation */
177 static int hf_ulp_wcdmaCell = -1; /* WcdmaCellInformation */
178 static int hf_ulp_cdmaCell = -1; /* CdmaCellInformation */
179 static int hf_ulp_timestamp = -1; /* UTCTime */
180 static int hf_ulp_positionEstimate = -1; /* PositionEstimate */
181 static int hf_ulp_latitudeSign = -1; /* T_latitudeSign */
182 static int hf_ulp_latitude = -1; /* INTEGER_0_8388607 */
183 static int hf_ulp_longitude = -1; /* INTEGER_M8388608_8388607 */
184 static int hf_ulp_uncertainty = -1; /* T_uncertainty */
185 static int hf_ulp_uncertaintySemiMajor = -1; /* INTEGER_0_127 */
186 static int hf_ulp_uncertaintySemiMinor = -1; /* INTEGER_0_127 */
187 static int hf_ulp_orientationMajorAxis = -1; /* INTEGER_0_180 */
188 static int hf_ulp_confidence = -1; /* INTEGER_0_100 */
189 static int hf_ulp_altitudeInfo = -1; /* AltitudeInfo */
190 static int hf_ulp_altitudeDirection = -1; /* T_altitudeDirection */
191 static int hf_ulp_altitude = -1; /* INTEGER_0_32767 */
192 static int hf_ulp_altUncertainty = -1; /* INTEGER_0_127 */
193 static int hf_ulp_refNID = -1; /* INTEGER_0_65535 */
194 static int hf_ulp_refSID = -1; /* INTEGER_0_32767 */
195 static int hf_ulp_refBASEID = -1; /* INTEGER_0_65535 */
196 static int hf_ulp_refBASELAT = -1; /* INTEGER_0_4194303 */
197 static int hf_ulp_reBASELONG = -1; /* INTEGER_0_8388607 */
198 static int hf_ulp_refREFPN = -1; /* INTEGER_0_511 */
199 static int hf_ulp_refWeekNumber = -1; /* INTEGER_0_65535 */
200 static int hf_ulp_refSeconds = -1; /* INTEGER_0_4194303 */
201 static int hf_ulp_refMCC = -1; /* INTEGER_0_999 */
202 static int hf_ulp_refMNC = -1; /* INTEGER_0_999 */
203 static int hf_ulp_refLAC = -1; /* INTEGER_0_65535 */
204 static int hf_ulp_refCI = -1; /* INTEGER_0_65535 */
205 static int hf_ulp_nMR = -1; /* NMR */
206 static int hf_ulp_tA = -1; /* INTEGER_0_255 */
207 static int hf_ulp_refUC = -1; /* INTEGER_0_268435455 */
208 static int hf_ulp_frequencyInfo = -1; /* FrequencyInfo */
209 static int hf_ulp_primaryScramblingCode = -1; /* INTEGER_0_511 */
210 static int hf_ulp_measuredResultsList = -1; /* MeasuredResultsList */
211 static int hf_ulp_modeSpecificFrequencyInfo = -1; /* FrequencySpecificInfo */
212 static int hf_ulp_fdd_fr = -1; /* FrequencyInfoFDD */
213 static int hf_ulp_tdd_fr = -1; /* FrequencyInfoTDD */
214 static int hf_ulp_uarfcn_UL = -1; /* UARFCN */
215 static int hf_ulp_uarfcn_DL = -1; /* UARFCN */
216 static int hf_ulp_uarfcn_Nt = -1; /* UARFCN */
217 static int hf_ulp_NMR_item = -1; /* NMRelement */
218 static int hf_ulp_aRFCN = -1; /* INTEGER_0_1023 */
219 static int hf_ulp_bSIC = -1; /* INTEGER_0_63 */
220 static int hf_ulp_rxLev = -1; /* INTEGER_0_63 */
221 static int hf_ulp_MeasuredResultsList_item = -1; /* MeasuredResults */
222 static int hf_ulp_utra_CarrierRSSI = -1; /* UTRA_CarrierRSSI */
223 static int hf_ulp_cellMeasuredResultsList = -1; /* CellMeasuredResultsList */
224 static int hf_ulp_CellMeasuredResultsList_item = -1; /* CellMeasuredResults */
225 static int hf_ulp_cellIdentity = -1; /* INTEGER_0_268435455 */
226 static int hf_ulp_modeSpecificInfo = -1; /* T_modeSpecificInfo */
227 static int hf_ulp_fdd = -1; /* T_fdd */
228 static int hf_ulp_primaryCPICH_Info = -1; /* PrimaryCPICH_Info */
229 static int hf_ulp_cpich_Ec_N0 = -1; /* CPICH_Ec_N0 */
230 static int hf_ulp_cpich_RSCP = -1; /* CPICH_RSCP */
231 static int hf_ulp_pathloss = -1; /* Pathloss */
232 static int hf_ulp_tdd = -1; /* T_tdd */
233 static int hf_ulp_cellParametersID = -1; /* CellParametersID */
234 static int hf_ulp_proposedTGSN = -1; /* TGSN */
235 static int hf_ulp_primaryCCPCH_RSCP = -1; /* PrimaryCCPCH_RSCP */
236 static int hf_ulp_timeslotISCP_List = -1; /* TimeslotISCP_List */
237 static int hf_ulp_TimeslotISCP_List_item = -1; /* TimeslotISCP */
238 static int hf_ulp_horacc = -1; /* INTEGER_0_127 */
239 static int hf_ulp_veracc = -1; /* INTEGER_0_127 */
240 static int hf_ulp_maxLocAge = -1; /* INTEGER_0_65535 */
241 static int hf_ulp_delay = -1; /* INTEGER_0_7 */
242 static int hf_ulp_horvel = -1; /* Horvel */
243 static int hf_ulp_horandvervel = -1; /* Horandvervel */
244 static int hf_ulp_horveluncert = -1; /* Horveluncert */
245 static int hf_ulp_horandveruncert = -1; /* Horandveruncert */
246 static int hf_ulp_bearing = -1; /* BIT_STRING_SIZE_9 */
247 static int hf_ulp_horspeed = -1; /* BIT_STRING_SIZE_16 */
248 static int hf_ulp_verdirect = -1; /* BIT_STRING_SIZE_1 */
249 static int hf_ulp_verspeed = -1; /* BIT_STRING_SIZE_8 */
250 static int hf_ulp_uncertspeed = -1; /* BIT_STRING_SIZE_8 */
251 static int hf_ulp_horuncertspeed = -1; /* BIT_STRING_SIZE_8 */
252 static int hf_ulp_veruncertspeed = -1; /* BIT_STRING_SIZE_8 */
254 /*--- End of included file: packet-ulp-hf.c ---*/
255 #line 69 "packet-ulp-template.c"
257 /* Initialize the subtree pointers */
258 static gint ett_ulp = -1;
260 /*--- Included file: packet-ulp-ett.c ---*/
261 #line 1 "packet-ulp-ett.c"
262 static gint ett_ulp_ULP_PDU = -1;
263 static gint ett_ulp_UlpMessage = -1;
264 static gint ett_ulp_SUPLINIT = -1;
265 static gint ett_ulp_Notification = -1;
266 static gint ett_ulp_SUPLSTART = -1;
267 static gint ett_ulp_SETCapabilities = -1;
268 static gint ett_ulp_PosTechnology = -1;
269 static gint ett_ulp_PosProtocol = -1;
270 static gint ett_ulp_SUPLRESPONSE = -1;
271 static gint ett_ulp_SETAuthKey = -1;
272 static gint ett_ulp_SUPLPOSINIT = -1;
273 static gint ett_ulp_RequestedAssistData = -1;
274 static gint ett_ulp_NavigationModel = -1;
275 static gint ett_ulp_SatelliteInfo = -1;
276 static gint ett_ulp_SatelliteInfoElement = -1;
277 static gint ett_ulp_SUPLPOS = -1;
278 static gint ett_ulp_PosPayLoad = -1;
279 static gint ett_ulp_SUPLEND = -1;
280 static gint ett_ulp_SUPLAUTHREQ = -1;
281 static gint ett_ulp_SUPLAUTHRESP = -1;
282 static gint ett_ulp_SPCAuthKey = -1;
283 static gint ett_ulp_Version = -1;
284 static gint ett_ulp_SessionID = -1;
285 static gint ett_ulp_SetSessionID = -1;
286 static gint ett_ulp_SETId = -1;
287 static gint ett_ulp_SlpSessionID = -1;
288 static gint ett_ulp_IPAddress = -1;
289 static gint ett_ulp_SLPAddress = -1;
290 static gint ett_ulp_LocationId = -1;
291 static gint ett_ulp_CellInfo = -1;
292 static gint ett_ulp_Position = -1;
293 static gint ett_ulp_PositionEstimate = -1;
294 static gint ett_ulp_T_uncertainty = -1;
295 static gint ett_ulp_AltitudeInfo = -1;
296 static gint ett_ulp_CdmaCellInformation = -1;
297 static gint ett_ulp_GsmCellInformation = -1;
298 static gint ett_ulp_WcdmaCellInformation = -1;
299 static gint ett_ulp_FrequencyInfo = -1;
300 static gint ett_ulp_FrequencySpecificInfo = -1;
301 static gint ett_ulp_FrequencyInfoFDD = -1;
302 static gint ett_ulp_FrequencyInfoTDD = -1;
303 static gint ett_ulp_NMR = -1;
304 static gint ett_ulp_NMRelement = -1;
305 static gint ett_ulp_MeasuredResultsList = -1;
306 static gint ett_ulp_MeasuredResults = -1;
307 static gint ett_ulp_CellMeasuredResultsList = -1;
308 static gint ett_ulp_CellMeasuredResults = -1;
309 static gint ett_ulp_T_modeSpecificInfo = -1;
310 static gint ett_ulp_T_fdd = -1;
311 static gint ett_ulp_T_tdd = -1;
312 static gint ett_ulp_TimeslotISCP_List = -1;
313 static gint ett_ulp_PrimaryCPICH_Info = -1;
314 static gint ett_ulp_QoP = -1;
315 static gint ett_ulp_Velocity = -1;
316 static gint ett_ulp_Horvel = -1;
317 static gint ett_ulp_Horandvervel = -1;
318 static gint ett_ulp_Horveluncert = -1;
319 static gint ett_ulp_Horandveruncert = -1;
321 /*--- End of included file: packet-ulp-ett.c ---*/
322 #line 73 "packet-ulp-template.c"
324 /* Include constants */
326 /*--- Included file: packet-ulp-val.h ---*/
327 #line 1 "packet-ulp-val.h"
328 #define maxReqLength 50
329 #define maxClientLength 50
330 #define maxCellMeas 32
334 /*--- End of included file: packet-ulp-val.h ---*/
335 #line 76 "packet-ulp-template.c"
339 /*--- Included file: packet-ulp-fn.c ---*/
340 #line 1 "packet-ulp-fn.c"
344 dissect_ulp_INTEGER_0_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
345 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
346 0U, 65535U, NULL, FALSE);
354 dissect_ulp_INTEGER_0_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
355 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
356 0U, 255U, NULL, FALSE);
362 static const per_sequence_t Version_sequence[] = {
363 { &hf_ulp_maj , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
364 { &hf_ulp_min , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
365 { &hf_ulp_servind , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
370 dissect_ulp_Version(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
371 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
372 ett_ulp_Version, Version_sequence);
380 dissect_ulp_T_msisdn(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
382 tvbuff_t *parameter_tvb;
385 /* "Hide" the first dissection to avoid double tree entries */
387 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
388 8, 8, ¶meter_tvb);
393 /* msisdn is ISDN-addressstring */
394 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, actx->pinfo);
395 dissect_gsm_map_ISDN_AddressString(TRUE, parameter_tvb, 0, &asn1_ctx, tree, hf_ulp_msisdn);
405 dissect_ulp_OCTET_STRING_SIZE_8(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
406 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
415 dissect_ulp_BIT_STRING_SIZE_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
416 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
417 34, 34, FALSE, NULL);
425 dissect_ulp_T_imsi(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
427 tvbuff_t *parameter_tvb;
430 /* "Hide" the first dissection to avoid double tree entries */
432 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
433 8, 8, ¶meter_tvb);
438 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, actx->pinfo);
439 dissect_gsm_map_IMSI(TRUE, parameter_tvb, 0, &asn1_ctx, tree, hf_ulp_imsi);
449 dissect_ulp_IA5String_SIZE_1_1000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
450 offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
459 dissect_ulp_OCTET_STRING_SIZE_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
460 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
469 dissect_ulp_OCTET_STRING_SIZE_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
470 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
477 static const value_string ulp_IPAddress_vals[] = {
478 { 0, "ipv4Address" },
479 { 1, "ipv6Address" },
483 static const per_choice_t IPAddress_choice[] = {
484 { 0, &hf_ulp_ipv4Address , ASN1_NO_EXTENSIONS , dissect_ulp_OCTET_STRING_SIZE_4 },
485 { 1, &hf_ulp_ipv6Address , ASN1_NO_EXTENSIONS , dissect_ulp_OCTET_STRING_SIZE_16 },
490 dissect_ulp_IPAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
491 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
492 ett_ulp_IPAddress, IPAddress_choice,
499 static const value_string ulp_SETId_vals[] = {
509 static const per_choice_t SETId_choice[] = {
510 { 0, &hf_ulp_msisdn , ASN1_EXTENSION_ROOT , dissect_ulp_T_msisdn },
511 { 1, &hf_ulp_mdn , ASN1_EXTENSION_ROOT , dissect_ulp_OCTET_STRING_SIZE_8 },
512 { 2, &hf_ulp_minsi , ASN1_EXTENSION_ROOT , dissect_ulp_BIT_STRING_SIZE_34 },
513 { 3, &hf_ulp_imsi , ASN1_EXTENSION_ROOT , dissect_ulp_T_imsi },
514 { 4, &hf_ulp_nai , ASN1_EXTENSION_ROOT , dissect_ulp_IA5String_SIZE_1_1000 },
515 { 5, &hf_ulp_iPAddress , ASN1_EXTENSION_ROOT , dissect_ulp_IPAddress },
520 dissect_ulp_SETId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
521 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
522 ett_ulp_SETId, SETId_choice,
529 static const per_sequence_t SetSessionID_sequence[] = {
530 { &hf_ulp_sessionId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
531 { &hf_ulp_setId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_SETId },
536 dissect_ulp_SetSessionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
537 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
538 ett_ulp_SetSessionID, SetSessionID_sequence);
546 dissect_ulp_FQDN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
547 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
548 1, 255, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-", 64,
555 static const value_string ulp_SLPAddress_vals[] = {
561 static const per_choice_t SLPAddress_choice[] = {
562 { 0, &hf_ulp_iPAddress , ASN1_EXTENSION_ROOT , dissect_ulp_IPAddress },
563 { 1, &hf_ulp_fQDN , ASN1_EXTENSION_ROOT , dissect_ulp_FQDN },
568 dissect_ulp_SLPAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
569 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
570 ett_ulp_SLPAddress, SLPAddress_choice,
577 static const per_sequence_t SlpSessionID_sequence[] = {
578 { &hf_ulp_sessionSlpID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_OCTET_STRING_SIZE_4 },
579 { &hf_ulp_slpId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_SLPAddress },
584 dissect_ulp_SlpSessionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
585 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
586 ett_ulp_SlpSessionID, SlpSessionID_sequence);
592 static const per_sequence_t SessionID_sequence[] = {
593 { &hf_ulp_setSessionID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_SetSessionID },
594 { &hf_ulp_slpSessionID , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_SlpSessionID },
599 dissect_ulp_SessionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
600 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
601 ett_ulp_SessionID, SessionID_sequence);
607 static const value_string ulp_PosMethod_vals[] = {
608 { 0, "agpsSETassisted" },
609 { 1, "agpsSETbased" },
610 { 2, "agpsSETassistedpref" },
611 { 3, "agpsSETbasedpref" },
612 { 4, "autonomousGPS" },
623 dissect_ulp_PosMethod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
624 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
625 10, NULL, TRUE, 0, NULL);
631 static const value_string ulp_NotificationType_vals[] = {
632 { 0, "noNotificationNoVerification" },
633 { 1, "notificationOnly" },
634 { 2, "notificationAndVerficationAllowedNA" },
635 { 3, "notificationAndVerficationDeniedNA" },
636 { 4, "privacyOverride" },
642 dissect_ulp_NotificationType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
643 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
644 5, NULL, TRUE, 0, NULL);
650 static const value_string ulp_EncodingType_vals[] = {
659 dissect_ulp_EncodingType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
660 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
661 3, NULL, TRUE, 0, NULL);
669 dissect_ulp_OCTET_STRING_SIZE_1_maxReqLength(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
670 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
671 1, maxReqLength, NULL);
677 static const value_string ulp_FormatIndicator_vals[] = {
678 { 0, "logicalName" },
679 { 1, "e-mailAddress" },
685 { 7, "imsPublicIdentity" },
691 dissect_ulp_FormatIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
692 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
693 8, NULL, TRUE, 0, NULL);
701 dissect_ulp_OCTET_STRING_SIZE_1_maxClientLength(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
702 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
703 1, maxClientLength, NULL);
709 static const per_sequence_t Notification_sequence[] = {
710 { &hf_ulp_notificationType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_NotificationType },
711 { &hf_ulp_encodingType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_EncodingType },
712 { &hf_ulp_requestorId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_OCTET_STRING_SIZE_1_maxReqLength },
713 { &hf_ulp_requestorIdType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_FormatIndicator },
714 { &hf_ulp_clientName , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_OCTET_STRING_SIZE_1_maxClientLength },
715 { &hf_ulp_clientNameType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_FormatIndicator },
720 dissect_ulp_Notification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
721 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
722 ett_ulp_Notification, Notification_sequence);
730 dissect_ulp_INTEGER_0_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
731 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
732 0U, 127U, NULL, FALSE);
740 dissect_ulp_INTEGER_0_7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
741 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
742 0U, 7U, NULL, FALSE);
748 static const per_sequence_t QoP_sequence[] = {
749 { &hf_ulp_horacc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_127 },
750 { &hf_ulp_veracc , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_127 },
751 { &hf_ulp_maxLocAge , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_65535 },
752 { &hf_ulp_delay , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_7 },
757 dissect_ulp_QoP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
758 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
759 ett_ulp_QoP, QoP_sequence);
765 static const value_string ulp_SLPMode_vals[] = {
773 dissect_ulp_SLPMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
774 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
775 2, NULL, FALSE, 0, NULL);
783 dissect_ulp_MAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
784 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
785 64, 64, FALSE, NULL);
793 dissect_ulp_KeyIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
794 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
795 128, 128, FALSE, NULL);
801 static const per_sequence_t SUPLINIT_sequence[] = {
802 { &hf_ulp_posMethod , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PosMethod },
803 { &hf_ulp_notification , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Notification },
804 { &hf_ulp_sLPAddress , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SLPAddress },
805 { &hf_ulp_qoP , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_QoP },
806 { &hf_ulp_sLPMode , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_SLPMode },
807 { &hf_ulp_mAC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_MAC },
808 { &hf_ulp_keyIdentity , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_KeyIdentity },
813 dissect_ulp_SUPLINIT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
814 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
815 ett_ulp_SUPLINIT, SUPLINIT_sequence);
823 dissect_ulp_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
824 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
830 static const per_sequence_t PosTechnology_sequence[] = {
831 { &hf_ulp_agpsSETassisted , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
832 { &hf_ulp_agpsSETBased , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
833 { &hf_ulp_autonomousGPS , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
834 { &hf_ulp_aFLT , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
835 { &hf_ulp_eCID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
836 { &hf_ulp_eOTD , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
837 { &hf_ulp_oTDOA , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
842 dissect_ulp_PosTechnology(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
843 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
844 ett_ulp_PosTechnology, PosTechnology_sequence);
850 static const value_string ulp_PrefMethod_vals[] = {
851 { 0, "agpsSETassistedPreferred" },
852 { 1, "agpsSETBasedPreferred" },
853 { 2, "noPreference" },
859 dissect_ulp_PrefMethod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
860 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
861 3, NULL, FALSE, 0, NULL);
867 static const per_sequence_t PosProtocol_sequence[] = {
868 { &hf_ulp_tia801 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
869 { &hf_ulp_rrlp , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
870 { &hf_ulp_rrc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
875 dissect_ulp_PosProtocol(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
876 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
877 ett_ulp_PosProtocol, PosProtocol_sequence);
883 static const per_sequence_t SETCapabilities_sequence[] = {
884 { &hf_ulp_posTechnology , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PosTechnology },
885 { &hf_ulp_prefMethod , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PrefMethod },
886 { &hf_ulp_posProtocol , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PosProtocol },
891 dissect_ulp_SETCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
892 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
893 ett_ulp_SETCapabilities, SETCapabilities_sequence);
901 dissect_ulp_INTEGER_0_999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
902 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
903 0U, 999U, NULL, FALSE);
911 dissect_ulp_INTEGER_0_1023(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
912 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
913 0U, 1023U, NULL, FALSE);
921 dissect_ulp_INTEGER_0_63(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
922 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
923 0U, 63U, NULL, FALSE);
929 static const per_sequence_t NMRelement_sequence[] = {
930 { &hf_ulp_aRFCN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_1023 },
931 { &hf_ulp_bSIC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_63 },
932 { &hf_ulp_rxLev , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_63 },
937 dissect_ulp_NMRelement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
938 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
939 ett_ulp_NMRelement, NMRelement_sequence);
945 static const per_sequence_t NMR_sequence_of[1] = {
946 { &hf_ulp_NMR_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_NMRelement },
950 dissect_ulp_NMR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
951 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
952 ett_ulp_NMR, NMR_sequence_of,
959 static const per_sequence_t GsmCellInformation_sequence[] = {
960 { &hf_ulp_refMCC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_999 },
961 { &hf_ulp_refMNC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_999 },
962 { &hf_ulp_refLAC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
963 { &hf_ulp_refCI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
964 { &hf_ulp_nMR , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_NMR },
965 { &hf_ulp_tA , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_255 },
970 dissect_ulp_GsmCellInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
971 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
972 ett_ulp_GsmCellInformation, GsmCellInformation_sequence);
980 dissect_ulp_INTEGER_0_268435455(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
981 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
982 0U, 268435455U, NULL, FALSE);
990 dissect_ulp_UARFCN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
991 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
992 0U, 16383U, NULL, FALSE);
998 static const per_sequence_t FrequencyInfoFDD_sequence[] = {
999 { &hf_ulp_uarfcn_UL , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_UARFCN },
1000 { &hf_ulp_uarfcn_DL , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_UARFCN },
1001 { NULL, 0, 0, NULL }
1005 dissect_ulp_FrequencyInfoFDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1006 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1007 ett_ulp_FrequencyInfoFDD, FrequencyInfoFDD_sequence);
1013 static const per_sequence_t FrequencyInfoTDD_sequence[] = {
1014 { &hf_ulp_uarfcn_Nt , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_UARFCN },
1015 { NULL, 0, 0, NULL }
1019 dissect_ulp_FrequencyInfoTDD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1020 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1021 ett_ulp_FrequencyInfoTDD, FrequencyInfoTDD_sequence);
1027 static const value_string ulp_FrequencySpecificInfo_vals[] = {
1033 static const per_choice_t FrequencySpecificInfo_choice[] = {
1034 { 0, &hf_ulp_fdd_fr , ASN1_EXTENSION_ROOT , dissect_ulp_FrequencyInfoFDD },
1035 { 1, &hf_ulp_tdd_fr , ASN1_EXTENSION_ROOT , dissect_ulp_FrequencyInfoTDD },
1036 { 0, NULL, 0, NULL }
1040 dissect_ulp_FrequencySpecificInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1041 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1042 ett_ulp_FrequencySpecificInfo, FrequencySpecificInfo_choice,
1049 static const per_sequence_t FrequencyInfo_sequence[] = {
1050 { &hf_ulp_modeSpecificFrequencyInfo, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_FrequencySpecificInfo },
1051 { NULL, 0, 0, NULL }
1055 dissect_ulp_FrequencyInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1056 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1057 ett_ulp_FrequencyInfo, FrequencyInfo_sequence);
1065 dissect_ulp_INTEGER_0_511(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1066 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1067 0U, 511U, NULL, FALSE);
1075 dissect_ulp_UTRA_CarrierRSSI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1076 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1077 0U, 127U, NULL, FALSE);
1083 static const per_sequence_t PrimaryCPICH_Info_sequence[] = {
1084 { &hf_ulp_primaryScramblingCode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_511 },
1085 { NULL, 0, 0, NULL }
1089 dissect_ulp_PrimaryCPICH_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1090 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1091 ett_ulp_PrimaryCPICH_Info, PrimaryCPICH_Info_sequence);
1099 dissect_ulp_CPICH_Ec_N0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1100 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1101 0U, 63U, NULL, FALSE);
1109 dissect_ulp_CPICH_RSCP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1110 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1111 0U, 127U, NULL, FALSE);
1119 dissect_ulp_Pathloss(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1120 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1121 46U, 173U, NULL, FALSE);
1127 static const per_sequence_t T_fdd_sequence[] = {
1128 { &hf_ulp_primaryCPICH_Info, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_PrimaryCPICH_Info },
1129 { &hf_ulp_cpich_Ec_N0 , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_CPICH_Ec_N0 },
1130 { &hf_ulp_cpich_RSCP , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_CPICH_RSCP },
1131 { &hf_ulp_pathloss , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_Pathloss },
1132 { NULL, 0, 0, NULL }
1136 dissect_ulp_T_fdd(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1137 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1138 ett_ulp_T_fdd, T_fdd_sequence);
1146 dissect_ulp_CellParametersID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1147 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1148 0U, 127U, NULL, FALSE);
1156 dissect_ulp_TGSN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1157 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1158 0U, 14U, NULL, FALSE);
1166 dissect_ulp_PrimaryCCPCH_RSCP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1167 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1168 0U, 127U, NULL, FALSE);
1176 dissect_ulp_TimeslotISCP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1177 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1178 0U, 127U, NULL, FALSE);
1184 static const per_sequence_t TimeslotISCP_List_sequence_of[1] = {
1185 { &hf_ulp_TimeslotISCP_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_TimeslotISCP },
1189 dissect_ulp_TimeslotISCP_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1190 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1191 ett_ulp_TimeslotISCP_List, TimeslotISCP_List_sequence_of,
1198 static const per_sequence_t T_tdd_sequence[] = {
1199 { &hf_ulp_cellParametersID, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_CellParametersID },
1200 { &hf_ulp_proposedTGSN , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_TGSN },
1201 { &hf_ulp_primaryCCPCH_RSCP, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_PrimaryCCPCH_RSCP },
1202 { &hf_ulp_pathloss , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_Pathloss },
1203 { &hf_ulp_timeslotISCP_List, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_TimeslotISCP_List },
1204 { NULL, 0, 0, NULL }
1208 dissect_ulp_T_tdd(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1209 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1210 ett_ulp_T_tdd, T_tdd_sequence);
1216 static const value_string ulp_T_modeSpecificInfo_vals[] = {
1222 static const per_choice_t T_modeSpecificInfo_choice[] = {
1223 { 0, &hf_ulp_fdd , ASN1_NO_EXTENSIONS , dissect_ulp_T_fdd },
1224 { 1, &hf_ulp_tdd , ASN1_NO_EXTENSIONS , dissect_ulp_T_tdd },
1225 { 0, NULL, 0, NULL }
1229 dissect_ulp_T_modeSpecificInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1230 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1231 ett_ulp_T_modeSpecificInfo, T_modeSpecificInfo_choice,
1238 static const per_sequence_t CellMeasuredResults_sequence[] = {
1239 { &hf_ulp_cellIdentity , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_268435455 },
1240 { &hf_ulp_modeSpecificInfo, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_T_modeSpecificInfo },
1241 { NULL, 0, 0, NULL }
1245 dissect_ulp_CellMeasuredResults(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1246 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1247 ett_ulp_CellMeasuredResults, CellMeasuredResults_sequence);
1253 static const per_sequence_t CellMeasuredResultsList_sequence_of[1] = {
1254 { &hf_ulp_CellMeasuredResultsList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_CellMeasuredResults },
1258 dissect_ulp_CellMeasuredResultsList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1259 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1260 ett_ulp_CellMeasuredResultsList, CellMeasuredResultsList_sequence_of,
1267 static const per_sequence_t MeasuredResults_sequence[] = {
1268 { &hf_ulp_frequencyInfo , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_FrequencyInfo },
1269 { &hf_ulp_utra_CarrierRSSI, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_UTRA_CarrierRSSI },
1270 { &hf_ulp_cellMeasuredResultsList, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_CellMeasuredResultsList },
1271 { NULL, 0, 0, NULL }
1275 dissect_ulp_MeasuredResults(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1276 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1277 ett_ulp_MeasuredResults, MeasuredResults_sequence);
1283 static const per_sequence_t MeasuredResultsList_sequence_of[1] = {
1284 { &hf_ulp_MeasuredResultsList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_MeasuredResults },
1288 dissect_ulp_MeasuredResultsList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1289 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1290 ett_ulp_MeasuredResultsList, MeasuredResultsList_sequence_of,
1297 static const per_sequence_t WcdmaCellInformation_sequence[] = {
1298 { &hf_ulp_refMCC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_999 },
1299 { &hf_ulp_refMNC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_999 },
1300 { &hf_ulp_refUC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_268435455 },
1301 { &hf_ulp_frequencyInfo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_FrequencyInfo },
1302 { &hf_ulp_primaryScramblingCode, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_511 },
1303 { &hf_ulp_measuredResultsList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_MeasuredResultsList },
1304 { NULL, 0, 0, NULL }
1308 dissect_ulp_WcdmaCellInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1309 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1310 ett_ulp_WcdmaCellInformation, WcdmaCellInformation_sequence);
1318 dissect_ulp_INTEGER_0_32767(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1319 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1320 0U, 32767U, NULL, FALSE);
1328 dissect_ulp_INTEGER_0_4194303(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1329 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1330 0U, 4194303U, NULL, FALSE);
1338 dissect_ulp_INTEGER_0_8388607(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1339 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1340 0U, 8388607U, NULL, FALSE);
1346 static const per_sequence_t CdmaCellInformation_sequence[] = {
1347 { &hf_ulp_refNID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
1348 { &hf_ulp_refSID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_32767 },
1349 { &hf_ulp_refBASEID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
1350 { &hf_ulp_refBASELAT , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4194303 },
1351 { &hf_ulp_reBASELONG , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_8388607 },
1352 { &hf_ulp_refREFPN , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_511 },
1353 { &hf_ulp_refWeekNumber , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
1354 { &hf_ulp_refSeconds , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4194303 },
1355 { NULL, 0, 0, NULL }
1359 dissect_ulp_CdmaCellInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1360 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1361 ett_ulp_CdmaCellInformation, CdmaCellInformation_sequence);
1367 static const value_string ulp_CellInfo_vals[] = {
1374 static const per_choice_t CellInfo_choice[] = {
1375 { 0, &hf_ulp_gsmCell , ASN1_EXTENSION_ROOT , dissect_ulp_GsmCellInformation },
1376 { 1, &hf_ulp_wcdmaCell , ASN1_EXTENSION_ROOT , dissect_ulp_WcdmaCellInformation },
1377 { 2, &hf_ulp_cdmaCell , ASN1_EXTENSION_ROOT , dissect_ulp_CdmaCellInformation },
1378 { 0, NULL, 0, NULL }
1382 dissect_ulp_CellInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1383 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1384 ett_ulp_CellInfo, CellInfo_choice,
1391 static const value_string ulp_Status_vals[] = {
1400 dissect_ulp_Status(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1401 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1402 3, NULL, TRUE, 0, NULL);
1408 static const per_sequence_t LocationId_sequence[] = {
1409 { &hf_ulp_cellInfo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_CellInfo },
1410 { &hf_ulp_status , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_Status },
1411 { NULL, 0, 0, NULL }
1415 dissect_ulp_LocationId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1416 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1417 ett_ulp_LocationId, LocationId_sequence);
1423 static const per_sequence_t SUPLSTART_sequence[] = {
1424 { &hf_ulp_sETCapabilities , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_SETCapabilities },
1425 { &hf_ulp_locationId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_LocationId },
1426 { &hf_ulp_qoP , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_QoP },
1427 { NULL, 0, 0, NULL }
1431 dissect_ulp_SUPLSTART(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1432 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1433 ett_ulp_SUPLSTART, SUPLSTART_sequence);
1441 dissect_ulp_BIT_STRING_SIZE_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1442 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1443 128, 128, FALSE, NULL);
1451 dissect_ulp_BIT_STRING_SIZE_256(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1452 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1453 256, 256, FALSE, NULL);
1459 static const value_string ulp_SETAuthKey_vals[] = {
1465 static const per_choice_t SETAuthKey_choice[] = {
1466 { 0, &hf_ulp_shortKey , ASN1_EXTENSION_ROOT , dissect_ulp_BIT_STRING_SIZE_128 },
1467 { 1, &hf_ulp_longKey , ASN1_EXTENSION_ROOT , dissect_ulp_BIT_STRING_SIZE_256 },
1468 { 0, NULL, 0, NULL }
1472 dissect_ulp_SETAuthKey(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1473 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1474 ett_ulp_SETAuthKey, SETAuthKey_choice,
1483 dissect_ulp_KeyIdentity4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1484 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1485 128, 128, FALSE, NULL);
1491 static const per_sequence_t SUPLRESPONSE_sequence[] = {
1492 { &hf_ulp_posMethod , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PosMethod },
1493 { &hf_ulp_sLPAddress , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SLPAddress },
1494 { &hf_ulp_sETAuthKey , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SETAuthKey },
1495 { &hf_ulp_keyIdentity4 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_KeyIdentity4 },
1496 { NULL, 0, 0, NULL }
1500 dissect_ulp_SUPLRESPONSE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1501 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1502 ett_ulp_SUPLRESPONSE, SUPLRESPONSE_sequence);
1510 dissect_ulp_INTEGER_0_167(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1511 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1512 0U, 167U, NULL, FALSE);
1520 dissect_ulp_INTEGER_0_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1521 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1522 0U, 31U, NULL, FALSE);
1530 dissect_ulp_INTEGER_0_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1531 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1532 0U, 10U, NULL, FALSE);
1538 static const per_sequence_t SatelliteInfoElement_sequence[] = {
1539 { &hf_ulp_satId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_63 },
1540 { &hf_ulp_iODE , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
1541 { NULL, 0, 0, NULL }
1545 dissect_ulp_SatelliteInfoElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1546 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1547 ett_ulp_SatelliteInfoElement, SatelliteInfoElement_sequence);
1553 static const per_sequence_t SatelliteInfo_sequence_of[1] = {
1554 { &hf_ulp_SatelliteInfo_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_SatelliteInfoElement },
1558 dissect_ulp_SatelliteInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1559 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1560 ett_ulp_SatelliteInfo, SatelliteInfo_sequence_of,
1567 static const per_sequence_t NavigationModel_sequence[] = {
1568 { &hf_ulp_gpsWeek , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_1023 },
1569 { &hf_ulp_gpsToe , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_167 },
1570 { &hf_ulp_nSAT , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_31 },
1571 { &hf_ulp_toeLimit , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_10 },
1572 { &hf_ulp_satInfo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SatelliteInfo },
1573 { NULL, 0, 0, NULL }
1577 dissect_ulp_NavigationModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1578 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1579 ett_ulp_NavigationModel, NavigationModel_sequence);
1585 static const per_sequence_t RequestedAssistData_sequence[] = {
1586 { &hf_ulp_almanacRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1587 { &hf_ulp_utcModelRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1588 { &hf_ulp_ionosphericModelRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1589 { &hf_ulp_dgpsCorrectionsRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1590 { &hf_ulp_referenceLocationRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1591 { &hf_ulp_referenceTimeRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1592 { &hf_ulp_acquisitionAssistanceRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1593 { &hf_ulp_realTimeIntegrityRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1594 { &hf_ulp_navigationModelRequested, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1595 { &hf_ulp_navigationModelData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_NavigationModel },
1596 { NULL, 0, 0, NULL }
1600 dissect_ulp_RequestedAssistData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1601 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1602 ett_ulp_RequestedAssistData, RequestedAssistData_sequence);
1610 dissect_ulp_UTCTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1611 offset = dissect_per_VisibleString(tvb, offset, actx, tree, hf_index,
1612 NO_BOUND, NO_BOUND);
1618 static const value_string ulp_T_latitudeSign_vals[] = {
1626 dissect_ulp_T_latitudeSign(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1627 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1628 2, NULL, FALSE, 0, NULL);
1636 dissect_ulp_INTEGER_M8388608_8388607(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1637 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1638 -8388608, 8388607U, NULL, FALSE);
1646 dissect_ulp_INTEGER_0_180(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1647 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1648 0U, 180U, NULL, FALSE);
1654 static const per_sequence_t T_uncertainty_sequence[] = {
1655 { &hf_ulp_uncertaintySemiMajor, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_127 },
1656 { &hf_ulp_uncertaintySemiMinor, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_127 },
1657 { &hf_ulp_orientationMajorAxis, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_180 },
1658 { NULL, 0, 0, NULL }
1662 dissect_ulp_T_uncertainty(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1663 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1664 ett_ulp_T_uncertainty, T_uncertainty_sequence);
1672 dissect_ulp_INTEGER_0_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1673 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1674 0U, 100U, NULL, FALSE);
1680 static const value_string ulp_T_altitudeDirection_vals[] = {
1688 dissect_ulp_T_altitudeDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1689 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1690 2, NULL, FALSE, 0, NULL);
1696 static const per_sequence_t AltitudeInfo_sequence[] = {
1697 { &hf_ulp_altitudeDirection, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_altitudeDirection },
1698 { &hf_ulp_altitude , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_32767 },
1699 { &hf_ulp_altUncertainty , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_127 },
1700 { NULL, 0, 0, NULL }
1704 dissect_ulp_AltitudeInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1705 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1706 ett_ulp_AltitudeInfo, AltitudeInfo_sequence);
1712 static const per_sequence_t PositionEstimate_sequence[] = {
1713 { &hf_ulp_latitudeSign , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_latitudeSign },
1714 { &hf_ulp_latitude , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_8388607 },
1715 { &hf_ulp_longitude , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_M8388608_8388607 },
1716 { &hf_ulp_uncertainty , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_uncertainty },
1717 { &hf_ulp_confidence , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_100 },
1718 { &hf_ulp_altitudeInfo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_AltitudeInfo },
1719 { NULL, 0, 0, NULL }
1723 dissect_ulp_PositionEstimate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1724 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1725 ett_ulp_PositionEstimate, PositionEstimate_sequence);
1733 dissect_ulp_BIT_STRING_SIZE_9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1734 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1743 dissect_ulp_BIT_STRING_SIZE_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1744 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1745 16, 16, FALSE, NULL);
1751 static const per_sequence_t Horvel_sequence[] = {
1752 { &hf_ulp_bearing , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_9 },
1753 { &hf_ulp_horspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_16 },
1754 { NULL, 0, 0, NULL }
1758 dissect_ulp_Horvel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1759 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1760 ett_ulp_Horvel, Horvel_sequence);
1768 dissect_ulp_BIT_STRING_SIZE_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1769 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1778 dissect_ulp_BIT_STRING_SIZE_8(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1779 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1786 static const per_sequence_t Horandvervel_sequence[] = {
1787 { &hf_ulp_verdirect , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_1 },
1788 { &hf_ulp_bearing , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_9 },
1789 { &hf_ulp_horspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_16 },
1790 { &hf_ulp_verspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_8 },
1791 { NULL, 0, 0, NULL }
1795 dissect_ulp_Horandvervel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1796 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1797 ett_ulp_Horandvervel, Horandvervel_sequence);
1803 static const per_sequence_t Horveluncert_sequence[] = {
1804 { &hf_ulp_bearing , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_9 },
1805 { &hf_ulp_horspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_16 },
1806 { &hf_ulp_uncertspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_8 },
1807 { NULL, 0, 0, NULL }
1811 dissect_ulp_Horveluncert(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1812 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1813 ett_ulp_Horveluncert, Horveluncert_sequence);
1819 static const per_sequence_t Horandveruncert_sequence[] = {
1820 { &hf_ulp_verdirect , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_1 },
1821 { &hf_ulp_bearing , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_9 },
1822 { &hf_ulp_horspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_16 },
1823 { &hf_ulp_verspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_8 },
1824 { &hf_ulp_horuncertspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_8 },
1825 { &hf_ulp_veruncertspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_8 },
1826 { NULL, 0, 0, NULL }
1830 dissect_ulp_Horandveruncert(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1831 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1832 ett_ulp_Horandveruncert, Horandveruncert_sequence);
1838 static const value_string ulp_Velocity_vals[] = {
1840 { 1, "horandvervel" },
1841 { 2, "horveluncert" },
1842 { 3, "horandveruncert" },
1846 static const per_choice_t Velocity_choice[] = {
1847 { 0, &hf_ulp_horvel , ASN1_EXTENSION_ROOT , dissect_ulp_Horvel },
1848 { 1, &hf_ulp_horandvervel , ASN1_EXTENSION_ROOT , dissect_ulp_Horandvervel },
1849 { 2, &hf_ulp_horveluncert , ASN1_EXTENSION_ROOT , dissect_ulp_Horveluncert },
1850 { 3, &hf_ulp_horandveruncert , ASN1_EXTENSION_ROOT , dissect_ulp_Horandveruncert },
1851 { 0, NULL, 0, NULL }
1855 dissect_ulp_Velocity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1856 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1857 ett_ulp_Velocity, Velocity_choice,
1864 static const per_sequence_t Position_sequence[] = {
1865 { &hf_ulp_timestamp , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_UTCTime },
1866 { &hf_ulp_positionEstimate, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PositionEstimate },
1867 { &hf_ulp_velocity , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Velocity },
1868 { NULL, 0, 0, NULL }
1872 dissect_ulp_Position(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1873 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1874 ett_ulp_Position, Position_sequence);
1882 dissect_ulp_OCTET_STRING_SIZE_1_8192(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1883 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1892 dissect_ulp_T_rrlpPayload(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1896 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1897 1, 8192, &rrlp_tvb);
1900 if (rrlp_tvb && rrlp_handle) {
1901 call_dissector(rrlp_handle, rrlp_tvb, actx->pinfo, tree);
1910 static const value_string ulp_PosPayLoad_vals[] = {
1911 { 0, "tia801payload" },
1912 { 1, "rrcPayload" },
1913 { 2, "rrlpPayload" },
1917 static const per_choice_t PosPayLoad_choice[] = {
1918 { 0, &hf_ulp_tia801payload , ASN1_EXTENSION_ROOT , dissect_ulp_OCTET_STRING_SIZE_1_8192 },
1919 { 1, &hf_ulp_rrcPayload , ASN1_EXTENSION_ROOT , dissect_ulp_OCTET_STRING_SIZE_1_8192 },
1920 { 2, &hf_ulp_rrlpPayload , ASN1_EXTENSION_ROOT , dissect_ulp_T_rrlpPayload },
1921 { 0, NULL, 0, NULL }
1925 dissect_ulp_PosPayLoad(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1926 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1927 ett_ulp_PosPayLoad, PosPayLoad_choice,
1934 static const per_sequence_t SUPLPOS_sequence[] = {
1935 { &hf_ulp_posPayLoad , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_PosPayLoad },
1936 { &hf_ulp_velocity , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Velocity },
1937 { NULL, 0, 0, NULL }
1941 dissect_ulp_SUPLPOS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1942 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1943 ett_ulp_SUPLPOS, SUPLPOS_sequence);
1951 dissect_ulp_Ver(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1952 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1953 64, 64, FALSE, NULL);
1959 static const per_sequence_t SUPLPOSINIT_sequence[] = {
1960 { &hf_ulp_sETCapabilities , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_SETCapabilities },
1961 { &hf_ulp_requestedAssistData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_RequestedAssistData },
1962 { &hf_ulp_locationId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_LocationId },
1963 { &hf_ulp_position , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Position },
1964 { &hf_ulp_sUPLPOS , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SUPLPOS },
1965 { &hf_ulp_ver , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Ver },
1966 { NULL, 0, 0, NULL }
1970 dissect_ulp_SUPLPOSINIT(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1971 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1972 ett_ulp_SUPLPOSINIT, SUPLPOSINIT_sequence);
1978 static const value_string ulp_StatusCode_vals[] = {
1979 { 0, "unspecified" },
1980 { 1, "systemFailure" },
1981 { 2, "unexpectedMessage" },
1982 { 3, "protocolError" },
1983 { 4, "dataMissing" },
1984 { 5, "unexpectedDataValue" },
1985 { 6, "posMethodFailure" },
1986 { 7, "posMethodMismatch" },
1987 { 8, "posProtocolMismatch" },
1988 { 9, "targetSETnotReachable" },
1989 { 10, "versionNotSupported" },
1990 { 11, "resourceShortage" },
1991 { 12, "invalidSessionId" },
1992 { 13, "nonProxyModeNotSupported" },
1993 { 14, "proxyModeNotSupported" },
1994 { 15, "positioningNotPermitted" },
1995 { 16, "authNetFailure" },
1996 { 17, "authSuplinitFailure" },
1997 { 100, "consentDeniedByUser" },
1998 { 101, "consentGrantedByUser" },
2002 static guint32 StatusCode_value_map[20+0] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 100, 101};
2005 dissect_ulp_StatusCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2006 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2007 20, NULL, TRUE, 0, StatusCode_value_map);
2013 static const per_sequence_t SUPLEND_sequence[] = {
2014 { &hf_ulp_position , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Position },
2015 { &hf_ulp_statusCode , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_StatusCode },
2016 { &hf_ulp_ver , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_Ver },
2017 { NULL, 0, 0, NULL }
2021 dissect_ulp_SUPLEND(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2022 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2023 ett_ulp_SUPLEND, SUPLEND_sequence);
2031 dissect_ulp_SETNonce(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2032 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2033 128, 128, FALSE, NULL);
2041 dissect_ulp_KeyIdentity2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2042 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2043 128, 128, FALSE, NULL);
2049 static const per_sequence_t SUPLAUTHREQ_sequence[] = {
2050 { &hf_ulp_sETNonce , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_SETNonce },
2051 { &hf_ulp_keyIdentity2 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_KeyIdentity2 },
2052 { NULL, 0, 0, NULL }
2056 dissect_ulp_SUPLAUTHREQ(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2057 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2058 ett_ulp_SUPLAUTHREQ, SUPLAUTHREQ_sequence);
2064 static const value_string ulp_SPCAuthKey_vals[] = {
2070 static const per_choice_t SPCAuthKey_choice[] = {
2071 { 0, &hf_ulp_shortKey , ASN1_EXTENSION_ROOT , dissect_ulp_BIT_STRING_SIZE_128 },
2072 { 1, &hf_ulp_longKey , ASN1_EXTENSION_ROOT , dissect_ulp_BIT_STRING_SIZE_256 },
2073 { 0, NULL, 0, NULL }
2077 dissect_ulp_SPCAuthKey(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2078 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2079 ett_ulp_SPCAuthKey, SPCAuthKey_choice,
2088 dissect_ulp_KeyIdentity3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2089 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2090 128, 128, FALSE, NULL);
2096 static const per_sequence_t SUPLAUTHRESP_sequence[] = {
2097 { &hf_ulp_sPCAuthKey , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SPCAuthKey },
2098 { &hf_ulp_keyIdentity3 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_KeyIdentity3 },
2099 { &hf_ulp_statusCode , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_StatusCode },
2100 { NULL, 0, 0, NULL }
2104 dissect_ulp_SUPLAUTHRESP(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2105 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2106 ett_ulp_SUPLAUTHRESP, SUPLAUTHRESP_sequence);
2112 static const value_string ulp_UlpMessage_vals[] = {
2113 { 0, "msSUPLINIT" },
2114 { 1, "msSUPLSTART" },
2115 { 2, "msSUPLRESPONSE" },
2116 { 3, "msSUPLPOSINIT" },
2119 { 6, "msSUPLAUTHREQ" },
2120 { 7, "msSUPLAUTHRESP" },
2124 static const per_choice_t UlpMessage_choice[] = {
2125 { 0, &hf_ulp_msSUPLINIT , ASN1_EXTENSION_ROOT , dissect_ulp_SUPLINIT },
2126 { 1, &hf_ulp_msSUPLSTART , ASN1_EXTENSION_ROOT , dissect_ulp_SUPLSTART },
2127 { 2, &hf_ulp_msSUPLRESPONSE , ASN1_EXTENSION_ROOT , dissect_ulp_SUPLRESPONSE },
2128 { 3, &hf_ulp_msSUPLPOSINIT , ASN1_EXTENSION_ROOT , dissect_ulp_SUPLPOSINIT },
2129 { 4, &hf_ulp_msSUPLPOS , ASN1_EXTENSION_ROOT , dissect_ulp_SUPLPOS },
2130 { 5, &hf_ulp_msSUPLEND , ASN1_EXTENSION_ROOT , dissect_ulp_SUPLEND },
2131 { 6, &hf_ulp_msSUPLAUTHREQ , ASN1_EXTENSION_ROOT , dissect_ulp_SUPLAUTHREQ },
2132 { 7, &hf_ulp_msSUPLAUTHRESP , ASN1_EXTENSION_ROOT , dissect_ulp_SUPLAUTHRESP },
2133 { 0, NULL, 0, NULL }
2137 dissect_ulp_UlpMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2142 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2143 ett_ulp_UlpMessage, UlpMessage_choice,
2147 if (check_col(actx->pinfo->cinfo, COL_INFO))
2149 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "%s ", val_to_str(UlpMessage,ulp_UlpMessage_vals,"Unknown"));
2157 static const per_sequence_t ULP_PDU_sequence[] = {
2158 { &hf_ulp_length , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
2159 { &hf_ulp_version , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_Version },
2160 { &hf_ulp_sessionID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_SessionID },
2161 { &hf_ulp_message , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_UlpMessage },
2162 { NULL, 0, 0, NULL }
2166 dissect_ulp_ULP_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2168 proto_tree_add_item(tree, proto_ulp, tvb, 0, -1, FALSE);
2170 if (check_col(actx->pinfo->cinfo, COL_PROTOCOL))
2171 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, PSNAME);
2172 if (check_col(actx->pinfo->cinfo, COL_INFO))
2173 col_clear(actx->pinfo->cinfo, COL_INFO);
2175 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2176 ett_ulp_ULP_PDU, ULP_PDU_sequence);
2183 static void dissect_ULP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2184 asn1_ctx_t asn1_ctx;
2185 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, pinfo);
2186 dissect_ulp_ULP_PDU(tvb, 0, &asn1_ctx, tree, hf_ulp_ULP_PDU_PDU);
2190 /*--- End of included file: packet-ulp-fn.c ---*/
2191 #line 79 "packet-ulp-template.c"
2195 get_ulp_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
2197 /* PDU length = Message length */
2198 return tvb_get_ntohs(tvb,offset);
2202 dissect_ulp_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2204 tcp_dissect_pdus(tvb, pinfo, tree, ulp_desegment, ULP_HEADER_SIZE,
2205 get_ulp_pdu_len, dissect_ULP_PDU_PDU);
2208 void proto_reg_handoff_ulp(void);
2210 /*--- proto_register_ulp -------------------------------------------*/
2211 void proto_register_ulp(void) {
2213 /* List of fields */
2214 static hf_register_info hf[] = {
2217 /*--- Included file: packet-ulp-hfarr.c ---*/
2218 #line 1 "packet-ulp-hfarr.c"
2219 { &hf_ulp_ULP_PDU_PDU,
2220 { "ULP-PDU", "ulp.ULP_PDU",
2221 FT_NONE, BASE_NONE, NULL, 0,
2222 "ulp.ULP_PDU", HFILL }},
2224 { "length", "ulp.length",
2225 FT_UINT32, BASE_DEC, NULL, 0,
2226 "ulp.INTEGER_0_65535", HFILL }},
2228 { "version", "ulp.version",
2229 FT_NONE, BASE_NONE, NULL, 0,
2230 "ulp.Version", HFILL }},
2231 { &hf_ulp_sessionID,
2232 { "sessionID", "ulp.sessionID",
2233 FT_NONE, BASE_NONE, NULL, 0,
2234 "ulp.SessionID", HFILL }},
2236 { "message", "ulp.message",
2237 FT_UINT32, BASE_DEC, VALS(ulp_UlpMessage_vals), 0,
2238 "ulp.UlpMessage", HFILL }},
2239 { &hf_ulp_msSUPLINIT,
2240 { "msSUPLINIT", "ulp.msSUPLINIT",
2241 FT_NONE, BASE_NONE, NULL, 0,
2242 "ulp.SUPLINIT", HFILL }},
2243 { &hf_ulp_msSUPLSTART,
2244 { "msSUPLSTART", "ulp.msSUPLSTART",
2245 FT_NONE, BASE_NONE, NULL, 0,
2246 "ulp.SUPLSTART", HFILL }},
2247 { &hf_ulp_msSUPLRESPONSE,
2248 { "msSUPLRESPONSE", "ulp.msSUPLRESPONSE",
2249 FT_NONE, BASE_NONE, NULL, 0,
2250 "ulp.SUPLRESPONSE", HFILL }},
2251 { &hf_ulp_msSUPLPOSINIT,
2252 { "msSUPLPOSINIT", "ulp.msSUPLPOSINIT",
2253 FT_NONE, BASE_NONE, NULL, 0,
2254 "ulp.SUPLPOSINIT", HFILL }},
2255 { &hf_ulp_msSUPLPOS,
2256 { "msSUPLPOS", "ulp.msSUPLPOS",
2257 FT_NONE, BASE_NONE, NULL, 0,
2258 "ulp.SUPLPOS", HFILL }},
2259 { &hf_ulp_msSUPLEND,
2260 { "msSUPLEND", "ulp.msSUPLEND",
2261 FT_NONE, BASE_NONE, NULL, 0,
2262 "ulp.SUPLEND", HFILL }},
2263 { &hf_ulp_msSUPLAUTHREQ,
2264 { "msSUPLAUTHREQ", "ulp.msSUPLAUTHREQ",
2265 FT_NONE, BASE_NONE, NULL, 0,
2266 "ulp.SUPLAUTHREQ", HFILL }},
2267 { &hf_ulp_msSUPLAUTHRESP,
2268 { "msSUPLAUTHRESP", "ulp.msSUPLAUTHRESP",
2269 FT_NONE, BASE_NONE, NULL, 0,
2270 "ulp.SUPLAUTHRESP", HFILL }},
2271 { &hf_ulp_posMethod,
2272 { "posMethod", "ulp.posMethod",
2273 FT_UINT32, BASE_DEC, VALS(ulp_PosMethod_vals), 0,
2274 "ulp.PosMethod", HFILL }},
2275 { &hf_ulp_notification,
2276 { "notification", "ulp.notification",
2277 FT_NONE, BASE_NONE, NULL, 0,
2278 "ulp.Notification", HFILL }},
2279 { &hf_ulp_sLPAddress,
2280 { "sLPAddress", "ulp.sLPAddress",
2281 FT_UINT32, BASE_DEC, VALS(ulp_SLPAddress_vals), 0,
2282 "ulp.SLPAddress", HFILL }},
2285 FT_NONE, BASE_NONE, NULL, 0,
2286 "ulp.QoP", HFILL }},
2288 { "sLPMode", "ulp.sLPMode",
2289 FT_UINT32, BASE_DEC, VALS(ulp_SLPMode_vals), 0,
2290 "ulp.SLPMode", HFILL }},
2293 FT_BYTES, BASE_HEX, NULL, 0,
2294 "ulp.MAC", HFILL }},
2295 { &hf_ulp_keyIdentity,
2296 { "keyIdentity", "ulp.keyIdentity",
2297 FT_BYTES, BASE_HEX, NULL, 0,
2298 "ulp.KeyIdentity", HFILL }},
2299 { &hf_ulp_notificationType,
2300 { "notificationType", "ulp.notificationType",
2301 FT_UINT32, BASE_DEC, VALS(ulp_NotificationType_vals), 0,
2302 "ulp.NotificationType", HFILL }},
2303 { &hf_ulp_encodingType,
2304 { "encodingType", "ulp.encodingType",
2305 FT_UINT32, BASE_DEC, VALS(ulp_EncodingType_vals), 0,
2306 "ulp.EncodingType", HFILL }},
2307 { &hf_ulp_requestorId,
2308 { "requestorId", "ulp.requestorId",
2309 FT_BYTES, BASE_HEX, NULL, 0,
2310 "ulp.OCTET_STRING_SIZE_1_maxReqLength", HFILL }},
2311 { &hf_ulp_requestorIdType,
2312 { "requestorIdType", "ulp.requestorIdType",
2313 FT_UINT32, BASE_DEC, VALS(ulp_FormatIndicator_vals), 0,
2314 "ulp.FormatIndicator", HFILL }},
2315 { &hf_ulp_clientName,
2316 { "clientName", "ulp.clientName",
2317 FT_BYTES, BASE_HEX, NULL, 0,
2318 "ulp.OCTET_STRING_SIZE_1_maxClientLength", HFILL }},
2319 { &hf_ulp_clientNameType,
2320 { "clientNameType", "ulp.clientNameType",
2321 FT_UINT32, BASE_DEC, VALS(ulp_FormatIndicator_vals), 0,
2322 "ulp.FormatIndicator", HFILL }},
2323 { &hf_ulp_sETCapabilities,
2324 { "sETCapabilities", "ulp.sETCapabilities",
2325 FT_NONE, BASE_NONE, NULL, 0,
2326 "ulp.SETCapabilities", HFILL }},
2327 { &hf_ulp_locationId,
2328 { "locationId", "ulp.locationId",
2329 FT_NONE, BASE_NONE, NULL, 0,
2330 "ulp.LocationId", HFILL }},
2331 { &hf_ulp_posTechnology,
2332 { "posTechnology", "ulp.posTechnology",
2333 FT_NONE, BASE_NONE, NULL, 0,
2334 "ulp.PosTechnology", HFILL }},
2335 { &hf_ulp_prefMethod,
2336 { "prefMethod", "ulp.prefMethod",
2337 FT_UINT32, BASE_DEC, VALS(ulp_PrefMethod_vals), 0,
2338 "ulp.PrefMethod", HFILL }},
2339 { &hf_ulp_posProtocol,
2340 { "posProtocol", "ulp.posProtocol",
2341 FT_NONE, BASE_NONE, NULL, 0,
2342 "ulp.PosProtocol", HFILL }},
2343 { &hf_ulp_agpsSETassisted,
2344 { "agpsSETassisted", "ulp.agpsSETassisted",
2345 FT_BOOLEAN, 8, NULL, 0,
2346 "ulp.BOOLEAN", HFILL }},
2347 { &hf_ulp_agpsSETBased,
2348 { "agpsSETBased", "ulp.agpsSETBased",
2349 FT_BOOLEAN, 8, NULL, 0,
2350 "ulp.BOOLEAN", HFILL }},
2351 { &hf_ulp_autonomousGPS,
2352 { "autonomousGPS", "ulp.autonomousGPS",
2353 FT_BOOLEAN, 8, NULL, 0,
2354 "ulp.BOOLEAN", HFILL }},
2356 { "aFLT", "ulp.aFLT",
2357 FT_BOOLEAN, 8, NULL, 0,
2358 "ulp.BOOLEAN", HFILL }},
2360 { "eCID", "ulp.eCID",
2361 FT_BOOLEAN, 8, NULL, 0,
2362 "ulp.BOOLEAN", HFILL }},
2364 { "eOTD", "ulp.eOTD",
2365 FT_BOOLEAN, 8, NULL, 0,
2366 "ulp.BOOLEAN", HFILL }},
2368 { "oTDOA", "ulp.oTDOA",
2369 FT_BOOLEAN, 8, NULL, 0,
2370 "ulp.BOOLEAN", HFILL }},
2372 { "tia801", "ulp.tia801",
2373 FT_BOOLEAN, 8, NULL, 0,
2374 "ulp.BOOLEAN", HFILL }},
2376 { "rrlp", "ulp.rrlp",
2377 FT_BOOLEAN, 8, NULL, 0,
2378 "ulp.BOOLEAN", HFILL }},
2381 FT_BOOLEAN, 8, NULL, 0,
2382 "ulp.BOOLEAN", HFILL }},
2383 { &hf_ulp_sETAuthKey,
2384 { "sETAuthKey", "ulp.sETAuthKey",
2385 FT_UINT32, BASE_DEC, VALS(ulp_SETAuthKey_vals), 0,
2386 "ulp.SETAuthKey", HFILL }},
2387 { &hf_ulp_keyIdentity4,
2388 { "keyIdentity4", "ulp.keyIdentity4",
2389 FT_BYTES, BASE_HEX, NULL, 0,
2390 "ulp.KeyIdentity4", HFILL }},
2392 { "shortKey", "ulp.shortKey",
2393 FT_BYTES, BASE_HEX, NULL, 0,
2394 "ulp.BIT_STRING_SIZE_128", HFILL }},
2396 { "longKey", "ulp.longKey",
2397 FT_BYTES, BASE_HEX, NULL, 0,
2398 "ulp.BIT_STRING_SIZE_256", HFILL }},
2399 { &hf_ulp_requestedAssistData,
2400 { "requestedAssistData", "ulp.requestedAssistData",
2401 FT_NONE, BASE_NONE, NULL, 0,
2402 "ulp.RequestedAssistData", HFILL }},
2404 { "position", "ulp.position",
2405 FT_NONE, BASE_NONE, NULL, 0,
2406 "ulp.Position", HFILL }},
2408 { "sUPLPOS", "ulp.sUPLPOS",
2409 FT_NONE, BASE_NONE, NULL, 0,
2410 "ulp.SUPLPOS", HFILL }},
2413 FT_BYTES, BASE_HEX, NULL, 0,
2414 "ulp.Ver", HFILL }},
2415 { &hf_ulp_almanacRequested,
2416 { "almanacRequested", "ulp.almanacRequested",
2417 FT_BOOLEAN, 8, NULL, 0,
2418 "ulp.BOOLEAN", HFILL }},
2419 { &hf_ulp_utcModelRequested,
2420 { "utcModelRequested", "ulp.utcModelRequested",
2421 FT_BOOLEAN, 8, NULL, 0,
2422 "ulp.BOOLEAN", HFILL }},
2423 { &hf_ulp_ionosphericModelRequested,
2424 { "ionosphericModelRequested", "ulp.ionosphericModelRequested",
2425 FT_BOOLEAN, 8, NULL, 0,
2426 "ulp.BOOLEAN", HFILL }},
2427 { &hf_ulp_dgpsCorrectionsRequested,
2428 { "dgpsCorrectionsRequested", "ulp.dgpsCorrectionsRequested",
2429 FT_BOOLEAN, 8, NULL, 0,
2430 "ulp.BOOLEAN", HFILL }},
2431 { &hf_ulp_referenceLocationRequested,
2432 { "referenceLocationRequested", "ulp.referenceLocationRequested",
2433 FT_BOOLEAN, 8, NULL, 0,
2434 "ulp.BOOLEAN", HFILL }},
2435 { &hf_ulp_referenceTimeRequested,
2436 { "referenceTimeRequested", "ulp.referenceTimeRequested",
2437 FT_BOOLEAN, 8, NULL, 0,
2438 "ulp.BOOLEAN", HFILL }},
2439 { &hf_ulp_acquisitionAssistanceRequested,
2440 { "acquisitionAssistanceRequested", "ulp.acquisitionAssistanceRequested",
2441 FT_BOOLEAN, 8, NULL, 0,
2442 "ulp.BOOLEAN", HFILL }},
2443 { &hf_ulp_realTimeIntegrityRequested,
2444 { "realTimeIntegrityRequested", "ulp.realTimeIntegrityRequested",
2445 FT_BOOLEAN, 8, NULL, 0,
2446 "ulp.BOOLEAN", HFILL }},
2447 { &hf_ulp_navigationModelRequested,
2448 { "navigationModelRequested", "ulp.navigationModelRequested",
2449 FT_BOOLEAN, 8, NULL, 0,
2450 "ulp.BOOLEAN", HFILL }},
2451 { &hf_ulp_navigationModelData,
2452 { "navigationModelData", "ulp.navigationModelData",
2453 FT_NONE, BASE_NONE, NULL, 0,
2454 "ulp.NavigationModel", HFILL }},
2456 { "gpsWeek", "ulp.gpsWeek",
2457 FT_UINT32, BASE_DEC, NULL, 0,
2458 "ulp.INTEGER_0_1023", HFILL }},
2460 { "gpsToe", "ulp.gpsToe",
2461 FT_UINT32, BASE_DEC, NULL, 0,
2462 "ulp.INTEGER_0_167", HFILL }},
2464 { "nSAT", "ulp.nSAT",
2465 FT_UINT32, BASE_DEC, NULL, 0,
2466 "ulp.INTEGER_0_31", HFILL }},
2468 { "toeLimit", "ulp.toeLimit",
2469 FT_UINT32, BASE_DEC, NULL, 0,
2470 "ulp.INTEGER_0_10", HFILL }},
2472 { "satInfo", "ulp.satInfo",
2473 FT_UINT32, BASE_DEC, NULL, 0,
2474 "ulp.SatelliteInfo", HFILL }},
2475 { &hf_ulp_SatelliteInfo_item,
2476 { "Item", "ulp.SatelliteInfo_item",
2477 FT_NONE, BASE_NONE, NULL, 0,
2478 "ulp.SatelliteInfoElement", HFILL }},
2480 { "satId", "ulp.satId",
2481 FT_UINT32, BASE_DEC, NULL, 0,
2482 "ulp.INTEGER_0_63", HFILL }},
2484 { "iODE", "ulp.iODE",
2485 FT_UINT32, BASE_DEC, NULL, 0,
2486 "ulp.INTEGER_0_255", HFILL }},
2487 { &hf_ulp_posPayLoad,
2488 { "posPayLoad", "ulp.posPayLoad",
2489 FT_UINT32, BASE_DEC, VALS(ulp_PosPayLoad_vals), 0,
2490 "ulp.PosPayLoad", HFILL }},
2492 { "velocity", "ulp.velocity",
2493 FT_UINT32, BASE_DEC, VALS(ulp_Velocity_vals), 0,
2494 "ulp.Velocity", HFILL }},
2495 { &hf_ulp_tia801payload,
2496 { "tia801payload", "ulp.tia801payload",
2497 FT_BYTES, BASE_HEX, NULL, 0,
2498 "ulp.OCTET_STRING_SIZE_1_8192", HFILL }},
2499 { &hf_ulp_rrcPayload,
2500 { "rrcPayload", "ulp.rrcPayload",
2501 FT_BYTES, BASE_HEX, NULL, 0,
2502 "ulp.OCTET_STRING_SIZE_1_8192", HFILL }},
2503 { &hf_ulp_rrlpPayload,
2504 { "rrlpPayload", "ulp.rrlpPayload",
2505 FT_BYTES, BASE_HEX, NULL, 0,
2506 "ulp.T_rrlpPayload", HFILL }},
2507 { &hf_ulp_statusCode,
2508 { "statusCode", "ulp.statusCode",
2509 FT_UINT32, BASE_DEC, VALS(ulp_StatusCode_vals), 0,
2510 "ulp.StatusCode", HFILL }},
2512 { "sETNonce", "ulp.sETNonce",
2513 FT_BYTES, BASE_HEX, NULL, 0,
2514 "ulp.SETNonce", HFILL }},
2515 { &hf_ulp_keyIdentity2,
2516 { "keyIdentity2", "ulp.keyIdentity2",
2517 FT_BYTES, BASE_HEX, NULL, 0,
2518 "ulp.KeyIdentity2", HFILL }},
2519 { &hf_ulp_sPCAuthKey,
2520 { "sPCAuthKey", "ulp.sPCAuthKey",
2521 FT_UINT32, BASE_DEC, VALS(ulp_SPCAuthKey_vals), 0,
2522 "ulp.SPCAuthKey", HFILL }},
2523 { &hf_ulp_keyIdentity3,
2524 { "keyIdentity3", "ulp.keyIdentity3",
2525 FT_BYTES, BASE_HEX, NULL, 0,
2526 "ulp.KeyIdentity3", HFILL }},
2529 FT_UINT32, BASE_DEC, NULL, 0,
2530 "ulp.INTEGER_0_255", HFILL }},
2533 FT_UINT32, BASE_DEC, NULL, 0,
2534 "ulp.INTEGER_0_255", HFILL }},
2536 { "servind", "ulp.servind",
2537 FT_UINT32, BASE_DEC, NULL, 0,
2538 "ulp.INTEGER_0_255", HFILL }},
2539 { &hf_ulp_setSessionID,
2540 { "setSessionID", "ulp.setSessionID",
2541 FT_NONE, BASE_NONE, NULL, 0,
2542 "ulp.SetSessionID", HFILL }},
2543 { &hf_ulp_slpSessionID,
2544 { "slpSessionID", "ulp.slpSessionID",
2545 FT_NONE, BASE_NONE, NULL, 0,
2546 "ulp.SlpSessionID", HFILL }},
2547 { &hf_ulp_sessionId,
2548 { "sessionId", "ulp.sessionId",
2549 FT_UINT32, BASE_DEC, NULL, 0,
2550 "ulp.INTEGER_0_65535", HFILL }},
2552 { "setId", "ulp.setId",
2553 FT_UINT32, BASE_DEC, VALS(ulp_SETId_vals), 0,
2554 "ulp.SETId", HFILL }},
2556 { "msisdn", "ulp.msisdn",
2557 FT_BYTES, BASE_HEX, NULL, 0,
2558 "ulp.T_msisdn", HFILL }},
2561 FT_BYTES, BASE_HEX, NULL, 0,
2562 "ulp.OCTET_STRING_SIZE_8", HFILL }},
2565 FT_BYTES, BASE_HEX, NULL, 0,
2566 "ulp.BIT_STRING_SIZE_34", HFILL }},
2568 { "imsi", "ulp.imsi",
2569 FT_BYTES, BASE_HEX, NULL, 0,
2570 "ulp.T_imsi", HFILL }},
2573 FT_STRING, BASE_NONE, NULL, 0,
2574 "ulp.IA5String_SIZE_1_1000", HFILL }},
2575 { &hf_ulp_iPAddress,
2576 { "iPAddress", "ulp.iPAddress",
2577 FT_UINT32, BASE_DEC, VALS(ulp_IPAddress_vals), 0,
2578 "ulp.IPAddress", HFILL }},
2579 { &hf_ulp_sessionSlpID,
2580 { "sessionID", "ulp.sessionID",
2581 FT_BYTES, BASE_HEX, NULL, 0,
2582 "ulp.OCTET_STRING_SIZE_4", HFILL }},
2584 { "slpId", "ulp.slpId",
2585 FT_UINT32, BASE_DEC, VALS(ulp_SLPAddress_vals), 0,
2586 "ulp.SLPAddress", HFILL }},
2587 { &hf_ulp_ipv4Address,
2588 { "ipv4Address", "ulp.ipv4Address",
2589 FT_IPv4, BASE_NONE, NULL, 0,
2590 "ulp.OCTET_STRING_SIZE_4", HFILL }},
2591 { &hf_ulp_ipv6Address,
2592 { "ipv6Address", "ulp.ipv6Address",
2593 FT_IPv6, BASE_NONE, NULL, 0,
2594 "ulp.OCTET_STRING_SIZE_16", HFILL }},
2596 { "fQDN", "ulp.fQDN",
2597 FT_STRING, BASE_NONE, NULL, 0,
2598 "ulp.FQDN", HFILL }},
2600 { "cellInfo", "ulp.cellInfo",
2601 FT_UINT32, BASE_DEC, VALS(ulp_CellInfo_vals), 0,
2602 "ulp.CellInfo", HFILL }},
2604 { "status", "ulp.status",
2605 FT_UINT32, BASE_DEC, VALS(ulp_Status_vals), 0,
2606 "ulp.Status", HFILL }},
2608 { "gsmCell", "ulp.gsmCell",
2609 FT_NONE, BASE_NONE, NULL, 0,
2610 "ulp.GsmCellInformation", HFILL }},
2611 { &hf_ulp_wcdmaCell,
2612 { "wcdmaCell", "ulp.wcdmaCell",
2613 FT_NONE, BASE_NONE, NULL, 0,
2614 "ulp.WcdmaCellInformation", HFILL }},
2616 { "cdmaCell", "ulp.cdmaCell",
2617 FT_NONE, BASE_NONE, NULL, 0,
2618 "ulp.CdmaCellInformation", HFILL }},
2619 { &hf_ulp_timestamp,
2620 { "timestamp", "ulp.timestamp",
2621 FT_STRING, BASE_NONE, NULL, 0,
2622 "ulp.UTCTime", HFILL }},
2623 { &hf_ulp_positionEstimate,
2624 { "positionEstimate", "ulp.positionEstimate",
2625 FT_NONE, BASE_NONE, NULL, 0,
2626 "ulp.PositionEstimate", HFILL }},
2627 { &hf_ulp_latitudeSign,
2628 { "latitudeSign", "ulp.latitudeSign",
2629 FT_UINT32, BASE_DEC, VALS(ulp_T_latitudeSign_vals), 0,
2630 "ulp.T_latitudeSign", HFILL }},
2632 { "latitude", "ulp.latitude",
2633 FT_UINT32, BASE_DEC, NULL, 0,
2634 "ulp.INTEGER_0_8388607", HFILL }},
2635 { &hf_ulp_longitude,
2636 { "longitude", "ulp.longitude",
2637 FT_INT32, BASE_DEC, NULL, 0,
2638 "ulp.INTEGER_M8388608_8388607", HFILL }},
2639 { &hf_ulp_uncertainty,
2640 { "uncertainty", "ulp.uncertainty",
2641 FT_NONE, BASE_NONE, NULL, 0,
2642 "ulp.T_uncertainty", HFILL }},
2643 { &hf_ulp_uncertaintySemiMajor,
2644 { "uncertaintySemiMajor", "ulp.uncertaintySemiMajor",
2645 FT_UINT32, BASE_DEC, NULL, 0,
2646 "ulp.INTEGER_0_127", HFILL }},
2647 { &hf_ulp_uncertaintySemiMinor,
2648 { "uncertaintySemiMinor", "ulp.uncertaintySemiMinor",
2649 FT_UINT32, BASE_DEC, NULL, 0,
2650 "ulp.INTEGER_0_127", HFILL }},
2651 { &hf_ulp_orientationMajorAxis,
2652 { "orientationMajorAxis", "ulp.orientationMajorAxis",
2653 FT_UINT32, BASE_DEC, NULL, 0,
2654 "ulp.INTEGER_0_180", HFILL }},
2655 { &hf_ulp_confidence,
2656 { "confidence", "ulp.confidence",
2657 FT_UINT32, BASE_DEC, NULL, 0,
2658 "ulp.INTEGER_0_100", HFILL }},
2659 { &hf_ulp_altitudeInfo,
2660 { "altitudeInfo", "ulp.altitudeInfo",
2661 FT_NONE, BASE_NONE, NULL, 0,
2662 "ulp.AltitudeInfo", HFILL }},
2663 { &hf_ulp_altitudeDirection,
2664 { "altitudeDirection", "ulp.altitudeDirection",
2665 FT_UINT32, BASE_DEC, VALS(ulp_T_altitudeDirection_vals), 0,
2666 "ulp.T_altitudeDirection", HFILL }},
2668 { "altitude", "ulp.altitude",
2669 FT_UINT32, BASE_DEC, NULL, 0,
2670 "ulp.INTEGER_0_32767", HFILL }},
2671 { &hf_ulp_altUncertainty,
2672 { "altUncertainty", "ulp.altUncertainty",
2673 FT_UINT32, BASE_DEC, NULL, 0,
2674 "ulp.INTEGER_0_127", HFILL }},
2676 { "refNID", "ulp.refNID",
2677 FT_UINT32, BASE_DEC, NULL, 0,
2678 "ulp.INTEGER_0_65535", HFILL }},
2680 { "refSID", "ulp.refSID",
2681 FT_UINT32, BASE_DEC, NULL, 0,
2682 "ulp.INTEGER_0_32767", HFILL }},
2683 { &hf_ulp_refBASEID,
2684 { "refBASEID", "ulp.refBASEID",
2685 FT_UINT32, BASE_DEC, NULL, 0,
2686 "ulp.INTEGER_0_65535", HFILL }},
2687 { &hf_ulp_refBASELAT,
2688 { "refBASELAT", "ulp.refBASELAT",
2689 FT_UINT32, BASE_DEC, NULL, 0,
2690 "ulp.INTEGER_0_4194303", HFILL }},
2691 { &hf_ulp_reBASELONG,
2692 { "reBASELONG", "ulp.reBASELONG",
2693 FT_UINT32, BASE_DEC, NULL, 0,
2694 "ulp.INTEGER_0_8388607", HFILL }},
2696 { "refREFPN", "ulp.refREFPN",
2697 FT_UINT32, BASE_DEC, NULL, 0,
2698 "ulp.INTEGER_0_511", HFILL }},
2699 { &hf_ulp_refWeekNumber,
2700 { "refWeekNumber", "ulp.refWeekNumber",
2701 FT_UINT32, BASE_DEC, NULL, 0,
2702 "ulp.INTEGER_0_65535", HFILL }},
2703 { &hf_ulp_refSeconds,
2704 { "refSeconds", "ulp.refSeconds",
2705 FT_UINT32, BASE_DEC, NULL, 0,
2706 "ulp.INTEGER_0_4194303", HFILL }},
2708 { "refMCC", "ulp.refMCC",
2709 FT_UINT32, BASE_DEC, NULL, 0,
2710 "ulp.INTEGER_0_999", HFILL }},
2712 { "refMNC", "ulp.refMNC",
2713 FT_UINT32, BASE_DEC, NULL, 0,
2714 "ulp.INTEGER_0_999", HFILL }},
2716 { "refLAC", "ulp.refLAC",
2717 FT_UINT32, BASE_DEC, NULL, 0,
2718 "ulp.INTEGER_0_65535", HFILL }},
2720 { "refCI", "ulp.refCI",
2721 FT_UINT32, BASE_DEC, NULL, 0,
2722 "ulp.INTEGER_0_65535", HFILL }},
2725 FT_UINT32, BASE_DEC, NULL, 0,
2726 "ulp.NMR", HFILL }},
2729 FT_UINT32, BASE_DEC, NULL, 0,
2730 "ulp.INTEGER_0_255", HFILL }},
2732 { "refUC", "ulp.refUC",
2733 FT_UINT32, BASE_DEC, NULL, 0,
2734 "ulp.INTEGER_0_268435455", HFILL }},
2735 { &hf_ulp_frequencyInfo,
2736 { "frequencyInfo", "ulp.frequencyInfo",
2737 FT_NONE, BASE_NONE, NULL, 0,
2738 "ulp.FrequencyInfo", HFILL }},
2739 { &hf_ulp_primaryScramblingCode,
2740 { "primaryScramblingCode", "ulp.primaryScramblingCode",
2741 FT_UINT32, BASE_DEC, NULL, 0,
2742 "ulp.INTEGER_0_511", HFILL }},
2743 { &hf_ulp_measuredResultsList,
2744 { "measuredResultsList", "ulp.measuredResultsList",
2745 FT_UINT32, BASE_DEC, NULL, 0,
2746 "ulp.MeasuredResultsList", HFILL }},
2747 { &hf_ulp_modeSpecificFrequencyInfo,
2748 { "modeSpecificInfo", "ulp.modeSpecificInfo",
2749 FT_UINT32, BASE_DEC, VALS(ulp_FrequencySpecificInfo_vals), 0,
2750 "ulp.FrequencySpecificInfo", HFILL }},
2753 FT_NONE, BASE_NONE, NULL, 0,
2754 "ulp.FrequencyInfoFDD", HFILL }},
2757 FT_NONE, BASE_NONE, NULL, 0,
2758 "ulp.FrequencyInfoTDD", HFILL }},
2759 { &hf_ulp_uarfcn_UL,
2760 { "uarfcn-UL", "ulp.uarfcn_UL",
2761 FT_UINT32, BASE_DEC, NULL, 0,
2762 "ulp.UARFCN", HFILL }},
2763 { &hf_ulp_uarfcn_DL,
2764 { "uarfcn-DL", "ulp.uarfcn_DL",
2765 FT_UINT32, BASE_DEC, NULL, 0,
2766 "ulp.UARFCN", HFILL }},
2767 { &hf_ulp_uarfcn_Nt,
2768 { "uarfcn-Nt", "ulp.uarfcn_Nt",
2769 FT_UINT32, BASE_DEC, NULL, 0,
2770 "ulp.UARFCN", HFILL }},
2772 { "Item", "ulp.NMR_item",
2773 FT_NONE, BASE_NONE, NULL, 0,
2774 "ulp.NMRelement", HFILL }},
2776 { "aRFCN", "ulp.aRFCN",
2777 FT_UINT32, BASE_DEC, NULL, 0,
2778 "ulp.INTEGER_0_1023", HFILL }},
2780 { "bSIC", "ulp.bSIC",
2781 FT_UINT32, BASE_DEC, NULL, 0,
2782 "ulp.INTEGER_0_63", HFILL }},
2784 { "rxLev", "ulp.rxLev",
2785 FT_UINT32, BASE_DEC, NULL, 0,
2786 "ulp.INTEGER_0_63", HFILL }},
2787 { &hf_ulp_MeasuredResultsList_item,
2788 { "Item", "ulp.MeasuredResultsList_item",
2789 FT_NONE, BASE_NONE, NULL, 0,
2790 "ulp.MeasuredResults", HFILL }},
2791 { &hf_ulp_utra_CarrierRSSI,
2792 { "utra-CarrierRSSI", "ulp.utra_CarrierRSSI",
2793 FT_UINT32, BASE_DEC, NULL, 0,
2794 "ulp.UTRA_CarrierRSSI", HFILL }},
2795 { &hf_ulp_cellMeasuredResultsList,
2796 { "cellMeasuredResultsList", "ulp.cellMeasuredResultsList",
2797 FT_UINT32, BASE_DEC, NULL, 0,
2798 "ulp.CellMeasuredResultsList", HFILL }},
2799 { &hf_ulp_CellMeasuredResultsList_item,
2800 { "Item", "ulp.CellMeasuredResultsList_item",
2801 FT_NONE, BASE_NONE, NULL, 0,
2802 "ulp.CellMeasuredResults", HFILL }},
2803 { &hf_ulp_cellIdentity,
2804 { "cellIdentity", "ulp.cellIdentity",
2805 FT_UINT32, BASE_DEC, NULL, 0,
2806 "ulp.INTEGER_0_268435455", HFILL }},
2807 { &hf_ulp_modeSpecificInfo,
2808 { "modeSpecificInfo", "ulp.modeSpecificInfo",
2809 FT_UINT32, BASE_DEC, VALS(ulp_T_modeSpecificInfo_vals), 0,
2810 "ulp.T_modeSpecificInfo", HFILL }},
2813 FT_NONE, BASE_NONE, NULL, 0,
2814 "ulp.T_fdd", HFILL }},
2815 { &hf_ulp_primaryCPICH_Info,
2816 { "primaryCPICH-Info", "ulp.primaryCPICH_Info",
2817 FT_NONE, BASE_NONE, NULL, 0,
2818 "ulp.PrimaryCPICH_Info", HFILL }},
2819 { &hf_ulp_cpich_Ec_N0,
2820 { "cpich-Ec-N0", "ulp.cpich_Ec_N0",
2821 FT_UINT32, BASE_DEC, NULL, 0,
2822 "ulp.CPICH_Ec_N0", HFILL }},
2823 { &hf_ulp_cpich_RSCP,
2824 { "cpich-RSCP", "ulp.cpich_RSCP",
2825 FT_UINT32, BASE_DEC, NULL, 0,
2826 "ulp.CPICH_RSCP", HFILL }},
2828 { "pathloss", "ulp.pathloss",
2829 FT_UINT32, BASE_DEC, NULL, 0,
2830 "ulp.Pathloss", HFILL }},
2833 FT_NONE, BASE_NONE, NULL, 0,
2834 "ulp.T_tdd", HFILL }},
2835 { &hf_ulp_cellParametersID,
2836 { "cellParametersID", "ulp.cellParametersID",
2837 FT_UINT32, BASE_DEC, NULL, 0,
2838 "ulp.CellParametersID", HFILL }},
2839 { &hf_ulp_proposedTGSN,
2840 { "proposedTGSN", "ulp.proposedTGSN",
2841 FT_UINT32, BASE_DEC, NULL, 0,
2842 "ulp.TGSN", HFILL }},
2843 { &hf_ulp_primaryCCPCH_RSCP,
2844 { "primaryCCPCH-RSCP", "ulp.primaryCCPCH_RSCP",
2845 FT_UINT32, BASE_DEC, NULL, 0,
2846 "ulp.PrimaryCCPCH_RSCP", HFILL }},
2847 { &hf_ulp_timeslotISCP_List,
2848 { "timeslotISCP-List", "ulp.timeslotISCP_List",
2849 FT_UINT32, BASE_DEC, NULL, 0,
2850 "ulp.TimeslotISCP_List", HFILL }},
2851 { &hf_ulp_TimeslotISCP_List_item,
2852 { "Item", "ulp.TimeslotISCP_List_item",
2853 FT_UINT32, BASE_DEC, NULL, 0,
2854 "ulp.TimeslotISCP", HFILL }},
2856 { "horacc", "ulp.horacc",
2857 FT_UINT32, BASE_DEC, NULL, 0,
2858 "ulp.INTEGER_0_127", HFILL }},
2860 { "veracc", "ulp.veracc",
2861 FT_UINT32, BASE_DEC, NULL, 0,
2862 "ulp.INTEGER_0_127", HFILL }},
2863 { &hf_ulp_maxLocAge,
2864 { "maxLocAge", "ulp.maxLocAge",
2865 FT_UINT32, BASE_DEC, NULL, 0,
2866 "ulp.INTEGER_0_65535", HFILL }},
2868 { "delay", "ulp.delay",
2869 FT_UINT32, BASE_DEC, NULL, 0,
2870 "ulp.INTEGER_0_7", HFILL }},
2872 { "horvel", "ulp.horvel",
2873 FT_NONE, BASE_NONE, NULL, 0,
2874 "ulp.Horvel", HFILL }},
2875 { &hf_ulp_horandvervel,
2876 { "horandvervel", "ulp.horandvervel",
2877 FT_NONE, BASE_NONE, NULL, 0,
2878 "ulp.Horandvervel", HFILL }},
2879 { &hf_ulp_horveluncert,
2880 { "horveluncert", "ulp.horveluncert",
2881 FT_NONE, BASE_NONE, NULL, 0,
2882 "ulp.Horveluncert", HFILL }},
2883 { &hf_ulp_horandveruncert,
2884 { "horandveruncert", "ulp.horandveruncert",
2885 FT_NONE, BASE_NONE, NULL, 0,
2886 "ulp.Horandveruncert", HFILL }},
2888 { "bearing", "ulp.bearing",
2889 FT_BYTES, BASE_HEX, NULL, 0,
2890 "ulp.BIT_STRING_SIZE_9", HFILL }},
2892 { "horspeed", "ulp.horspeed",
2893 FT_BYTES, BASE_HEX, NULL, 0,
2894 "ulp.BIT_STRING_SIZE_16", HFILL }},
2895 { &hf_ulp_verdirect,
2896 { "verdirect", "ulp.verdirect",
2897 FT_BYTES, BASE_HEX, NULL, 0,
2898 "ulp.BIT_STRING_SIZE_1", HFILL }},
2900 { "verspeed", "ulp.verspeed",
2901 FT_BYTES, BASE_HEX, NULL, 0,
2902 "ulp.BIT_STRING_SIZE_8", HFILL }},
2903 { &hf_ulp_uncertspeed,
2904 { "uncertspeed", "ulp.uncertspeed",
2905 FT_BYTES, BASE_HEX, NULL, 0,
2906 "ulp.BIT_STRING_SIZE_8", HFILL }},
2907 { &hf_ulp_horuncertspeed,
2908 { "horuncertspeed", "ulp.horuncertspeed",
2909 FT_BYTES, BASE_HEX, NULL, 0,
2910 "ulp.BIT_STRING_SIZE_8", HFILL }},
2911 { &hf_ulp_veruncertspeed,
2912 { "veruncertspeed", "ulp.veruncertspeed",
2913 FT_BYTES, BASE_HEX, NULL, 0,
2914 "ulp.BIT_STRING_SIZE_8", HFILL }},
2916 /*--- End of included file: packet-ulp-hfarr.c ---*/
2917 #line 104 "packet-ulp-template.c"
2920 /* List of subtrees */
2921 static gint *ett[] = {
2924 /*--- Included file: packet-ulp-ettarr.c ---*/
2925 #line 1 "packet-ulp-ettarr.c"
2927 &ett_ulp_UlpMessage,
2929 &ett_ulp_Notification,
2931 &ett_ulp_SETCapabilities,
2932 &ett_ulp_PosTechnology,
2933 &ett_ulp_PosProtocol,
2934 &ett_ulp_SUPLRESPONSE,
2935 &ett_ulp_SETAuthKey,
2936 &ett_ulp_SUPLPOSINIT,
2937 &ett_ulp_RequestedAssistData,
2938 &ett_ulp_NavigationModel,
2939 &ett_ulp_SatelliteInfo,
2940 &ett_ulp_SatelliteInfoElement,
2942 &ett_ulp_PosPayLoad,
2944 &ett_ulp_SUPLAUTHREQ,
2945 &ett_ulp_SUPLAUTHRESP,
2946 &ett_ulp_SPCAuthKey,
2949 &ett_ulp_SetSessionID,
2951 &ett_ulp_SlpSessionID,
2953 &ett_ulp_SLPAddress,
2954 &ett_ulp_LocationId,
2957 &ett_ulp_PositionEstimate,
2958 &ett_ulp_T_uncertainty,
2959 &ett_ulp_AltitudeInfo,
2960 &ett_ulp_CdmaCellInformation,
2961 &ett_ulp_GsmCellInformation,
2962 &ett_ulp_WcdmaCellInformation,
2963 &ett_ulp_FrequencyInfo,
2964 &ett_ulp_FrequencySpecificInfo,
2965 &ett_ulp_FrequencyInfoFDD,
2966 &ett_ulp_FrequencyInfoTDD,
2968 &ett_ulp_NMRelement,
2969 &ett_ulp_MeasuredResultsList,
2970 &ett_ulp_MeasuredResults,
2971 &ett_ulp_CellMeasuredResultsList,
2972 &ett_ulp_CellMeasuredResults,
2973 &ett_ulp_T_modeSpecificInfo,
2976 &ett_ulp_TimeslotISCP_List,
2977 &ett_ulp_PrimaryCPICH_Info,
2981 &ett_ulp_Horandvervel,
2982 &ett_ulp_Horveluncert,
2983 &ett_ulp_Horandveruncert,
2985 /*--- End of included file: packet-ulp-ettarr.c ---*/
2986 #line 110 "packet-ulp-template.c"
2989 module_t *ulp_module;
2992 /* Register protocol */
2993 proto_ulp = proto_register_protocol(PNAME, PSNAME, PFNAME);
2994 register_dissector("ulp", dissect_ulp_tcp, proto_ulp);
2996 /* Register fields and subtrees */
2997 proto_register_field_array(proto_ulp, hf, array_length(hf));
2998 proto_register_subtree_array(ett, array_length(ett));
3000 ulp_module = prefs_register_protocol(proto_ulp,proto_reg_handoff_ulp);
3002 prefs_register_bool_preference(ulp_module, "desegment_ulp_messages",
3003 "Reassemble ULP messages spanning multiple TCP segments",
3004 "Whether the ULP dissector should reassemble messages spanning multiple TCP segments."
3005 " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
3008 /* Register a configuration option for port */
3009 prefs_register_uint_preference(ulp_module, "tcp.port",
3011 "Set the TCP port for Ulp messages(IANA registerd port is 7275)",
3018 /*--- proto_reg_handoff_ulp ---------------------------------------*/
3020 proto_reg_handoff_ulp(void)
3023 ulp_handle = create_dissector_handle(dissect_ulp_tcp, proto_ulp);
3025 dissector_add("tcp.port", gbl_ulp_port, ulp_handle);
3027 /* application/oma-supl-ulp */
3028 dissector_add_string("media_type","application/oma-supl-ulp", ulp_handle);
3030 rrlp_handle = find_dissector("rrlp");