remove name field from per_sequence_t structure, it can be retrieved from field infor...
[obnox/wireshark/wip.git] / epan / dissectors / packet-ulp.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
3 /* .\packet-ulp.c                                                             */
4 /* ../../tools/asn2wrs.py -u -e -p ulp -c ulp.cnf -s packet-ulp-template ULP.asn */
5
6 /* Input file: packet-ulp-template.c */
7
8 #line 1 "packet-ulp-template.c"
9 /* packet-ulp.c
10  * Routines for OMA UserPlane Location Protocol packet dissection
11  * Copyright 2006, Anders Broman <anders.broman@ericsson.com>
12  *
13  * $Id$
14  *
15  * Wireshark - Network traffic analyzer
16  * By Gerald Combs <gerald@wireshark.org>
17  * Copyright 1998 Gerald Combs
18  *
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.
23  *
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.
28  *
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.
32  *
33  * ref OMA-TS-ULP-V1_0-20060127-C
34  * http://www.openmobilealliance.org
35  */
36
37 #ifdef HAVE_CONFIG_H
38 # include "config.h"
39 #endif
40
41 #include <glib.h>
42 #include <epan/packet.h>
43 #include <epan/conversation.h>
44 #include <epan/prefs.h>
45
46 #include <stdio.h>
47 #include <string.h>
48
49 #include "packet-ulp.h"
50
51 #include "packet-ber.h"
52 #include "packet-per.h"
53 #include <epan/emem.h>
54 #include "packet-tcp.h"
55
56 #define PNAME  "OMA UserPlane Location Protocol"
57 #define PSNAME "ULP"
58 #define PFNAME "ulp"
59
60 static dissector_handle_t ulp_handle=NULL;
61 static dissector_handle_t rrlp_handle;
62
63 /* IANA Registered Ports  
64  * oma-ulp         7275/tcp    OMA UserPlane Location
65  * oma-ulp         7275/udp    OMA UserPlane Location
66  */
67 guint gbl_ulp_port = 7275;
68
69 /* Initialize the protocol and registered fields */
70 static int proto_ulp = -1;
71
72
73 #define ULP_HEADER_SIZE 2
74
75 gboolean ulp_desegment = TRUE;
76
77
78 /*--- Included file: packet-ulp-hf.c ---*/
79 #line 1 "packet-ulp-hf.c"
80 static int hf_ulp_ULP_PDU_PDU = -1;               /* ULP_PDU */
81 static int hf_ulp_length = -1;                    /* INTEGER_0_65535 */
82 static int hf_ulp_version = -1;                   /* Version */
83 static int hf_ulp_sessionID = -1;                 /* SessionID */
84 static int hf_ulp_message = -1;                   /* UlpMessage */
85 static int hf_ulp_msSUPLINIT = -1;                /* SUPLINIT */
86 static int hf_ulp_msSUPLSTART = -1;               /* SUPLSTART */
87 static int hf_ulp_msSUPLRESPONSE = -1;            /* SUPLRESPONSE */
88 static int hf_ulp_msSUPLPOSINIT = -1;             /* SUPLPOSINIT */
89 static int hf_ulp_msSUPLPOS = -1;                 /* SUPLPOS */
90 static int hf_ulp_msSUPLEND = -1;                 /* SUPLEND */
91 static int hf_ulp_msSUPLAUTHREQ = -1;             /* SUPLAUTHREQ */
92 static int hf_ulp_msSUPLAUTHRESP = -1;            /* SUPLAUTHRESP */
93 static int hf_ulp_maj = -1;                       /* INTEGER_0_255 */
94 static int hf_ulp_min = -1;                       /* INTEGER_0_255 */
95 static int hf_ulp_servind = -1;                   /* INTEGER_0_255 */
96 static int hf_ulp_setSessionID = -1;              /* SetSessionID */
97 static int hf_ulp_slpSessionID = -1;              /* SlpSessionID */
98 static int hf_ulp_sessionId = -1;                 /* INTEGER_0_65535 */
99 static int hf_ulp_setId = -1;                     /* SETId */
100 static int hf_ulp_msisdn = -1;                    /* OCTET_STRING_SIZE_8 */
101 static int hf_ulp_mdn = -1;                       /* OCTET_STRING_SIZE_8 */
102 static int hf_ulp_min1 = -1;                      /* BIT_STRING_SIZE_34 */
103 static int hf_ulp_imsi = -1;                      /* OCTET_STRING_SIZE_8 */
104 static int hf_ulp_nai = -1;                       /* IA5String_SIZE_1_1000 */
105 static int hf_ulp_iPAddress = -1;                 /* IPAddress */
106 static int hf_ulp_sessionID1 = -1;                /* OCTET_STRING_SIZE_4 */
107 static int hf_ulp_slpId = -1;                     /* SLPAddress */
108 static int hf_ulp_ipv4Address = -1;               /* IPv4Address */
109 static int hf_ulp_ipv6Address = -1;               /* IPv6Address */
110 static int hf_ulp_fQDN = -1;                      /* FQDN */
111 static int hf_ulp_cellInfo = -1;                  /* CellInfo */
112 static int hf_ulp_status = -1;                    /* Status */
113 static int hf_ulp_gsmCell = -1;                   /* GsmCellInformation */
114 static int hf_ulp_wcdmaCell = -1;                 /* WcdmaCellInformation */
115 static int hf_ulp_cdmaCell = -1;                  /* CdmaCellInformation */
116 static int hf_ulp_timestamp = -1;                 /* UTCTime */
117 static int hf_ulp_positionEstimate = -1;          /* PositionEstimate */
118 static int hf_ulp_velocity = -1;                  /* Velocity */
119 static int hf_ulp_latitudeSign = -1;              /* T_latitudeSign */
120 static int hf_ulp_latitude = -1;                  /* INTEGER_0_8388607 */
121 static int hf_ulp_longitude = -1;                 /* INTEGER_M8388608_8388607 */
122 static int hf_ulp_uncertainty = -1;               /* T_uncertainty */
123 static int hf_ulp_uncertaintySemiMajor = -1;      /* INTEGER_0_127 */
124 static int hf_ulp_uncertaintySemiMinor = -1;      /* INTEGER_0_127 */
125 static int hf_ulp_orientationMajorAxis = -1;      /* INTEGER_0_180 */
126 static int hf_ulp_confidence = -1;                /* INTEGER_0_100 */
127 static int hf_ulp_altitudeInfo = -1;              /* AltitudeInfo */
128 static int hf_ulp_altitudeDirection = -1;         /* T_altitudeDirection */
129 static int hf_ulp_altitude = -1;                  /* INTEGER_0_32767 */
130 static int hf_ulp_altUncertainty = -1;            /* INTEGER_0_127 */
131 static int hf_ulp_refNID = -1;                    /* INTEGER_0_65535 */
132 static int hf_ulp_refSID = -1;                    /* INTEGER_0_32767 */
133 static int hf_ulp_refBASEID = -1;                 /* INTEGER_0_65535 */
134 static int hf_ulp_refBASELAT = -1;                /* INTEGER_0_4194303 */
135 static int hf_ulp_reBASELONG = -1;                /* INTEGER_0_8388607 */
136 static int hf_ulp_refREFPN = -1;                  /* INTEGER_0_511 */
137 static int hf_ulp_refWeekNumber = -1;             /* INTEGER_0_65535 */
138 static int hf_ulp_refSeconds = -1;                /* INTEGER_0_4194303 */
139 static int hf_ulp_refMCC = -1;                    /* INTEGER_0_999 */
140 static int hf_ulp_refMNC = -1;                    /* INTEGER_0_999 */
141 static int hf_ulp_refLAC = -1;                    /* INTEGER_0_65535 */
142 static int hf_ulp_refCI = -1;                     /* INTEGER_0_65535 */
143 static int hf_ulp_nMR = -1;                       /* NMR */
144 static int hf_ulp_tA = -1;                        /* INTEGER_0_255 */
145 static int hf_ulp_refUC = -1;                     /* INTEGER_0_268435455 */
146 static int hf_ulp_frequencyInfo = -1;             /* FrequencyInfo */
147 static int hf_ulp_primaryScramblingCode = -1;     /* INTEGER_0_511 */
148 static int hf_ulp_measuredResultsList = -1;       /* MeasuredResultsList */
149 static int hf_ulp_modeSpecificInfo = -1;          /* T_modeSpecificInfo */
150 static int hf_ulp_fdd = -1;                       /* FrequencyInfoFDD */
151 static int hf_ulp_tdd = -1;                       /* FrequencyInfoTDD */
152 static int hf_ulp_uarfcn_UL = -1;                 /* UARFCN */
153 static int hf_ulp_uarfcn_DL = -1;                 /* UARFCN */
154 static int hf_ulp_uarfcn_Nt = -1;                 /* UARFCN */
155 static int hf_ulp_NMR_item = -1;                  /* NMRelement */
156 static int hf_ulp_aRFCN = -1;                     /* INTEGER_0_1023 */
157 static int hf_ulp_bSIC = -1;                      /* INTEGER_0_63 */
158 static int hf_ulp_rxLev = -1;                     /* INTEGER_0_63 */
159 static int hf_ulp_MeasuredResultsList_item = -1;  /* MeasuredResults */
160 static int hf_ulp_utra_CarrierRSSI = -1;          /* UTRA_CarrierRSSI */
161 static int hf_ulp_cellMeasuredResultsList = -1;   /* CellMeasuredResultsList */
162 static int hf_ulp_CellMeasuredResultsList_item = -1;  /* CellMeasuredResults */
163 static int hf_ulp_cellIdentity = -1;              /* INTEGER_0_268435455 */
164 static int hf_ulp_modeSpecificInfo1 = -1;         /* T_modeSpecificInfo1 */
165 static int hf_ulp_fdd1 = -1;                      /* T_fdd */
166 static int hf_ulp_primaryCPICH_Info = -1;         /* PrimaryCPICH_Info */
167 static int hf_ulp_cpich_Ec_N0 = -1;               /* CPICH_Ec_N0 */
168 static int hf_ulp_cpich_RSCP = -1;                /* CPICH_RSCP */
169 static int hf_ulp_pathloss = -1;                  /* Pathloss */
170 static int hf_ulp_tdd1 = -1;                      /* T_tdd */
171 static int hf_ulp_cellParametersID = -1;          /* CellParametersID */
172 static int hf_ulp_proposedTGSN = -1;              /* TGSN */
173 static int hf_ulp_primaryCCPCH_RSCP = -1;         /* PrimaryCCPCH_RSCP */
174 static int hf_ulp_timeslotISCP_List = -1;         /* TimeslotISCP_List */
175 static int hf_ulp_TimeslotISCP_List_item = -1;    /* TimeslotISCP */
176 static int hf_ulp_horacc = -1;                    /* INTEGER_0_127 */
177 static int hf_ulp_veracc = -1;                    /* INTEGER_0_127 */
178 static int hf_ulp_maxLocAge = -1;                 /* INTEGER_0_65535 */
179 static int hf_ulp_delay = -1;                     /* INTEGER_0_7 */
180 static int hf_ulp_horvel = -1;                    /* Horvel */
181 static int hf_ulp_horandvervel = -1;              /* Horandvervel */
182 static int hf_ulp_horveluncert = -1;              /* Horveluncert */
183 static int hf_ulp_horandveruncert = -1;           /* Horandveruncert */
184 static int hf_ulp_bearing = -1;                   /* BIT_STRING_SIZE_9 */
185 static int hf_ulp_horspeed = -1;                  /* BIT_STRING_SIZE_16 */
186 static int hf_ulp_verdirect = -1;                 /* BIT_STRING_SIZE_1 */
187 static int hf_ulp_verspeed = -1;                  /* BIT_STRING_SIZE_8 */
188 static int hf_ulp_uncertspeed = -1;               /* BIT_STRING_SIZE_8 */
189 static int hf_ulp_horuncertspeed = -1;            /* BIT_STRING_SIZE_8 */
190 static int hf_ulp_veruncertspeed = -1;            /* BIT_STRING_SIZE_8 */
191 static int hf_ulp_sETNonce = -1;                  /* SETNonce */
192 static int hf_ulp_keyIdentity2 = -1;              /* KeyIdentity2 */
193 static int hf_ulp_sPCAuthKey = -1;                /* SPCAuthKey */
194 static int hf_ulp_keyIdentity3 = -1;              /* KeyIdentity3 */
195 static int hf_ulp_statusCode = -1;                /* StatusCode */
196 static int hf_ulp_shortKey = -1;                  /* BIT_STRING_SIZE_128 */
197 static int hf_ulp_longKey = -1;                   /* BIT_STRING_SIZE_256 */
198 static int hf_ulp_position = -1;                  /* Position */
199 static int hf_ulp_ver = -1;                       /* Ver */
200 static int hf_ulp_posMethod = -1;                 /* PosMethod */
201 static int hf_ulp_notification = -1;              /* Notification */
202 static int hf_ulp_sLPAddress = -1;                /* SLPAddress */
203 static int hf_ulp_qoP = -1;                       /* QoP */
204 static int hf_ulp_sLPMode = -1;                   /* SLPMode */
205 static int hf_ulp_mAC = -1;                       /* MAC */
206 static int hf_ulp_keyIdentity = -1;               /* KeyIdentity */
207 static int hf_ulp_notificationType = -1;          /* NotificationType */
208 static int hf_ulp_encodingType = -1;              /* EncodingType */
209 static int hf_ulp_requestorId = -1;               /* OCTET_STRING_SIZE_1_maxReqLength */
210 static int hf_ulp_requestorIdType = -1;           /* FormatIndicator */
211 static int hf_ulp_clientName = -1;                /* OCTET_STRING_SIZE_1_maxClientLength */
212 static int hf_ulp_clientNameType = -1;            /* FormatIndicator */
213 static int hf_ulp_posPayLoad = -1;                /* PosPayLoad */
214 static int hf_ulp_tia801payload = -1;             /* OCTET_STRING_SIZE_1_8192 */
215 static int hf_ulp_rrcPayload = -1;                /* OCTET_STRING_SIZE_1_8192 */
216 static int hf_ulp_rrlpPayload = -1;               /* RRLPPayload */
217 static int hf_ulp_sETCapabilities = -1;           /* SETCapabilities */
218 static int hf_ulp_requestedAssistData = -1;       /* RequestedAssistData */
219 static int hf_ulp_locationId = -1;                /* LocationId */
220 static int hf_ulp_sUPLPOS = -1;                   /* SUPLPOS */
221 static int hf_ulp_almanacRequested = -1;          /* BOOLEAN */
222 static int hf_ulp_utcModelRequested = -1;         /* BOOLEAN */
223 static int hf_ulp_ionosphericModelRequested = -1;  /* BOOLEAN */
224 static int hf_ulp_dgpsCorrectionsRequested = -1;  /* BOOLEAN */
225 static int hf_ulp_referenceLocationRequested = -1;  /* BOOLEAN */
226 static int hf_ulp_referenceTimeRequested = -1;    /* BOOLEAN */
227 static int hf_ulp_acquisitionAssistanceRequested = -1;  /* BOOLEAN */
228 static int hf_ulp_realTimeIntegrityRequested = -1;  /* BOOLEAN */
229 static int hf_ulp_navigationModelRequested = -1;  /* BOOLEAN */
230 static int hf_ulp_navigationModelData = -1;       /* NavigationModel */
231 static int hf_ulp_gpsWeek = -1;                   /* INTEGER_0_1023 */
232 static int hf_ulp_gpsToe = -1;                    /* INTEGER_0_167 */
233 static int hf_ulp_nSAT = -1;                      /* INTEGER_0_31 */
234 static int hf_ulp_toeLimit = -1;                  /* INTEGER_0_10 */
235 static int hf_ulp_satInfo = -1;                   /* SatelliteInfo */
236 static int hf_ulp_SatelliteInfo_item = -1;        /* SatelliteInfoElement */
237 static int hf_ulp_satId = -1;                     /* INTEGER_0_63 */
238 static int hf_ulp_iODE = -1;                      /* INTEGER_0_255 */
239 static int hf_ulp_sETAuthKey = -1;                /* SETAuthKey */
240 static int hf_ulp_keyIdentity4 = -1;              /* KeyIdentity4 */
241 static int hf_ulp_posTechnology = -1;             /* PosTechnology */
242 static int hf_ulp_prefMethod = -1;                /* PrefMethod */
243 static int hf_ulp_posProtocol = -1;               /* PosProtocol */
244 static int hf_ulp_agpsSETassisted = -1;           /* BOOLEAN */
245 static int hf_ulp_agpsSETBased = -1;              /* BOOLEAN */
246 static int hf_ulp_autonomousGPS = -1;             /* BOOLEAN */
247 static int hf_ulp_aFLT = -1;                      /* BOOLEAN */
248 static int hf_ulp_eCID = -1;                      /* BOOLEAN */
249 static int hf_ulp_eOTD = -1;                      /* BOOLEAN */
250 static int hf_ulp_oTDOA = -1;                     /* BOOLEAN */
251 static int hf_ulp_tia801 = -1;                    /* BOOLEAN */
252 static int hf_ulp_rrlp = -1;                      /* BOOLEAN */
253 static int hf_ulp_rrc = -1;                       /* BOOLEAN */
254
255 /*--- End of included file: packet-ulp-hf.c ---*/
256 #line 70 "packet-ulp-template.c"
257
258 /* Initialize the subtree pointers */
259 static gint ett_ulp = -1;
260
261 /*--- Included file: packet-ulp-ett.c ---*/
262 #line 1 "packet-ulp-ett.c"
263 static gint ett_ulp_ULP_PDU = -1;
264 static gint ett_ulp_UlpMessage = -1;
265 static gint ett_ulp_Version = -1;
266 static gint ett_ulp_SessionID = -1;
267 static gint ett_ulp_SetSessionID = -1;
268 static gint ett_ulp_SETId = -1;
269 static gint ett_ulp_SlpSessionID = -1;
270 static gint ett_ulp_IPAddress = -1;
271 static gint ett_ulp_SLPAddress = -1;
272 static gint ett_ulp_LocationId = -1;
273 static gint ett_ulp_CellInfo = -1;
274 static gint ett_ulp_Position = -1;
275 static gint ett_ulp_PositionEstimate = -1;
276 static gint ett_ulp_T_uncertainty = -1;
277 static gint ett_ulp_AltitudeInfo = -1;
278 static gint ett_ulp_CdmaCellInformation = -1;
279 static gint ett_ulp_GsmCellInformation = -1;
280 static gint ett_ulp_WcdmaCellInformation = -1;
281 static gint ett_ulp_FrequencyInfo = -1;
282 static gint ett_ulp_T_modeSpecificInfo = -1;
283 static gint ett_ulp_FrequencyInfoFDD = -1;
284 static gint ett_ulp_FrequencyInfoTDD = -1;
285 static gint ett_ulp_NMR = -1;
286 static gint ett_ulp_NMRelement = -1;
287 static gint ett_ulp_MeasuredResultsList = -1;
288 static gint ett_ulp_MeasuredResults = -1;
289 static gint ett_ulp_CellMeasuredResultsList = -1;
290 static gint ett_ulp_CellMeasuredResults = -1;
291 static gint ett_ulp_T_modeSpecificInfo1 = -1;
292 static gint ett_ulp_T_fdd = -1;
293 static gint ett_ulp_T_tdd = -1;
294 static gint ett_ulp_TimeslotISCP_List = -1;
295 static gint ett_ulp_PrimaryCPICH_Info = -1;
296 static gint ett_ulp_QoP = -1;
297 static gint ett_ulp_Velocity = -1;
298 static gint ett_ulp_Horvel = -1;
299 static gint ett_ulp_Horandvervel = -1;
300 static gint ett_ulp_Horveluncert = -1;
301 static gint ett_ulp_Horandveruncert = -1;
302 static gint ett_ulp_SUPLAUTHREQ = -1;
303 static gint ett_ulp_SUPLAUTHRESP = -1;
304 static gint ett_ulp_SPCAuthKey = -1;
305 static gint ett_ulp_SUPLEND = -1;
306 static gint ett_ulp_SUPLINIT = -1;
307 static gint ett_ulp_Notification = -1;
308 static gint ett_ulp_SUPLPOS = -1;
309 static gint ett_ulp_PosPayLoad = -1;
310 static gint ett_ulp_SUPLPOSINIT = -1;
311 static gint ett_ulp_RequestedAssistData = -1;
312 static gint ett_ulp_NavigationModel = -1;
313 static gint ett_ulp_SatelliteInfo = -1;
314 static gint ett_ulp_SatelliteInfoElement = -1;
315 static gint ett_ulp_SUPLRESPONSE = -1;
316 static gint ett_ulp_SETAuthKey = -1;
317 static gint ett_ulp_SUPLSTART = -1;
318 static gint ett_ulp_SETCapabilities = -1;
319 static gint ett_ulp_PosTechnology = -1;
320 static gint ett_ulp_PosProtocol = -1;
321
322 /*--- End of included file: packet-ulp-ett.c ---*/
323 #line 74 "packet-ulp-template.c"
324
325 /* Include constants */
326
327 /*--- Included file: packet-ulp-val.h ---*/
328 #line 1 "packet-ulp-val.h"
329 #define maxCellMeas                    32
330 #define maxFreq                        8
331 #define maxTS                          14
332 #define maxReqLength                   50
333 #define maxClientLength                50
334
335 /*--- End of included file: packet-ulp-val.h ---*/
336 #line 77 "packet-ulp-template.c"
337
338
339
340 /*--- Included file: packet-ulp-fn.c ---*/
341 #line 1 "packet-ulp-fn.c"
342
343
344 static int
345 dissect_ulp_INTEGER_0_65535(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
346   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
347                                               0U, 65535U, NULL, FALSE);
348
349   return offset;
350 }
351
352
353
354 static int
355 dissect_ulp_INTEGER_0_255(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
356   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
357                                               0U, 255U, NULL, FALSE);
358
359   return offset;
360 }
361
362
363 static const per_sequence_t Version_sequence[] = {
364   { &hf_ulp_maj             , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
365   { &hf_ulp_min             , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
366   { &hf_ulp_servind         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
367   { NULL, 0, 0, NULL }
368 };
369
370 static int
371 dissect_ulp_Version(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
372   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
373                                    ett_ulp_Version, Version_sequence);
374
375   return offset;
376 }
377
378
379
380 static int
381 dissect_ulp_OCTET_STRING_SIZE_8(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
382   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
383                                        8, 8, NULL);
384
385   return offset;
386 }
387
388
389
390 static int
391 dissect_ulp_BIT_STRING_SIZE_34(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
392   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
393                                      34, 34, FALSE, NULL);
394
395   return offset;
396 }
397
398
399
400 static int
401 dissect_ulp_IA5String_SIZE_1_1000(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
402   offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
403                                           1, 1000);
404
405   return offset;
406 }
407
408
409
410 static int
411 dissect_ulp_IPv4Address(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
412   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
413                                        4, 4, NULL);
414
415   return offset;
416 }
417
418
419
420 static int
421 dissect_ulp_IPv6Address(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
422   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
423                                        16, 16, NULL);
424
425   return offset;
426 }
427
428
429 static const value_string ulp_IPAddress_vals[] = {
430   {   0, "ipv4Address" },
431   {   1, "ipv6Address" },
432   { 0, NULL }
433 };
434
435 static const per_choice_t IPAddress_choice[] = {
436   {   0, &hf_ulp_ipv4Address     , ASN1_NO_EXTENSIONS     , dissect_ulp_IPv4Address },
437   {   1, &hf_ulp_ipv6Address     , ASN1_NO_EXTENSIONS     , dissect_ulp_IPv6Address },
438   { 0, NULL, 0, NULL }
439 };
440
441 static int
442 dissect_ulp_IPAddress(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
443   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
444                                  ett_ulp_IPAddress, IPAddress_choice,
445                                  NULL);
446
447   return offset;
448 }
449
450
451 static const value_string ulp_SETId_vals[] = {
452   {   0, "msisdn" },
453   {   1, "mdn" },
454   {   2, "min" },
455   {   3, "imsi" },
456   {   4, "nai" },
457   {   5, "iPAddress" },
458   { 0, NULL }
459 };
460
461 static const per_choice_t SETId_choice[] = {
462   {   0, &hf_ulp_msisdn          , ASN1_EXTENSION_ROOT    , dissect_ulp_OCTET_STRING_SIZE_8 },
463   {   1, &hf_ulp_mdn             , ASN1_EXTENSION_ROOT    , dissect_ulp_OCTET_STRING_SIZE_8 },
464   {   2, &hf_ulp_min1            , ASN1_EXTENSION_ROOT    , dissect_ulp_BIT_STRING_SIZE_34 },
465   {   3, &hf_ulp_imsi            , ASN1_EXTENSION_ROOT    , dissect_ulp_OCTET_STRING_SIZE_8 },
466   {   4, &hf_ulp_nai             , ASN1_EXTENSION_ROOT    , dissect_ulp_IA5String_SIZE_1_1000 },
467   {   5, &hf_ulp_iPAddress       , ASN1_EXTENSION_ROOT    , dissect_ulp_IPAddress },
468   { 0, NULL, 0, NULL }
469 };
470
471 static int
472 dissect_ulp_SETId(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
473   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
474                                  ett_ulp_SETId, SETId_choice,
475                                  NULL);
476
477   return offset;
478 }
479
480
481 static const per_sequence_t SetSessionID_sequence[] = {
482   { &hf_ulp_sessionId       , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
483   { &hf_ulp_setId           , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_SETId },
484   { NULL, 0, 0, NULL }
485 };
486
487 static int
488 dissect_ulp_SetSessionID(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
489   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
490                                    ett_ulp_SetSessionID, SetSessionID_sequence);
491
492   return offset;
493 }
494
495
496
497 static int
498 dissect_ulp_OCTET_STRING_SIZE_4(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
499   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
500                                        4, 4, NULL);
501
502   return offset;
503 }
504
505
506
507 static int
508 dissect_ulp_FQDN(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
509   offset = dissect_per_VisibleString(tvb, offset, actx, tree, hf_index,
510                                           1, 255);
511
512   return offset;
513 }
514
515
516 static const value_string ulp_SLPAddress_vals[] = {
517   {   0, "iPAddress" },
518   {   1, "fQDN" },
519   { 0, NULL }
520 };
521
522 static const per_choice_t SLPAddress_choice[] = {
523   {   0, &hf_ulp_iPAddress       , ASN1_EXTENSION_ROOT    , dissect_ulp_IPAddress },
524   {   1, &hf_ulp_fQDN            , ASN1_EXTENSION_ROOT    , dissect_ulp_FQDN },
525   { 0, NULL, 0, NULL }
526 };
527
528 static int
529 dissect_ulp_SLPAddress(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
530   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
531                                  ett_ulp_SLPAddress, SLPAddress_choice,
532                                  NULL);
533
534   return offset;
535 }
536
537
538 static const per_sequence_t SlpSessionID_sequence[] = {
539   { &hf_ulp_sessionID1      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_OCTET_STRING_SIZE_4 },
540   { &hf_ulp_slpId           , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_SLPAddress },
541   { NULL, 0, 0, NULL }
542 };
543
544 static int
545 dissect_ulp_SlpSessionID(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
546   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
547                                    ett_ulp_SlpSessionID, SlpSessionID_sequence);
548
549   return offset;
550 }
551
552
553 static const per_sequence_t SessionID_sequence[] = {
554   { &hf_ulp_setSessionID    , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_ulp_SetSessionID },
555   { &hf_ulp_slpSessionID    , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_ulp_SlpSessionID },
556   { NULL, 0, 0, NULL }
557 };
558
559 static int
560 dissect_ulp_SessionID(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
561   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
562                                    ett_ulp_SessionID, SessionID_sequence);
563
564   return offset;
565 }
566
567
568 static const value_string ulp_PosMethod_vals[] = {
569   {   0, "agpsSETassisted" },
570   {   1, "agpsSETbased" },
571   {   2, "agpsSETassistedpref" },
572   {   3, "agpsSETbasedpref" },
573   {   4, "autonomousGPS" },
574   {   5, "aFLT" },
575   {   6, "eCID" },
576   {   7, "eOTD" },
577   {   8, "oTDOA" },
578   {   9, "noPosition" },
579   { 0, NULL }
580 };
581
582
583 static int
584 dissect_ulp_PosMethod(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
585   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
586                                      10, NULL, TRUE, 0, NULL);
587
588   return offset;
589 }
590
591
592 static const value_string ulp_NotificationType_vals[] = {
593   {   0, "noNotificationNoVerification" },
594   {   1, "notificationOnly" },
595   {   2, "notificationAndVerficationAllowedNA" },
596   {   3, "notificationAndVerficationDeniedNA" },
597   {   4, "privacyOverride" },
598   { 0, NULL }
599 };
600
601
602 static int
603 dissect_ulp_NotificationType(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
604   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
605                                      5, NULL, TRUE, 0, NULL);
606
607   return offset;
608 }
609
610
611 static const value_string ulp_EncodingType_vals[] = {
612   {   0, "ucs2" },
613   {   1, "gsmDefault" },
614   {   2, "utf8" },
615   { 0, NULL }
616 };
617
618
619 static int
620 dissect_ulp_EncodingType(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
621   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
622                                      3, NULL, TRUE, 0, NULL);
623
624   return offset;
625 }
626
627
628
629 static int
630 dissect_ulp_OCTET_STRING_SIZE_1_maxReqLength(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
631   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
632                                        1, maxReqLength, NULL);
633
634   return offset;
635 }
636
637
638 static const value_string ulp_FormatIndicator_vals[] = {
639   {   0, "logicalName" },
640   {   1, "e-mailAddress" },
641   {   2, "msisdn" },
642   {   3, "url" },
643   {   4, "sipUrl" },
644   {   5, "min" },
645   {   6, "mdn" },
646   { 0, NULL }
647 };
648
649
650 static int
651 dissect_ulp_FormatIndicator(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
652   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
653                                      7, NULL, TRUE, 0, NULL);
654
655   return offset;
656 }
657
658
659
660 static int
661 dissect_ulp_OCTET_STRING_SIZE_1_maxClientLength(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
662   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
663                                        1, maxClientLength, NULL);
664
665   return offset;
666 }
667
668
669 static const per_sequence_t Notification_sequence[] = {
670   { &hf_ulp_notificationType, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_NotificationType },
671   { &hf_ulp_encodingType    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_EncodingType },
672   { &hf_ulp_requestorId     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_OCTET_STRING_SIZE_1_maxReqLength },
673   { &hf_ulp_requestorIdType , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_FormatIndicator },
674   { &hf_ulp_clientName      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_OCTET_STRING_SIZE_1_maxClientLength },
675   { &hf_ulp_clientNameType  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_FormatIndicator },
676   { NULL, 0, 0, NULL }
677 };
678
679 static int
680 dissect_ulp_Notification(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
681   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
682                                    ett_ulp_Notification, Notification_sequence);
683
684   return offset;
685 }
686
687
688
689 static int
690 dissect_ulp_INTEGER_0_127(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
691   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
692                                               0U, 127U, NULL, FALSE);
693
694   return offset;
695 }
696
697
698
699 static int
700 dissect_ulp_INTEGER_0_7(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
701   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
702                                               0U, 7U, NULL, FALSE);
703
704   return offset;
705 }
706
707
708 static const per_sequence_t QoP_sequence[] = {
709   { &hf_ulp_horacc          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_127 },
710   { &hf_ulp_veracc          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_INTEGER_0_127 },
711   { &hf_ulp_maxLocAge       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_INTEGER_0_65535 },
712   { &hf_ulp_delay           , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_INTEGER_0_7 },
713   { NULL, 0, 0, NULL }
714 };
715
716 static int
717 dissect_ulp_QoP(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
718   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
719                                    ett_ulp_QoP, QoP_sequence);
720
721   return offset;
722 }
723
724
725 static const value_string ulp_SLPMode_vals[] = {
726   {   0, "proxy" },
727   {   1, "nonProxy" },
728   { 0, NULL }
729 };
730
731
732 static int
733 dissect_ulp_SLPMode(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
734   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
735                                      2, NULL, FALSE, 0, NULL);
736
737   return offset;
738 }
739
740
741
742 static int
743 dissect_ulp_MAC(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
744   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
745                                      64, 64, FALSE, NULL);
746
747   return offset;
748 }
749
750
751
752 static int
753 dissect_ulp_KeyIdentity(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
754   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
755                                      128, 128, FALSE, NULL);
756
757   return offset;
758 }
759
760
761 static const per_sequence_t SUPLINIT_sequence[] = {
762   { &hf_ulp_posMethod       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_PosMethod },
763   { &hf_ulp_notification    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_Notification },
764   { &hf_ulp_sLPAddress      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_SLPAddress },
765   { &hf_ulp_qoP             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_QoP },
766   { &hf_ulp_sLPMode         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_SLPMode },
767   { &hf_ulp_mAC             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_MAC },
768   { &hf_ulp_keyIdentity     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_KeyIdentity },
769   { NULL, 0, 0, NULL }
770 };
771
772 static int
773 dissect_ulp_SUPLINIT(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
774   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
775                                    ett_ulp_SUPLINIT, SUPLINIT_sequence);
776
777   return offset;
778 }
779
780
781
782 static int
783 dissect_ulp_BOOLEAN(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
784   offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
785
786   return offset;
787 }
788
789
790 static const per_sequence_t PosTechnology_sequence[] = {
791   { &hf_ulp_agpsSETassisted , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
792   { &hf_ulp_agpsSETBased    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
793   { &hf_ulp_autonomousGPS   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
794   { &hf_ulp_aFLT            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
795   { &hf_ulp_eCID            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
796   { &hf_ulp_eOTD            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
797   { &hf_ulp_oTDOA           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
798   { NULL, 0, 0, NULL }
799 };
800
801 static int
802 dissect_ulp_PosTechnology(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
803   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
804                                    ett_ulp_PosTechnology, PosTechnology_sequence);
805
806   return offset;
807 }
808
809
810 static const value_string ulp_PrefMethod_vals[] = {
811   {   0, "agpsSETassistedPreferred" },
812   {   1, "agpsSETBasedPreferred" },
813   {   2, "noPreference" },
814   { 0, NULL }
815 };
816
817
818 static int
819 dissect_ulp_PrefMethod(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
820   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
821                                      3, NULL, FALSE, 0, NULL);
822
823   return offset;
824 }
825
826
827 static const per_sequence_t PosProtocol_sequence[] = {
828   { &hf_ulp_tia801          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
829   { &hf_ulp_rrlp            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
830   { &hf_ulp_rrc             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
831   { NULL, 0, 0, NULL }
832 };
833
834 static int
835 dissect_ulp_PosProtocol(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
836   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
837                                    ett_ulp_PosProtocol, PosProtocol_sequence);
838
839   return offset;
840 }
841
842
843 static const per_sequence_t SETCapabilities_sequence[] = {
844   { &hf_ulp_posTechnology   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_PosTechnology },
845   { &hf_ulp_prefMethod      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_PrefMethod },
846   { &hf_ulp_posProtocol     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_PosProtocol },
847   { NULL, 0, 0, NULL }
848 };
849
850 static int
851 dissect_ulp_SETCapabilities(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
852   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
853                                    ett_ulp_SETCapabilities, SETCapabilities_sequence);
854
855   return offset;
856 }
857
858
859
860 static int
861 dissect_ulp_INTEGER_0_999(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
862   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
863                                               0U, 999U, NULL, FALSE);
864
865   return offset;
866 }
867
868
869
870 static int
871 dissect_ulp_INTEGER_0_1023(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
872   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
873                                               0U, 1023U, NULL, FALSE);
874
875   return offset;
876 }
877
878
879
880 static int
881 dissect_ulp_INTEGER_0_63(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
882   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
883                                               0U, 63U, NULL, FALSE);
884
885   return offset;
886 }
887
888
889 static const per_sequence_t NMRelement_sequence[] = {
890   { &hf_ulp_aRFCN           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_1023 },
891   { &hf_ulp_bSIC            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_63 },
892   { &hf_ulp_rxLev           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_63 },
893   { NULL, 0, 0, NULL }
894 };
895
896 static int
897 dissect_ulp_NMRelement(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
898   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
899                                    ett_ulp_NMRelement, NMRelement_sequence);
900
901   return offset;
902 }
903
904
905 static const per_sequence_t NMR_sequence_of[1] = {
906   { &hf_ulp_NMR_item        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_NMRelement },
907 };
908
909 static int
910 dissect_ulp_NMR(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
911   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
912                                                   ett_ulp_NMR, NMR_sequence_of,
913                                                   1, 15);
914
915   return offset;
916 }
917
918
919 static const per_sequence_t GsmCellInformation_sequence[] = {
920   { &hf_ulp_refMCC          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_999 },
921   { &hf_ulp_refMNC          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_999 },
922   { &hf_ulp_refLAC          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
923   { &hf_ulp_refCI           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
924   { &hf_ulp_nMR             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_NMR },
925   { &hf_ulp_tA              , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_INTEGER_0_255 },
926   { NULL, 0, 0, NULL }
927 };
928
929 static int
930 dissect_ulp_GsmCellInformation(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
931   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
932                                    ett_ulp_GsmCellInformation, GsmCellInformation_sequence);
933
934   return offset;
935 }
936
937
938
939 static int
940 dissect_ulp_INTEGER_0_268435455(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
941   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
942                                               0U, 268435455U, NULL, FALSE);
943
944   return offset;
945 }
946
947
948
949 static int
950 dissect_ulp_UARFCN(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
951   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
952                                               0U, 16383U, NULL, FALSE);
953
954   return offset;
955 }
956
957
958 static const per_sequence_t FrequencyInfoFDD_sequence[] = {
959   { &hf_ulp_uarfcn_UL       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_UARFCN },
960   { &hf_ulp_uarfcn_DL       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_UARFCN },
961   { NULL, 0, 0, NULL }
962 };
963
964 static int
965 dissect_ulp_FrequencyInfoFDD(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
966   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
967                                    ett_ulp_FrequencyInfoFDD, FrequencyInfoFDD_sequence);
968
969   return offset;
970 }
971
972
973 static const per_sequence_t FrequencyInfoTDD_sequence[] = {
974   { &hf_ulp_uarfcn_Nt       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_UARFCN },
975   { NULL, 0, 0, NULL }
976 };
977
978 static int
979 dissect_ulp_FrequencyInfoTDD(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
980   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
981                                    ett_ulp_FrequencyInfoTDD, FrequencyInfoTDD_sequence);
982
983   return offset;
984 }
985
986
987 static const value_string ulp_T_modeSpecificInfo_vals[] = {
988   {   0, "fdd" },
989   {   1, "tdd" },
990   { 0, NULL }
991 };
992
993 static const per_choice_t T_modeSpecificInfo_choice[] = {
994   {   0, &hf_ulp_fdd             , ASN1_EXTENSION_ROOT    , dissect_ulp_FrequencyInfoFDD },
995   {   1, &hf_ulp_tdd             , ASN1_EXTENSION_ROOT    , dissect_ulp_FrequencyInfoTDD },
996   { 0, NULL, 0, NULL }
997 };
998
999 static int
1000 dissect_ulp_T_modeSpecificInfo(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1001   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1002                                  ett_ulp_T_modeSpecificInfo, T_modeSpecificInfo_choice,
1003                                  NULL);
1004
1005   return offset;
1006 }
1007
1008
1009 static const per_sequence_t FrequencyInfo_sequence[] = {
1010   { &hf_ulp_modeSpecificInfo, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_T_modeSpecificInfo },
1011   { NULL, 0, 0, NULL }
1012 };
1013
1014 static int
1015 dissect_ulp_FrequencyInfo(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1016   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1017                                    ett_ulp_FrequencyInfo, FrequencyInfo_sequence);
1018
1019   return offset;
1020 }
1021
1022
1023
1024 static int
1025 dissect_ulp_INTEGER_0_511(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1026   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1027                                               0U, 511U, NULL, FALSE);
1028
1029   return offset;
1030 }
1031
1032
1033
1034 static int
1035 dissect_ulp_UTRA_CarrierRSSI(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1036   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1037                                               0U, 127U, NULL, FALSE);
1038
1039   return offset;
1040 }
1041
1042
1043 static const per_sequence_t PrimaryCPICH_Info_sequence[] = {
1044   { &hf_ulp_primaryScramblingCode, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_511 },
1045   { NULL, 0, 0, NULL }
1046 };
1047
1048 static int
1049 dissect_ulp_PrimaryCPICH_Info(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1050   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1051                                    ett_ulp_PrimaryCPICH_Info, PrimaryCPICH_Info_sequence);
1052
1053   return offset;
1054 }
1055
1056
1057
1058 static int
1059 dissect_ulp_CPICH_Ec_N0(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1060   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1061                                               0U, 63U, NULL, FALSE);
1062
1063   return offset;
1064 }
1065
1066
1067
1068 static int
1069 dissect_ulp_CPICH_RSCP(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1070   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1071                                               0U, 127U, NULL, FALSE);
1072
1073   return offset;
1074 }
1075
1076
1077
1078 static int
1079 dissect_ulp_Pathloss(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1080   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1081                                               46U, 173U, NULL, FALSE);
1082
1083   return offset;
1084 }
1085
1086
1087 static const per_sequence_t T_fdd_sequence[] = {
1088   { &hf_ulp_primaryCPICH_Info, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_PrimaryCPICH_Info },
1089   { &hf_ulp_cpich_Ec_N0     , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_ulp_CPICH_Ec_N0 },
1090   { &hf_ulp_cpich_RSCP      , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_ulp_CPICH_RSCP },
1091   { &hf_ulp_pathloss        , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_ulp_Pathloss },
1092   { NULL, 0, 0, NULL }
1093 };
1094
1095 static int
1096 dissect_ulp_T_fdd(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1097   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1098                                    ett_ulp_T_fdd, T_fdd_sequence);
1099
1100   return offset;
1101 }
1102
1103
1104
1105 static int
1106 dissect_ulp_CellParametersID(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1107   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1108                                               0U, 127U, NULL, FALSE);
1109
1110   return offset;
1111 }
1112
1113
1114
1115 static int
1116 dissect_ulp_TGSN(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1117   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1118                                               0U, 14U, NULL, FALSE);
1119
1120   return offset;
1121 }
1122
1123
1124
1125 static int
1126 dissect_ulp_PrimaryCCPCH_RSCP(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1127   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1128                                               0U, 127U, NULL, FALSE);
1129
1130   return offset;
1131 }
1132
1133
1134
1135 static int
1136 dissect_ulp_TimeslotISCP(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1137   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1138                                               0U, 127U, NULL, FALSE);
1139
1140   return offset;
1141 }
1142
1143
1144 static const per_sequence_t TimeslotISCP_List_sequence_of[1] = {
1145   { &hf_ulp_TimeslotISCP_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_TimeslotISCP },
1146 };
1147
1148 static int
1149 dissect_ulp_TimeslotISCP_List(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1150   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1151                                                   ett_ulp_TimeslotISCP_List, TimeslotISCP_List_sequence_of,
1152                                                   1, maxTS);
1153
1154   return offset;
1155 }
1156
1157
1158 static const per_sequence_t T_tdd_sequence[] = {
1159   { &hf_ulp_cellParametersID, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_CellParametersID },
1160   { &hf_ulp_proposedTGSN    , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_ulp_TGSN },
1161   { &hf_ulp_primaryCCPCH_RSCP, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_ulp_PrimaryCCPCH_RSCP },
1162   { &hf_ulp_pathloss        , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_ulp_Pathloss },
1163   { &hf_ulp_timeslotISCP_List, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_ulp_TimeslotISCP_List },
1164   { NULL, 0, 0, NULL }
1165 };
1166
1167 static int
1168 dissect_ulp_T_tdd(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1169   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1170                                    ett_ulp_T_tdd, T_tdd_sequence);
1171
1172   return offset;
1173 }
1174
1175
1176 static const value_string ulp_T_modeSpecificInfo1_vals[] = {
1177   {   0, "fdd" },
1178   {   1, "tdd" },
1179   { 0, NULL }
1180 };
1181
1182 static const per_choice_t T_modeSpecificInfo1_choice[] = {
1183   {   0, &hf_ulp_fdd1            , ASN1_NO_EXTENSIONS     , dissect_ulp_T_fdd },
1184   {   1, &hf_ulp_tdd1            , ASN1_NO_EXTENSIONS     , dissect_ulp_T_tdd },
1185   { 0, NULL, 0, NULL }
1186 };
1187
1188 static int
1189 dissect_ulp_T_modeSpecificInfo1(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1190   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1191                                  ett_ulp_T_modeSpecificInfo1, T_modeSpecificInfo1_choice,
1192                                  NULL);
1193
1194   return offset;
1195 }
1196
1197
1198 static const per_sequence_t CellMeasuredResults_sequence[] = {
1199   { &hf_ulp_cellIdentity    , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_ulp_INTEGER_0_268435455 },
1200   { &hf_ulp_modeSpecificInfo1, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_T_modeSpecificInfo1 },
1201   { NULL, 0, 0, NULL }
1202 };
1203
1204 static int
1205 dissect_ulp_CellMeasuredResults(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1206   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1207                                    ett_ulp_CellMeasuredResults, CellMeasuredResults_sequence);
1208
1209   return offset;
1210 }
1211
1212
1213 static const per_sequence_t CellMeasuredResultsList_sequence_of[1] = {
1214   { &hf_ulp_CellMeasuredResultsList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_CellMeasuredResults },
1215 };
1216
1217 static int
1218 dissect_ulp_CellMeasuredResultsList(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1219   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1220                                                   ett_ulp_CellMeasuredResultsList, CellMeasuredResultsList_sequence_of,
1221                                                   1, maxCellMeas);
1222
1223   return offset;
1224 }
1225
1226
1227 static const per_sequence_t MeasuredResults_sequence[] = {
1228   { &hf_ulp_frequencyInfo   , ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_ulp_FrequencyInfo },
1229   { &hf_ulp_utra_CarrierRSSI, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_ulp_UTRA_CarrierRSSI },
1230   { &hf_ulp_cellMeasuredResultsList, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_ulp_CellMeasuredResultsList },
1231   { NULL, 0, 0, NULL }
1232 };
1233
1234 static int
1235 dissect_ulp_MeasuredResults(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1236   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1237                                    ett_ulp_MeasuredResults, MeasuredResults_sequence);
1238
1239   return offset;
1240 }
1241
1242
1243 static const per_sequence_t MeasuredResultsList_sequence_of[1] = {
1244   { &hf_ulp_MeasuredResultsList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_MeasuredResults },
1245 };
1246
1247 static int
1248 dissect_ulp_MeasuredResultsList(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1249   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1250                                                   ett_ulp_MeasuredResultsList, MeasuredResultsList_sequence_of,
1251                                                   1, maxFreq);
1252
1253   return offset;
1254 }
1255
1256
1257 static const per_sequence_t WcdmaCellInformation_sequence[] = {
1258   { &hf_ulp_refMCC          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_999 },
1259   { &hf_ulp_refMNC          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_999 },
1260   { &hf_ulp_refUC           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_268435455 },
1261   { &hf_ulp_frequencyInfo   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_FrequencyInfo },
1262   { &hf_ulp_primaryScramblingCode, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_INTEGER_0_511 },
1263   { &hf_ulp_measuredResultsList, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_MeasuredResultsList },
1264   { NULL, 0, 0, NULL }
1265 };
1266
1267 static int
1268 dissect_ulp_WcdmaCellInformation(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1269   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1270                                    ett_ulp_WcdmaCellInformation, WcdmaCellInformation_sequence);
1271
1272   return offset;
1273 }
1274
1275
1276
1277 static int
1278 dissect_ulp_INTEGER_0_32767(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1279   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1280                                               0U, 32767U, NULL, FALSE);
1281
1282   return offset;
1283 }
1284
1285
1286
1287 static int
1288 dissect_ulp_INTEGER_0_4194303(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1289   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1290                                               0U, 4194303U, NULL, FALSE);
1291
1292   return offset;
1293 }
1294
1295
1296
1297 static int
1298 dissect_ulp_INTEGER_0_8388607(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1299   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1300                                               0U, 8388607U, NULL, FALSE);
1301
1302   return offset;
1303 }
1304
1305
1306 static const per_sequence_t CdmaCellInformation_sequence[] = {
1307   { &hf_ulp_refNID          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
1308   { &hf_ulp_refSID          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_32767 },
1309   { &hf_ulp_refBASEID       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
1310   { &hf_ulp_refBASELAT      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4194303 },
1311   { &hf_ulp_reBASELONG      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_8388607 },
1312   { &hf_ulp_refREFPN        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_511 },
1313   { &hf_ulp_refWeekNumber   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
1314   { &hf_ulp_refSeconds      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4194303 },
1315   { NULL, 0, 0, NULL }
1316 };
1317
1318 static int
1319 dissect_ulp_CdmaCellInformation(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1320   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1321                                    ett_ulp_CdmaCellInformation, CdmaCellInformation_sequence);
1322
1323   return offset;
1324 }
1325
1326
1327 static const value_string ulp_CellInfo_vals[] = {
1328   {   0, "gsmCell" },
1329   {   1, "wcdmaCell" },
1330   {   2, "cdmaCell" },
1331   { 0, NULL }
1332 };
1333
1334 static const per_choice_t CellInfo_choice[] = {
1335   {   0, &hf_ulp_gsmCell         , ASN1_EXTENSION_ROOT    , dissect_ulp_GsmCellInformation },
1336   {   1, &hf_ulp_wcdmaCell       , ASN1_EXTENSION_ROOT    , dissect_ulp_WcdmaCellInformation },
1337   {   2, &hf_ulp_cdmaCell        , ASN1_EXTENSION_ROOT    , dissect_ulp_CdmaCellInformation },
1338   { 0, NULL, 0, NULL }
1339 };
1340
1341 static int
1342 dissect_ulp_CellInfo(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1343   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1344                                  ett_ulp_CellInfo, CellInfo_choice,
1345                                  NULL);
1346
1347   return offset;
1348 }
1349
1350
1351 static const value_string ulp_Status_vals[] = {
1352   {   0, "stale" },
1353   {   1, "current" },
1354   {   2, "unknown" },
1355   { 0, NULL }
1356 };
1357
1358
1359 static int
1360 dissect_ulp_Status(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1361   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1362                                      3, NULL, TRUE, 0, NULL);
1363
1364   return offset;
1365 }
1366
1367
1368 static const per_sequence_t LocationId_sequence[] = {
1369   { &hf_ulp_cellInfo        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_CellInfo },
1370   { &hf_ulp_status          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_Status },
1371   { NULL, 0, 0, NULL }
1372 };
1373
1374 static int
1375 dissect_ulp_LocationId(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1376   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1377                                    ett_ulp_LocationId, LocationId_sequence);
1378
1379   return offset;
1380 }
1381
1382
1383 static const per_sequence_t SUPLSTART_sequence[] = {
1384   { &hf_ulp_sETCapabilities , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_SETCapabilities },
1385   { &hf_ulp_locationId      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_LocationId },
1386   { &hf_ulp_qoP             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_QoP },
1387   { NULL, 0, 0, NULL }
1388 };
1389
1390 static int
1391 dissect_ulp_SUPLSTART(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1392   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1393                                    ett_ulp_SUPLSTART, SUPLSTART_sequence);
1394
1395   return offset;
1396 }
1397
1398
1399
1400 static int
1401 dissect_ulp_BIT_STRING_SIZE_128(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1402   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1403                                      128, 128, FALSE, NULL);
1404
1405   return offset;
1406 }
1407
1408
1409
1410 static int
1411 dissect_ulp_BIT_STRING_SIZE_256(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1412   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1413                                      256, 256, FALSE, NULL);
1414
1415   return offset;
1416 }
1417
1418
1419 static const value_string ulp_SETAuthKey_vals[] = {
1420   {   0, "shortKey" },
1421   {   1, "longKey" },
1422   { 0, NULL }
1423 };
1424
1425 static const per_choice_t SETAuthKey_choice[] = {
1426   {   0, &hf_ulp_shortKey        , ASN1_EXTENSION_ROOT    , dissect_ulp_BIT_STRING_SIZE_128 },
1427   {   1, &hf_ulp_longKey         , ASN1_EXTENSION_ROOT    , dissect_ulp_BIT_STRING_SIZE_256 },
1428   { 0, NULL, 0, NULL }
1429 };
1430
1431 static int
1432 dissect_ulp_SETAuthKey(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1433   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1434                                  ett_ulp_SETAuthKey, SETAuthKey_choice,
1435                                  NULL);
1436
1437   return offset;
1438 }
1439
1440
1441
1442 static int
1443 dissect_ulp_KeyIdentity4(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1444   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1445                                      128, 128, FALSE, NULL);
1446
1447   return offset;
1448 }
1449
1450
1451 static const per_sequence_t SUPLRESPONSE_sequence[] = {
1452   { &hf_ulp_posMethod       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_PosMethod },
1453   { &hf_ulp_sLPAddress      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_SLPAddress },
1454   { &hf_ulp_sETAuthKey      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_SETAuthKey },
1455   { &hf_ulp_keyIdentity4    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_KeyIdentity4 },
1456   { NULL, 0, 0, NULL }
1457 };
1458
1459 static int
1460 dissect_ulp_SUPLRESPONSE(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1461   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1462                                    ett_ulp_SUPLRESPONSE, SUPLRESPONSE_sequence);
1463
1464   return offset;
1465 }
1466
1467
1468
1469 static int
1470 dissect_ulp_INTEGER_0_167(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1471   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1472                                               0U, 167U, NULL, FALSE);
1473
1474   return offset;
1475 }
1476
1477
1478
1479 static int
1480 dissect_ulp_INTEGER_0_31(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1481   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1482                                               0U, 31U, NULL, FALSE);
1483
1484   return offset;
1485 }
1486
1487
1488
1489 static int
1490 dissect_ulp_INTEGER_0_10(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1491   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1492                                               0U, 10U, NULL, FALSE);
1493
1494   return offset;
1495 }
1496
1497
1498 static const per_sequence_t SatelliteInfoElement_sequence[] = {
1499   { &hf_ulp_satId           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_63 },
1500   { &hf_ulp_iODE            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_255 },
1501   { NULL, 0, 0, NULL }
1502 };
1503
1504 static int
1505 dissect_ulp_SatelliteInfoElement(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1506   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1507                                    ett_ulp_SatelliteInfoElement, SatelliteInfoElement_sequence);
1508
1509   return offset;
1510 }
1511
1512
1513 static const per_sequence_t SatelliteInfo_sequence_of[1] = {
1514   { &hf_ulp_SatelliteInfo_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_SatelliteInfoElement },
1515 };
1516
1517 static int
1518 dissect_ulp_SatelliteInfo(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1519   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1520                                                   ett_ulp_SatelliteInfo, SatelliteInfo_sequence_of,
1521                                                   1, 31);
1522
1523   return offset;
1524 }
1525
1526
1527 static const per_sequence_t NavigationModel_sequence[] = {
1528   { &hf_ulp_gpsWeek         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_1023 },
1529   { &hf_ulp_gpsToe          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_167 },
1530   { &hf_ulp_nSAT            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_31 },
1531   { &hf_ulp_toeLimit        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_10 },
1532   { &hf_ulp_satInfo         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_SatelliteInfo },
1533   { NULL, 0, 0, NULL }
1534 };
1535
1536 static int
1537 dissect_ulp_NavigationModel(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1538   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1539                                    ett_ulp_NavigationModel, NavigationModel_sequence);
1540
1541   return offset;
1542 }
1543
1544
1545 static const per_sequence_t RequestedAssistData_sequence[] = {
1546   { &hf_ulp_almanacRequested, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1547   { &hf_ulp_utcModelRequested, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1548   { &hf_ulp_ionosphericModelRequested, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1549   { &hf_ulp_dgpsCorrectionsRequested, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1550   { &hf_ulp_referenceLocationRequested, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1551   { &hf_ulp_referenceTimeRequested, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1552   { &hf_ulp_acquisitionAssistanceRequested, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1553   { &hf_ulp_realTimeIntegrityRequested, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1554   { &hf_ulp_navigationModelRequested, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN },
1555   { &hf_ulp_navigationModelData, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_NavigationModel },
1556   { NULL, 0, 0, NULL }
1557 };
1558
1559 static int
1560 dissect_ulp_RequestedAssistData(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1561   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1562                                    ett_ulp_RequestedAssistData, RequestedAssistData_sequence);
1563
1564   return offset;
1565 }
1566
1567
1568
1569 static int
1570 dissect_ulp_UTCTime(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1571   offset = dissect_per_VisibleString(tvb, offset, actx, tree, hf_index,
1572                                         NO_BOUND, NO_BOUND);
1573
1574   return offset;
1575 }
1576
1577
1578 static const value_string ulp_T_latitudeSign_vals[] = {
1579   {   0, "north" },
1580   {   1, "south" },
1581   { 0, NULL }
1582 };
1583
1584
1585 static int
1586 dissect_ulp_T_latitudeSign(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1587   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1588                                      2, NULL, FALSE, 0, NULL);
1589
1590   return offset;
1591 }
1592
1593
1594
1595 static int
1596 dissect_ulp_INTEGER_M8388608_8388607(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1597   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1598                                               -8388608, 8388607U, NULL, FALSE);
1599
1600   return offset;
1601 }
1602
1603
1604
1605 static int
1606 dissect_ulp_INTEGER_0_180(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1607   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1608                                               0U, 180U, NULL, FALSE);
1609
1610   return offset;
1611 }
1612
1613
1614 static const per_sequence_t T_uncertainty_sequence[] = {
1615   { &hf_ulp_uncertaintySemiMajor, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_127 },
1616   { &hf_ulp_uncertaintySemiMinor, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_127 },
1617   { &hf_ulp_orientationMajorAxis, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_180 },
1618   { NULL, 0, 0, NULL }
1619 };
1620
1621 static int
1622 dissect_ulp_T_uncertainty(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1623   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1624                                    ett_ulp_T_uncertainty, T_uncertainty_sequence);
1625
1626   return offset;
1627 }
1628
1629
1630
1631 static int
1632 dissect_ulp_INTEGER_0_100(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1633   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1634                                               0U, 100U, NULL, FALSE);
1635
1636   return offset;
1637 }
1638
1639
1640 static const value_string ulp_T_altitudeDirection_vals[] = {
1641   {   0, "height" },
1642   {   1, "depth" },
1643   { 0, NULL }
1644 };
1645
1646
1647 static int
1648 dissect_ulp_T_altitudeDirection(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1649   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1650                                      2, NULL, FALSE, 0, NULL);
1651
1652   return offset;
1653 }
1654
1655
1656 static const per_sequence_t AltitudeInfo_sequence[] = {
1657   { &hf_ulp_altitudeDirection, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_T_altitudeDirection },
1658   { &hf_ulp_altitude        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_32767 },
1659   { &hf_ulp_altUncertainty  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_127 },
1660   { NULL, 0, 0, NULL }
1661 };
1662
1663 static int
1664 dissect_ulp_AltitudeInfo(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1665   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1666                                    ett_ulp_AltitudeInfo, AltitudeInfo_sequence);
1667
1668   return offset;
1669 }
1670
1671
1672 static const per_sequence_t PositionEstimate_sequence[] = {
1673   { &hf_ulp_latitudeSign    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_T_latitudeSign },
1674   { &hf_ulp_latitude        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_8388607 },
1675   { &hf_ulp_longitude       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_M8388608_8388607 },
1676   { &hf_ulp_uncertainty     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_T_uncertainty },
1677   { &hf_ulp_confidence      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_INTEGER_0_100 },
1678   { &hf_ulp_altitudeInfo    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_AltitudeInfo },
1679   { NULL, 0, 0, NULL }
1680 };
1681
1682 static int
1683 dissect_ulp_PositionEstimate(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1684   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1685                                    ett_ulp_PositionEstimate, PositionEstimate_sequence);
1686
1687   return offset;
1688 }
1689
1690
1691
1692 static int
1693 dissect_ulp_BIT_STRING_SIZE_9(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1694   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1695                                      9, 9, FALSE, NULL);
1696
1697   return offset;
1698 }
1699
1700
1701
1702 static int
1703 dissect_ulp_BIT_STRING_SIZE_16(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1704   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1705                                      16, 16, FALSE, NULL);
1706
1707   return offset;
1708 }
1709
1710
1711 static const per_sequence_t Horvel_sequence[] = {
1712   { &hf_ulp_bearing         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_9 },
1713   { &hf_ulp_horspeed        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_16 },
1714   { NULL, 0, 0, NULL }
1715 };
1716
1717 static int
1718 dissect_ulp_Horvel(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1719   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1720                                    ett_ulp_Horvel, Horvel_sequence);
1721
1722   return offset;
1723 }
1724
1725
1726
1727 static int
1728 dissect_ulp_BIT_STRING_SIZE_1(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1729   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1730                                      1, 1, FALSE, NULL);
1731
1732   return offset;
1733 }
1734
1735
1736
1737 static int
1738 dissect_ulp_BIT_STRING_SIZE_8(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1739   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1740                                      8, 8, FALSE, NULL);
1741
1742   return offset;
1743 }
1744
1745
1746 static const per_sequence_t Horandvervel_sequence[] = {
1747   { &hf_ulp_verdirect       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_1 },
1748   { &hf_ulp_bearing         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_9 },
1749   { &hf_ulp_horspeed        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_16 },
1750   { &hf_ulp_verspeed        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_8 },
1751   { NULL, 0, 0, NULL }
1752 };
1753
1754 static int
1755 dissect_ulp_Horandvervel(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1756   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1757                                    ett_ulp_Horandvervel, Horandvervel_sequence);
1758
1759   return offset;
1760 }
1761
1762
1763 static const per_sequence_t Horveluncert_sequence[] = {
1764   { &hf_ulp_bearing         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_9 },
1765   { &hf_ulp_horspeed        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_16 },
1766   { &hf_ulp_uncertspeed     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_8 },
1767   { NULL, 0, 0, NULL }
1768 };
1769
1770 static int
1771 dissect_ulp_Horveluncert(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1772   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1773                                    ett_ulp_Horveluncert, Horveluncert_sequence);
1774
1775   return offset;
1776 }
1777
1778
1779 static const per_sequence_t Horandveruncert_sequence[] = {
1780   { &hf_ulp_verdirect       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_1 },
1781   { &hf_ulp_bearing         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_9 },
1782   { &hf_ulp_horspeed        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_16 },
1783   { &hf_ulp_verspeed        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_8 },
1784   { &hf_ulp_horuncertspeed  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_8 },
1785   { &hf_ulp_veruncertspeed  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_8 },
1786   { NULL, 0, 0, NULL }
1787 };
1788
1789 static int
1790 dissect_ulp_Horandveruncert(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1791   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1792                                    ett_ulp_Horandveruncert, Horandveruncert_sequence);
1793
1794   return offset;
1795 }
1796
1797
1798 static const value_string ulp_Velocity_vals[] = {
1799   {   0, "horvel" },
1800   {   1, "horandvervel" },
1801   {   2, "horveluncert" },
1802   {   3, "horandveruncert" },
1803   { 0, NULL }
1804 };
1805
1806 static const per_choice_t Velocity_choice[] = {
1807   {   0, &hf_ulp_horvel          , ASN1_EXTENSION_ROOT    , dissect_ulp_Horvel },
1808   {   1, &hf_ulp_horandvervel    , ASN1_EXTENSION_ROOT    , dissect_ulp_Horandvervel },
1809   {   2, &hf_ulp_horveluncert    , ASN1_EXTENSION_ROOT    , dissect_ulp_Horveluncert },
1810   {   3, &hf_ulp_horandveruncert , ASN1_EXTENSION_ROOT    , dissect_ulp_Horandveruncert },
1811   { 0, NULL, 0, NULL }
1812 };
1813
1814 static int
1815 dissect_ulp_Velocity(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1816   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1817                                  ett_ulp_Velocity, Velocity_choice,
1818                                  NULL);
1819
1820   return offset;
1821 }
1822
1823
1824 static const per_sequence_t Position_sequence[] = {
1825   { &hf_ulp_timestamp       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_UTCTime },
1826   { &hf_ulp_positionEstimate, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_PositionEstimate },
1827   { &hf_ulp_velocity        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_Velocity },
1828   { NULL, 0, 0, NULL }
1829 };
1830
1831 static int
1832 dissect_ulp_Position(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1833   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1834                                    ett_ulp_Position, Position_sequence);
1835
1836   return offset;
1837 }
1838
1839
1840
1841 static int
1842 dissect_ulp_OCTET_STRING_SIZE_1_8192(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1843   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1844                                        1, 8192, NULL);
1845
1846   return offset;
1847 }
1848
1849
1850
1851 static int
1852 dissect_ulp_RRLPPayload(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1853 #line 33 "ulp.cnf"
1854  tvbuff_t *rrlp_tvb;
1855
1856   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1857                                        1, 8192, &rrlp_tvb);
1858
1859
1860   if (rrlp_tvb){
1861         call_dissector(rrlp_handle, rrlp_tvb, actx->pinfo, tree);
1862
1863   }
1864
1865   return offset;
1866 }
1867
1868
1869 static const value_string ulp_PosPayLoad_vals[] = {
1870   {   0, "tia801payload" },
1871   {   1, "rrcPayload" },
1872   {   2, "rrlpPayload" },
1873   { 0, NULL }
1874 };
1875
1876 static const per_choice_t PosPayLoad_choice[] = {
1877   {   0, &hf_ulp_tia801payload   , ASN1_EXTENSION_ROOT    , dissect_ulp_OCTET_STRING_SIZE_1_8192 },
1878   {   1, &hf_ulp_rrcPayload      , ASN1_EXTENSION_ROOT    , dissect_ulp_OCTET_STRING_SIZE_1_8192 },
1879   {   2, &hf_ulp_rrlpPayload     , ASN1_EXTENSION_ROOT    , dissect_ulp_RRLPPayload },
1880   { 0, NULL, 0, NULL }
1881 };
1882
1883 static int
1884 dissect_ulp_PosPayLoad(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1885   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1886                                  ett_ulp_PosPayLoad, PosPayLoad_choice,
1887                                  NULL);
1888
1889   return offset;
1890 }
1891
1892
1893 static const per_sequence_t SUPLPOS_sequence[] = {
1894   { &hf_ulp_posPayLoad      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_PosPayLoad },
1895   { &hf_ulp_velocity        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_Velocity },
1896   { NULL, 0, 0, NULL }
1897 };
1898
1899 static int
1900 dissect_ulp_SUPLPOS(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1901   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1902                                    ett_ulp_SUPLPOS, SUPLPOS_sequence);
1903
1904   return offset;
1905 }
1906
1907
1908
1909 static int
1910 dissect_ulp_Ver(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1911   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1912                                      64, 64, FALSE, NULL);
1913
1914   return offset;
1915 }
1916
1917
1918 static const per_sequence_t SUPLPOSINIT_sequence[] = {
1919   { &hf_ulp_sETCapabilities , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_SETCapabilities },
1920   { &hf_ulp_requestedAssistData, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_RequestedAssistData },
1921   { &hf_ulp_locationId      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_LocationId },
1922   { &hf_ulp_position        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_Position },
1923   { &hf_ulp_sUPLPOS         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_SUPLPOS },
1924   { &hf_ulp_ver             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_Ver },
1925   { NULL, 0, 0, NULL }
1926 };
1927
1928 static int
1929 dissect_ulp_SUPLPOSINIT(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1930   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1931                                    ett_ulp_SUPLPOSINIT, SUPLPOSINIT_sequence);
1932
1933   return offset;
1934 }
1935
1936
1937 static const value_string ulp_StatusCode_vals[] = {
1938   {   0, "unspecified" },
1939   {   1, "systemFailure" },
1940   {   2, "unexpectedMessage" },
1941   {   3, "protocolError" },
1942   {   4, "dataMissing" },
1943   {   5, "unexpectedDataValue" },
1944   {   6, "posMethodFailure" },
1945   {   7, "posMethodMismatch" },
1946   {   8, "posProtocolMismatch" },
1947   {   9, "targetSETnotReachable" },
1948   {  10, "versionNotSupported" },
1949   {  11, "resourceShortage" },
1950   {  12, "invalidSessionId" },
1951   {  13, "nonProxyModeNotSupported" },
1952   {  14, "proxyModeNotSupported" },
1953   {  15, "positioningNotPermitted" },
1954   {  16, "authNetFailure" },
1955   {  17, "authSuplinitFailure" },
1956   { 100, "consentDeniedByUser" },
1957   { 101, "consentGrantedByUser" },
1958   { 0, NULL }
1959 };
1960
1961 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};
1962
1963 static int
1964 dissect_ulp_StatusCode(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1965   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1966                                      20, NULL, TRUE, 0, StatusCode_value_map);
1967
1968   return offset;
1969 }
1970
1971
1972 static const per_sequence_t SUPLEND_sequence[] = {
1973   { &hf_ulp_position        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_Position },
1974   { &hf_ulp_statusCode      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_StatusCode },
1975   { &hf_ulp_ver             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_Ver },
1976   { NULL, 0, 0, NULL }
1977 };
1978
1979 static int
1980 dissect_ulp_SUPLEND(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1981   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1982                                    ett_ulp_SUPLEND, SUPLEND_sequence);
1983
1984   return offset;
1985 }
1986
1987
1988
1989 static int
1990 dissect_ulp_SETNonce(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
1991   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1992                                      128, 128, FALSE, NULL);
1993
1994   return offset;
1995 }
1996
1997
1998
1999 static int
2000 dissect_ulp_KeyIdentity2(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
2001   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2002                                      128, 128, FALSE, NULL);
2003
2004   return offset;
2005 }
2006
2007
2008 static const per_sequence_t SUPLAUTHREQ_sequence[] = {
2009   { &hf_ulp_sETNonce        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_SETNonce },
2010   { &hf_ulp_keyIdentity2    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ulp_KeyIdentity2 },
2011   { NULL, 0, 0, NULL }
2012 };
2013
2014 static int
2015 dissect_ulp_SUPLAUTHREQ(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
2016   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2017                                    ett_ulp_SUPLAUTHREQ, SUPLAUTHREQ_sequence);
2018
2019   return offset;
2020 }
2021
2022
2023 static const value_string ulp_SPCAuthKey_vals[] = {
2024   {   0, "shortKey" },
2025   {   1, "longKey" },
2026   { 0, NULL }
2027 };
2028
2029 static const per_choice_t SPCAuthKey_choice[] = {
2030   {   0, &hf_ulp_shortKey        , ASN1_EXTENSION_ROOT    , dissect_ulp_BIT_STRING_SIZE_128 },
2031   {   1, &hf_ulp_longKey         , ASN1_EXTENSION_ROOT    , dissect_ulp_BIT_STRING_SIZE_256 },
2032   { 0, NULL, 0, NULL }
2033 };
2034
2035 static int
2036 dissect_ulp_SPCAuthKey(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
2037   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2038                                  ett_ulp_SPCAuthKey, SPCAuthKey_choice,
2039                                  NULL);
2040
2041   return offset;
2042 }
2043
2044
2045
2046 static int
2047 dissect_ulp_KeyIdentity3(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
2048   offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2049                                      128, 128, FALSE, NULL);
2050
2051   return offset;
2052 }
2053
2054
2055 static const per_sequence_t SUPLAUTHRESP_sequence[] = {
2056   { &hf_ulp_sPCAuthKey      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_SPCAuthKey },
2057   { &hf_ulp_keyIdentity3    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_KeyIdentity3 },
2058   { &hf_ulp_statusCode      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ulp_StatusCode },
2059   { NULL, 0, 0, NULL }
2060 };
2061
2062 static int
2063 dissect_ulp_SUPLAUTHRESP(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
2064   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2065                                    ett_ulp_SUPLAUTHRESP, SUPLAUTHRESP_sequence);
2066
2067   return offset;
2068 }
2069
2070
2071 static const value_string ulp_UlpMessage_vals[] = {
2072   {   0, "msSUPLINIT" },
2073   {   1, "msSUPLSTART" },
2074   {   2, "msSUPLRESPONSE" },
2075   {   3, "msSUPLPOSINIT" },
2076   {   4, "msSUPLPOS" },
2077   {   5, "msSUPLEND" },
2078   {   6, "msSUPLAUTHREQ" },
2079   {   7, "msSUPLAUTHRESP" },
2080   { 0, NULL }
2081 };
2082
2083 static const per_choice_t UlpMessage_choice[] = {
2084   {   0, &hf_ulp_msSUPLINIT      , ASN1_EXTENSION_ROOT    , dissect_ulp_SUPLINIT },
2085   {   1, &hf_ulp_msSUPLSTART     , ASN1_EXTENSION_ROOT    , dissect_ulp_SUPLSTART },
2086   {   2, &hf_ulp_msSUPLRESPONSE  , ASN1_EXTENSION_ROOT    , dissect_ulp_SUPLRESPONSE },
2087   {   3, &hf_ulp_msSUPLPOSINIT   , ASN1_EXTENSION_ROOT    , dissect_ulp_SUPLPOSINIT },
2088   {   4, &hf_ulp_msSUPLPOS       , ASN1_EXTENSION_ROOT    , dissect_ulp_SUPLPOS },
2089   {   5, &hf_ulp_msSUPLEND       , ASN1_EXTENSION_ROOT    , dissect_ulp_SUPLEND },
2090   {   6, &hf_ulp_msSUPLAUTHREQ   , ASN1_EXTENSION_ROOT    , dissect_ulp_SUPLAUTHREQ },
2091   {   7, &hf_ulp_msSUPLAUTHRESP  , ASN1_EXTENSION_ROOT    , dissect_ulp_SUPLAUTHRESP },
2092   { 0, NULL, 0, NULL }
2093 };
2094
2095 static int
2096 dissect_ulp_UlpMessage(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
2097 #line 21 "ulp.cnf"
2098
2099 guint32 UlpMessage;
2100
2101     offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2102                                  ett_ulp_UlpMessage, UlpMessage_choice,
2103                                  &UlpMessage);
2104
2105
2106         if (check_col(actx->pinfo->cinfo, COL_INFO))
2107         {
2108             col_append_fstr(actx->pinfo->cinfo, COL_INFO, "%s ", val_to_str(UlpMessage,ulp_UlpMessage_vals,"Unknown"));
2109         }
2110
2111
2112   return offset;
2113 }
2114
2115
2116 static const per_sequence_t ULP_PDU_sequence[] = {
2117   { &hf_ulp_length          , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_65535 },
2118   { &hf_ulp_version         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_Version },
2119   { &hf_ulp_sessionID       , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_SessionID },
2120   { &hf_ulp_message         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ulp_UlpMessage },
2121   { NULL, 0, 0, NULL }
2122 };
2123
2124 static int
2125 dissect_ulp_ULP_PDU(tvbuff_t *tvb, int offset, asn_ctx_t *actx _U_, proto_tree *tree, int hf_index) {
2126 #line 10 "ulp.cnf"
2127
2128         proto_tree_add_item(tree, proto_ulp, tvb, 0, -1, FALSE);
2129
2130         if (check_col(actx->pinfo->cinfo, COL_PROTOCOL)) 
2131                 col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, PSNAME);
2132         if (check_col(actx->pinfo->cinfo, COL_INFO))
2133                 col_clear(actx->pinfo->cinfo, COL_INFO);
2134
2135     offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2136                                    ett_ulp_ULP_PDU, ULP_PDU_sequence);
2137
2138
2139
2140
2141   return offset;
2142 }
2143
2144 /*--- PDUs ---*/
2145
2146 static void dissect_ULP_PDU_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
2147   asn_ctx_t asn_ctx;
2148   asn_ctx_init(&asn_ctx, ASN_ENC_PER, FALSE, pinfo);
2149   dissect_ulp_ULP_PDU(tvb, 0, &asn_ctx, tree, hf_ulp_ULP_PDU_PDU);
2150 }
2151
2152
2153 /*--- End of included file: packet-ulp-fn.c ---*/
2154 #line 80 "packet-ulp-template.c"
2155
2156
2157 static guint
2158 get_ulp_pdu_len(tvbuff_t *tvb, int offset)
2159 {
2160         /* PDU length = Message length */
2161         return tvb_get_ntohs(tvb,offset);
2162 }
2163
2164 static void
2165 dissect_ulp_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2166 {
2167         tcp_dissect_pdus(tvb, pinfo, tree, ulp_desegment, ULP_HEADER_SIZE,
2168             get_ulp_pdu_len, dissect_ULP_PDU_PDU);
2169 }
2170 /*--- proto_reg_handoff_ulp ---------------------------------------*/
2171 void
2172 proto_reg_handoff_ulp(void)
2173 {
2174
2175         ulp_handle = create_dissector_handle(dissect_ulp_tcp, proto_ulp);
2176
2177         dissector_add("tcp.port", gbl_ulp_port, ulp_handle);
2178
2179         /* application/oma-supl-ulp */
2180         dissector_add_string("media_type","application/oma-supl-ulp", ulp_handle);
2181
2182         rrlp_handle = find_dissector("rrlp");
2183
2184 }
2185
2186
2187 /*--- proto_register_ulp -------------------------------------------*/
2188 void proto_register_ulp(void) {
2189
2190   /* List of fields */
2191   static hf_register_info hf[] = {
2192
2193
2194 /*--- Included file: packet-ulp-hfarr.c ---*/
2195 #line 1 "packet-ulp-hfarr.c"
2196     { &hf_ulp_ULP_PDU_PDU,
2197       { "ULP-PDU", "ulp.ULP_PDU",
2198         FT_NONE, BASE_NONE, NULL, 0,
2199         "ULP-PDU", HFILL }},
2200     { &hf_ulp_length,
2201       { "length", "ulp.length",
2202         FT_UINT32, BASE_DEC, NULL, 0,
2203         "ULP-PDU/length", HFILL }},
2204     { &hf_ulp_version,
2205       { "version", "ulp.version",
2206         FT_NONE, BASE_NONE, NULL, 0,
2207         "ULP-PDU/version", HFILL }},
2208     { &hf_ulp_sessionID,
2209       { "sessionID", "ulp.sessionID",
2210         FT_NONE, BASE_NONE, NULL, 0,
2211         "ULP-PDU/sessionID", HFILL }},
2212     { &hf_ulp_message,
2213       { "message", "ulp.message",
2214         FT_UINT32, BASE_DEC, VALS(ulp_UlpMessage_vals), 0,
2215         "ULP-PDU/message", HFILL }},
2216     { &hf_ulp_msSUPLINIT,
2217       { "msSUPLINIT", "ulp.msSUPLINIT",
2218         FT_NONE, BASE_NONE, NULL, 0,
2219         "UlpMessage/msSUPLINIT", HFILL }},
2220     { &hf_ulp_msSUPLSTART,
2221       { "msSUPLSTART", "ulp.msSUPLSTART",
2222         FT_NONE, BASE_NONE, NULL, 0,
2223         "UlpMessage/msSUPLSTART", HFILL }},
2224     { &hf_ulp_msSUPLRESPONSE,
2225       { "msSUPLRESPONSE", "ulp.msSUPLRESPONSE",
2226         FT_NONE, BASE_NONE, NULL, 0,
2227         "UlpMessage/msSUPLRESPONSE", HFILL }},
2228     { &hf_ulp_msSUPLPOSINIT,
2229       { "msSUPLPOSINIT", "ulp.msSUPLPOSINIT",
2230         FT_NONE, BASE_NONE, NULL, 0,
2231         "UlpMessage/msSUPLPOSINIT", HFILL }},
2232     { &hf_ulp_msSUPLPOS,
2233       { "msSUPLPOS", "ulp.msSUPLPOS",
2234         FT_NONE, BASE_NONE, NULL, 0,
2235         "UlpMessage/msSUPLPOS", HFILL }},
2236     { &hf_ulp_msSUPLEND,
2237       { "msSUPLEND", "ulp.msSUPLEND",
2238         FT_NONE, BASE_NONE, NULL, 0,
2239         "UlpMessage/msSUPLEND", HFILL }},
2240     { &hf_ulp_msSUPLAUTHREQ,
2241       { "msSUPLAUTHREQ", "ulp.msSUPLAUTHREQ",
2242         FT_NONE, BASE_NONE, NULL, 0,
2243         "UlpMessage/msSUPLAUTHREQ", HFILL }},
2244     { &hf_ulp_msSUPLAUTHRESP,
2245       { "msSUPLAUTHRESP", "ulp.msSUPLAUTHRESP",
2246         FT_NONE, BASE_NONE, NULL, 0,
2247         "UlpMessage/msSUPLAUTHRESP", HFILL }},
2248     { &hf_ulp_maj,
2249       { "maj", "ulp.maj",
2250         FT_UINT32, BASE_DEC, NULL, 0,
2251         "Version/maj", HFILL }},
2252     { &hf_ulp_min,
2253       { "min", "ulp.min",
2254         FT_UINT32, BASE_DEC, NULL, 0,
2255         "Version/min", HFILL }},
2256     { &hf_ulp_servind,
2257       { "servind", "ulp.servind",
2258         FT_UINT32, BASE_DEC, NULL, 0,
2259         "Version/servind", HFILL }},
2260     { &hf_ulp_setSessionID,
2261       { "setSessionID", "ulp.setSessionID",
2262         FT_NONE, BASE_NONE, NULL, 0,
2263         "SessionID/setSessionID", HFILL }},
2264     { &hf_ulp_slpSessionID,
2265       { "slpSessionID", "ulp.slpSessionID",
2266         FT_NONE, BASE_NONE, NULL, 0,
2267         "SessionID/slpSessionID", HFILL }},
2268     { &hf_ulp_sessionId,
2269       { "sessionId", "ulp.sessionId",
2270         FT_UINT32, BASE_DEC, NULL, 0,
2271         "SetSessionID/sessionId", HFILL }},
2272     { &hf_ulp_setId,
2273       { "setId", "ulp.setId",
2274         FT_UINT32, BASE_DEC, VALS(ulp_SETId_vals), 0,
2275         "SetSessionID/setId", HFILL }},
2276     { &hf_ulp_msisdn,
2277       { "msisdn", "ulp.msisdn",
2278         FT_BYTES, BASE_HEX, NULL, 0,
2279         "SETId/msisdn", HFILL }},
2280     { &hf_ulp_mdn,
2281       { "mdn", "ulp.mdn",
2282         FT_BYTES, BASE_HEX, NULL, 0,
2283         "SETId/mdn", HFILL }},
2284     { &hf_ulp_min1,
2285       { "min", "ulp.min",
2286         FT_BYTES, BASE_HEX, NULL, 0,
2287         "SETId/min", HFILL }},
2288     { &hf_ulp_imsi,
2289       { "imsi", "ulp.imsi",
2290         FT_BYTES, BASE_HEX, NULL, 0,
2291         "SETId/imsi", HFILL }},
2292     { &hf_ulp_nai,
2293       { "nai", "ulp.nai",
2294         FT_STRING, BASE_NONE, NULL, 0,
2295         "SETId/nai", HFILL }},
2296     { &hf_ulp_iPAddress,
2297       { "iPAddress", "ulp.iPAddress",
2298         FT_UINT32, BASE_DEC, VALS(ulp_IPAddress_vals), 0,
2299         "", HFILL }},
2300     { &hf_ulp_sessionID1,
2301       { "sessionID", "ulp.sessionID",
2302         FT_BYTES, BASE_HEX, NULL, 0,
2303         "SlpSessionID/sessionID", HFILL }},
2304     { &hf_ulp_slpId,
2305       { "slpId", "ulp.slpId",
2306         FT_UINT32, BASE_DEC, VALS(ulp_SLPAddress_vals), 0,
2307         "SlpSessionID/slpId", HFILL }},
2308     { &hf_ulp_ipv4Address,
2309       { "ipv4Address", "ulp.ipv4Address",
2310         FT_BYTES, BASE_HEX, NULL, 0,
2311         "IPAddress/ipv4Address", HFILL }},
2312     { &hf_ulp_ipv6Address,
2313       { "ipv6Address", "ulp.ipv6Address",
2314         FT_BYTES, BASE_HEX, NULL, 0,
2315         "IPAddress/ipv6Address", HFILL }},
2316     { &hf_ulp_fQDN,
2317       { "fQDN", "ulp.fQDN",
2318         FT_STRING, BASE_NONE, NULL, 0,
2319         "SLPAddress/fQDN", HFILL }},
2320     { &hf_ulp_cellInfo,
2321       { "cellInfo", "ulp.cellInfo",
2322         FT_UINT32, BASE_DEC, VALS(ulp_CellInfo_vals), 0,
2323         "LocationId/cellInfo", HFILL }},
2324     { &hf_ulp_status,
2325       { "status", "ulp.status",
2326         FT_UINT32, BASE_DEC, VALS(ulp_Status_vals), 0,
2327         "LocationId/status", HFILL }},
2328     { &hf_ulp_gsmCell,
2329       { "gsmCell", "ulp.gsmCell",
2330         FT_NONE, BASE_NONE, NULL, 0,
2331         "CellInfo/gsmCell", HFILL }},
2332     { &hf_ulp_wcdmaCell,
2333       { "wcdmaCell", "ulp.wcdmaCell",
2334         FT_NONE, BASE_NONE, NULL, 0,
2335         "CellInfo/wcdmaCell", HFILL }},
2336     { &hf_ulp_cdmaCell,
2337       { "cdmaCell", "ulp.cdmaCell",
2338         FT_NONE, BASE_NONE, NULL, 0,
2339         "CellInfo/cdmaCell", HFILL }},
2340     { &hf_ulp_timestamp,
2341       { "timestamp", "ulp.timestamp",
2342         FT_STRING, BASE_NONE, NULL, 0,
2343         "Position/timestamp", HFILL }},
2344     { &hf_ulp_positionEstimate,
2345       { "positionEstimate", "ulp.positionEstimate",
2346         FT_NONE, BASE_NONE, NULL, 0,
2347         "Position/positionEstimate", HFILL }},
2348     { &hf_ulp_velocity,
2349       { "velocity", "ulp.velocity",
2350         FT_UINT32, BASE_DEC, VALS(ulp_Velocity_vals), 0,
2351         "", HFILL }},
2352     { &hf_ulp_latitudeSign,
2353       { "latitudeSign", "ulp.latitudeSign",
2354         FT_UINT32, BASE_DEC, VALS(ulp_T_latitudeSign_vals), 0,
2355         "PositionEstimate/latitudeSign", HFILL }},
2356     { &hf_ulp_latitude,
2357       { "latitude", "ulp.latitude",
2358         FT_UINT32, BASE_DEC, NULL, 0,
2359         "PositionEstimate/latitude", HFILL }},
2360     { &hf_ulp_longitude,
2361       { "longitude", "ulp.longitude",
2362         FT_INT32, BASE_DEC, NULL, 0,
2363         "PositionEstimate/longitude", HFILL }},
2364     { &hf_ulp_uncertainty,
2365       { "uncertainty", "ulp.uncertainty",
2366         FT_NONE, BASE_NONE, NULL, 0,
2367         "PositionEstimate/uncertainty", HFILL }},
2368     { &hf_ulp_uncertaintySemiMajor,
2369       { "uncertaintySemiMajor", "ulp.uncertaintySemiMajor",
2370         FT_UINT32, BASE_DEC, NULL, 0,
2371         "PositionEstimate/uncertainty/uncertaintySemiMajor", HFILL }},
2372     { &hf_ulp_uncertaintySemiMinor,
2373       { "uncertaintySemiMinor", "ulp.uncertaintySemiMinor",
2374         FT_UINT32, BASE_DEC, NULL, 0,
2375         "PositionEstimate/uncertainty/uncertaintySemiMinor", HFILL }},
2376     { &hf_ulp_orientationMajorAxis,
2377       { "orientationMajorAxis", "ulp.orientationMajorAxis",
2378         FT_UINT32, BASE_DEC, NULL, 0,
2379         "PositionEstimate/uncertainty/orientationMajorAxis", HFILL }},
2380     { &hf_ulp_confidence,
2381       { "confidence", "ulp.confidence",
2382         FT_UINT32, BASE_DEC, NULL, 0,
2383         "PositionEstimate/confidence", HFILL }},
2384     { &hf_ulp_altitudeInfo,
2385       { "altitudeInfo", "ulp.altitudeInfo",
2386         FT_NONE, BASE_NONE, NULL, 0,
2387         "PositionEstimate/altitudeInfo", HFILL }},
2388     { &hf_ulp_altitudeDirection,
2389       { "altitudeDirection", "ulp.altitudeDirection",
2390         FT_UINT32, BASE_DEC, VALS(ulp_T_altitudeDirection_vals), 0,
2391         "AltitudeInfo/altitudeDirection", HFILL }},
2392     { &hf_ulp_altitude,
2393       { "altitude", "ulp.altitude",
2394         FT_UINT32, BASE_DEC, NULL, 0,
2395         "AltitudeInfo/altitude", HFILL }},
2396     { &hf_ulp_altUncertainty,
2397       { "altUncertainty", "ulp.altUncertainty",
2398         FT_UINT32, BASE_DEC, NULL, 0,
2399         "AltitudeInfo/altUncertainty", HFILL }},
2400     { &hf_ulp_refNID,
2401       { "refNID", "ulp.refNID",
2402         FT_UINT32, BASE_DEC, NULL, 0,
2403         "CdmaCellInformation/refNID", HFILL }},
2404     { &hf_ulp_refSID,
2405       { "refSID", "ulp.refSID",
2406         FT_UINT32, BASE_DEC, NULL, 0,
2407         "CdmaCellInformation/refSID", HFILL }},
2408     { &hf_ulp_refBASEID,
2409       { "refBASEID", "ulp.refBASEID",
2410         FT_UINT32, BASE_DEC, NULL, 0,
2411         "CdmaCellInformation/refBASEID", HFILL }},
2412     { &hf_ulp_refBASELAT,
2413       { "refBASELAT", "ulp.refBASELAT",
2414         FT_UINT32, BASE_DEC, NULL, 0,
2415         "CdmaCellInformation/refBASELAT", HFILL }},
2416     { &hf_ulp_reBASELONG,
2417       { "reBASELONG", "ulp.reBASELONG",
2418         FT_UINT32, BASE_DEC, NULL, 0,
2419         "CdmaCellInformation/reBASELONG", HFILL }},
2420     { &hf_ulp_refREFPN,
2421       { "refREFPN", "ulp.refREFPN",
2422         FT_UINT32, BASE_DEC, NULL, 0,
2423         "CdmaCellInformation/refREFPN", HFILL }},
2424     { &hf_ulp_refWeekNumber,
2425       { "refWeekNumber", "ulp.refWeekNumber",
2426         FT_UINT32, BASE_DEC, NULL, 0,
2427         "CdmaCellInformation/refWeekNumber", HFILL }},
2428     { &hf_ulp_refSeconds,
2429       { "refSeconds", "ulp.refSeconds",
2430         FT_UINT32, BASE_DEC, NULL, 0,
2431         "CdmaCellInformation/refSeconds", HFILL }},
2432     { &hf_ulp_refMCC,
2433       { "refMCC", "ulp.refMCC",
2434         FT_UINT32, BASE_DEC, NULL, 0,
2435         "", HFILL }},
2436     { &hf_ulp_refMNC,
2437       { "refMNC", "ulp.refMNC",
2438         FT_UINT32, BASE_DEC, NULL, 0,
2439         "", HFILL }},
2440     { &hf_ulp_refLAC,
2441       { "refLAC", "ulp.refLAC",
2442         FT_UINT32, BASE_DEC, NULL, 0,
2443         "GsmCellInformation/refLAC", HFILL }},
2444     { &hf_ulp_refCI,
2445       { "refCI", "ulp.refCI",
2446         FT_UINT32, BASE_DEC, NULL, 0,
2447         "GsmCellInformation/refCI", HFILL }},
2448     { &hf_ulp_nMR,
2449       { "nMR", "ulp.nMR",
2450         FT_UINT32, BASE_DEC, NULL, 0,
2451         "GsmCellInformation/nMR", HFILL }},
2452     { &hf_ulp_tA,
2453       { "tA", "ulp.tA",
2454         FT_UINT32, BASE_DEC, NULL, 0,
2455         "GsmCellInformation/tA", HFILL }},
2456     { &hf_ulp_refUC,
2457       { "refUC", "ulp.refUC",
2458         FT_UINT32, BASE_DEC, NULL, 0,
2459         "WcdmaCellInformation/refUC", HFILL }},
2460     { &hf_ulp_frequencyInfo,
2461       { "frequencyInfo", "ulp.frequencyInfo",
2462         FT_NONE, BASE_NONE, NULL, 0,
2463         "", HFILL }},
2464     { &hf_ulp_primaryScramblingCode,
2465       { "primaryScramblingCode", "ulp.primaryScramblingCode",
2466         FT_UINT32, BASE_DEC, NULL, 0,
2467         "", HFILL }},
2468     { &hf_ulp_measuredResultsList,
2469       { "measuredResultsList", "ulp.measuredResultsList",
2470         FT_UINT32, BASE_DEC, NULL, 0,
2471         "WcdmaCellInformation/measuredResultsList", HFILL }},
2472     { &hf_ulp_modeSpecificInfo,
2473       { "modeSpecificInfo", "ulp.modeSpecificInfo",
2474         FT_UINT32, BASE_DEC, VALS(ulp_T_modeSpecificInfo_vals), 0,
2475         "FrequencyInfo/modeSpecificInfo", HFILL }},
2476     { &hf_ulp_fdd,
2477       { "fdd", "ulp.fdd",
2478         FT_NONE, BASE_NONE, NULL, 0,
2479         "FrequencyInfo/modeSpecificInfo/fdd", HFILL }},
2480     { &hf_ulp_tdd,
2481       { "tdd", "ulp.tdd",
2482         FT_NONE, BASE_NONE, NULL, 0,
2483         "FrequencyInfo/modeSpecificInfo/tdd", HFILL }},
2484     { &hf_ulp_uarfcn_UL,
2485       { "uarfcn-UL", "ulp.uarfcn_UL",
2486         FT_UINT32, BASE_DEC, NULL, 0,
2487         "FrequencyInfoFDD/uarfcn-UL", HFILL }},
2488     { &hf_ulp_uarfcn_DL,
2489       { "uarfcn-DL", "ulp.uarfcn_DL",
2490         FT_UINT32, BASE_DEC, NULL, 0,
2491         "FrequencyInfoFDD/uarfcn-DL", HFILL }},
2492     { &hf_ulp_uarfcn_Nt,
2493       { "uarfcn-Nt", "ulp.uarfcn_Nt",
2494         FT_UINT32, BASE_DEC, NULL, 0,
2495         "FrequencyInfoTDD/uarfcn-Nt", HFILL }},
2496     { &hf_ulp_NMR_item,
2497       { "Item", "ulp.NMR_item",
2498         FT_NONE, BASE_NONE, NULL, 0,
2499         "NMR/_item", HFILL }},
2500     { &hf_ulp_aRFCN,
2501       { "aRFCN", "ulp.aRFCN",
2502         FT_UINT32, BASE_DEC, NULL, 0,
2503         "NMRelement/aRFCN", HFILL }},
2504     { &hf_ulp_bSIC,
2505       { "bSIC", "ulp.bSIC",
2506         FT_UINT32, BASE_DEC, NULL, 0,
2507         "NMRelement/bSIC", HFILL }},
2508     { &hf_ulp_rxLev,
2509       { "rxLev", "ulp.rxLev",
2510         FT_UINT32, BASE_DEC, NULL, 0,
2511         "NMRelement/rxLev", HFILL }},
2512     { &hf_ulp_MeasuredResultsList_item,
2513       { "Item", "ulp.MeasuredResultsList_item",
2514         FT_NONE, BASE_NONE, NULL, 0,
2515         "MeasuredResultsList/_item", HFILL }},
2516     { &hf_ulp_utra_CarrierRSSI,
2517       { "utra-CarrierRSSI", "ulp.utra_CarrierRSSI",
2518         FT_UINT32, BASE_DEC, NULL, 0,
2519         "MeasuredResults/utra-CarrierRSSI", HFILL }},
2520     { &hf_ulp_cellMeasuredResultsList,
2521       { "cellMeasuredResultsList", "ulp.cellMeasuredResultsList",
2522         FT_UINT32, BASE_DEC, NULL, 0,
2523         "MeasuredResults/cellMeasuredResultsList", HFILL }},
2524     { &hf_ulp_CellMeasuredResultsList_item,
2525       { "Item", "ulp.CellMeasuredResultsList_item",
2526         FT_NONE, BASE_NONE, NULL, 0,
2527         "CellMeasuredResultsList/_item", HFILL }},
2528     { &hf_ulp_cellIdentity,
2529       { "cellIdentity", "ulp.cellIdentity",
2530         FT_UINT32, BASE_DEC, NULL, 0,
2531         "CellMeasuredResults/cellIdentity", HFILL }},
2532     { &hf_ulp_modeSpecificInfo1,
2533       { "modeSpecificInfo", "ulp.modeSpecificInfo",
2534         FT_UINT32, BASE_DEC, VALS(ulp_T_modeSpecificInfo1_vals), 0,
2535         "CellMeasuredResults/modeSpecificInfo", HFILL }},
2536     { &hf_ulp_fdd1,
2537       { "fdd", "ulp.fdd",
2538         FT_NONE, BASE_NONE, NULL, 0,
2539         "CellMeasuredResults/modeSpecificInfo/fdd", HFILL }},
2540     { &hf_ulp_primaryCPICH_Info,
2541       { "primaryCPICH-Info", "ulp.primaryCPICH_Info",
2542         FT_NONE, BASE_NONE, NULL, 0,
2543         "CellMeasuredResults/modeSpecificInfo/fdd/primaryCPICH-Info", HFILL }},
2544     { &hf_ulp_cpich_Ec_N0,
2545       { "cpich-Ec-N0", "ulp.cpich_Ec_N0",
2546         FT_UINT32, BASE_DEC, NULL, 0,
2547         "CellMeasuredResults/modeSpecificInfo/fdd/cpich-Ec-N0", HFILL }},
2548     { &hf_ulp_cpich_RSCP,
2549       { "cpich-RSCP", "ulp.cpich_RSCP",
2550         FT_UINT32, BASE_DEC, NULL, 0,
2551         "CellMeasuredResults/modeSpecificInfo/fdd/cpich-RSCP", HFILL }},
2552     { &hf_ulp_pathloss,
2553       { "pathloss", "ulp.pathloss",
2554         FT_UINT32, BASE_DEC, NULL, 0,
2555         "", HFILL }},
2556     { &hf_ulp_tdd1,
2557       { "tdd", "ulp.tdd",
2558         FT_NONE, BASE_NONE, NULL, 0,
2559         "CellMeasuredResults/modeSpecificInfo/tdd", HFILL }},
2560     { &hf_ulp_cellParametersID,
2561       { "cellParametersID", "ulp.cellParametersID",
2562         FT_UINT32, BASE_DEC, NULL, 0,
2563         "CellMeasuredResults/modeSpecificInfo/tdd/cellParametersID", HFILL }},
2564     { &hf_ulp_proposedTGSN,
2565       { "proposedTGSN", "ulp.proposedTGSN",
2566         FT_UINT32, BASE_DEC, NULL, 0,
2567         "CellMeasuredResults/modeSpecificInfo/tdd/proposedTGSN", HFILL }},
2568     { &hf_ulp_primaryCCPCH_RSCP,
2569       { "primaryCCPCH-RSCP", "ulp.primaryCCPCH_RSCP",
2570         FT_UINT32, BASE_DEC, NULL, 0,
2571         "CellMeasuredResults/modeSpecificInfo/tdd/primaryCCPCH-RSCP", HFILL }},
2572     { &hf_ulp_timeslotISCP_List,
2573       { "timeslotISCP-List", "ulp.timeslotISCP_List",
2574         FT_UINT32, BASE_DEC, NULL, 0,
2575         "CellMeasuredResults/modeSpecificInfo/tdd/timeslotISCP-List", HFILL }},
2576     { &hf_ulp_TimeslotISCP_List_item,
2577       { "Item", "ulp.TimeslotISCP_List_item",
2578         FT_UINT32, BASE_DEC, NULL, 0,
2579         "TimeslotISCP-List/_item", HFILL }},
2580     { &hf_ulp_horacc,
2581       { "horacc", "ulp.horacc",
2582         FT_UINT32, BASE_DEC, NULL, 0,
2583         "QoP/horacc", HFILL }},
2584     { &hf_ulp_veracc,
2585       { "veracc", "ulp.veracc",
2586         FT_UINT32, BASE_DEC, NULL, 0,
2587         "QoP/veracc", HFILL }},
2588     { &hf_ulp_maxLocAge,
2589       { "maxLocAge", "ulp.maxLocAge",
2590         FT_UINT32, BASE_DEC, NULL, 0,
2591         "QoP/maxLocAge", HFILL }},
2592     { &hf_ulp_delay,
2593       { "delay", "ulp.delay",
2594         FT_UINT32, BASE_DEC, NULL, 0,
2595         "QoP/delay", HFILL }},
2596     { &hf_ulp_horvel,
2597       { "horvel", "ulp.horvel",
2598         FT_NONE, BASE_NONE, NULL, 0,
2599         "Velocity/horvel", HFILL }},
2600     { &hf_ulp_horandvervel,
2601       { "horandvervel", "ulp.horandvervel",
2602         FT_NONE, BASE_NONE, NULL, 0,
2603         "Velocity/horandvervel", HFILL }},
2604     { &hf_ulp_horveluncert,
2605       { "horveluncert", "ulp.horveluncert",
2606         FT_NONE, BASE_NONE, NULL, 0,
2607         "Velocity/horveluncert", HFILL }},
2608     { &hf_ulp_horandveruncert,
2609       { "horandveruncert", "ulp.horandveruncert",
2610         FT_NONE, BASE_NONE, NULL, 0,
2611         "Velocity/horandveruncert", HFILL }},
2612     { &hf_ulp_bearing,
2613       { "bearing", "ulp.bearing",
2614         FT_BYTES, BASE_HEX, NULL, 0,
2615         "", HFILL }},
2616     { &hf_ulp_horspeed,
2617       { "horspeed", "ulp.horspeed",
2618         FT_BYTES, BASE_HEX, NULL, 0,
2619         "", HFILL }},
2620     { &hf_ulp_verdirect,
2621       { "verdirect", "ulp.verdirect",
2622         FT_BYTES, BASE_HEX, NULL, 0,
2623         "", HFILL }},
2624     { &hf_ulp_verspeed,
2625       { "verspeed", "ulp.verspeed",
2626         FT_BYTES, BASE_HEX, NULL, 0,
2627         "", HFILL }},
2628     { &hf_ulp_uncertspeed,
2629       { "uncertspeed", "ulp.uncertspeed",
2630         FT_BYTES, BASE_HEX, NULL, 0,
2631         "Horveluncert/uncertspeed", HFILL }},
2632     { &hf_ulp_horuncertspeed,
2633       { "horuncertspeed", "ulp.horuncertspeed",
2634         FT_BYTES, BASE_HEX, NULL, 0,
2635         "Horandveruncert/horuncertspeed", HFILL }},
2636     { &hf_ulp_veruncertspeed,
2637       { "veruncertspeed", "ulp.veruncertspeed",
2638         FT_BYTES, BASE_HEX, NULL, 0,
2639         "Horandveruncert/veruncertspeed", HFILL }},
2640     { &hf_ulp_sETNonce,
2641       { "sETNonce", "ulp.sETNonce",
2642         FT_BYTES, BASE_HEX, NULL, 0,
2643         "SUPLAUTHREQ/sETNonce", HFILL }},
2644     { &hf_ulp_keyIdentity2,
2645       { "keyIdentity2", "ulp.keyIdentity2",
2646         FT_BYTES, BASE_HEX, NULL, 0,
2647         "SUPLAUTHREQ/keyIdentity2", HFILL }},
2648     { &hf_ulp_sPCAuthKey,
2649       { "sPCAuthKey", "ulp.sPCAuthKey",
2650         FT_UINT32, BASE_DEC, VALS(ulp_SPCAuthKey_vals), 0,
2651         "SUPLAUTHRESP/sPCAuthKey", HFILL }},
2652     { &hf_ulp_keyIdentity3,
2653       { "keyIdentity3", "ulp.keyIdentity3",
2654         FT_BYTES, BASE_HEX, NULL, 0,
2655         "SUPLAUTHRESP/keyIdentity3", HFILL }},
2656     { &hf_ulp_statusCode,
2657       { "statusCode", "ulp.statusCode",
2658         FT_UINT32, BASE_DEC, VALS(ulp_StatusCode_vals), 0,
2659         "", HFILL }},
2660     { &hf_ulp_shortKey,
2661       { "shortKey", "ulp.shortKey",
2662         FT_BYTES, BASE_HEX, NULL, 0,
2663         "", HFILL }},
2664     { &hf_ulp_longKey,
2665       { "longKey", "ulp.longKey",
2666         FT_BYTES, BASE_HEX, NULL, 0,
2667         "", HFILL }},
2668     { &hf_ulp_position,
2669       { "position", "ulp.position",
2670         FT_NONE, BASE_NONE, NULL, 0,
2671         "", HFILL }},
2672     { &hf_ulp_ver,
2673       { "ver", "ulp.ver",
2674         FT_BYTES, BASE_HEX, NULL, 0,
2675         "", HFILL }},
2676     { &hf_ulp_posMethod,
2677       { "posMethod", "ulp.posMethod",
2678         FT_UINT32, BASE_DEC, VALS(ulp_PosMethod_vals), 0,
2679         "", HFILL }},
2680     { &hf_ulp_notification,
2681       { "notification", "ulp.notification",
2682         FT_NONE, BASE_NONE, NULL, 0,
2683         "SUPLINIT/notification", HFILL }},
2684     { &hf_ulp_sLPAddress,
2685       { "sLPAddress", "ulp.sLPAddress",
2686         FT_UINT32, BASE_DEC, VALS(ulp_SLPAddress_vals), 0,
2687         "", HFILL }},
2688     { &hf_ulp_qoP,
2689       { "qoP", "ulp.qoP",
2690         FT_NONE, BASE_NONE, NULL, 0,
2691         "", HFILL }},
2692     { &hf_ulp_sLPMode,
2693       { "sLPMode", "ulp.sLPMode",
2694         FT_UINT32, BASE_DEC, VALS(ulp_SLPMode_vals), 0,
2695         "SUPLINIT/sLPMode", HFILL }},
2696     { &hf_ulp_mAC,
2697       { "mAC", "ulp.mAC",
2698         FT_BYTES, BASE_HEX, NULL, 0,
2699         "SUPLINIT/mAC", HFILL }},
2700     { &hf_ulp_keyIdentity,
2701       { "keyIdentity", "ulp.keyIdentity",
2702         FT_BYTES, BASE_HEX, NULL, 0,
2703         "SUPLINIT/keyIdentity", HFILL }},
2704     { &hf_ulp_notificationType,
2705       { "notificationType", "ulp.notificationType",
2706         FT_UINT32, BASE_DEC, VALS(ulp_NotificationType_vals), 0,
2707         "Notification/notificationType", HFILL }},
2708     { &hf_ulp_encodingType,
2709       { "encodingType", "ulp.encodingType",
2710         FT_UINT32, BASE_DEC, VALS(ulp_EncodingType_vals), 0,
2711         "Notification/encodingType", HFILL }},
2712     { &hf_ulp_requestorId,
2713       { "requestorId", "ulp.requestorId",
2714         FT_BYTES, BASE_HEX, NULL, 0,
2715         "Notification/requestorId", HFILL }},
2716     { &hf_ulp_requestorIdType,
2717       { "requestorIdType", "ulp.requestorIdType",
2718         FT_UINT32, BASE_DEC, VALS(ulp_FormatIndicator_vals), 0,
2719         "Notification/requestorIdType", HFILL }},
2720     { &hf_ulp_clientName,
2721       { "clientName", "ulp.clientName",
2722         FT_BYTES, BASE_HEX, NULL, 0,
2723         "Notification/clientName", HFILL }},
2724     { &hf_ulp_clientNameType,
2725       { "clientNameType", "ulp.clientNameType",
2726         FT_UINT32, BASE_DEC, VALS(ulp_FormatIndicator_vals), 0,
2727         "Notification/clientNameType", HFILL }},
2728     { &hf_ulp_posPayLoad,
2729       { "posPayLoad", "ulp.posPayLoad",
2730         FT_UINT32, BASE_DEC, VALS(ulp_PosPayLoad_vals), 0,
2731         "SUPLPOS/posPayLoad", HFILL }},
2732     { &hf_ulp_tia801payload,
2733       { "tia801payload", "ulp.tia801payload",
2734         FT_BYTES, BASE_HEX, NULL, 0,
2735         "PosPayLoad/tia801payload", HFILL }},
2736     { &hf_ulp_rrcPayload,
2737       { "rrcPayload", "ulp.rrcPayload",
2738         FT_BYTES, BASE_HEX, NULL, 0,
2739         "PosPayLoad/rrcPayload", HFILL }},
2740     { &hf_ulp_rrlpPayload,
2741       { "rrlpPayload", "ulp.rrlpPayload",
2742         FT_BYTES, BASE_HEX, NULL, 0,
2743         "PosPayLoad/rrlpPayload", HFILL }},
2744     { &hf_ulp_sETCapabilities,
2745       { "sETCapabilities", "ulp.sETCapabilities",
2746         FT_NONE, BASE_NONE, NULL, 0,
2747         "", HFILL }},
2748     { &hf_ulp_requestedAssistData,
2749       { "requestedAssistData", "ulp.requestedAssistData",
2750         FT_NONE, BASE_NONE, NULL, 0,
2751         "SUPLPOSINIT/requestedAssistData", HFILL }},
2752     { &hf_ulp_locationId,
2753       { "locationId", "ulp.locationId",
2754         FT_NONE, BASE_NONE, NULL, 0,
2755         "", HFILL }},
2756     { &hf_ulp_sUPLPOS,
2757       { "sUPLPOS", "ulp.sUPLPOS",
2758         FT_NONE, BASE_NONE, NULL, 0,
2759         "SUPLPOSINIT/sUPLPOS", HFILL }},
2760     { &hf_ulp_almanacRequested,
2761       { "almanacRequested", "ulp.almanacRequested",
2762         FT_BOOLEAN, 8, NULL, 0,
2763         "RequestedAssistData/almanacRequested", HFILL }},
2764     { &hf_ulp_utcModelRequested,
2765       { "utcModelRequested", "ulp.utcModelRequested",
2766         FT_BOOLEAN, 8, NULL, 0,
2767         "RequestedAssistData/utcModelRequested", HFILL }},
2768     { &hf_ulp_ionosphericModelRequested,
2769       { "ionosphericModelRequested", "ulp.ionosphericModelRequested",
2770         FT_BOOLEAN, 8, NULL, 0,
2771         "RequestedAssistData/ionosphericModelRequested", HFILL }},
2772     { &hf_ulp_dgpsCorrectionsRequested,
2773       { "dgpsCorrectionsRequested", "ulp.dgpsCorrectionsRequested",
2774         FT_BOOLEAN, 8, NULL, 0,
2775         "RequestedAssistData/dgpsCorrectionsRequested", HFILL }},
2776     { &hf_ulp_referenceLocationRequested,
2777       { "referenceLocationRequested", "ulp.referenceLocationRequested",
2778         FT_BOOLEAN, 8, NULL, 0,
2779         "RequestedAssistData/referenceLocationRequested", HFILL }},
2780     { &hf_ulp_referenceTimeRequested,
2781       { "referenceTimeRequested", "ulp.referenceTimeRequested",
2782         FT_BOOLEAN, 8, NULL, 0,
2783         "RequestedAssistData/referenceTimeRequested", HFILL }},
2784     { &hf_ulp_acquisitionAssistanceRequested,
2785       { "acquisitionAssistanceRequested", "ulp.acquisitionAssistanceRequested",
2786         FT_BOOLEAN, 8, NULL, 0,
2787         "RequestedAssistData/acquisitionAssistanceRequested", HFILL }},
2788     { &hf_ulp_realTimeIntegrityRequested,
2789       { "realTimeIntegrityRequested", "ulp.realTimeIntegrityRequested",
2790         FT_BOOLEAN, 8, NULL, 0,
2791         "RequestedAssistData/realTimeIntegrityRequested", HFILL }},
2792     { &hf_ulp_navigationModelRequested,
2793       { "navigationModelRequested", "ulp.navigationModelRequested",
2794         FT_BOOLEAN, 8, NULL, 0,
2795         "RequestedAssistData/navigationModelRequested", HFILL }},
2796     { &hf_ulp_navigationModelData,
2797       { "navigationModelData", "ulp.navigationModelData",
2798         FT_NONE, BASE_NONE, NULL, 0,
2799         "RequestedAssistData/navigationModelData", HFILL }},
2800     { &hf_ulp_gpsWeek,
2801       { "gpsWeek", "ulp.gpsWeek",
2802         FT_UINT32, BASE_DEC, NULL, 0,
2803         "NavigationModel/gpsWeek", HFILL }},
2804     { &hf_ulp_gpsToe,
2805       { "gpsToe", "ulp.gpsToe",
2806         FT_UINT32, BASE_DEC, NULL, 0,
2807         "NavigationModel/gpsToe", HFILL }},
2808     { &hf_ulp_nSAT,
2809       { "nSAT", "ulp.nSAT",
2810         FT_UINT32, BASE_DEC, NULL, 0,
2811         "NavigationModel/nSAT", HFILL }},
2812     { &hf_ulp_toeLimit,
2813       { "toeLimit", "ulp.toeLimit",
2814         FT_UINT32, BASE_DEC, NULL, 0,
2815         "NavigationModel/toeLimit", HFILL }},
2816     { &hf_ulp_satInfo,
2817       { "satInfo", "ulp.satInfo",
2818         FT_UINT32, BASE_DEC, NULL, 0,
2819         "NavigationModel/satInfo", HFILL }},
2820     { &hf_ulp_SatelliteInfo_item,
2821       { "Item", "ulp.SatelliteInfo_item",
2822         FT_NONE, BASE_NONE, NULL, 0,
2823         "SatelliteInfo/_item", HFILL }},
2824     { &hf_ulp_satId,
2825       { "satId", "ulp.satId",
2826         FT_UINT32, BASE_DEC, NULL, 0,
2827         "SatelliteInfoElement/satId", HFILL }},
2828     { &hf_ulp_iODE,
2829       { "iODE", "ulp.iODE",
2830         FT_UINT32, BASE_DEC, NULL, 0,
2831         "SatelliteInfoElement/iODE", HFILL }},
2832     { &hf_ulp_sETAuthKey,
2833       { "sETAuthKey", "ulp.sETAuthKey",
2834         FT_UINT32, BASE_DEC, VALS(ulp_SETAuthKey_vals), 0,
2835         "SUPLRESPONSE/sETAuthKey", HFILL }},
2836     { &hf_ulp_keyIdentity4,
2837       { "keyIdentity4", "ulp.keyIdentity4",
2838         FT_BYTES, BASE_HEX, NULL, 0,
2839         "SUPLRESPONSE/keyIdentity4", HFILL }},
2840     { &hf_ulp_posTechnology,
2841       { "posTechnology", "ulp.posTechnology",
2842         FT_NONE, BASE_NONE, NULL, 0,
2843         "SETCapabilities/posTechnology", HFILL }},
2844     { &hf_ulp_prefMethod,
2845       { "prefMethod", "ulp.prefMethod",
2846         FT_UINT32, BASE_DEC, VALS(ulp_PrefMethod_vals), 0,
2847         "SETCapabilities/prefMethod", HFILL }},
2848     { &hf_ulp_posProtocol,
2849       { "posProtocol", "ulp.posProtocol",
2850         FT_NONE, BASE_NONE, NULL, 0,
2851         "SETCapabilities/posProtocol", HFILL }},
2852     { &hf_ulp_agpsSETassisted,
2853       { "agpsSETassisted", "ulp.agpsSETassisted",
2854         FT_BOOLEAN, 8, NULL, 0,
2855         "PosTechnology/agpsSETassisted", HFILL }},
2856     { &hf_ulp_agpsSETBased,
2857       { "agpsSETBased", "ulp.agpsSETBased",
2858         FT_BOOLEAN, 8, NULL, 0,
2859         "PosTechnology/agpsSETBased", HFILL }},
2860     { &hf_ulp_autonomousGPS,
2861       { "autonomousGPS", "ulp.autonomousGPS",
2862         FT_BOOLEAN, 8, NULL, 0,
2863         "PosTechnology/autonomousGPS", HFILL }},
2864     { &hf_ulp_aFLT,
2865       { "aFLT", "ulp.aFLT",
2866         FT_BOOLEAN, 8, NULL, 0,
2867         "PosTechnology/aFLT", HFILL }},
2868     { &hf_ulp_eCID,
2869       { "eCID", "ulp.eCID",
2870         FT_BOOLEAN, 8, NULL, 0,
2871         "PosTechnology/eCID", HFILL }},
2872     { &hf_ulp_eOTD,
2873       { "eOTD", "ulp.eOTD",
2874         FT_BOOLEAN, 8, NULL, 0,
2875         "PosTechnology/eOTD", HFILL }},
2876     { &hf_ulp_oTDOA,
2877       { "oTDOA", "ulp.oTDOA",
2878         FT_BOOLEAN, 8, NULL, 0,
2879         "PosTechnology/oTDOA", HFILL }},
2880     { &hf_ulp_tia801,
2881       { "tia801", "ulp.tia801",
2882         FT_BOOLEAN, 8, NULL, 0,
2883         "PosProtocol/tia801", HFILL }},
2884     { &hf_ulp_rrlp,
2885       { "rrlp", "ulp.rrlp",
2886         FT_BOOLEAN, 8, NULL, 0,
2887         "PosProtocol/rrlp", HFILL }},
2888     { &hf_ulp_rrc,
2889       { "rrc", "ulp.rrc",
2890         FT_BOOLEAN, 8, NULL, 0,
2891         "PosProtocol/rrc", HFILL }},
2892
2893 /*--- End of included file: packet-ulp-hfarr.c ---*/
2894 #line 119 "packet-ulp-template.c"
2895   };
2896
2897   /* List of subtrees */
2898   static gint *ett[] = {
2899           &ett_ulp,
2900
2901 /*--- Included file: packet-ulp-ettarr.c ---*/
2902 #line 1 "packet-ulp-ettarr.c"
2903     &ett_ulp_ULP_PDU,
2904     &ett_ulp_UlpMessage,
2905     &ett_ulp_Version,
2906     &ett_ulp_SessionID,
2907     &ett_ulp_SetSessionID,
2908     &ett_ulp_SETId,
2909     &ett_ulp_SlpSessionID,
2910     &ett_ulp_IPAddress,
2911     &ett_ulp_SLPAddress,
2912     &ett_ulp_LocationId,
2913     &ett_ulp_CellInfo,
2914     &ett_ulp_Position,
2915     &ett_ulp_PositionEstimate,
2916     &ett_ulp_T_uncertainty,
2917     &ett_ulp_AltitudeInfo,
2918     &ett_ulp_CdmaCellInformation,
2919     &ett_ulp_GsmCellInformation,
2920     &ett_ulp_WcdmaCellInformation,
2921     &ett_ulp_FrequencyInfo,
2922     &ett_ulp_T_modeSpecificInfo,
2923     &ett_ulp_FrequencyInfoFDD,
2924     &ett_ulp_FrequencyInfoTDD,
2925     &ett_ulp_NMR,
2926     &ett_ulp_NMRelement,
2927     &ett_ulp_MeasuredResultsList,
2928     &ett_ulp_MeasuredResults,
2929     &ett_ulp_CellMeasuredResultsList,
2930     &ett_ulp_CellMeasuredResults,
2931     &ett_ulp_T_modeSpecificInfo1,
2932     &ett_ulp_T_fdd,
2933     &ett_ulp_T_tdd,
2934     &ett_ulp_TimeslotISCP_List,
2935     &ett_ulp_PrimaryCPICH_Info,
2936     &ett_ulp_QoP,
2937     &ett_ulp_Velocity,
2938     &ett_ulp_Horvel,
2939     &ett_ulp_Horandvervel,
2940     &ett_ulp_Horveluncert,
2941     &ett_ulp_Horandveruncert,
2942     &ett_ulp_SUPLAUTHREQ,
2943     &ett_ulp_SUPLAUTHRESP,
2944     &ett_ulp_SPCAuthKey,
2945     &ett_ulp_SUPLEND,
2946     &ett_ulp_SUPLINIT,
2947     &ett_ulp_Notification,
2948     &ett_ulp_SUPLPOS,
2949     &ett_ulp_PosPayLoad,
2950     &ett_ulp_SUPLPOSINIT,
2951     &ett_ulp_RequestedAssistData,
2952     &ett_ulp_NavigationModel,
2953     &ett_ulp_SatelliteInfo,
2954     &ett_ulp_SatelliteInfoElement,
2955     &ett_ulp_SUPLRESPONSE,
2956     &ett_ulp_SETAuthKey,
2957     &ett_ulp_SUPLSTART,
2958     &ett_ulp_SETCapabilities,
2959     &ett_ulp_PosTechnology,
2960     &ett_ulp_PosProtocol,
2961
2962 /*--- End of included file: packet-ulp-ettarr.c ---*/
2963 #line 125 "packet-ulp-template.c"
2964   };
2965
2966   module_t *ulp_module;
2967
2968
2969   /* Register protocol */
2970   proto_ulp = proto_register_protocol(PNAME, PSNAME, PFNAME);
2971   /* Register fields and subtrees */
2972   proto_register_field_array(proto_ulp, hf, array_length(hf));
2973   proto_register_subtree_array(ett, array_length(ett));
2974
2975   ulp_module = prefs_register_protocol(proto_ulp,proto_reg_handoff_ulp);
2976
2977   prefs_register_bool_preference(ulp_module, "desegment_ulp_messages",
2978                 "Reassemble ULP messages spanning multiple TCP segments",
2979                 "Whether the ULP dissector should reassemble messages spanning multiple TCP segments."
2980                 " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
2981                 &ulp_desegment);
2982
2983         /* Register a configuration option for port */
2984         prefs_register_uint_preference(ulp_module, "tcp.port",
2985                                                                    "ULP TCP Port",
2986                                                                    "Set the TCP port for Ulp messages(IANA registerd port is 7275)",
2987                                                                    10,
2988                                                                    &gbl_ulp_port);
2989  
2990 }
2991
2992
2993
2994