#include <epan/conversation.h> and/or #include <epan/emem.h> not req'd ...
[obnox/wireshark/wip.git] / epan / dissectors / packet-h501.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
3 /* packet-h501.c                                                              */
4 /* ../../tools/asn2wrs.py -p h501 -c h501.cnf -s packet-h501-template H501-MESSAGES.asn */
5
6 /* Input file: packet-h501-template.c */
7
8 #line 1 "packet-h501-template.c"
9 /* packet-h501.c
10  * Routines for H.501 packet dissection
11  * 2007  Tomas Kukosa
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
34 #ifdef HAVE_CONFIG_H
35 # include "config.h"
36 #endif
37
38 #include <glib.h>
39 #include <epan/packet.h>
40 #include <epan/prefs.h>
41 #include <epan/oids.h>
42 #include <epan/asn1.h>
43
44 #include <stdio.h>
45 #include <string.h>
46
47 #include "packet-tpkt.h"
48 #include "packet-per.h"
49 #include "packet-h225.h"
50 #include "packet-h235.h"
51
52 #define PNAME  "H.501 Mobility"
53 #define PSNAME "H.501"
54 #define PFNAME "h501"
55
56 /* Initialize the protocol and registered fields */
57 int proto_h501 = -1;
58
59 /*--- Included file: packet-h501-hf.c ---*/
60 #line 1 "packet-h501-hf.c"
61 static int hf_h501_Message_PDU = -1;              /* Message */
62 static int hf_h501_body = -1;                     /* MessageBody */
63 static int hf_h501_common = -1;                   /* MessageCommonInfo */
64 static int hf_h501_serviceRequest = -1;           /* ServiceRequest */
65 static int hf_h501_serviceConfirmation = -1;      /* ServiceConfirmation */
66 static int hf_h501_serviceRejection = -1;         /* ServiceRejection */
67 static int hf_h501_serviceRelease = -1;           /* ServiceRelease */
68 static int hf_h501_descriptorRequest = -1;        /* DescriptorRequest */
69 static int hf_h501_descriptorConfirmation = -1;   /* DescriptorConfirmation */
70 static int hf_h501_descriptorRejection = -1;      /* DescriptorRejection */
71 static int hf_h501_descriptorIDRequest = -1;      /* DescriptorIDRequest */
72 static int hf_h501_descriptorIDConfirmation = -1;  /* DescriptorIDConfirmation */
73 static int hf_h501_descriptorIDRejection = -1;    /* DescriptorIDRejection */
74 static int hf_h501_descriptorUpdate = -1;         /* DescriptorUpdate */
75 static int hf_h501_descriptorUpdateAck = -1;      /* DescriptorUpdateAck */
76 static int hf_h501_accessRequest = -1;            /* AccessRequest */
77 static int hf_h501_accessConfirmation = -1;       /* AccessConfirmation */
78 static int hf_h501_accessRejection = -1;          /* AccessRejection */
79 static int hf_h501_requestInProgress = -1;        /* RequestInProgress */
80 static int hf_h501_nonStandardRequest = -1;       /* NonStandardRequest */
81 static int hf_h501_nonStandardConfirmation = -1;  /* NonStandardConfirmation */
82 static int hf_h501_nonStandardRejection = -1;     /* NonStandardRejection */
83 static int hf_h501_unknownMessageResponse = -1;   /* UnknownMessageResponse */
84 static int hf_h501_usageRequest = -1;             /* UsageRequest */
85 static int hf_h501_usageConfirmation = -1;        /* UsageConfirmation */
86 static int hf_h501_usageIndication = -1;          /* UsageIndication */
87 static int hf_h501_usageIndicationConfirmation = -1;  /* UsageIndicationConfirmation */
88 static int hf_h501_usageIndicationRejection = -1;  /* UsageIndicationRejection */
89 static int hf_h501_usageRejection = -1;           /* UsageRejection */
90 static int hf_h501_validationRequest = -1;        /* ValidationRequest */
91 static int hf_h501_validationConfirmation = -1;   /* ValidationConfirmation */
92 static int hf_h501_validationRejection = -1;      /* ValidationRejection */
93 static int hf_h501_authenticationRequest = -1;    /* AuthenticationRequest */
94 static int hf_h501_authenticationConfirmation = -1;  /* AuthenticationConfirmation */
95 static int hf_h501_authenticationRejection = -1;  /* AuthenticationRejection */
96 static int hf_h501_sequenceNumber = -1;           /* INTEGER_0_65535 */
97 static int hf_h501_annexGversion = -1;            /* ProtocolVersion */
98 static int hf_h501_hopCount = -1;                 /* INTEGER_1_255 */
99 static int hf_h501_replyAddress = -1;             /* SEQUENCE_OF_TransportAddress */
100 static int hf_h501_replyAddress_item = -1;        /* TransportAddress */
101 static int hf_h501_integrityCheckValue = -1;      /* ICV */
102 static int hf_h501_tokens = -1;                   /* SEQUENCE_OF_ClearToken */
103 static int hf_h501_tokens_item = -1;              /* ClearToken */
104 static int hf_h501_cryptoTokens = -1;             /* SEQUENCE_OF_CryptoH323Token */
105 static int hf_h501_cryptoTokens_item = -1;        /* CryptoH323Token */
106 static int hf_h501_nonStandard = -1;              /* SEQUENCE_OF_NonStandardParameter */
107 static int hf_h501_nonStandard_item = -1;         /* NonStandardParameter */
108 static int hf_h501_serviceID = -1;                /* ServiceID */
109 static int hf_h501_genericData = -1;              /* SEQUENCE_OF_GenericData */
110 static int hf_h501_genericData_item = -1;         /* GenericData */
111 static int hf_h501_featureSet = -1;               /* FeatureSet */
112 static int hf_h501_version = -1;                  /* ProtocolVersion */
113 static int hf_h501_elementIdentifier = -1;        /* ElementIdentifier */
114 static int hf_h501_domainIdentifier = -1;         /* AliasAddress */
115 static int hf_h501_securityMode = -1;             /* SEQUENCE_OF_SecurityMode */
116 static int hf_h501_securityMode_item = -1;        /* SecurityMode */
117 static int hf_h501_timeToLive = -1;               /* INTEGER_1_4294967295 */
118 static int hf_h501_usageSpec = -1;                /* UsageSpecification */
119 static int hf_h501_authentication = -1;           /* AuthenticationMechanism */
120 static int hf_h501_integrity = -1;                /* IntegrityMechanism */
121 static int hf_h501_algorithmOIDs = -1;            /* T_algorithmOIDs */
122 static int hf_h501_algorithmOIDs_item = -1;       /* OBJECT_IDENTIFIER */
123 static int hf_h501_alternates = -1;               /* AlternatePEInfo */
124 static int hf_h501_securityMode_01 = -1;          /* SecurityMode */
125 static int hf_h501_reason = -1;                   /* ServiceRejectionReason */
126 static int hf_h501_serviceUnavailable = -1;       /* NULL */
127 static int hf_h501_serviceRedirected = -1;        /* NULL */
128 static int hf_h501_security = -1;                 /* NULL */
129 static int hf_h501_continue = -1;                 /* NULL */
130 static int hf_h501_undefined = -1;                /* NULL */
131 static int hf_h501_unknownServiceID = -1;         /* NULL */
132 static int hf_h501_cannotSupportUsageSpec = -1;   /* NULL */
133 static int hf_h501_neededFeature = -1;            /* NULL */
134 static int hf_h501_genericDataReason = -1;        /* NULL */
135 static int hf_h501_usageUnavailable = -1;         /* NULL */
136 static int hf_h501_unknownUsageSendTo = -1;       /* NULL */
137 static int hf_h501_reason_01 = -1;                /* ServiceReleaseReason */
138 static int hf_h501_outOfService = -1;             /* NULL */
139 static int hf_h501_maintenance = -1;              /* NULL */
140 static int hf_h501_terminated = -1;               /* NULL */
141 static int hf_h501_expired = -1;                  /* NULL */
142 static int hf_h501_descriptorID = -1;             /* SEQUENCE_OF_DescriptorID */
143 static int hf_h501_descriptorID_item = -1;        /* DescriptorID */
144 static int hf_h501_descriptor = -1;               /* SEQUENCE_OF_Descriptor */
145 static int hf_h501_descriptor_item = -1;          /* Descriptor */
146 static int hf_h501_reason_02 = -1;                /* DescriptorRejectionReason */
147 static int hf_h501_descriptorID_01 = -1;          /* DescriptorID */
148 static int hf_h501_packetSizeExceeded = -1;       /* NULL */
149 static int hf_h501_illegalID = -1;                /* NULL */
150 static int hf_h501_hopCountExceeded = -1;         /* NULL */
151 static int hf_h501_noServiceRelationship = -1;    /* NULL */
152 static int hf_h501_descriptorInfo = -1;           /* SEQUENCE_OF_DescriptorInfo */
153 static int hf_h501_descriptorInfo_item = -1;      /* DescriptorInfo */
154 static int hf_h501_reason_03 = -1;                /* DescriptorIDRejectionReason */
155 static int hf_h501_noDescriptors = -1;            /* NULL */
156 static int hf_h501_sender = -1;                   /* AliasAddress */
157 static int hf_h501_updateInfo = -1;               /* SEQUENCE_OF_UpdateInformation */
158 static int hf_h501_updateInfo_item = -1;          /* UpdateInformation */
159 static int hf_h501_descriptorInfo_01 = -1;        /* T_descriptorInfo */
160 static int hf_h501_descriptor_01 = -1;            /* Descriptor */
161 static int hf_h501_updateType = -1;               /* T_updateType */
162 static int hf_h501_added = -1;                    /* NULL */
163 static int hf_h501_deleted = -1;                  /* NULL */
164 static int hf_h501_changed = -1;                  /* NULL */
165 static int hf_h501_destinationInfo = -1;          /* PartyInformation */
166 static int hf_h501_sourceInfo = -1;               /* PartyInformation */
167 static int hf_h501_callInfo = -1;                 /* CallInformation */
168 static int hf_h501_desiredProtocols = -1;         /* SEQUENCE_OF_SupportedProtocols */
169 static int hf_h501_desiredProtocols_item = -1;    /* SupportedProtocols */
170 static int hf_h501_templates = -1;                /* SEQUENCE_OF_AddressTemplate */
171 static int hf_h501_templates_item = -1;           /* AddressTemplate */
172 static int hf_h501_partialResponse = -1;          /* BOOLEAN */
173 static int hf_h501_supportedProtocols = -1;       /* SEQUENCE_OF_SupportedProtocols */
174 static int hf_h501_supportedProtocols_item = -1;  /* SupportedProtocols */
175 static int hf_h501_serviceControl = -1;           /* SEQUENCE_OF_ServiceControlSession */
176 static int hf_h501_serviceControl_item = -1;      /* ServiceControlSession */
177 static int hf_h501_reason_04 = -1;                /* AccessRejectionReason */
178 static int hf_h501_noMatch = -1;                  /* NULL */
179 static int hf_h501_needCallInformation = -1;      /* NULL */
180 static int hf_h501_destinationUnavailable = -1;   /* NULL */
181 static int hf_h501_aliasesInconsistent = -1;      /* NULL */
182 static int hf_h501_resourceUnavailable = -1;      /* NULL */
183 static int hf_h501_incompleteAddress = -1;        /* NULL */
184 static int hf_h501_reason_05 = -1;                /* UsageRejectReason */
185 static int hf_h501_accessTokens = -1;             /* SEQUENCE_OF_AccessToken */
186 static int hf_h501_accessTokens_item = -1;        /* AccessToken */
187 static int hf_h501_senderRole = -1;               /* Role */
188 static int hf_h501_usageCallStatus = -1;          /* UsageCallStatus */
189 static int hf_h501_srcInfo = -1;                  /* PartyInformation */
190 static int hf_h501_destAddress = -1;              /* PartyInformation */
191 static int hf_h501_startTime = -1;                /* TimeStamp */
192 static int hf_h501_endTime = -1;                  /* TimeStamp */
193 static int hf_h501_terminationCause = -1;         /* TerminationCause */
194 static int hf_h501_usageFields = -1;              /* SEQUENCE_OF_UsageField */
195 static int hf_h501_usageFields_item = -1;         /* UsageField */
196 static int hf_h501_id = -1;                       /* OBJECT_IDENTIFIER */
197 static int hf_h501_value = -1;                    /* OCTET_STRING */
198 static int hf_h501_invalidCall = -1;              /* NULL */
199 static int hf_h501_unavailable = -1;              /* NULL */
200 static int hf_h501_reason_06 = -1;                /* UsageIndicationRejectionReason */
201 static int hf_h501_unknownCall = -1;              /* NULL */
202 static int hf_h501_incomplete = -1;               /* NULL */
203 static int hf_h501_accessToken = -1;              /* SEQUENCE_OF_AccessToken */
204 static int hf_h501_accessToken_item = -1;         /* AccessToken */
205 static int hf_h501_reason_07 = -1;                /* ValidationRejectionReason */
206 static int hf_h501_tokenNotValid = -1;            /* NULL */
207 static int hf_h501_missingSourceInfo = -1;        /* NULL */
208 static int hf_h501_missingDestInfo = -1;          /* NULL */
209 static int hf_h501_delay = -1;                    /* INTEGER_1_65535 */
210 static int hf_h501_reason_08 = -1;                /* NonStandardRejectionReason */
211 static int hf_h501_notSupported = -1;             /* NULL */
212 static int hf_h501_unknownMessage = -1;           /* OCTET_STRING */
213 static int hf_h501_reason_09 = -1;                /* UnknownMessageReason */
214 static int hf_h501_notUnderstood = -1;            /* NULL */
215 static int hf_h501_applicationMessage = -1;       /* ApplicationMessage */
216 static int hf_h501_reason_10 = -1;                /* AuthenticationRejectionReason */
217 static int hf_h501_securityWrongSyncTime = -1;    /* NULL */
218 static int hf_h501_securityReplay = -1;           /* NULL */
219 static int hf_h501_securityWrongGeneralID = -1;   /* NULL */
220 static int hf_h501_securityWrongSendersID = -1;   /* NULL */
221 static int hf_h501_securityIntegrityFailed = -1;  /* NULL */
222 static int hf_h501_securityWrongOID = -1;         /* NULL */
223 static int hf_h501_pattern = -1;                  /* SEQUENCE_OF_Pattern */
224 static int hf_h501_pattern_item = -1;             /* Pattern */
225 static int hf_h501_routeInfo = -1;                /* SEQUENCE_OF_RouteInformation */
226 static int hf_h501_routeInfo_item = -1;           /* RouteInformation */
227 static int hf_h501_specific = -1;                 /* AliasAddress */
228 static int hf_h501_wildcard = -1;                 /* AliasAddress */
229 static int hf_h501_range = -1;                    /* T_range */
230 static int hf_h501_startOfRange = -1;             /* PartyNumber */
231 static int hf_h501_endOfRange = -1;               /* PartyNumber */
232 static int hf_h501_messageType = -1;              /* T_messageType */
233 static int hf_h501_sendAccessRequest = -1;        /* NULL */
234 static int hf_h501_sendSetup = -1;                /* NULL */
235 static int hf_h501_nonExistent = -1;              /* NULL */
236 static int hf_h501_callSpecific = -1;             /* BOOLEAN */
237 static int hf_h501_priceInfo = -1;                /* SEQUENCE_OF_PriceInfoSpec */
238 static int hf_h501_priceInfo_item = -1;           /* PriceInfoSpec */
239 static int hf_h501_contacts = -1;                 /* SEQUENCE_OF_ContactInformation */
240 static int hf_h501_contacts_item = -1;            /* ContactInformation */
241 static int hf_h501_type = -1;                     /* EndpointType */
242 static int hf_h501_circuitID = -1;                /* CircuitInfo */
243 static int hf_h501_supportedCircuits = -1;        /* SEQUENCE_OF_CircuitIdentifier */
244 static int hf_h501_supportedCircuits_item = -1;   /* CircuitIdentifier */
245 static int hf_h501_transportAddress = -1;         /* AliasAddress */
246 static int hf_h501_priority = -1;                 /* INTEGER_0_127 */
247 static int hf_h501_transportQoS = -1;             /* TransportQOS */
248 static int hf_h501_security_01 = -1;              /* SEQUENCE_OF_SecurityMode */
249 static int hf_h501_security_item = -1;            /* SecurityMode */
250 static int hf_h501_multipleCalls = -1;            /* BOOLEAN */
251 static int hf_h501_currency = -1;                 /* IA5String_SIZE_3 */
252 static int hf_h501_currencyScale = -1;            /* INTEGER_M127_127 */
253 static int hf_h501_validFrom = -1;                /* GlobalTimeStamp */
254 static int hf_h501_validUntil = -1;               /* GlobalTimeStamp */
255 static int hf_h501_hoursFrom = -1;                /* IA5String_SIZE_6 */
256 static int hf_h501_hoursUntil = -1;               /* IA5String_SIZE_6 */
257 static int hf_h501_priceElement = -1;             /* SEQUENCE_OF_PriceElement */
258 static int hf_h501_priceElement_item = -1;        /* PriceElement */
259 static int hf_h501_priceFormula = -1;             /* IA5String_SIZE_1_2048 */
260 static int hf_h501_amount = -1;                   /* INTEGER_0_4294967295 */
261 static int hf_h501_quantum = -1;                  /* INTEGER_0_4294967295 */
262 static int hf_h501_units = -1;                    /* T_units */
263 static int hf_h501_seconds = -1;                  /* NULL */
264 static int hf_h501_packets = -1;                  /* NULL */
265 static int hf_h501_bytes = -1;                    /* NULL */
266 static int hf_h501_initial = -1;                  /* NULL */
267 static int hf_h501_minimum = -1;                  /* NULL */
268 static int hf_h501_maximum = -1;                  /* NULL */
269 static int hf_h501_descriptorInfo_02 = -1;        /* DescriptorInfo */
270 static int hf_h501_gatekeeperID = -1;             /* GatekeeperIdentifier */
271 static int hf_h501_lastChanged = -1;              /* GlobalTimeStamp */
272 static int hf_h501_alternatePE = -1;              /* SEQUENCE_OF_AlternatePE */
273 static int hf_h501_alternatePE_item = -1;         /* AlternatePE */
274 static int hf_h501_alternateIsPermanent = -1;     /* BOOLEAN */
275 static int hf_h501_contactAddress = -1;           /* AliasAddress */
276 static int hf_h501_priority_01 = -1;              /* INTEGER_1_127 */
277 static int hf_h501_token = -1;                    /* ClearToken */
278 static int hf_h501_cryptoToken = -1;              /* CryptoH323Token */
279 static int hf_h501_genericData_01 = -1;           /* GenericData */
280 static int hf_h501_callIdentifier = -1;           /* CallIdentifier */
281 static int hf_h501_conferenceID = -1;             /* ConferenceIdentifier */
282 static int hf_h501_preConnect = -1;               /* NULL */
283 static int hf_h501_callInProgress = -1;           /* NULL */
284 static int hf_h501_callEnded = -1;                /* NULL */
285 static int hf_h501_registrationLost = -1;         /* NULL */
286 static int hf_h501_userIdentifier = -1;           /* AliasAddress */
287 static int hf_h501_userAuthenticator = -1;        /* SEQUENCE_OF_CryptoH323Token */
288 static int hf_h501_userAuthenticator_item = -1;   /* CryptoH323Token */
289 static int hf_h501_sendTo = -1;                   /* ElementIdentifier */
290 static int hf_h501_when = -1;                     /* T_when */
291 static int hf_h501_never = -1;                    /* NULL */
292 static int hf_h501_start = -1;                    /* NULL */
293 static int hf_h501_end = -1;                      /* NULL */
294 static int hf_h501_period = -1;                   /* INTEGER_1_65535 */
295 static int hf_h501_failures = -1;                 /* NULL */
296 static int hf_h501_required = -1;                 /* T_required */
297 static int hf_h501_required_item = -1;            /* OBJECT_IDENTIFIER */
298 static int hf_h501_preferred = -1;                /* T_preferred */
299 static int hf_h501_preferred_item = -1;           /* OBJECT_IDENTIFIER */
300 static int hf_h501_sendToPEAddress = -1;          /* AliasAddress */
301 static int hf_h501_logicalAddresses = -1;         /* SEQUENCE_OF_AliasAddress */
302 static int hf_h501_logicalAddresses_item = -1;    /* AliasAddress */
303 static int hf_h501_endpointType = -1;             /* EndpointType */
304 static int hf_h501_userInfo = -1;                 /* UserInformation */
305 static int hf_h501_timeZone = -1;                 /* TimeZone */
306 static int hf_h501_originator = -1;               /* NULL */
307 static int hf_h501_destination = -1;              /* NULL */
308 static int hf_h501_nonStandardData = -1;          /* NonStandardParameter */
309 static int hf_h501_releaseCompleteReason = -1;    /* ReleaseCompleteReason */
310 static int hf_h501_causeIE = -1;                  /* INTEGER_1_65535 */
311
312 /*--- End of included file: packet-h501-hf.c ---*/
313 #line 51 "packet-h501-template.c"
314
315 /* Initialize the subtree pointers */
316 static int ett_h501 = -1;
317
318 /*--- Included file: packet-h501-ett.c ---*/
319 #line 1 "packet-h501-ett.c"
320 static gint ett_h501_Message = -1;
321 static gint ett_h501_MessageBody = -1;
322 static gint ett_h501_MessageCommonInfo = -1;
323 static gint ett_h501_SEQUENCE_OF_TransportAddress = -1;
324 static gint ett_h501_SEQUENCE_OF_ClearToken = -1;
325 static gint ett_h501_SEQUENCE_OF_CryptoH323Token = -1;
326 static gint ett_h501_SEQUENCE_OF_NonStandardParameter = -1;
327 static gint ett_h501_SEQUENCE_OF_GenericData = -1;
328 static gint ett_h501_ServiceRequest = -1;
329 static gint ett_h501_SEQUENCE_OF_SecurityMode = -1;
330 static gint ett_h501_SecurityMode = -1;
331 static gint ett_h501_T_algorithmOIDs = -1;
332 static gint ett_h501_ServiceConfirmation = -1;
333 static gint ett_h501_ServiceRejection = -1;
334 static gint ett_h501_ServiceRejectionReason = -1;
335 static gint ett_h501_ServiceRelease = -1;
336 static gint ett_h501_ServiceReleaseReason = -1;
337 static gint ett_h501_DescriptorRequest = -1;
338 static gint ett_h501_SEQUENCE_OF_DescriptorID = -1;
339 static gint ett_h501_DescriptorConfirmation = -1;
340 static gint ett_h501_SEQUENCE_OF_Descriptor = -1;
341 static gint ett_h501_DescriptorRejection = -1;
342 static gint ett_h501_DescriptorRejectionReason = -1;
343 static gint ett_h501_DescriptorIDRequest = -1;
344 static gint ett_h501_DescriptorIDConfirmation = -1;
345 static gint ett_h501_SEQUENCE_OF_DescriptorInfo = -1;
346 static gint ett_h501_DescriptorIDRejection = -1;
347 static gint ett_h501_DescriptorIDRejectionReason = -1;
348 static gint ett_h501_DescriptorUpdate = -1;
349 static gint ett_h501_SEQUENCE_OF_UpdateInformation = -1;
350 static gint ett_h501_UpdateInformation = -1;
351 static gint ett_h501_T_descriptorInfo = -1;
352 static gint ett_h501_T_updateType = -1;
353 static gint ett_h501_DescriptorUpdateAck = -1;
354 static gint ett_h501_AccessRequest = -1;
355 static gint ett_h501_SEQUENCE_OF_SupportedProtocols = -1;
356 static gint ett_h501_AccessConfirmation = -1;
357 static gint ett_h501_SEQUENCE_OF_AddressTemplate = -1;
358 static gint ett_h501_SEQUENCE_OF_ServiceControlSession = -1;
359 static gint ett_h501_AccessRejection = -1;
360 static gint ett_h501_AccessRejectionReason = -1;
361 static gint ett_h501_UsageRequest = -1;
362 static gint ett_h501_UsageConfirmation = -1;
363 static gint ett_h501_UsageRejection = -1;
364 static gint ett_h501_UsageIndication = -1;
365 static gint ett_h501_SEQUENCE_OF_AccessToken = -1;
366 static gint ett_h501_SEQUENCE_OF_UsageField = -1;
367 static gint ett_h501_UsageField = -1;
368 static gint ett_h501_UsageRejectReason = -1;
369 static gint ett_h501_UsageIndicationConfirmation = -1;
370 static gint ett_h501_UsageIndicationRejection = -1;
371 static gint ett_h501_UsageIndicationRejectionReason = -1;
372 static gint ett_h501_ValidationRequest = -1;
373 static gint ett_h501_ValidationConfirmation = -1;
374 static gint ett_h501_ValidationRejection = -1;
375 static gint ett_h501_ValidationRejectionReason = -1;
376 static gint ett_h501_RequestInProgress = -1;
377 static gint ett_h501_NonStandardRequest = -1;
378 static gint ett_h501_NonStandardConfirmation = -1;
379 static gint ett_h501_NonStandardRejection = -1;
380 static gint ett_h501_NonStandardRejectionReason = -1;
381 static gint ett_h501_UnknownMessageResponse = -1;
382 static gint ett_h501_UnknownMessageReason = -1;
383 static gint ett_h501_AuthenticationRequest = -1;
384 static gint ett_h501_AuthenticationConfirmation = -1;
385 static gint ett_h501_AuthenticationRejection = -1;
386 static gint ett_h501_AuthenticationRejectionReason = -1;
387 static gint ett_h501_AddressTemplate = -1;
388 static gint ett_h501_SEQUENCE_OF_Pattern = -1;
389 static gint ett_h501_SEQUENCE_OF_RouteInformation = -1;
390 static gint ett_h501_Pattern = -1;
391 static gint ett_h501_T_range = -1;
392 static gint ett_h501_RouteInformation = -1;
393 static gint ett_h501_T_messageType = -1;
394 static gint ett_h501_SEQUENCE_OF_PriceInfoSpec = -1;
395 static gint ett_h501_SEQUENCE_OF_ContactInformation = -1;
396 static gint ett_h501_SEQUENCE_OF_CircuitIdentifier = -1;
397 static gint ett_h501_ContactInformation = -1;
398 static gint ett_h501_PriceInfoSpec = -1;
399 static gint ett_h501_SEQUENCE_OF_PriceElement = -1;
400 static gint ett_h501_PriceElement = -1;
401 static gint ett_h501_T_units = -1;
402 static gint ett_h501_Descriptor = -1;
403 static gint ett_h501_DescriptorInfo = -1;
404 static gint ett_h501_AlternatePEInfo = -1;
405 static gint ett_h501_SEQUENCE_OF_AlternatePE = -1;
406 static gint ett_h501_AlternatePE = -1;
407 static gint ett_h501_AccessToken = -1;
408 static gint ett_h501_CallInformation = -1;
409 static gint ett_h501_UsageCallStatus = -1;
410 static gint ett_h501_UserInformation = -1;
411 static gint ett_h501_UsageSpecification = -1;
412 static gint ett_h501_T_when = -1;
413 static gint ett_h501_T_required = -1;
414 static gint ett_h501_T_preferred = -1;
415 static gint ett_h501_PartyInformation = -1;
416 static gint ett_h501_SEQUENCE_OF_AliasAddress = -1;
417 static gint ett_h501_Role = -1;
418 static gint ett_h501_TerminationCause = -1;
419
420 /*--- End of included file: packet-h501-ett.c ---*/
421 #line 55 "packet-h501-template.c"
422
423 /* Dissectors */
424 static dissector_handle_t h501_pdu_handle;
425
426 /* Preferences */
427 static guint h501_udp_port = 2099;
428 static guint h501_tcp_port = 2099;
429 static gboolean h501_desegment_tcp = TRUE;
430
431 void proto_reg_handoff_h501(void);
432
433
434 /*--- Included file: packet-h501-fn.c ---*/
435 #line 1 "packet-h501-fn.c"
436
437
438 static int
439 dissect_h501_ElementIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
440   offset = dissect_per_BMPString(tvb, offset, actx, tree, hf_index,
441                                           1, 128);
442
443   return offset;
444 }
445
446
447
448 static int
449 dissect_h501_OBJECT_IDENTIFIER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
450   offset = dissect_per_object_identifier(tvb, offset, actx, tree, hf_index, NULL);
451
452   return offset;
453 }
454
455
456 static const per_sequence_t T_algorithmOIDs_sequence_of[1] = {
457   { &hf_h501_algorithmOIDs_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h501_OBJECT_IDENTIFIER },
458 };
459
460 static int
461 dissect_h501_T_algorithmOIDs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
462   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
463                                       ett_h501_T_algorithmOIDs, T_algorithmOIDs_sequence_of);
464
465   return offset;
466 }
467
468
469 static const per_sequence_t SecurityMode_sequence[] = {
470   { &hf_h501_authentication , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h235_AuthenticationMechanism },
471   { &hf_h501_integrity      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h225_IntegrityMechanism },
472   { &hf_h501_algorithmOIDs  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_T_algorithmOIDs },
473   { NULL, 0, 0, NULL }
474 };
475
476 static int
477 dissect_h501_SecurityMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
478   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
479                                    ett_h501_SecurityMode, SecurityMode_sequence);
480
481   return offset;
482 }
483
484
485 static const per_sequence_t SEQUENCE_OF_SecurityMode_sequence_of[1] = {
486   { &hf_h501_securityMode_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h501_SecurityMode },
487 };
488
489 static int
490 dissect_h501_SEQUENCE_OF_SecurityMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
491   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
492                                       ett_h501_SEQUENCE_OF_SecurityMode, SEQUENCE_OF_SecurityMode_sequence_of);
493
494   return offset;
495 }
496
497
498
499 static int
500 dissect_h501_INTEGER_1_4294967295(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
501   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
502                                                             1U, 4294967295U, NULL, FALSE);
503
504   return offset;
505 }
506
507
508
509 static int
510 dissect_h501_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
511   offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
512
513   return offset;
514 }
515
516
517
518 static int
519 dissect_h501_INTEGER_1_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
520   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
521                                                             1U, 65535U, NULL, FALSE);
522
523   return offset;
524 }
525
526
527 static const per_sequence_t T_when_sequence[] = {
528   { &hf_h501_never          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_NULL },
529   { &hf_h501_start          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_NULL },
530   { &hf_h501_end            , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_NULL },
531   { &hf_h501_period         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_INTEGER_1_65535 },
532   { &hf_h501_failures       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_NULL },
533   { NULL, 0, 0, NULL }
534 };
535
536 static int
537 dissect_h501_T_when(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
538   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
539                                    ett_h501_T_when, T_when_sequence);
540
541   return offset;
542 }
543
544
545 static const per_sequence_t T_required_sequence_of[1] = {
546   { &hf_h501_required_item  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h501_OBJECT_IDENTIFIER },
547 };
548
549 static int
550 dissect_h501_T_required(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
551   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
552                                       ett_h501_T_required, T_required_sequence_of);
553
554   return offset;
555 }
556
557
558 static const per_sequence_t T_preferred_sequence_of[1] = {
559   { &hf_h501_preferred_item , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h501_OBJECT_IDENTIFIER },
560 };
561
562 static int
563 dissect_h501_T_preferred(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
564   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
565                                       ett_h501_T_preferred, T_preferred_sequence_of);
566
567   return offset;
568 }
569
570
571 static const per_sequence_t UsageSpecification_sequence[] = {
572   { &hf_h501_sendTo         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_ElementIdentifier },
573   { &hf_h501_when           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_T_when },
574   { &hf_h501_required       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_T_required },
575   { &hf_h501_preferred      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_T_preferred },
576   { &hf_h501_sendToPEAddress, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h225_AliasAddress },
577   { NULL, 0, 0, NULL }
578 };
579
580 static int
581 dissect_h501_UsageSpecification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
582   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
583                                    ett_h501_UsageSpecification, UsageSpecification_sequence);
584
585   return offset;
586 }
587
588
589 static const per_sequence_t ServiceRequest_sequence[] = {
590   { &hf_h501_elementIdentifier, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_ElementIdentifier },
591   { &hf_h501_domainIdentifier, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h225_AliasAddress },
592   { &hf_h501_securityMode   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_SecurityMode },
593   { &hf_h501_timeToLive     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_INTEGER_1_4294967295 },
594   { &hf_h501_usageSpec      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h501_UsageSpecification },
595   { NULL, 0, 0, NULL }
596 };
597
598 static int
599 dissect_h501_ServiceRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
600   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
601                                    ett_h501_ServiceRequest, ServiceRequest_sequence);
602
603   return offset;
604 }
605
606
607
608 static int
609 dissect_h501_INTEGER_1_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
610   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
611                                                             1U, 127U, NULL, FALSE);
612
613   return offset;
614 }
615
616
617 static const per_sequence_t AlternatePE_sequence[] = {
618   { &hf_h501_contactAddress , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_AliasAddress },
619   { &hf_h501_priority_01    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_INTEGER_1_127 },
620   { &hf_h501_elementIdentifier, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_ElementIdentifier },
621   { NULL, 0, 0, NULL }
622 };
623
624 static int
625 dissect_h501_AlternatePE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
626   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
627                                    ett_h501_AlternatePE, AlternatePE_sequence);
628
629   return offset;
630 }
631
632
633 static const per_sequence_t SEQUENCE_OF_AlternatePE_sequence_of[1] = {
634   { &hf_h501_alternatePE_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h501_AlternatePE },
635 };
636
637 static int
638 dissect_h501_SEQUENCE_OF_AlternatePE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
639   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
640                                       ett_h501_SEQUENCE_OF_AlternatePE, SEQUENCE_OF_AlternatePE_sequence_of);
641
642   return offset;
643 }
644
645
646
647 static int
648 dissect_h501_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
649   offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
650
651   return offset;
652 }
653
654
655 static const per_sequence_t AlternatePEInfo_sequence[] = {
656   { &hf_h501_alternatePE    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_SEQUENCE_OF_AlternatePE },
657   { &hf_h501_alternateIsPermanent, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_BOOLEAN },
658   { NULL, 0, 0, NULL }
659 };
660
661 static int
662 dissect_h501_AlternatePEInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
663   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
664                                    ett_h501_AlternatePEInfo, AlternatePEInfo_sequence);
665
666   return offset;
667 }
668
669
670 static const per_sequence_t ServiceConfirmation_sequence[] = {
671   { &hf_h501_elementIdentifier, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_ElementIdentifier },
672   { &hf_h501_domainIdentifier, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_AliasAddress },
673   { &hf_h501_alternates     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_AlternatePEInfo },
674   { &hf_h501_securityMode_01, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_SecurityMode },
675   { &hf_h501_timeToLive     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_INTEGER_1_4294967295 },
676   { &hf_h501_usageSpec      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h501_UsageSpecification },
677   { NULL, 0, 0, NULL }
678 };
679
680 static int
681 dissect_h501_ServiceConfirmation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
682   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
683                                    ett_h501_ServiceConfirmation, ServiceConfirmation_sequence);
684
685   return offset;
686 }
687
688
689 static const value_string h501_ServiceRejectionReason_vals[] = {
690   {   0, "serviceUnavailable" },
691   {   1, "serviceRedirected" },
692   {   2, "security" },
693   {   3, "continue" },
694   {   4, "undefined" },
695   {   5, "unknownServiceID" },
696   {   6, "cannotSupportUsageSpec" },
697   {   7, "neededFeature" },
698   {   8, "genericDataReason" },
699   {   9, "usageUnavailable" },
700   {  10, "unknownUsageSendTo" },
701   { 0, NULL }
702 };
703
704 static const per_choice_t ServiceRejectionReason_choice[] = {
705   {   0, &hf_h501_serviceUnavailable, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
706   {   1, &hf_h501_serviceRedirected, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
707   {   2, &hf_h501_security       , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
708   {   3, &hf_h501_continue       , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
709   {   4, &hf_h501_undefined      , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
710   {   5, &hf_h501_unknownServiceID, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
711   {   6, &hf_h501_cannotSupportUsageSpec, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
712   {   7, &hf_h501_neededFeature  , ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
713   {   8, &hf_h501_genericDataReason, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
714   {   9, &hf_h501_usageUnavailable, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
715   {  10, &hf_h501_unknownUsageSendTo, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
716   { 0, NULL, 0, NULL }
717 };
718
719 static int
720 dissect_h501_ServiceRejectionReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
721   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
722                                  ett_h501_ServiceRejectionReason, ServiceRejectionReason_choice,
723                                  NULL);
724
725   return offset;
726 }
727
728
729 static const per_sequence_t ServiceRejection_sequence[] = {
730   { &hf_h501_reason         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_ServiceRejectionReason },
731   { &hf_h501_alternates     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_AlternatePEInfo },
732   { NULL, 0, 0, NULL }
733 };
734
735 static int
736 dissect_h501_ServiceRejection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
737   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
738                                    ett_h501_ServiceRejection, ServiceRejection_sequence);
739
740   return offset;
741 }
742
743
744 static const value_string h501_ServiceReleaseReason_vals[] = {
745   {   0, "outOfService" },
746   {   1, "maintenance" },
747   {   2, "terminated" },
748   {   3, "expired" },
749   { 0, NULL }
750 };
751
752 static const per_choice_t ServiceReleaseReason_choice[] = {
753   {   0, &hf_h501_outOfService   , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
754   {   1, &hf_h501_maintenance    , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
755   {   2, &hf_h501_terminated     , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
756   {   3, &hf_h501_expired        , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
757   { 0, NULL, 0, NULL }
758 };
759
760 static int
761 dissect_h501_ServiceReleaseReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
762   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
763                                  ett_h501_ServiceReleaseReason, ServiceReleaseReason_choice,
764                                  NULL);
765
766   return offset;
767 }
768
769
770 static const per_sequence_t ServiceRelease_sequence[] = {
771   { &hf_h501_reason_01      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_ServiceReleaseReason },
772   { &hf_h501_alternates     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_AlternatePEInfo },
773   { NULL, 0, 0, NULL }
774 };
775
776 static int
777 dissect_h501_ServiceRelease(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
778   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
779                                    ett_h501_ServiceRelease, ServiceRelease_sequence);
780
781   return offset;
782 }
783
784
785
786 static int
787 dissect_h501_DescriptorID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
788   offset = dissect_h225_GloballyUniqueID(tvb, offset, actx, tree, hf_index);
789
790   return offset;
791 }
792
793
794 static const per_sequence_t SEQUENCE_OF_DescriptorID_sequence_of[1] = {
795   { &hf_h501_descriptorID_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h501_DescriptorID },
796 };
797
798 static int
799 dissect_h501_SEQUENCE_OF_DescriptorID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
800   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
801                                       ett_h501_SEQUENCE_OF_DescriptorID, SEQUENCE_OF_DescriptorID_sequence_of);
802
803   return offset;
804 }
805
806
807 static const per_sequence_t DescriptorRequest_sequence[] = {
808   { &hf_h501_descriptorID   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_SEQUENCE_OF_DescriptorID },
809   { NULL, 0, 0, NULL }
810 };
811
812 static int
813 dissect_h501_DescriptorRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
814   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
815                                    ett_h501_DescriptorRequest, DescriptorRequest_sequence);
816
817   return offset;
818 }
819
820
821
822 static int
823 dissect_h501_GlobalTimeStamp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
824   offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
825                                           14, 14);
826
827   return offset;
828 }
829
830
831 static const per_sequence_t DescriptorInfo_sequence[] = {
832   { &hf_h501_descriptorID_01, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_DescriptorID },
833   { &hf_h501_lastChanged    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_GlobalTimeStamp },
834   { NULL, 0, 0, NULL }
835 };
836
837 static int
838 dissect_h501_DescriptorInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
839   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
840                                    ett_h501_DescriptorInfo, DescriptorInfo_sequence);
841
842   return offset;
843 }
844
845
846 static const per_sequence_t T_range_sequence[] = {
847   { &hf_h501_startOfRange   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h225_PartyNumber },
848   { &hf_h501_endOfRange     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h225_PartyNumber },
849   { NULL, 0, 0, NULL }
850 };
851
852 static int
853 dissect_h501_T_range(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
854   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
855                                    ett_h501_T_range, T_range_sequence);
856
857   return offset;
858 }
859
860
861 static const value_string h501_Pattern_vals[] = {
862   {   0, "specific" },
863   {   1, "wildcard" },
864   {   2, "range" },
865   { 0, NULL }
866 };
867
868 static const per_choice_t Pattern_choice[] = {
869   {   0, &hf_h501_specific       , ASN1_EXTENSION_ROOT    , dissect_h225_AliasAddress },
870   {   1, &hf_h501_wildcard       , ASN1_EXTENSION_ROOT    , dissect_h225_AliasAddress },
871   {   2, &hf_h501_range          , ASN1_EXTENSION_ROOT    , dissect_h501_T_range },
872   { 0, NULL, 0, NULL }
873 };
874
875 static int
876 dissect_h501_Pattern(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
877   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
878                                  ett_h501_Pattern, Pattern_choice,
879                                  NULL);
880
881   return offset;
882 }
883
884
885 static const per_sequence_t SEQUENCE_OF_Pattern_sequence_of[1] = {
886   { &hf_h501_pattern_item   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h501_Pattern },
887 };
888
889 static int
890 dissect_h501_SEQUENCE_OF_Pattern(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
891   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
892                                       ett_h501_SEQUENCE_OF_Pattern, SEQUENCE_OF_Pattern_sequence_of);
893
894   return offset;
895 }
896
897
898 static const value_string h501_T_messageType_vals[] = {
899   {   0, "sendAccessRequest" },
900   {   1, "sendSetup" },
901   {   2, "nonExistent" },
902   { 0, NULL }
903 };
904
905 static const per_choice_t T_messageType_choice[] = {
906   {   0, &hf_h501_sendAccessRequest, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
907   {   1, &hf_h501_sendSetup      , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
908   {   2, &hf_h501_nonExistent    , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
909   { 0, NULL, 0, NULL }
910 };
911
912 static int
913 dissect_h501_T_messageType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
914   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
915                                  ett_h501_T_messageType, T_messageType_choice,
916                                  NULL);
917
918   return offset;
919 }
920
921
922
923 static int
924 dissect_h501_IA5String_SIZE_3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
925   offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
926                                           3, 3);
927
928   return offset;
929 }
930
931
932
933 static int
934 dissect_h501_INTEGER_M127_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
935   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
936                                                             -127, 127U, NULL, FALSE);
937
938   return offset;
939 }
940
941
942
943 static int
944 dissect_h501_IA5String_SIZE_6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
945   offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
946                                           6, 6);
947
948   return offset;
949 }
950
951
952
953 static int
954 dissect_h501_INTEGER_0_4294967295(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
955   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
956                                                             0U, 4294967295U, NULL, FALSE);
957
958   return offset;
959 }
960
961
962 static const value_string h501_T_units_vals[] = {
963   {   0, "seconds" },
964   {   1, "packets" },
965   {   2, "bytes" },
966   {   3, "initial" },
967   {   4, "minimum" },
968   {   5, "maximum" },
969   { 0, NULL }
970 };
971
972 static const per_choice_t T_units_choice[] = {
973   {   0, &hf_h501_seconds        , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
974   {   1, &hf_h501_packets        , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
975   {   2, &hf_h501_bytes          , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
976   {   3, &hf_h501_initial        , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
977   {   4, &hf_h501_minimum        , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
978   {   5, &hf_h501_maximum        , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
979   { 0, NULL, 0, NULL }
980 };
981
982 static int
983 dissect_h501_T_units(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
984   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
985                                  ett_h501_T_units, T_units_choice,
986                                  NULL);
987
988   return offset;
989 }
990
991
992 static const per_sequence_t PriceElement_sequence[] = {
993   { &hf_h501_amount         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_INTEGER_0_4294967295 },
994   { &hf_h501_quantum        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_INTEGER_0_4294967295 },
995   { &hf_h501_units          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_T_units },
996   { NULL, 0, 0, NULL }
997 };
998
999 static int
1000 dissect_h501_PriceElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1001   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1002                                    ett_h501_PriceElement, PriceElement_sequence);
1003
1004   return offset;
1005 }
1006
1007
1008 static const per_sequence_t SEQUENCE_OF_PriceElement_sequence_of[1] = {
1009   { &hf_h501_priceElement_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h501_PriceElement },
1010 };
1011
1012 static int
1013 dissect_h501_SEQUENCE_OF_PriceElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1014   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1015                                       ett_h501_SEQUENCE_OF_PriceElement, SEQUENCE_OF_PriceElement_sequence_of);
1016
1017   return offset;
1018 }
1019
1020
1021
1022 static int
1023 dissect_h501_IA5String_SIZE_1_2048(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1024   offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
1025                                           1, 2048);
1026
1027   return offset;
1028 }
1029
1030
1031 static const per_sequence_t PriceInfoSpec_sequence[] = {
1032   { &hf_h501_currency       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_IA5String_SIZE_3 },
1033   { &hf_h501_currencyScale  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_INTEGER_M127_127 },
1034   { &hf_h501_validFrom      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_GlobalTimeStamp },
1035   { &hf_h501_validUntil     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_GlobalTimeStamp },
1036   { &hf_h501_hoursFrom      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_IA5String_SIZE_6 },
1037   { &hf_h501_hoursUntil     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_IA5String_SIZE_6 },
1038   { &hf_h501_priceElement   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_PriceElement },
1039   { &hf_h501_priceFormula   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_IA5String_SIZE_1_2048 },
1040   { NULL, 0, 0, NULL }
1041 };
1042
1043 static int
1044 dissect_h501_PriceInfoSpec(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1045   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1046                                    ett_h501_PriceInfoSpec, PriceInfoSpec_sequence);
1047
1048   return offset;
1049 }
1050
1051
1052 static const per_sequence_t SEQUENCE_OF_PriceInfoSpec_sequence_of[1] = {
1053   { &hf_h501_priceInfo_item , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h501_PriceInfoSpec },
1054 };
1055
1056 static int
1057 dissect_h501_SEQUENCE_OF_PriceInfoSpec(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1058   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1059                                       ett_h501_SEQUENCE_OF_PriceInfoSpec, SEQUENCE_OF_PriceInfoSpec_sequence_of);
1060
1061   return offset;
1062 }
1063
1064
1065
1066 static int
1067 dissect_h501_INTEGER_0_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1068   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1069                                                             0U, 127U, NULL, FALSE);
1070
1071   return offset;
1072 }
1073
1074
1075 static const value_string h501_AccessToken_vals[] = {
1076   {   0, "token" },
1077   {   1, "cryptoToken" },
1078   {   2, "genericData" },
1079   { 0, NULL }
1080 };
1081
1082 static const per_choice_t AccessToken_choice[] = {
1083   {   0, &hf_h501_token          , ASN1_EXTENSION_ROOT    , dissect_h235_ClearToken },
1084   {   1, &hf_h501_cryptoToken    , ASN1_EXTENSION_ROOT    , dissect_h225_CryptoH323Token },
1085   {   2, &hf_h501_genericData_01 , ASN1_NOT_EXTENSION_ROOT, dissect_h225_GenericData },
1086   { 0, NULL, 0, NULL }
1087 };
1088
1089 static int
1090 dissect_h501_AccessToken(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1091   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1092                                  ett_h501_AccessToken, AccessToken_choice,
1093                                  NULL);
1094
1095   return offset;
1096 }
1097
1098
1099 static const per_sequence_t SEQUENCE_OF_AccessToken_sequence_of[1] = {
1100   { &hf_h501_accessTokens_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h501_AccessToken },
1101 };
1102
1103 static int
1104 dissect_h501_SEQUENCE_OF_AccessToken(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1105   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1106                                       ett_h501_SEQUENCE_OF_AccessToken, SEQUENCE_OF_AccessToken_sequence_of);
1107
1108   return offset;
1109 }
1110
1111
1112 static const per_sequence_t SEQUENCE_OF_CircuitIdentifier_sequence_of[1] = {
1113   { &hf_h501_supportedCircuits_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h225_CircuitIdentifier },
1114 };
1115
1116 static int
1117 dissect_h501_SEQUENCE_OF_CircuitIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1118   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1119                                       ett_h501_SEQUENCE_OF_CircuitIdentifier, SEQUENCE_OF_CircuitIdentifier_sequence_of);
1120
1121   return offset;
1122 }
1123
1124
1125 static const per_sequence_t ContactInformation_sequence[] = {
1126   { &hf_h501_transportAddress, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_AliasAddress },
1127   { &hf_h501_priority       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_INTEGER_0_127 },
1128   { &hf_h501_transportQoS   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h225_TransportQOS },
1129   { &hf_h501_security_01    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_SecurityMode },
1130   { &hf_h501_accessTokens   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_AccessToken },
1131   { &hf_h501_multipleCalls  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h501_BOOLEAN },
1132   { &hf_h501_featureSet     , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h225_FeatureSet },
1133   { &hf_h501_circuitID      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h225_CircuitInfo },
1134   { &hf_h501_supportedCircuits, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_CircuitIdentifier },
1135   { NULL, 0, 0, NULL }
1136 };
1137
1138 static int
1139 dissect_h501_ContactInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1140   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1141                                    ett_h501_ContactInformation, ContactInformation_sequence);
1142
1143   return offset;
1144 }
1145
1146
1147 static const per_sequence_t SEQUENCE_OF_ContactInformation_sequence_of[1] = {
1148   { &hf_h501_contacts_item  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h501_ContactInformation },
1149 };
1150
1151 static int
1152 dissect_h501_SEQUENCE_OF_ContactInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1153   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1154                                       ett_h501_SEQUENCE_OF_ContactInformation, SEQUENCE_OF_ContactInformation_sequence_of);
1155
1156   return offset;
1157 }
1158
1159
1160 static const per_sequence_t RouteInformation_sequence[] = {
1161   { &hf_h501_messageType    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_T_messageType },
1162   { &hf_h501_callSpecific   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_BOOLEAN },
1163   { &hf_h501_usageSpec      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_UsageSpecification },
1164   { &hf_h501_priceInfo      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_PriceInfoSpec },
1165   { &hf_h501_contacts       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_SEQUENCE_OF_ContactInformation },
1166   { &hf_h501_type           , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h225_EndpointType },
1167   { &hf_h501_featureSet     , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h225_FeatureSet },
1168   { &hf_h501_circuitID      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h225_CircuitInfo },
1169   { &hf_h501_supportedCircuits, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_CircuitIdentifier },
1170   { NULL, 0, 0, NULL }
1171 };
1172
1173 static int
1174 dissect_h501_RouteInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1175   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1176                                    ett_h501_RouteInformation, RouteInformation_sequence);
1177
1178   return offset;
1179 }
1180
1181
1182 static const per_sequence_t SEQUENCE_OF_RouteInformation_sequence_of[1] = {
1183   { &hf_h501_routeInfo_item , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h501_RouteInformation },
1184 };
1185
1186 static int
1187 dissect_h501_SEQUENCE_OF_RouteInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1188   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1189                                       ett_h501_SEQUENCE_OF_RouteInformation, SEQUENCE_OF_RouteInformation_sequence_of);
1190
1191   return offset;
1192 }
1193
1194
1195 static const per_sequence_t SEQUENCE_OF_SupportedProtocols_sequence_of[1] = {
1196   { &hf_h501_desiredProtocols_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h225_SupportedProtocols },
1197 };
1198
1199 static int
1200 dissect_h501_SEQUENCE_OF_SupportedProtocols(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1201   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1202                                       ett_h501_SEQUENCE_OF_SupportedProtocols, SEQUENCE_OF_SupportedProtocols_sequence_of);
1203
1204   return offset;
1205 }
1206
1207
1208 static const per_sequence_t AddressTemplate_sequence[] = {
1209   { &hf_h501_pattern        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_SEQUENCE_OF_Pattern },
1210   { &hf_h501_routeInfo      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_SEQUENCE_OF_RouteInformation },
1211   { &hf_h501_timeToLive     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_INTEGER_1_4294967295 },
1212   { &hf_h501_supportedProtocols, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_SupportedProtocols },
1213   { &hf_h501_featureSet     , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h225_FeatureSet },
1214   { NULL, 0, 0, NULL }
1215 };
1216
1217 static int
1218 dissect_h501_AddressTemplate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1219   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1220                                    ett_h501_AddressTemplate, AddressTemplate_sequence);
1221
1222   return offset;
1223 }
1224
1225
1226 static const per_sequence_t SEQUENCE_OF_AddressTemplate_sequence_of[1] = {
1227   { &hf_h501_templates_item , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h501_AddressTemplate },
1228 };
1229
1230 static int
1231 dissect_h501_SEQUENCE_OF_AddressTemplate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1232   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1233                                       ett_h501_SEQUENCE_OF_AddressTemplate, SEQUENCE_OF_AddressTemplate_sequence_of);
1234
1235   return offset;
1236 }
1237
1238
1239 static const per_sequence_t Descriptor_sequence[] = {
1240   { &hf_h501_descriptorInfo_02, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_DescriptorInfo },
1241   { &hf_h501_templates      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_SEQUENCE_OF_AddressTemplate },
1242   { &hf_h501_gatekeeperID   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h225_GatekeeperIdentifier },
1243   { NULL, 0, 0, NULL }
1244 };
1245
1246 static int
1247 dissect_h501_Descriptor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1248   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1249                                    ett_h501_Descriptor, Descriptor_sequence);
1250
1251   return offset;
1252 }
1253
1254
1255 static const per_sequence_t SEQUENCE_OF_Descriptor_sequence_of[1] = {
1256   { &hf_h501_descriptor_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h501_Descriptor },
1257 };
1258
1259 static int
1260 dissect_h501_SEQUENCE_OF_Descriptor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1261   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1262                                       ett_h501_SEQUENCE_OF_Descriptor, SEQUENCE_OF_Descriptor_sequence_of);
1263
1264   return offset;
1265 }
1266
1267
1268 static const per_sequence_t DescriptorConfirmation_sequence[] = {
1269   { &hf_h501_descriptor     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_SEQUENCE_OF_Descriptor },
1270   { NULL, 0, 0, NULL }
1271 };
1272
1273 static int
1274 dissect_h501_DescriptorConfirmation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1275   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1276                                    ett_h501_DescriptorConfirmation, DescriptorConfirmation_sequence);
1277
1278   return offset;
1279 }
1280
1281
1282 static const value_string h501_DescriptorRejectionReason_vals[] = {
1283   {   0, "packetSizeExceeded" },
1284   {   1, "illegalID" },
1285   {   2, "security" },
1286   {   3, "hopCountExceeded" },
1287   {   4, "noServiceRelationship" },
1288   {   5, "undefined" },
1289   {   6, "neededFeature" },
1290   {   7, "genericDataReason" },
1291   {   8, "unknownServiceID" },
1292   { 0, NULL }
1293 };
1294
1295 static const per_choice_t DescriptorRejectionReason_choice[] = {
1296   {   0, &hf_h501_packetSizeExceeded, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1297   {   1, &hf_h501_illegalID      , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1298   {   2, &hf_h501_security       , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1299   {   3, &hf_h501_hopCountExceeded, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1300   {   4, &hf_h501_noServiceRelationship, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1301   {   5, &hf_h501_undefined      , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1302   {   6, &hf_h501_neededFeature  , ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1303   {   7, &hf_h501_genericDataReason, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1304   {   8, &hf_h501_unknownServiceID, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1305   { 0, NULL, 0, NULL }
1306 };
1307
1308 static int
1309 dissect_h501_DescriptorRejectionReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1310   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1311                                  ett_h501_DescriptorRejectionReason, DescriptorRejectionReason_choice,
1312                                  NULL);
1313
1314   return offset;
1315 }
1316
1317
1318 static const per_sequence_t DescriptorRejection_sequence[] = {
1319   { &hf_h501_reason_02      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_DescriptorRejectionReason },
1320   { &hf_h501_descriptorID_01, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_DescriptorID },
1321   { NULL, 0, 0, NULL }
1322 };
1323
1324 static int
1325 dissect_h501_DescriptorRejection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1326   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1327                                    ett_h501_DescriptorRejection, DescriptorRejection_sequence);
1328
1329   return offset;
1330 }
1331
1332
1333 static const per_sequence_t DescriptorIDRequest_sequence[] = {
1334   { NULL, 0, 0, NULL }
1335 };
1336
1337 static int
1338 dissect_h501_DescriptorIDRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1339   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1340                                    ett_h501_DescriptorIDRequest, DescriptorIDRequest_sequence);
1341
1342   return offset;
1343 }
1344
1345
1346 static const per_sequence_t SEQUENCE_OF_DescriptorInfo_sequence_of[1] = {
1347   { &hf_h501_descriptorInfo_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h501_DescriptorInfo },
1348 };
1349
1350 static int
1351 dissect_h501_SEQUENCE_OF_DescriptorInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1352   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1353                                       ett_h501_SEQUENCE_OF_DescriptorInfo, SEQUENCE_OF_DescriptorInfo_sequence_of);
1354
1355   return offset;
1356 }
1357
1358
1359 static const per_sequence_t DescriptorIDConfirmation_sequence[] = {
1360   { &hf_h501_descriptorInfo , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_SEQUENCE_OF_DescriptorInfo },
1361   { NULL, 0, 0, NULL }
1362 };
1363
1364 static int
1365 dissect_h501_DescriptorIDConfirmation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1366   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1367                                    ett_h501_DescriptorIDConfirmation, DescriptorIDConfirmation_sequence);
1368
1369   return offset;
1370 }
1371
1372
1373 static const value_string h501_DescriptorIDRejectionReason_vals[] = {
1374   {   0, "noDescriptors" },
1375   {   1, "security" },
1376   {   2, "hopCountExceeded" },
1377   {   3, "noServiceRelationship" },
1378   {   4, "undefined" },
1379   {   5, "neededFeature" },
1380   {   6, "genericDataReason" },
1381   {   7, "unknownServiceID" },
1382   { 0, NULL }
1383 };
1384
1385 static const per_choice_t DescriptorIDRejectionReason_choice[] = {
1386   {   0, &hf_h501_noDescriptors  , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1387   {   1, &hf_h501_security       , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1388   {   2, &hf_h501_hopCountExceeded, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1389   {   3, &hf_h501_noServiceRelationship, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1390   {   4, &hf_h501_undefined      , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1391   {   5, &hf_h501_neededFeature  , ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1392   {   6, &hf_h501_genericDataReason, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1393   {   7, &hf_h501_unknownServiceID, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1394   { 0, NULL, 0, NULL }
1395 };
1396
1397 static int
1398 dissect_h501_DescriptorIDRejectionReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1399   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1400                                  ett_h501_DescriptorIDRejectionReason, DescriptorIDRejectionReason_choice,
1401                                  NULL);
1402
1403   return offset;
1404 }
1405
1406
1407 static const per_sequence_t DescriptorIDRejection_sequence[] = {
1408   { &hf_h501_reason_03      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_DescriptorIDRejectionReason },
1409   { NULL, 0, 0, NULL }
1410 };
1411
1412 static int
1413 dissect_h501_DescriptorIDRejection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1414   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1415                                    ett_h501_DescriptorIDRejection, DescriptorIDRejection_sequence);
1416
1417   return offset;
1418 }
1419
1420
1421 static const value_string h501_T_descriptorInfo_vals[] = {
1422   {   0, "descriptorID" },
1423   {   1, "descriptor" },
1424   { 0, NULL }
1425 };
1426
1427 static const per_choice_t T_descriptorInfo_choice[] = {
1428   {   0, &hf_h501_descriptorID_01, ASN1_EXTENSION_ROOT    , dissect_h501_DescriptorID },
1429   {   1, &hf_h501_descriptor_01  , ASN1_EXTENSION_ROOT    , dissect_h501_Descriptor },
1430   { 0, NULL, 0, NULL }
1431 };
1432
1433 static int
1434 dissect_h501_T_descriptorInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1435   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1436                                  ett_h501_T_descriptorInfo, T_descriptorInfo_choice,
1437                                  NULL);
1438
1439   return offset;
1440 }
1441
1442
1443 static const value_string h501_T_updateType_vals[] = {
1444   {   0, "added" },
1445   {   1, "deleted" },
1446   {   2, "changed" },
1447   { 0, NULL }
1448 };
1449
1450 static const per_choice_t T_updateType_choice[] = {
1451   {   0, &hf_h501_added          , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1452   {   1, &hf_h501_deleted        , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1453   {   2, &hf_h501_changed        , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1454   { 0, NULL, 0, NULL }
1455 };
1456
1457 static int
1458 dissect_h501_T_updateType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1459   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1460                                  ett_h501_T_updateType, T_updateType_choice,
1461                                  NULL);
1462
1463   return offset;
1464 }
1465
1466
1467 static const per_sequence_t UpdateInformation_sequence[] = {
1468   { &hf_h501_descriptorInfo_01, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_T_descriptorInfo },
1469   { &hf_h501_updateType     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_T_updateType },
1470   { NULL, 0, 0, NULL }
1471 };
1472
1473 static int
1474 dissect_h501_UpdateInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1475   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1476                                    ett_h501_UpdateInformation, UpdateInformation_sequence);
1477
1478   return offset;
1479 }
1480
1481
1482 static const per_sequence_t SEQUENCE_OF_UpdateInformation_sequence_of[1] = {
1483   { &hf_h501_updateInfo_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h501_UpdateInformation },
1484 };
1485
1486 static int
1487 dissect_h501_SEQUENCE_OF_UpdateInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1488   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1489                                       ett_h501_SEQUENCE_OF_UpdateInformation, SEQUENCE_OF_UpdateInformation_sequence_of);
1490
1491   return offset;
1492 }
1493
1494
1495 static const per_sequence_t DescriptorUpdate_sequence[] = {
1496   { &hf_h501_sender         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_AliasAddress },
1497   { &hf_h501_updateInfo     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_SEQUENCE_OF_UpdateInformation },
1498   { NULL, 0, 0, NULL }
1499 };
1500
1501 static int
1502 dissect_h501_DescriptorUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1503   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1504                                    ett_h501_DescriptorUpdate, DescriptorUpdate_sequence);
1505
1506   return offset;
1507 }
1508
1509
1510 static const per_sequence_t DescriptorUpdateAck_sequence[] = {
1511   { NULL, 0, 0, NULL }
1512 };
1513
1514 static int
1515 dissect_h501_DescriptorUpdateAck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1516   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1517                                    ett_h501_DescriptorUpdateAck, DescriptorUpdateAck_sequence);
1518
1519   return offset;
1520 }
1521
1522
1523 static const per_sequence_t SEQUENCE_OF_AliasAddress_sequence_of[1] = {
1524   { &hf_h501_logicalAddresses_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h225_AliasAddress },
1525 };
1526
1527 static int
1528 dissect_h501_SEQUENCE_OF_AliasAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1529   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1530                                       ett_h501_SEQUENCE_OF_AliasAddress, SEQUENCE_OF_AliasAddress_sequence_of);
1531
1532   return offset;
1533 }
1534
1535
1536 static const per_sequence_t SEQUENCE_OF_CryptoH323Token_sequence_of[1] = {
1537   { &hf_h501_cryptoTokens_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h225_CryptoH323Token },
1538 };
1539
1540 static int
1541 dissect_h501_SEQUENCE_OF_CryptoH323Token(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1542   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1543                                       ett_h501_SEQUENCE_OF_CryptoH323Token, SEQUENCE_OF_CryptoH323Token_sequence_of);
1544
1545   return offset;
1546 }
1547
1548
1549 static const per_sequence_t UserInformation_sequence[] = {
1550   { &hf_h501_userIdentifier , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_AliasAddress },
1551   { &hf_h501_userAuthenticator, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_CryptoH323Token },
1552   { NULL, 0, 0, NULL }
1553 };
1554
1555 static int
1556 dissect_h501_UserInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1557   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1558                                    ett_h501_UserInformation, UserInformation_sequence);
1559
1560   return offset;
1561 }
1562
1563
1564
1565 static int
1566 dissect_h501_TimeZone(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1567   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1568                                                             -43200, 43200U, NULL, FALSE);
1569
1570   return offset;
1571 }
1572
1573
1574 static const per_sequence_t PartyInformation_sequence[] = {
1575   { &hf_h501_logicalAddresses, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_SEQUENCE_OF_AliasAddress },
1576   { &hf_h501_domainIdentifier, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h225_AliasAddress },
1577   { &hf_h501_transportAddress, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h225_AliasAddress },
1578   { &hf_h501_endpointType   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h225_EndpointType },
1579   { &hf_h501_userInfo       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_UserInformation },
1580   { &hf_h501_timeZone       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_TimeZone },
1581   { NULL, 0, 0, NULL }
1582 };
1583
1584 static int
1585 dissect_h501_PartyInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1586   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1587                                    ett_h501_PartyInformation, PartyInformation_sequence);
1588
1589   return offset;
1590 }
1591
1592
1593 static const per_sequence_t CallInformation_sequence[] = {
1594   { &hf_h501_callIdentifier , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
1595   { &hf_h501_conferenceID   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_ConferenceIdentifier },
1596   { &hf_h501_circuitID      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h225_CircuitInfo },
1597   { NULL, 0, 0, NULL }
1598 };
1599
1600 static int
1601 dissect_h501_CallInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1602   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1603                                    ett_h501_CallInformation, CallInformation_sequence);
1604
1605   return offset;
1606 }
1607
1608
1609 static const per_sequence_t AccessRequest_sequence[] = {
1610   { &hf_h501_destinationInfo, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_PartyInformation },
1611   { &hf_h501_sourceInfo     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_PartyInformation },
1612   { &hf_h501_callInfo       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_CallInformation },
1613   { &hf_h501_usageSpec      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_UsageSpecification },
1614   { &hf_h501_desiredProtocols, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_SupportedProtocols },
1615   { NULL, 0, 0, NULL }
1616 };
1617
1618 static int
1619 dissect_h501_AccessRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1620   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1621                                    ett_h501_AccessRequest, AccessRequest_sequence);
1622
1623   return offset;
1624 }
1625
1626
1627 static const per_sequence_t SEQUENCE_OF_ServiceControlSession_sequence_of[1] = {
1628   { &hf_h501_serviceControl_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h225_ServiceControlSession },
1629 };
1630
1631 static int
1632 dissect_h501_SEQUENCE_OF_ServiceControlSession(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1633   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1634                                       ett_h501_SEQUENCE_OF_ServiceControlSession, SEQUENCE_OF_ServiceControlSession_sequence_of);
1635
1636   return offset;
1637 }
1638
1639
1640 static const per_sequence_t AccessConfirmation_sequence[] = {
1641   { &hf_h501_templates      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_SEQUENCE_OF_AddressTemplate },
1642   { &hf_h501_partialResponse, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_BOOLEAN },
1643   { &hf_h501_supportedProtocols, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_SupportedProtocols },
1644   { &hf_h501_serviceControl , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_ServiceControlSession },
1645   { NULL, 0, 0, NULL }
1646 };
1647
1648 static int
1649 dissect_h501_AccessConfirmation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1650   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1651                                    ett_h501_AccessConfirmation, AccessConfirmation_sequence);
1652
1653   return offset;
1654 }
1655
1656
1657 static const value_string h501_AccessRejectionReason_vals[] = {
1658   {   0, "noMatch" },
1659   {   1, "packetSizeExceeded" },
1660   {   2, "security" },
1661   {   3, "hopCountExceeded" },
1662   {   4, "needCallInformation" },
1663   {   5, "noServiceRelationship" },
1664   {   6, "undefined" },
1665   {   7, "neededFeature" },
1666   {   8, "genericDataReason" },
1667   {   9, "destinationUnavailable" },
1668   {  10, "aliasesInconsistent" },
1669   {  11, "resourceUnavailable" },
1670   {  12, "incompleteAddress" },
1671   {  13, "unknownServiceID" },
1672   {  14, "usageUnavailable" },
1673   {  15, "cannotSupportUsageSpec" },
1674   {  16, "unknownUsageSendTo" },
1675   { 0, NULL }
1676 };
1677
1678 static const per_choice_t AccessRejectionReason_choice[] = {
1679   {   0, &hf_h501_noMatch        , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1680   {   1, &hf_h501_packetSizeExceeded, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1681   {   2, &hf_h501_security       , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1682   {   3, &hf_h501_hopCountExceeded, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1683   {   4, &hf_h501_needCallInformation, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1684   {   5, &hf_h501_noServiceRelationship, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1685   {   6, &hf_h501_undefined      , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1686   {   7, &hf_h501_neededFeature  , ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1687   {   8, &hf_h501_genericDataReason, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1688   {   9, &hf_h501_destinationUnavailable, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1689   {  10, &hf_h501_aliasesInconsistent, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1690   {  11, &hf_h501_resourceUnavailable, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1691   {  12, &hf_h501_incompleteAddress, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1692   {  13, &hf_h501_unknownServiceID, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1693   {  14, &hf_h501_usageUnavailable, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1694   {  15, &hf_h501_cannotSupportUsageSpec, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1695   {  16, &hf_h501_unknownUsageSendTo, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1696   { 0, NULL, 0, NULL }
1697 };
1698
1699 static int
1700 dissect_h501_AccessRejectionReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1701   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1702                                  ett_h501_AccessRejectionReason, AccessRejectionReason_choice,
1703                                  NULL);
1704
1705   return offset;
1706 }
1707
1708
1709 static const per_sequence_t AccessRejection_sequence[] = {
1710   { &hf_h501_reason_04      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_AccessRejectionReason },
1711   { &hf_h501_serviceControl , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_ServiceControlSession },
1712   { NULL, 0, 0, NULL }
1713 };
1714
1715 static int
1716 dissect_h501_AccessRejection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1717   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1718                                    ett_h501_AccessRejection, AccessRejection_sequence);
1719
1720   return offset;
1721 }
1722
1723
1724 static const per_sequence_t RequestInProgress_sequence[] = {
1725   { &hf_h501_delay          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_INTEGER_1_65535 },
1726   { &hf_h501_serviceControl , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_ServiceControlSession },
1727   { NULL, 0, 0, NULL }
1728 };
1729
1730 static int
1731 dissect_h501_RequestInProgress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1732   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1733                                    ett_h501_RequestInProgress, RequestInProgress_sequence);
1734
1735   return offset;
1736 }
1737
1738
1739 static const per_sequence_t NonStandardRequest_sequence[] = {
1740   { NULL, 0, 0, NULL }
1741 };
1742
1743 static int
1744 dissect_h501_NonStandardRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1745   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1746                                    ett_h501_NonStandardRequest, NonStandardRequest_sequence);
1747
1748   return offset;
1749 }
1750
1751
1752 static const per_sequence_t NonStandardConfirmation_sequence[] = {
1753   { NULL, 0, 0, NULL }
1754 };
1755
1756 static int
1757 dissect_h501_NonStandardConfirmation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1758   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1759                                    ett_h501_NonStandardConfirmation, NonStandardConfirmation_sequence);
1760
1761   return offset;
1762 }
1763
1764
1765 static const value_string h501_NonStandardRejectionReason_vals[] = {
1766   {   0, "notSupported" },
1767   {   1, "noServiceRelationship" },
1768   {   2, "undefined" },
1769   {   3, "neededFeature" },
1770   {   4, "genericDataReason" },
1771   {   5, "unknownServiceID" },
1772   { 0, NULL }
1773 };
1774
1775 static const per_choice_t NonStandardRejectionReason_choice[] = {
1776   {   0, &hf_h501_notSupported   , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1777   {   1, &hf_h501_noServiceRelationship, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1778   {   2, &hf_h501_undefined      , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1779   {   3, &hf_h501_neededFeature  , ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1780   {   4, &hf_h501_genericDataReason, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1781   {   5, &hf_h501_unknownServiceID, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1782   { 0, NULL, 0, NULL }
1783 };
1784
1785 static int
1786 dissect_h501_NonStandardRejectionReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1787   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1788                                  ett_h501_NonStandardRejectionReason, NonStandardRejectionReason_choice,
1789                                  NULL);
1790
1791   return offset;
1792 }
1793
1794
1795 static const per_sequence_t NonStandardRejection_sequence[] = {
1796   { &hf_h501_reason_08      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_NonStandardRejectionReason },
1797   { NULL, 0, 0, NULL }
1798 };
1799
1800 static int
1801 dissect_h501_NonStandardRejection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1802   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1803                                    ett_h501_NonStandardRejection, NonStandardRejection_sequence);
1804
1805   return offset;
1806 }
1807
1808
1809
1810 static int
1811 dissect_h501_OCTET_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1812   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1813                                        NO_BOUND, NO_BOUND, FALSE, NULL);
1814
1815   return offset;
1816 }
1817
1818
1819 static const value_string h501_UnknownMessageReason_vals[] = {
1820   {   0, "notUnderstood" },
1821   {   1, "undefined" },
1822   { 0, NULL }
1823 };
1824
1825 static const per_choice_t UnknownMessageReason_choice[] = {
1826   {   0, &hf_h501_notUnderstood  , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1827   {   1, &hf_h501_undefined      , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1828   { 0, NULL, 0, NULL }
1829 };
1830
1831 static int
1832 dissect_h501_UnknownMessageReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1833   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1834                                  ett_h501_UnknownMessageReason, UnknownMessageReason_choice,
1835                                  NULL);
1836
1837   return offset;
1838 }
1839
1840
1841 static const per_sequence_t UnknownMessageResponse_sequence[] = {
1842   { &hf_h501_unknownMessage , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_OCTET_STRING },
1843   { &hf_h501_reason_09      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_UnknownMessageReason },
1844   { NULL, 0, 0, NULL }
1845 };
1846
1847 static int
1848 dissect_h501_UnknownMessageResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1849   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1850                                    ett_h501_UnknownMessageResponse, UnknownMessageResponse_sequence);
1851
1852   return offset;
1853 }
1854
1855
1856 static const per_sequence_t UsageRequest_sequence[] = {
1857   { &hf_h501_callInfo       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_CallInformation },
1858   { &hf_h501_usageSpec      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_UsageSpecification },
1859   { NULL, 0, 0, NULL }
1860 };
1861
1862 static int
1863 dissect_h501_UsageRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1864   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1865                                    ett_h501_UsageRequest, UsageRequest_sequence);
1866
1867   return offset;
1868 }
1869
1870
1871 static const per_sequence_t UsageConfirmation_sequence[] = {
1872   { NULL, 0, 0, NULL }
1873 };
1874
1875 static int
1876 dissect_h501_UsageConfirmation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1877   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1878                                    ett_h501_UsageConfirmation, UsageConfirmation_sequence);
1879
1880   return offset;
1881 }
1882
1883
1884 static const value_string h501_Role_vals[] = {
1885   {   0, "originator" },
1886   {   1, "destination" },
1887   {   2, "nonStandardData" },
1888   { 0, NULL }
1889 };
1890
1891 static const per_choice_t Role_choice[] = {
1892   {   0, &hf_h501_originator     , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1893   {   1, &hf_h501_destination    , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1894   {   2, &hf_h501_nonStandardData, ASN1_EXTENSION_ROOT    , dissect_h225_NonStandardParameter },
1895   { 0, NULL, 0, NULL }
1896 };
1897
1898 static int
1899 dissect_h501_Role(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1900   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1901                                  ett_h501_Role, Role_choice,
1902                                  NULL);
1903
1904   return offset;
1905 }
1906
1907
1908 static const value_string h501_UsageCallStatus_vals[] = {
1909   {   0, "preConnect" },
1910   {   1, "callInProgress" },
1911   {   2, "callEnded" },
1912   {   3, "registrationLost" },
1913   { 0, NULL }
1914 };
1915
1916 static const per_choice_t UsageCallStatus_choice[] = {
1917   {   0, &hf_h501_preConnect     , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1918   {   1, &hf_h501_callInProgress , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1919   {   2, &hf_h501_callEnded      , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
1920   {   3, &hf_h501_registrationLost, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
1921   { 0, NULL, 0, NULL }
1922 };
1923
1924 static int
1925 dissect_h501_UsageCallStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1926   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1927                                  ett_h501_UsageCallStatus, UsageCallStatus_choice,
1928                                  NULL);
1929
1930   return offset;
1931 }
1932
1933
1934 static const per_sequence_t TerminationCause_sequence[] = {
1935   { &hf_h501_releaseCompleteReason, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_ReleaseCompleteReason },
1936   { &hf_h501_causeIE        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_INTEGER_1_65535 },
1937   { &hf_h501_nonStandardData, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h225_NonStandardParameter },
1938   { NULL, 0, 0, NULL }
1939 };
1940
1941 static int
1942 dissect_h501_TerminationCause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1943   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1944                                    ett_h501_TerminationCause, TerminationCause_sequence);
1945
1946   return offset;
1947 }
1948
1949
1950 static const per_sequence_t UsageField_sequence[] = {
1951   { &hf_h501_id             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_OBJECT_IDENTIFIER },
1952   { &hf_h501_value          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_OCTET_STRING },
1953   { NULL, 0, 0, NULL }
1954 };
1955
1956 static int
1957 dissect_h501_UsageField(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1958   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1959                                    ett_h501_UsageField, UsageField_sequence);
1960
1961   return offset;
1962 }
1963
1964
1965 static const per_sequence_t SEQUENCE_OF_UsageField_sequence_of[1] = {
1966   { &hf_h501_usageFields_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h501_UsageField },
1967 };
1968
1969 static int
1970 dissect_h501_SEQUENCE_OF_UsageField(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1971   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1972                                       ett_h501_SEQUENCE_OF_UsageField, SEQUENCE_OF_UsageField_sequence_of);
1973
1974   return offset;
1975 }
1976
1977
1978 static const per_sequence_t UsageIndication_sequence[] = {
1979   { &hf_h501_callInfo       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_CallInformation },
1980   { &hf_h501_accessTokens   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_AccessToken },
1981   { &hf_h501_senderRole     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_Role },
1982   { &hf_h501_usageCallStatus, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_UsageCallStatus },
1983   { &hf_h501_srcInfo        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_PartyInformation },
1984   { &hf_h501_destAddress    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_PartyInformation },
1985   { &hf_h501_startTime      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h235_TimeStamp },
1986   { &hf_h501_endTime        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h235_TimeStamp },
1987   { &hf_h501_terminationCause, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_TerminationCause },
1988   { &hf_h501_usageFields    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_SEQUENCE_OF_UsageField },
1989   { NULL, 0, 0, NULL }
1990 };
1991
1992 static int
1993 dissect_h501_UsageIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1994   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1995                                    ett_h501_UsageIndication, UsageIndication_sequence);
1996
1997   return offset;
1998 }
1999
2000
2001 static const per_sequence_t UsageIndicationConfirmation_sequence[] = {
2002   { NULL, 0, 0, NULL }
2003 };
2004
2005 static int
2006 dissect_h501_UsageIndicationConfirmation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2007   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2008                                    ett_h501_UsageIndicationConfirmation, UsageIndicationConfirmation_sequence);
2009
2010   return offset;
2011 }
2012
2013
2014 static const value_string h501_UsageIndicationRejectionReason_vals[] = {
2015   {   0, "unknownCall" },
2016   {   1, "incomplete" },
2017   {   2, "security" },
2018   {   3, "noServiceRelationship" },
2019   {   4, "undefined" },
2020   {   5, "neededFeature" },
2021   {   6, "genericDataReason" },
2022   {   7, "unknownServiceID" },
2023   { 0, NULL }
2024 };
2025
2026 static const per_choice_t UsageIndicationRejectionReason_choice[] = {
2027   {   0, &hf_h501_unknownCall    , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2028   {   1, &hf_h501_incomplete     , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2029   {   2, &hf_h501_security       , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2030   {   3, &hf_h501_noServiceRelationship, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2031   {   4, &hf_h501_undefined      , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2032   {   5, &hf_h501_neededFeature  , ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
2033   {   6, &hf_h501_genericDataReason, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
2034   {   7, &hf_h501_unknownServiceID, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
2035   { 0, NULL, 0, NULL }
2036 };
2037
2038 static int
2039 dissect_h501_UsageIndicationRejectionReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2040   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2041                                  ett_h501_UsageIndicationRejectionReason, UsageIndicationRejectionReason_choice,
2042                                  NULL);
2043
2044   return offset;
2045 }
2046
2047
2048 static const per_sequence_t UsageIndicationRejection_sequence[] = {
2049   { &hf_h501_reason_06      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_UsageIndicationRejectionReason },
2050   { NULL, 0, 0, NULL }
2051 };
2052
2053 static int
2054 dissect_h501_UsageIndicationRejection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2055   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2056                                    ett_h501_UsageIndicationRejection, UsageIndicationRejection_sequence);
2057
2058   return offset;
2059 }
2060
2061
2062 static const value_string h501_UsageRejectReason_vals[] = {
2063   {   0, "invalidCall" },
2064   {   1, "unavailable" },
2065   {   2, "security" },
2066   {   3, "noServiceRelationship" },
2067   {   4, "undefined" },
2068   {   5, "neededFeature" },
2069   {   6, "genericDataReason" },
2070   {   7, "unknownServiceID" },
2071   { 0, NULL }
2072 };
2073
2074 static const per_choice_t UsageRejectReason_choice[] = {
2075   {   0, &hf_h501_invalidCall    , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2076   {   1, &hf_h501_unavailable    , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2077   {   2, &hf_h501_security       , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2078   {   3, &hf_h501_noServiceRelationship, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2079   {   4, &hf_h501_undefined      , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2080   {   5, &hf_h501_neededFeature  , ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
2081   {   6, &hf_h501_genericDataReason, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
2082   {   7, &hf_h501_unknownServiceID, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
2083   { 0, NULL, 0, NULL }
2084 };
2085
2086 static int
2087 dissect_h501_UsageRejectReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2088   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2089                                  ett_h501_UsageRejectReason, UsageRejectReason_choice,
2090                                  NULL);
2091
2092   return offset;
2093 }
2094
2095
2096 static const per_sequence_t UsageRejection_sequence[] = {
2097   { &hf_h501_reason_05      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_UsageRejectReason },
2098   { NULL, 0, 0, NULL }
2099 };
2100
2101 static int
2102 dissect_h501_UsageRejection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2103   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2104                                    ett_h501_UsageRejection, UsageRejection_sequence);
2105
2106   return offset;
2107 }
2108
2109
2110 static const per_sequence_t ValidationRequest_sequence[] = {
2111   { &hf_h501_accessToken    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_AccessToken },
2112   { &hf_h501_destinationInfo, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_PartyInformation },
2113   { &hf_h501_sourceInfo     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_PartyInformation },
2114   { &hf_h501_callInfo       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_CallInformation },
2115   { &hf_h501_usageSpec      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_UsageSpecification },
2116   { NULL, 0, 0, NULL }
2117 };
2118
2119 static int
2120 dissect_h501_ValidationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2121   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2122                                    ett_h501_ValidationRequest, ValidationRequest_sequence);
2123
2124   return offset;
2125 }
2126
2127
2128 static const per_sequence_t ValidationConfirmation_sequence[] = {
2129   { &hf_h501_destinationInfo, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_PartyInformation },
2130   { &hf_h501_usageSpec      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_UsageSpecification },
2131   { NULL, 0, 0, NULL }
2132 };
2133
2134 static int
2135 dissect_h501_ValidationConfirmation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2136   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2137                                    ett_h501_ValidationConfirmation, ValidationConfirmation_sequence);
2138
2139   return offset;
2140 }
2141
2142
2143 static const value_string h501_ValidationRejectionReason_vals[] = {
2144   {   0, "tokenNotValid" },
2145   {   1, "security" },
2146   {   2, "hopCountExceeded" },
2147   {   3, "missingSourceInfo" },
2148   {   4, "missingDestInfo" },
2149   {   5, "noServiceRelationship" },
2150   {   6, "undefined" },
2151   {   7, "neededFeature" },
2152   {   8, "genericDataReason" },
2153   {   9, "unknownServiceID" },
2154   { 0, NULL }
2155 };
2156
2157 static const per_choice_t ValidationRejectionReason_choice[] = {
2158   {   0, &hf_h501_tokenNotValid  , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2159   {   1, &hf_h501_security       , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2160   {   2, &hf_h501_hopCountExceeded, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2161   {   3, &hf_h501_missingSourceInfo, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2162   {   4, &hf_h501_missingDestInfo, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2163   {   5, &hf_h501_noServiceRelationship, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2164   {   6, &hf_h501_undefined      , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2165   {   7, &hf_h501_neededFeature  , ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
2166   {   8, &hf_h501_genericDataReason, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
2167   {   9, &hf_h501_unknownServiceID, ASN1_NOT_EXTENSION_ROOT, dissect_h501_NULL },
2168   { 0, NULL, 0, NULL }
2169 };
2170
2171 static int
2172 dissect_h501_ValidationRejectionReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2173   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2174                                  ett_h501_ValidationRejectionReason, ValidationRejectionReason_choice,
2175                                  NULL);
2176
2177   return offset;
2178 }
2179
2180
2181 static const per_sequence_t ValidationRejection_sequence[] = {
2182   { &hf_h501_reason_07      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_ValidationRejectionReason },
2183   { NULL, 0, 0, NULL }
2184 };
2185
2186 static int
2187 dissect_h501_ValidationRejection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2188   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2189                                    ett_h501_ValidationRejection, ValidationRejection_sequence);
2190
2191   return offset;
2192 }
2193
2194
2195
2196 static int
2197 dissect_h501_ApplicationMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2198   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2199                                        NO_BOUND, NO_BOUND, FALSE, NULL);
2200
2201   return offset;
2202 }
2203
2204
2205 static const per_sequence_t AuthenticationRequest_sequence[] = {
2206   { &hf_h501_applicationMessage, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_ApplicationMessage },
2207   { NULL, 0, 0, NULL }
2208 };
2209
2210 static int
2211 dissect_h501_AuthenticationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2212   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2213                                    ett_h501_AuthenticationRequest, AuthenticationRequest_sequence);
2214
2215   return offset;
2216 }
2217
2218
2219 static const per_sequence_t AuthenticationConfirmation_sequence[] = {
2220   { NULL, 0, 0, NULL }
2221 };
2222
2223 static int
2224 dissect_h501_AuthenticationConfirmation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2225   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2226                                    ett_h501_AuthenticationConfirmation, AuthenticationConfirmation_sequence);
2227
2228   return offset;
2229 }
2230
2231
2232 static const value_string h501_AuthenticationRejectionReason_vals[] = {
2233   {   0, "security" },
2234   {   1, "hopCountExceeded" },
2235   {   2, "noServiceRelationship" },
2236   {   3, "undefined" },
2237   {   4, "neededFeature" },
2238   {   5, "genericDataReason" },
2239   {   6, "unknownServiceID" },
2240   {   7, "securityWrongSyncTime" },
2241   {   8, "securityReplay" },
2242   {   9, "securityWrongGeneralID" },
2243   {  10, "securityWrongSendersID" },
2244   {  11, "securityIntegrityFailed" },
2245   {  12, "securityWrongOID" },
2246   { 0, NULL }
2247 };
2248
2249 static const per_choice_t AuthenticationRejectionReason_choice[] = {
2250   {   0, &hf_h501_security       , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2251   {   1, &hf_h501_hopCountExceeded, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2252   {   2, &hf_h501_noServiceRelationship, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2253   {   3, &hf_h501_undefined      , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2254   {   4, &hf_h501_neededFeature  , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2255   {   5, &hf_h501_genericDataReason, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2256   {   6, &hf_h501_unknownServiceID, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2257   {   7, &hf_h501_securityWrongSyncTime, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2258   {   8, &hf_h501_securityReplay , ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2259   {   9, &hf_h501_securityWrongGeneralID, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2260   {  10, &hf_h501_securityWrongSendersID, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2261   {  11, &hf_h501_securityIntegrityFailed, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2262   {  12, &hf_h501_securityWrongOID, ASN1_EXTENSION_ROOT    , dissect_h501_NULL },
2263   { 0, NULL, 0, NULL }
2264 };
2265
2266 static int
2267 dissect_h501_AuthenticationRejectionReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2268   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2269                                  ett_h501_AuthenticationRejectionReason, AuthenticationRejectionReason_choice,
2270                                  NULL);
2271
2272   return offset;
2273 }
2274
2275
2276 static const per_sequence_t AuthenticationRejection_sequence[] = {
2277   { &hf_h501_reason_10      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_AuthenticationRejectionReason },
2278   { NULL, 0, 0, NULL }
2279 };
2280
2281 static int
2282 dissect_h501_AuthenticationRejection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2283   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2284                                    ett_h501_AuthenticationRejection, AuthenticationRejection_sequence);
2285
2286   return offset;
2287 }
2288
2289
2290 static const value_string h501_MessageBody_vals[] = {
2291   {   0, "serviceRequest" },
2292   {   1, "serviceConfirmation" },
2293   {   2, "serviceRejection" },
2294   {   3, "serviceRelease" },
2295   {   4, "descriptorRequest" },
2296   {   5, "descriptorConfirmation" },
2297   {   6, "descriptorRejection" },
2298   {   7, "descriptorIDRequest" },
2299   {   8, "descriptorIDConfirmation" },
2300   {   9, "descriptorIDRejection" },
2301   {  10, "descriptorUpdate" },
2302   {  11, "descriptorUpdateAck" },
2303   {  12, "accessRequest" },
2304   {  13, "accessConfirmation" },
2305   {  14, "accessRejection" },
2306   {  15, "requestInProgress" },
2307   {  16, "nonStandardRequest" },
2308   {  17, "nonStandardConfirmation" },
2309   {  18, "nonStandardRejection" },
2310   {  19, "unknownMessageResponse" },
2311   {  20, "usageRequest" },
2312   {  21, "usageConfirmation" },
2313   {  22, "usageIndication" },
2314   {  23, "usageIndicationConfirmation" },
2315   {  24, "usageIndicationRejection" },
2316   {  25, "usageRejection" },
2317   {  26, "validationRequest" },
2318   {  27, "validationConfirmation" },
2319   {  28, "validationRejection" },
2320   {  29, "authenticationRequest" },
2321   {  30, "authenticationConfirmation" },
2322   {  31, "authenticationRejection" },
2323   { 0, NULL }
2324 };
2325
2326 static const per_choice_t MessageBody_choice[] = {
2327   {   0, &hf_h501_serviceRequest , ASN1_EXTENSION_ROOT    , dissect_h501_ServiceRequest },
2328   {   1, &hf_h501_serviceConfirmation, ASN1_EXTENSION_ROOT    , dissect_h501_ServiceConfirmation },
2329   {   2, &hf_h501_serviceRejection, ASN1_EXTENSION_ROOT    , dissect_h501_ServiceRejection },
2330   {   3, &hf_h501_serviceRelease , ASN1_EXTENSION_ROOT    , dissect_h501_ServiceRelease },
2331   {   4, &hf_h501_descriptorRequest, ASN1_EXTENSION_ROOT    , dissect_h501_DescriptorRequest },
2332   {   5, &hf_h501_descriptorConfirmation, ASN1_EXTENSION_ROOT    , dissect_h501_DescriptorConfirmation },
2333   {   6, &hf_h501_descriptorRejection, ASN1_EXTENSION_ROOT    , dissect_h501_DescriptorRejection },
2334   {   7, &hf_h501_descriptorIDRequest, ASN1_EXTENSION_ROOT    , dissect_h501_DescriptorIDRequest },
2335   {   8, &hf_h501_descriptorIDConfirmation, ASN1_EXTENSION_ROOT    , dissect_h501_DescriptorIDConfirmation },
2336   {   9, &hf_h501_descriptorIDRejection, ASN1_EXTENSION_ROOT    , dissect_h501_DescriptorIDRejection },
2337   {  10, &hf_h501_descriptorUpdate, ASN1_EXTENSION_ROOT    , dissect_h501_DescriptorUpdate },
2338   {  11, &hf_h501_descriptorUpdateAck, ASN1_EXTENSION_ROOT    , dissect_h501_DescriptorUpdateAck },
2339   {  12, &hf_h501_accessRequest  , ASN1_EXTENSION_ROOT    , dissect_h501_AccessRequest },
2340   {  13, &hf_h501_accessConfirmation, ASN1_EXTENSION_ROOT    , dissect_h501_AccessConfirmation },
2341   {  14, &hf_h501_accessRejection, ASN1_EXTENSION_ROOT    , dissect_h501_AccessRejection },
2342   {  15, &hf_h501_requestInProgress, ASN1_EXTENSION_ROOT    , dissect_h501_RequestInProgress },
2343   {  16, &hf_h501_nonStandardRequest, ASN1_EXTENSION_ROOT    , dissect_h501_NonStandardRequest },
2344   {  17, &hf_h501_nonStandardConfirmation, ASN1_EXTENSION_ROOT    , dissect_h501_NonStandardConfirmation },
2345   {  18, &hf_h501_nonStandardRejection, ASN1_EXTENSION_ROOT    , dissect_h501_NonStandardRejection },
2346   {  19, &hf_h501_unknownMessageResponse, ASN1_EXTENSION_ROOT    , dissect_h501_UnknownMessageResponse },
2347   {  20, &hf_h501_usageRequest   , ASN1_EXTENSION_ROOT    , dissect_h501_UsageRequest },
2348   {  21, &hf_h501_usageConfirmation, ASN1_EXTENSION_ROOT    , dissect_h501_UsageConfirmation },
2349   {  22, &hf_h501_usageIndication, ASN1_EXTENSION_ROOT    , dissect_h501_UsageIndication },
2350   {  23, &hf_h501_usageIndicationConfirmation, ASN1_EXTENSION_ROOT    , dissect_h501_UsageIndicationConfirmation },
2351   {  24, &hf_h501_usageIndicationRejection, ASN1_EXTENSION_ROOT    , dissect_h501_UsageIndicationRejection },
2352   {  25, &hf_h501_usageRejection , ASN1_EXTENSION_ROOT    , dissect_h501_UsageRejection },
2353   {  26, &hf_h501_validationRequest, ASN1_EXTENSION_ROOT    , dissect_h501_ValidationRequest },
2354   {  27, &hf_h501_validationConfirmation, ASN1_EXTENSION_ROOT    , dissect_h501_ValidationConfirmation },
2355   {  28, &hf_h501_validationRejection, ASN1_EXTENSION_ROOT    , dissect_h501_ValidationRejection },
2356   {  29, &hf_h501_authenticationRequest, ASN1_NOT_EXTENSION_ROOT, dissect_h501_AuthenticationRequest },
2357   {  30, &hf_h501_authenticationConfirmation, ASN1_NOT_EXTENSION_ROOT, dissect_h501_AuthenticationConfirmation },
2358   {  31, &hf_h501_authenticationRejection, ASN1_NOT_EXTENSION_ROOT, dissect_h501_AuthenticationRejection },
2359   { 0, NULL, 0, NULL }
2360 };
2361
2362 static int
2363 dissect_h501_MessageBody(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2364 #line 22 "h501.cnf"
2365   gint32 msg_type = -1;
2366   const gchar *p = NULL;
2367
2368   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2369                                  ett_h501_MessageBody, MessageBody_choice,
2370                                  &msg_type);
2371
2372 #line 25 "h501.cnf"
2373   p = match_strval(msg_type, VALS(h501_MessageBody_vals));
2374   if (p && check_col(actx->pinfo->cinfo, COL_INFO))
2375     col_set_str(actx->pinfo->cinfo, COL_INFO, p);
2376
2377   return offset;
2378 }
2379
2380
2381
2382 static int
2383 dissect_h501_INTEGER_0_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2384   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2385                                                             0U, 65535U, NULL, FALSE);
2386
2387   return offset;
2388 }
2389
2390
2391
2392 static int
2393 dissect_h501_ProtocolVersion(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2394   offset = dissect_per_object_identifier(tvb, offset, actx, tree, hf_index, NULL);
2395
2396   return offset;
2397 }
2398
2399
2400
2401 static int
2402 dissect_h501_INTEGER_1_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2403   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
2404                                                             1U, 255U, NULL, FALSE);
2405
2406   return offset;
2407 }
2408
2409
2410 static const per_sequence_t SEQUENCE_OF_TransportAddress_sequence_of[1] = {
2411   { &hf_h501_replyAddress_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h225_TransportAddress },
2412 };
2413
2414 static int
2415 dissect_h501_SEQUENCE_OF_TransportAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2416   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
2417                                       ett_h501_SEQUENCE_OF_TransportAddress, SEQUENCE_OF_TransportAddress_sequence_of);
2418
2419   return offset;
2420 }
2421
2422
2423 static const per_sequence_t SEQUENCE_OF_ClearToken_sequence_of[1] = {
2424   { &hf_h501_tokens_item    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h235_ClearToken },
2425 };
2426
2427 static int
2428 dissect_h501_SEQUENCE_OF_ClearToken(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2429   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
2430                                       ett_h501_SEQUENCE_OF_ClearToken, SEQUENCE_OF_ClearToken_sequence_of);
2431
2432   return offset;
2433 }
2434
2435
2436 static const per_sequence_t SEQUENCE_OF_NonStandardParameter_sequence_of[1] = {
2437   { &hf_h501_nonStandard_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h225_NonStandardParameter },
2438 };
2439
2440 static int
2441 dissect_h501_SEQUENCE_OF_NonStandardParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2442   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
2443                                       ett_h501_SEQUENCE_OF_NonStandardParameter, SEQUENCE_OF_NonStandardParameter_sequence_of);
2444
2445   return offset;
2446 }
2447
2448
2449
2450 static int
2451 dissect_h501_ServiceID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2452   offset = dissect_h225_GloballyUniqueID(tvb, offset, actx, tree, hf_index);
2453
2454   return offset;
2455 }
2456
2457
2458 static const per_sequence_t SEQUENCE_OF_GenericData_sequence_of[1] = {
2459   { &hf_h501_genericData_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h225_GenericData },
2460 };
2461
2462 static int
2463 dissect_h501_SEQUENCE_OF_GenericData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2464   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
2465                                       ett_h501_SEQUENCE_OF_GenericData, SEQUENCE_OF_GenericData_sequence_of);
2466
2467   return offset;
2468 }
2469
2470
2471 static const per_sequence_t MessageCommonInfo_sequence[] = {
2472   { &hf_h501_sequenceNumber , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_INTEGER_0_65535 },
2473   { &hf_h501_annexGversion  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_ProtocolVersion },
2474   { &hf_h501_hopCount       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_INTEGER_1_255 },
2475   { &hf_h501_replyAddress   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_TransportAddress },
2476   { &hf_h501_integrityCheckValue, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h225_ICV },
2477   { &hf_h501_tokens         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_ClearToken },
2478   { &hf_h501_cryptoTokens   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_CryptoH323Token },
2479   { &hf_h501_nonStandard    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_NonStandardParameter },
2480   { &hf_h501_serviceID      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h501_ServiceID },
2481   { &hf_h501_genericData    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h501_SEQUENCE_OF_GenericData },
2482   { &hf_h501_featureSet     , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h225_FeatureSet },
2483   { &hf_h501_version        , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h501_ProtocolVersion },
2484   { NULL, 0, 0, NULL }
2485 };
2486
2487 static int
2488 dissect_h501_MessageCommonInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2489   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2490                                    ett_h501_MessageCommonInfo, MessageCommonInfo_sequence);
2491
2492   return offset;
2493 }
2494
2495
2496 static const per_sequence_t Message_sequence[] = {
2497   { &hf_h501_body           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_MessageBody },
2498   { &hf_h501_common         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h501_MessageCommonInfo },
2499   { NULL, 0, 0, NULL }
2500 };
2501
2502 static int
2503 dissect_h501_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2504   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2505                                    ett_h501_Message, Message_sequence);
2506
2507   return offset;
2508 }
2509
2510 /*--- PDUs ---*/
2511
2512 static int dissect_Message_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2513   int offset = 0;
2514   asn1_ctx_t asn1_ctx;
2515   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
2516   offset = dissect_h501_Message(tvb, offset, &asn1_ctx, tree, hf_h501_Message_PDU);
2517   offset += 7; offset >>= 3;
2518   return offset;
2519 }
2520
2521
2522 /*--- End of included file: packet-h501-fn.c ---*/
2523 #line 67 "packet-h501-template.c"
2524
2525 static int
2526 dissect_h501_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2527 {
2528   proto_item  *ti = NULL;
2529   proto_tree  *h501_tree = NULL;
2530
2531   if (check_col(pinfo->cinfo, COL_PROTOCOL))
2532     col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
2533
2534   ti = proto_tree_add_item(tree, proto_h501, tvb, 0, -1, FALSE);
2535   h501_tree = proto_item_add_subtree(ti, ett_h501);
2536
2537   return dissect_Message_PDU(tvb, pinfo, h501_tree);
2538 }
2539
2540 static int
2541 dissect_h501_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2542 {
2543   dissect_tpkt_encap(tvb, pinfo, tree, FALSE, h501_pdu_handle);
2544   return tvb_length(tvb);
2545 }
2546
2547 static int
2548 dissect_h501_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
2549 {
2550   dissect_tpkt_encap(tvb, pinfo, tree, h501_desegment_tcp, h501_pdu_handle);
2551   return tvb_length(tvb);
2552 }
2553
2554 /*--- proto_register_h501 ----------------------------------------------*/
2555 void proto_register_h501(void) {
2556   module_t *h501_module;
2557
2558   /* List of fields */
2559   static hf_register_info hf[] = {
2560
2561 /*--- Included file: packet-h501-hfarr.c ---*/
2562 #line 1 "packet-h501-hfarr.c"
2563     { &hf_h501_Message_PDU,
2564       { "Message", "h501.Message",
2565         FT_NONE, BASE_NONE, NULL, 0,
2566         "h501.Message", HFILL }},
2567     { &hf_h501_body,
2568       { "body", "h501.body",
2569         FT_UINT32, BASE_DEC, VALS(h501_MessageBody_vals), 0,
2570         "h501.MessageBody", HFILL }},
2571     { &hf_h501_common,
2572       { "common", "h501.common",
2573         FT_NONE, BASE_NONE, NULL, 0,
2574         "h501.MessageCommonInfo", HFILL }},
2575     { &hf_h501_serviceRequest,
2576       { "serviceRequest", "h501.serviceRequest",
2577         FT_NONE, BASE_NONE, NULL, 0,
2578         "h501.ServiceRequest", HFILL }},
2579     { &hf_h501_serviceConfirmation,
2580       { "serviceConfirmation", "h501.serviceConfirmation",
2581         FT_NONE, BASE_NONE, NULL, 0,
2582         "h501.ServiceConfirmation", HFILL }},
2583     { &hf_h501_serviceRejection,
2584       { "serviceRejection", "h501.serviceRejection",
2585         FT_NONE, BASE_NONE, NULL, 0,
2586         "h501.ServiceRejection", HFILL }},
2587     { &hf_h501_serviceRelease,
2588       { "serviceRelease", "h501.serviceRelease",
2589         FT_NONE, BASE_NONE, NULL, 0,
2590         "h501.ServiceRelease", HFILL }},
2591     { &hf_h501_descriptorRequest,
2592       { "descriptorRequest", "h501.descriptorRequest",
2593         FT_NONE, BASE_NONE, NULL, 0,
2594         "h501.DescriptorRequest", HFILL }},
2595     { &hf_h501_descriptorConfirmation,
2596       { "descriptorConfirmation", "h501.descriptorConfirmation",
2597         FT_NONE, BASE_NONE, NULL, 0,
2598         "h501.DescriptorConfirmation", HFILL }},
2599     { &hf_h501_descriptorRejection,
2600       { "descriptorRejection", "h501.descriptorRejection",
2601         FT_NONE, BASE_NONE, NULL, 0,
2602         "h501.DescriptorRejection", HFILL }},
2603     { &hf_h501_descriptorIDRequest,
2604       { "descriptorIDRequest", "h501.descriptorIDRequest",
2605         FT_NONE, BASE_NONE, NULL, 0,
2606         "h501.DescriptorIDRequest", HFILL }},
2607     { &hf_h501_descriptorIDConfirmation,
2608       { "descriptorIDConfirmation", "h501.descriptorIDConfirmation",
2609         FT_NONE, BASE_NONE, NULL, 0,
2610         "h501.DescriptorIDConfirmation", HFILL }},
2611     { &hf_h501_descriptorIDRejection,
2612       { "descriptorIDRejection", "h501.descriptorIDRejection",
2613         FT_NONE, BASE_NONE, NULL, 0,
2614         "h501.DescriptorIDRejection", HFILL }},
2615     { &hf_h501_descriptorUpdate,
2616       { "descriptorUpdate", "h501.descriptorUpdate",
2617         FT_NONE, BASE_NONE, NULL, 0,
2618         "h501.DescriptorUpdate", HFILL }},
2619     { &hf_h501_descriptorUpdateAck,
2620       { "descriptorUpdateAck", "h501.descriptorUpdateAck",
2621         FT_NONE, BASE_NONE, NULL, 0,
2622         "h501.DescriptorUpdateAck", HFILL }},
2623     { &hf_h501_accessRequest,
2624       { "accessRequest", "h501.accessRequest",
2625         FT_NONE, BASE_NONE, NULL, 0,
2626         "h501.AccessRequest", HFILL }},
2627     { &hf_h501_accessConfirmation,
2628       { "accessConfirmation", "h501.accessConfirmation",
2629         FT_NONE, BASE_NONE, NULL, 0,
2630         "h501.AccessConfirmation", HFILL }},
2631     { &hf_h501_accessRejection,
2632       { "accessRejection", "h501.accessRejection",
2633         FT_NONE, BASE_NONE, NULL, 0,
2634         "h501.AccessRejection", HFILL }},
2635     { &hf_h501_requestInProgress,
2636       { "requestInProgress", "h501.requestInProgress",
2637         FT_NONE, BASE_NONE, NULL, 0,
2638         "h501.RequestInProgress", HFILL }},
2639     { &hf_h501_nonStandardRequest,
2640       { "nonStandardRequest", "h501.nonStandardRequest",
2641         FT_NONE, BASE_NONE, NULL, 0,
2642         "h501.NonStandardRequest", HFILL }},
2643     { &hf_h501_nonStandardConfirmation,
2644       { "nonStandardConfirmation", "h501.nonStandardConfirmation",
2645         FT_NONE, BASE_NONE, NULL, 0,
2646         "h501.NonStandardConfirmation", HFILL }},
2647     { &hf_h501_nonStandardRejection,
2648       { "nonStandardRejection", "h501.nonStandardRejection",
2649         FT_NONE, BASE_NONE, NULL, 0,
2650         "h501.NonStandardRejection", HFILL }},
2651     { &hf_h501_unknownMessageResponse,
2652       { "unknownMessageResponse", "h501.unknownMessageResponse",
2653         FT_NONE, BASE_NONE, NULL, 0,
2654         "h501.UnknownMessageResponse", HFILL }},
2655     { &hf_h501_usageRequest,
2656       { "usageRequest", "h501.usageRequest",
2657         FT_NONE, BASE_NONE, NULL, 0,
2658         "h501.UsageRequest", HFILL }},
2659     { &hf_h501_usageConfirmation,
2660       { "usageConfirmation", "h501.usageConfirmation",
2661         FT_NONE, BASE_NONE, NULL, 0,
2662         "h501.UsageConfirmation", HFILL }},
2663     { &hf_h501_usageIndication,
2664       { "usageIndication", "h501.usageIndication",
2665         FT_NONE, BASE_NONE, NULL, 0,
2666         "h501.UsageIndication", HFILL }},
2667     { &hf_h501_usageIndicationConfirmation,
2668       { "usageIndicationConfirmation", "h501.usageIndicationConfirmation",
2669         FT_NONE, BASE_NONE, NULL, 0,
2670         "h501.UsageIndicationConfirmation", HFILL }},
2671     { &hf_h501_usageIndicationRejection,
2672       { "usageIndicationRejection", "h501.usageIndicationRejection",
2673         FT_NONE, BASE_NONE, NULL, 0,
2674         "h501.UsageIndicationRejection", HFILL }},
2675     { &hf_h501_usageRejection,
2676       { "usageRejection", "h501.usageRejection",
2677         FT_NONE, BASE_NONE, NULL, 0,
2678         "h501.UsageRejection", HFILL }},
2679     { &hf_h501_validationRequest,
2680       { "validationRequest", "h501.validationRequest",
2681         FT_NONE, BASE_NONE, NULL, 0,
2682         "h501.ValidationRequest", HFILL }},
2683     { &hf_h501_validationConfirmation,
2684       { "validationConfirmation", "h501.validationConfirmation",
2685         FT_NONE, BASE_NONE, NULL, 0,
2686         "h501.ValidationConfirmation", HFILL }},
2687     { &hf_h501_validationRejection,
2688       { "validationRejection", "h501.validationRejection",
2689         FT_NONE, BASE_NONE, NULL, 0,
2690         "h501.ValidationRejection", HFILL }},
2691     { &hf_h501_authenticationRequest,
2692       { "authenticationRequest", "h501.authenticationRequest",
2693         FT_NONE, BASE_NONE, NULL, 0,
2694         "h501.AuthenticationRequest", HFILL }},
2695     { &hf_h501_authenticationConfirmation,
2696       { "authenticationConfirmation", "h501.authenticationConfirmation",
2697         FT_NONE, BASE_NONE, NULL, 0,
2698         "h501.AuthenticationConfirmation", HFILL }},
2699     { &hf_h501_authenticationRejection,
2700       { "authenticationRejection", "h501.authenticationRejection",
2701         FT_NONE, BASE_NONE, NULL, 0,
2702         "h501.AuthenticationRejection", HFILL }},
2703     { &hf_h501_sequenceNumber,
2704       { "sequenceNumber", "h501.sequenceNumber",
2705         FT_UINT32, BASE_DEC, NULL, 0,
2706         "h501.INTEGER_0_65535", HFILL }},
2707     { &hf_h501_annexGversion,
2708       { "annexGversion", "h501.annexGversion",
2709         FT_OID, BASE_NONE, NULL, 0,
2710         "h501.ProtocolVersion", HFILL }},
2711     { &hf_h501_hopCount,
2712       { "hopCount", "h501.hopCount",
2713         FT_UINT32, BASE_DEC, NULL, 0,
2714         "h501.INTEGER_1_255", HFILL }},
2715     { &hf_h501_replyAddress,
2716       { "replyAddress", "h501.replyAddress",
2717         FT_UINT32, BASE_DEC, NULL, 0,
2718         "h501.SEQUENCE_OF_TransportAddress", HFILL }},
2719     { &hf_h501_replyAddress_item,
2720       { "replyAddress", "h501.replyAddress_item",
2721         FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
2722         "h225.TransportAddress", HFILL }},
2723     { &hf_h501_integrityCheckValue,
2724       { "integrityCheckValue", "h501.integrityCheckValue",
2725         FT_NONE, BASE_NONE, NULL, 0,
2726         "h225.ICV", HFILL }},
2727     { &hf_h501_tokens,
2728       { "tokens", "h501.tokens",
2729         FT_UINT32, BASE_DEC, NULL, 0,
2730         "h501.SEQUENCE_OF_ClearToken", HFILL }},
2731     { &hf_h501_tokens_item,
2732       { "tokens", "h501.tokens_item",
2733         FT_NONE, BASE_NONE, NULL, 0,
2734         "h235.ClearToken", HFILL }},
2735     { &hf_h501_cryptoTokens,
2736       { "cryptoTokens", "h501.cryptoTokens",
2737         FT_UINT32, BASE_DEC, NULL, 0,
2738         "h501.SEQUENCE_OF_CryptoH323Token", HFILL }},
2739     { &hf_h501_cryptoTokens_item,
2740       { "cryptoTokens", "h501.cryptoTokens_item",
2741         FT_UINT32, BASE_DEC, VALS(h225_CryptoH323Token_vals), 0,
2742         "h225.CryptoH323Token", HFILL }},
2743     { &hf_h501_nonStandard,
2744       { "nonStandard", "h501.nonStandard",
2745         FT_UINT32, BASE_DEC, NULL, 0,
2746         "h501.SEQUENCE_OF_NonStandardParameter", HFILL }},
2747     { &hf_h501_nonStandard_item,
2748       { "nonStandard", "h501.nonStandard_item",
2749         FT_NONE, BASE_NONE, NULL, 0,
2750         "h225.NonStandardParameter", HFILL }},
2751     { &hf_h501_serviceID,
2752       { "serviceID", "h501.serviceID",
2753         FT_GUID, BASE_NONE, NULL, 0,
2754         "h501.ServiceID", HFILL }},
2755     { &hf_h501_genericData,
2756       { "genericData", "h501.genericData",
2757         FT_UINT32, BASE_DEC, NULL, 0,
2758         "h501.SEQUENCE_OF_GenericData", HFILL }},
2759     { &hf_h501_genericData_item,
2760       { "genericData", "h501.genericData_item",
2761         FT_NONE, BASE_NONE, NULL, 0,
2762         "h225.GenericData", HFILL }},
2763     { &hf_h501_featureSet,
2764       { "featureSet", "h501.featureSet",
2765         FT_NONE, BASE_NONE, NULL, 0,
2766         "h225.FeatureSet", HFILL }},
2767     { &hf_h501_version,
2768       { "version", "h501.version",
2769         FT_OID, BASE_NONE, NULL, 0,
2770         "h501.ProtocolVersion", HFILL }},
2771     { &hf_h501_elementIdentifier,
2772       { "elementIdentifier", "h501.elementIdentifier",
2773         FT_STRING, BASE_NONE, NULL, 0,
2774         "h501.ElementIdentifier", HFILL }},
2775     { &hf_h501_domainIdentifier,
2776       { "domainIdentifier", "h501.domainIdentifier",
2777         FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
2778         "h225.AliasAddress", HFILL }},
2779     { &hf_h501_securityMode,
2780       { "securityMode", "h501.securityMode",
2781         FT_UINT32, BASE_DEC, NULL, 0,
2782         "h501.SEQUENCE_OF_SecurityMode", HFILL }},
2783     { &hf_h501_securityMode_item,
2784       { "securityMode", "h501.securityMode_item",
2785         FT_NONE, BASE_NONE, NULL, 0,
2786         "h501.SecurityMode", HFILL }},
2787     { &hf_h501_timeToLive,
2788       { "timeToLive", "h501.timeToLive",
2789         FT_UINT32, BASE_DEC, NULL, 0,
2790         "h501.INTEGER_1_4294967295", HFILL }},
2791     { &hf_h501_usageSpec,
2792       { "usageSpec", "h501.usageSpec",
2793         FT_NONE, BASE_NONE, NULL, 0,
2794         "h501.UsageSpecification", HFILL }},
2795     { &hf_h501_authentication,
2796       { "authentication", "h501.authentication",
2797         FT_UINT32, BASE_DEC, VALS(h235_AuthenticationMechanism_vals), 0,
2798         "h235.AuthenticationMechanism", HFILL }},
2799     { &hf_h501_integrity,
2800       { "integrity", "h501.integrity",
2801         FT_UINT32, BASE_DEC, VALS(h225_IntegrityMechanism_vals), 0,
2802         "h225.IntegrityMechanism", HFILL }},
2803     { &hf_h501_algorithmOIDs,
2804       { "algorithmOIDs", "h501.algorithmOIDs",
2805         FT_UINT32, BASE_DEC, NULL, 0,
2806         "h501.T_algorithmOIDs", HFILL }},
2807     { &hf_h501_algorithmOIDs_item,
2808       { "algorithmOIDs", "h501.algorithmOIDs_item",
2809         FT_OID, BASE_NONE, NULL, 0,
2810         "h501.OBJECT_IDENTIFIER", HFILL }},
2811     { &hf_h501_alternates,
2812       { "alternates", "h501.alternates",
2813         FT_NONE, BASE_NONE, NULL, 0,
2814         "h501.AlternatePEInfo", HFILL }},
2815     { &hf_h501_securityMode_01,
2816       { "securityMode", "h501.securityMode",
2817         FT_NONE, BASE_NONE, NULL, 0,
2818         "h501.SecurityMode", HFILL }},
2819     { &hf_h501_reason,
2820       { "reason", "h501.reason",
2821         FT_UINT32, BASE_DEC, VALS(h501_ServiceRejectionReason_vals), 0,
2822         "h501.ServiceRejectionReason", HFILL }},
2823     { &hf_h501_serviceUnavailable,
2824       { "serviceUnavailable", "h501.serviceUnavailable",
2825         FT_NONE, BASE_NONE, NULL, 0,
2826         "h501.NULL", HFILL }},
2827     { &hf_h501_serviceRedirected,
2828       { "serviceRedirected", "h501.serviceRedirected",
2829         FT_NONE, BASE_NONE, NULL, 0,
2830         "h501.NULL", HFILL }},
2831     { &hf_h501_security,
2832       { "security", "h501.security",
2833         FT_NONE, BASE_NONE, NULL, 0,
2834         "h501.NULL", HFILL }},
2835     { &hf_h501_continue,
2836       { "continue", "h501.continue",
2837         FT_NONE, BASE_NONE, NULL, 0,
2838         "h501.NULL", HFILL }},
2839     { &hf_h501_undefined,
2840       { "undefined", "h501.undefined",
2841         FT_NONE, BASE_NONE, NULL, 0,
2842         "h501.NULL", HFILL }},
2843     { &hf_h501_unknownServiceID,
2844       { "unknownServiceID", "h501.unknownServiceID",
2845         FT_NONE, BASE_NONE, NULL, 0,
2846         "h501.NULL", HFILL }},
2847     { &hf_h501_cannotSupportUsageSpec,
2848       { "cannotSupportUsageSpec", "h501.cannotSupportUsageSpec",
2849         FT_NONE, BASE_NONE, NULL, 0,
2850         "h501.NULL", HFILL }},
2851     { &hf_h501_neededFeature,
2852       { "neededFeature", "h501.neededFeature",
2853         FT_NONE, BASE_NONE, NULL, 0,
2854         "h501.NULL", HFILL }},
2855     { &hf_h501_genericDataReason,
2856       { "genericDataReason", "h501.genericDataReason",
2857         FT_NONE, BASE_NONE, NULL, 0,
2858         "h501.NULL", HFILL }},
2859     { &hf_h501_usageUnavailable,
2860       { "usageUnavailable", "h501.usageUnavailable",
2861         FT_NONE, BASE_NONE, NULL, 0,
2862         "h501.NULL", HFILL }},
2863     { &hf_h501_unknownUsageSendTo,
2864       { "unknownUsageSendTo", "h501.unknownUsageSendTo",
2865         FT_NONE, BASE_NONE, NULL, 0,
2866         "h501.NULL", HFILL }},
2867     { &hf_h501_reason_01,
2868       { "reason", "h501.reason",
2869         FT_UINT32, BASE_DEC, VALS(h501_ServiceReleaseReason_vals), 0,
2870         "h501.ServiceReleaseReason", HFILL }},
2871     { &hf_h501_outOfService,
2872       { "outOfService", "h501.outOfService",
2873         FT_NONE, BASE_NONE, NULL, 0,
2874         "h501.NULL", HFILL }},
2875     { &hf_h501_maintenance,
2876       { "maintenance", "h501.maintenance",
2877         FT_NONE, BASE_NONE, NULL, 0,
2878         "h501.NULL", HFILL }},
2879     { &hf_h501_terminated,
2880       { "terminated", "h501.terminated",
2881         FT_NONE, BASE_NONE, NULL, 0,
2882         "h501.NULL", HFILL }},
2883     { &hf_h501_expired,
2884       { "expired", "h501.expired",
2885         FT_NONE, BASE_NONE, NULL, 0,
2886         "h501.NULL", HFILL }},
2887     { &hf_h501_descriptorID,
2888       { "descriptorID", "h501.descriptorID",
2889         FT_UINT32, BASE_DEC, NULL, 0,
2890         "h501.SEQUENCE_OF_DescriptorID", HFILL }},
2891     { &hf_h501_descriptorID_item,
2892       { "descriptorID", "h501.descriptorID_item",
2893         FT_GUID, BASE_NONE, NULL, 0,
2894         "h501.DescriptorID", HFILL }},
2895     { &hf_h501_descriptor,
2896       { "descriptor", "h501.descriptor",
2897         FT_UINT32, BASE_DEC, NULL, 0,
2898         "h501.SEQUENCE_OF_Descriptor", HFILL }},
2899     { &hf_h501_descriptor_item,
2900       { "descriptor", "h501.descriptor_item",
2901         FT_NONE, BASE_NONE, NULL, 0,
2902         "h501.Descriptor", HFILL }},
2903     { &hf_h501_reason_02,
2904       { "reason", "h501.reason",
2905         FT_UINT32, BASE_DEC, VALS(h501_DescriptorRejectionReason_vals), 0,
2906         "h501.DescriptorRejectionReason", HFILL }},
2907     { &hf_h501_descriptorID_01,
2908       { "descriptorID", "h501.descriptorID",
2909         FT_GUID, BASE_NONE, NULL, 0,
2910         "h501.DescriptorID", HFILL }},
2911     { &hf_h501_packetSizeExceeded,
2912       { "packetSizeExceeded", "h501.packetSizeExceeded",
2913         FT_NONE, BASE_NONE, NULL, 0,
2914         "h501.NULL", HFILL }},
2915     { &hf_h501_illegalID,
2916       { "illegalID", "h501.illegalID",
2917         FT_NONE, BASE_NONE, NULL, 0,
2918         "h501.NULL", HFILL }},
2919     { &hf_h501_hopCountExceeded,
2920       { "hopCountExceeded", "h501.hopCountExceeded",
2921         FT_NONE, BASE_NONE, NULL, 0,
2922         "h501.NULL", HFILL }},
2923     { &hf_h501_noServiceRelationship,
2924       { "noServiceRelationship", "h501.noServiceRelationship",
2925         FT_NONE, BASE_NONE, NULL, 0,
2926         "h501.NULL", HFILL }},
2927     { &hf_h501_descriptorInfo,
2928       { "descriptorInfo", "h501.descriptorInfo",
2929         FT_UINT32, BASE_DEC, NULL, 0,
2930         "h501.SEQUENCE_OF_DescriptorInfo", HFILL }},
2931     { &hf_h501_descriptorInfo_item,
2932       { "descriptorInfo", "h501.descriptorInfo_item",
2933         FT_NONE, BASE_NONE, NULL, 0,
2934         "h501.DescriptorInfo", HFILL }},
2935     { &hf_h501_reason_03,
2936       { "reason", "h501.reason",
2937         FT_UINT32, BASE_DEC, VALS(h501_DescriptorIDRejectionReason_vals), 0,
2938         "h501.DescriptorIDRejectionReason", HFILL }},
2939     { &hf_h501_noDescriptors,
2940       { "noDescriptors", "h501.noDescriptors",
2941         FT_NONE, BASE_NONE, NULL, 0,
2942         "h501.NULL", HFILL }},
2943     { &hf_h501_sender,
2944       { "sender", "h501.sender",
2945         FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
2946         "h225.AliasAddress", HFILL }},
2947     { &hf_h501_updateInfo,
2948       { "updateInfo", "h501.updateInfo",
2949         FT_UINT32, BASE_DEC, NULL, 0,
2950         "h501.SEQUENCE_OF_UpdateInformation", HFILL }},
2951     { &hf_h501_updateInfo_item,
2952       { "updateInfo", "h501.updateInfo_item",
2953         FT_NONE, BASE_NONE, NULL, 0,
2954         "h501.UpdateInformation", HFILL }},
2955     { &hf_h501_descriptorInfo_01,
2956       { "descriptorInfo", "h501.descriptorInfo",
2957         FT_UINT32, BASE_DEC, VALS(h501_T_descriptorInfo_vals), 0,
2958         "h501.T_descriptorInfo", HFILL }},
2959     { &hf_h501_descriptor_01,
2960       { "descriptor", "h501.descriptor",
2961         FT_NONE, BASE_NONE, NULL, 0,
2962         "h501.Descriptor", HFILL }},
2963     { &hf_h501_updateType,
2964       { "updateType", "h501.updateType",
2965         FT_UINT32, BASE_DEC, VALS(h501_T_updateType_vals), 0,
2966         "h501.T_updateType", HFILL }},
2967     { &hf_h501_added,
2968       { "added", "h501.added",
2969         FT_NONE, BASE_NONE, NULL, 0,
2970         "h501.NULL", HFILL }},
2971     { &hf_h501_deleted,
2972       { "deleted", "h501.deleted",
2973         FT_NONE, BASE_NONE, NULL, 0,
2974         "h501.NULL", HFILL }},
2975     { &hf_h501_changed,
2976       { "changed", "h501.changed",
2977         FT_NONE, BASE_NONE, NULL, 0,
2978         "h501.NULL", HFILL }},
2979     { &hf_h501_destinationInfo,
2980       { "destinationInfo", "h501.destinationInfo",
2981         FT_NONE, BASE_NONE, NULL, 0,
2982         "h501.PartyInformation", HFILL }},
2983     { &hf_h501_sourceInfo,
2984       { "sourceInfo", "h501.sourceInfo",
2985         FT_NONE, BASE_NONE, NULL, 0,
2986         "h501.PartyInformation", HFILL }},
2987     { &hf_h501_callInfo,
2988       { "callInfo", "h501.callInfo",
2989         FT_NONE, BASE_NONE, NULL, 0,
2990         "h501.CallInformation", HFILL }},
2991     { &hf_h501_desiredProtocols,
2992       { "desiredProtocols", "h501.desiredProtocols",
2993         FT_UINT32, BASE_DEC, NULL, 0,
2994         "h501.SEQUENCE_OF_SupportedProtocols", HFILL }},
2995     { &hf_h501_desiredProtocols_item,
2996       { "desiredProtocols", "h501.desiredProtocols_item",
2997         FT_UINT32, BASE_DEC, VALS(h225_SupportedProtocols_vals), 0,
2998         "h225.SupportedProtocols", HFILL }},
2999     { &hf_h501_templates,
3000       { "templates", "h501.templates",
3001         FT_UINT32, BASE_DEC, NULL, 0,
3002         "h501.SEQUENCE_OF_AddressTemplate", HFILL }},
3003     { &hf_h501_templates_item,
3004       { "templates", "h501.templates_item",
3005         FT_NONE, BASE_NONE, NULL, 0,
3006         "h501.AddressTemplate", HFILL }},
3007     { &hf_h501_partialResponse,
3008       { "partialResponse", "h501.partialResponse",
3009         FT_BOOLEAN, 8, NULL, 0,
3010         "h501.BOOLEAN", HFILL }},
3011     { &hf_h501_supportedProtocols,
3012       { "supportedProtocols", "h501.supportedProtocols",
3013         FT_UINT32, BASE_DEC, NULL, 0,
3014         "h501.SEQUENCE_OF_SupportedProtocols", HFILL }},
3015     { &hf_h501_supportedProtocols_item,
3016       { "supportedProtocols", "h501.supportedProtocols_item",
3017         FT_UINT32, BASE_DEC, VALS(h225_SupportedProtocols_vals), 0,
3018         "h225.SupportedProtocols", HFILL }},
3019     { &hf_h501_serviceControl,
3020       { "serviceControl", "h501.serviceControl",
3021         FT_UINT32, BASE_DEC, NULL, 0,
3022         "h501.SEQUENCE_OF_ServiceControlSession", HFILL }},
3023     { &hf_h501_serviceControl_item,
3024       { "serviceControl", "h501.serviceControl_item",
3025         FT_NONE, BASE_NONE, NULL, 0,
3026         "h225.ServiceControlSession", HFILL }},
3027     { &hf_h501_reason_04,
3028       { "reason", "h501.reason",
3029         FT_UINT32, BASE_DEC, VALS(h501_AccessRejectionReason_vals), 0,
3030         "h501.AccessRejectionReason", HFILL }},
3031     { &hf_h501_noMatch,
3032       { "noMatch", "h501.noMatch",
3033         FT_NONE, BASE_NONE, NULL, 0,
3034         "h501.NULL", HFILL }},
3035     { &hf_h501_needCallInformation,
3036       { "needCallInformation", "h501.needCallInformation",
3037         FT_NONE, BASE_NONE, NULL, 0,
3038         "h501.NULL", HFILL }},
3039     { &hf_h501_destinationUnavailable,
3040       { "destinationUnavailable", "h501.destinationUnavailable",
3041         FT_NONE, BASE_NONE, NULL, 0,
3042         "h501.NULL", HFILL }},
3043     { &hf_h501_aliasesInconsistent,
3044       { "aliasesInconsistent", "h501.aliasesInconsistent",
3045         FT_NONE, BASE_NONE, NULL, 0,
3046         "h501.NULL", HFILL }},
3047     { &hf_h501_resourceUnavailable,
3048       { "resourceUnavailable", "h501.resourceUnavailable",
3049         FT_NONE, BASE_NONE, NULL, 0,
3050         "h501.NULL", HFILL }},
3051     { &hf_h501_incompleteAddress,
3052       { "incompleteAddress", "h501.incompleteAddress",
3053         FT_NONE, BASE_NONE, NULL, 0,
3054         "h501.NULL", HFILL }},
3055     { &hf_h501_reason_05,
3056       { "reason", "h501.reason",
3057         FT_UINT32, BASE_DEC, VALS(h501_UsageRejectReason_vals), 0,
3058         "h501.UsageRejectReason", HFILL }},
3059     { &hf_h501_accessTokens,
3060       { "accessTokens", "h501.accessTokens",
3061         FT_UINT32, BASE_DEC, NULL, 0,
3062         "h501.SEQUENCE_OF_AccessToken", HFILL }},
3063     { &hf_h501_accessTokens_item,
3064       { "accessTokens", "h501.accessTokens_item",
3065         FT_UINT32, BASE_DEC, VALS(h501_AccessToken_vals), 0,
3066         "h501.AccessToken", HFILL }},
3067     { &hf_h501_senderRole,
3068       { "senderRole", "h501.senderRole",
3069         FT_UINT32, BASE_DEC, VALS(h501_Role_vals), 0,
3070         "h501.Role", HFILL }},
3071     { &hf_h501_usageCallStatus,
3072       { "usageCallStatus", "h501.usageCallStatus",
3073         FT_UINT32, BASE_DEC, VALS(h501_UsageCallStatus_vals), 0,
3074         "h501.UsageCallStatus", HFILL }},
3075     { &hf_h501_srcInfo,
3076       { "srcInfo", "h501.srcInfo",
3077         FT_NONE, BASE_NONE, NULL, 0,
3078         "h501.PartyInformation", HFILL }},
3079     { &hf_h501_destAddress,
3080       { "destAddress", "h501.destAddress",
3081         FT_NONE, BASE_NONE, NULL, 0,
3082         "h501.PartyInformation", HFILL }},
3083     { &hf_h501_startTime,
3084       { "startTime", "h501.startTime",
3085         FT_ABSOLUTE_TIME, BASE_NONE, NULL, 0,
3086         "h235.TimeStamp", HFILL }},
3087     { &hf_h501_endTime,
3088       { "endTime", "h501.endTime",
3089         FT_ABSOLUTE_TIME, BASE_NONE, NULL, 0,
3090         "h235.TimeStamp", HFILL }},
3091     { &hf_h501_terminationCause,
3092       { "terminationCause", "h501.terminationCause",
3093         FT_NONE, BASE_NONE, NULL, 0,
3094         "h501.TerminationCause", HFILL }},
3095     { &hf_h501_usageFields,
3096       { "usageFields", "h501.usageFields",
3097         FT_UINT32, BASE_DEC, NULL, 0,
3098         "h501.SEQUENCE_OF_UsageField", HFILL }},
3099     { &hf_h501_usageFields_item,
3100       { "usageFields", "h501.usageFields_item",
3101         FT_NONE, BASE_NONE, NULL, 0,
3102         "h501.UsageField", HFILL }},
3103     { &hf_h501_id,
3104       { "id", "h501.id",
3105         FT_OID, BASE_NONE, NULL, 0,
3106         "h501.OBJECT_IDENTIFIER", HFILL }},
3107     { &hf_h501_value,
3108       { "value", "h501.value",
3109         FT_BYTES, BASE_HEX, NULL, 0,
3110         "h501.OCTET_STRING", HFILL }},
3111     { &hf_h501_invalidCall,
3112       { "invalidCall", "h501.invalidCall",
3113         FT_NONE, BASE_NONE, NULL, 0,
3114         "h501.NULL", HFILL }},
3115     { &hf_h501_unavailable,
3116       { "unavailable", "h501.unavailable",
3117         FT_NONE, BASE_NONE, NULL, 0,
3118         "h501.NULL", HFILL }},
3119     { &hf_h501_reason_06,
3120       { "reason", "h501.reason",
3121         FT_UINT32, BASE_DEC, VALS(h501_UsageIndicationRejectionReason_vals), 0,
3122         "h501.UsageIndicationRejectionReason", HFILL }},
3123     { &hf_h501_unknownCall,
3124       { "unknownCall", "h501.unknownCall",
3125         FT_NONE, BASE_NONE, NULL, 0,
3126         "h501.NULL", HFILL }},
3127     { &hf_h501_incomplete,
3128       { "incomplete", "h501.incomplete",
3129         FT_NONE, BASE_NONE, NULL, 0,
3130         "h501.NULL", HFILL }},
3131     { &hf_h501_accessToken,
3132       { "accessToken", "h501.accessToken",
3133         FT_UINT32, BASE_DEC, NULL, 0,
3134         "h501.SEQUENCE_OF_AccessToken", HFILL }},
3135     { &hf_h501_accessToken_item,
3136       { "accessToken", "h501.accessToken_item",
3137         FT_UINT32, BASE_DEC, VALS(h501_AccessToken_vals), 0,
3138         "h501.AccessToken", HFILL }},
3139     { &hf_h501_reason_07,
3140       { "reason", "h501.reason",
3141         FT_UINT32, BASE_DEC, VALS(h501_ValidationRejectionReason_vals), 0,
3142         "h501.ValidationRejectionReason", HFILL }},
3143     { &hf_h501_tokenNotValid,
3144       { "tokenNotValid", "h501.tokenNotValid",
3145         FT_NONE, BASE_NONE, NULL, 0,
3146         "h501.NULL", HFILL }},
3147     { &hf_h501_missingSourceInfo,
3148       { "missingSourceInfo", "h501.missingSourceInfo",
3149         FT_NONE, BASE_NONE, NULL, 0,
3150         "h501.NULL", HFILL }},
3151     { &hf_h501_missingDestInfo,
3152       { "missingDestInfo", "h501.missingDestInfo",
3153         FT_NONE, BASE_NONE, NULL, 0,
3154         "h501.NULL", HFILL }},
3155     { &hf_h501_delay,
3156       { "delay", "h501.delay",
3157         FT_UINT32, BASE_DEC, NULL, 0,
3158         "h501.INTEGER_1_65535", HFILL }},
3159     { &hf_h501_reason_08,
3160       { "reason", "h501.reason",
3161         FT_UINT32, BASE_DEC, VALS(h501_NonStandardRejectionReason_vals), 0,
3162         "h501.NonStandardRejectionReason", HFILL }},
3163     { &hf_h501_notSupported,
3164       { "notSupported", "h501.notSupported",
3165         FT_NONE, BASE_NONE, NULL, 0,
3166         "h501.NULL", HFILL }},
3167     { &hf_h501_unknownMessage,
3168       { "unknownMessage", "h501.unknownMessage",
3169         FT_BYTES, BASE_HEX, NULL, 0,
3170         "h501.OCTET_STRING", HFILL }},
3171     { &hf_h501_reason_09,
3172       { "reason", "h501.reason",
3173         FT_UINT32, BASE_DEC, VALS(h501_UnknownMessageReason_vals), 0,
3174         "h501.UnknownMessageReason", HFILL }},
3175     { &hf_h501_notUnderstood,
3176       { "notUnderstood", "h501.notUnderstood",
3177         FT_NONE, BASE_NONE, NULL, 0,
3178         "h501.NULL", HFILL }},
3179     { &hf_h501_applicationMessage,
3180       { "applicationMessage", "h501.applicationMessage",
3181         FT_BYTES, BASE_HEX, NULL, 0,
3182         "h501.ApplicationMessage", HFILL }},
3183     { &hf_h501_reason_10,
3184       { "reason", "h501.reason",
3185         FT_UINT32, BASE_DEC, VALS(h501_AuthenticationRejectionReason_vals), 0,
3186         "h501.AuthenticationRejectionReason", HFILL }},
3187     { &hf_h501_securityWrongSyncTime,
3188       { "securityWrongSyncTime", "h501.securityWrongSyncTime",
3189         FT_NONE, BASE_NONE, NULL, 0,
3190         "h501.NULL", HFILL }},
3191     { &hf_h501_securityReplay,
3192       { "securityReplay", "h501.securityReplay",
3193         FT_NONE, BASE_NONE, NULL, 0,
3194         "h501.NULL", HFILL }},
3195     { &hf_h501_securityWrongGeneralID,
3196       { "securityWrongGeneralID", "h501.securityWrongGeneralID",
3197         FT_NONE, BASE_NONE, NULL, 0,
3198         "h501.NULL", HFILL }},
3199     { &hf_h501_securityWrongSendersID,
3200       { "securityWrongSendersID", "h501.securityWrongSendersID",
3201         FT_NONE, BASE_NONE, NULL, 0,
3202         "h501.NULL", HFILL }},
3203     { &hf_h501_securityIntegrityFailed,
3204       { "securityIntegrityFailed", "h501.securityIntegrityFailed",
3205         FT_NONE, BASE_NONE, NULL, 0,
3206         "h501.NULL", HFILL }},
3207     { &hf_h501_securityWrongOID,
3208       { "securityWrongOID", "h501.securityWrongOID",
3209         FT_NONE, BASE_NONE, NULL, 0,
3210         "h501.NULL", HFILL }},
3211     { &hf_h501_pattern,
3212       { "pattern", "h501.pattern",
3213         FT_UINT32, BASE_DEC, NULL, 0,
3214         "h501.SEQUENCE_OF_Pattern", HFILL }},
3215     { &hf_h501_pattern_item,
3216       { "pattern", "h501.pattern_item",
3217         FT_UINT32, BASE_DEC, VALS(h501_Pattern_vals), 0,
3218         "h501.Pattern", HFILL }},
3219     { &hf_h501_routeInfo,
3220       { "routeInfo", "h501.routeInfo",
3221         FT_UINT32, BASE_DEC, NULL, 0,
3222         "h501.SEQUENCE_OF_RouteInformation", HFILL }},
3223     { &hf_h501_routeInfo_item,
3224       { "routeInfo", "h501.routeInfo_item",
3225         FT_NONE, BASE_NONE, NULL, 0,
3226         "h501.RouteInformation", HFILL }},
3227     { &hf_h501_specific,
3228       { "specific", "h501.specific",
3229         FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
3230         "h225.AliasAddress", HFILL }},
3231     { &hf_h501_wildcard,
3232       { "wildcard", "h501.wildcard",
3233         FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
3234         "h225.AliasAddress", HFILL }},
3235     { &hf_h501_range,
3236       { "range", "h501.range",
3237         FT_NONE, BASE_NONE, NULL, 0,
3238         "h501.T_range", HFILL }},
3239     { &hf_h501_startOfRange,
3240       { "startOfRange", "h501.startOfRange",
3241         FT_UINT32, BASE_DEC, VALS(h225_PartyNumber_vals), 0,
3242         "h225.PartyNumber", HFILL }},
3243     { &hf_h501_endOfRange,
3244       { "endOfRange", "h501.endOfRange",
3245         FT_UINT32, BASE_DEC, VALS(h225_PartyNumber_vals), 0,
3246         "h225.PartyNumber", HFILL }},
3247     { &hf_h501_messageType,
3248       { "messageType", "h501.messageType",
3249         FT_UINT32, BASE_DEC, VALS(h501_T_messageType_vals), 0,
3250         "h501.T_messageType", HFILL }},
3251     { &hf_h501_sendAccessRequest,
3252       { "sendAccessRequest", "h501.sendAccessRequest",
3253         FT_NONE, BASE_NONE, NULL, 0,
3254         "h501.NULL", HFILL }},
3255     { &hf_h501_sendSetup,
3256       { "sendSetup", "h501.sendSetup",
3257         FT_NONE, BASE_NONE, NULL, 0,
3258         "h501.NULL", HFILL }},
3259     { &hf_h501_nonExistent,
3260       { "nonExistent", "h501.nonExistent",
3261         FT_NONE, BASE_NONE, NULL, 0,
3262         "h501.NULL", HFILL }},
3263     { &hf_h501_callSpecific,
3264       { "callSpecific", "h501.callSpecific",
3265         FT_BOOLEAN, 8, NULL, 0,
3266         "h501.BOOLEAN", HFILL }},
3267     { &hf_h501_priceInfo,
3268       { "priceInfo", "h501.priceInfo",
3269         FT_UINT32, BASE_DEC, NULL, 0,
3270         "h501.SEQUENCE_OF_PriceInfoSpec", HFILL }},
3271     { &hf_h501_priceInfo_item,
3272       { "priceInfo", "h501.priceInfo_item",
3273         FT_NONE, BASE_NONE, NULL, 0,
3274         "h501.PriceInfoSpec", HFILL }},
3275     { &hf_h501_contacts,
3276       { "contacts", "h501.contacts",
3277         FT_UINT32, BASE_DEC, NULL, 0,
3278         "h501.SEQUENCE_OF_ContactInformation", HFILL }},
3279     { &hf_h501_contacts_item,
3280       { "contacts", "h501.contacts_item",
3281         FT_NONE, BASE_NONE, NULL, 0,
3282         "h501.ContactInformation", HFILL }},
3283     { &hf_h501_type,
3284       { "type", "h501.type",
3285         FT_NONE, BASE_NONE, NULL, 0,
3286         "h225.EndpointType", HFILL }},
3287     { &hf_h501_circuitID,
3288       { "circuitID", "h501.circuitID",
3289         FT_NONE, BASE_NONE, NULL, 0,
3290         "h225.CircuitInfo", HFILL }},
3291     { &hf_h501_supportedCircuits,
3292       { "supportedCircuits", "h501.supportedCircuits",
3293         FT_UINT32, BASE_DEC, NULL, 0,
3294         "h501.SEQUENCE_OF_CircuitIdentifier", HFILL }},
3295     { &hf_h501_supportedCircuits_item,
3296       { "supportedCircuits", "h501.supportedCircuits_item",
3297         FT_NONE, BASE_NONE, NULL, 0,
3298         "h225.CircuitIdentifier", HFILL }},
3299     { &hf_h501_transportAddress,
3300       { "transportAddress", "h501.transportAddress",
3301         FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
3302         "h225.AliasAddress", HFILL }},
3303     { &hf_h501_priority,
3304       { "priority", "h501.priority",
3305         FT_UINT32, BASE_DEC, NULL, 0,
3306         "h501.INTEGER_0_127", HFILL }},
3307     { &hf_h501_transportQoS,
3308       { "transportQoS", "h501.transportQoS",
3309         FT_UINT32, BASE_DEC, VALS(h225_TransportQOS_vals), 0,
3310         "h225.TransportQOS", HFILL }},
3311     { &hf_h501_security_01,
3312       { "security", "h501.security",
3313         FT_UINT32, BASE_DEC, NULL, 0,
3314         "h501.SEQUENCE_OF_SecurityMode", HFILL }},
3315     { &hf_h501_security_item,
3316       { "security", "h501.security_item",
3317         FT_NONE, BASE_NONE, NULL, 0,
3318         "h501.SecurityMode", HFILL }},
3319     { &hf_h501_multipleCalls,
3320       { "multipleCalls", "h501.multipleCalls",
3321         FT_BOOLEAN, 8, NULL, 0,
3322         "h501.BOOLEAN", HFILL }},
3323     { &hf_h501_currency,
3324       { "currency", "h501.currency",
3325         FT_STRING, BASE_NONE, NULL, 0,
3326         "h501.IA5String_SIZE_3", HFILL }},
3327     { &hf_h501_currencyScale,
3328       { "currencyScale", "h501.currencyScale",
3329         FT_INT32, BASE_DEC, NULL, 0,
3330         "h501.INTEGER_M127_127", HFILL }},
3331     { &hf_h501_validFrom,
3332       { "validFrom", "h501.validFrom",
3333         FT_STRING, BASE_NONE, NULL, 0,
3334         "h501.GlobalTimeStamp", HFILL }},
3335     { &hf_h501_validUntil,
3336       { "validUntil", "h501.validUntil",
3337         FT_STRING, BASE_NONE, NULL, 0,
3338         "h501.GlobalTimeStamp", HFILL }},
3339     { &hf_h501_hoursFrom,
3340       { "hoursFrom", "h501.hoursFrom",
3341         FT_STRING, BASE_NONE, NULL, 0,
3342         "h501.IA5String_SIZE_6", HFILL }},
3343     { &hf_h501_hoursUntil,
3344       { "hoursUntil", "h501.hoursUntil",
3345         FT_STRING, BASE_NONE, NULL, 0,
3346         "h501.IA5String_SIZE_6", HFILL }},
3347     { &hf_h501_priceElement,
3348       { "priceElement", "h501.priceElement",
3349         FT_UINT32, BASE_DEC, NULL, 0,
3350         "h501.SEQUENCE_OF_PriceElement", HFILL }},
3351     { &hf_h501_priceElement_item,
3352       { "priceElement", "h501.priceElement_item",
3353         FT_NONE, BASE_NONE, NULL, 0,
3354         "h501.PriceElement", HFILL }},
3355     { &hf_h501_priceFormula,
3356       { "priceFormula", "h501.priceFormula",
3357         FT_STRING, BASE_NONE, NULL, 0,
3358         "h501.IA5String_SIZE_1_2048", HFILL }},
3359     { &hf_h501_amount,
3360       { "amount", "h501.amount",
3361         FT_UINT32, BASE_DEC, NULL, 0,
3362         "h501.INTEGER_0_4294967295", HFILL }},
3363     { &hf_h501_quantum,
3364       { "quantum", "h501.quantum",
3365         FT_UINT32, BASE_DEC, NULL, 0,
3366         "h501.INTEGER_0_4294967295", HFILL }},
3367     { &hf_h501_units,
3368       { "units", "h501.units",
3369         FT_UINT32, BASE_DEC, VALS(h501_T_units_vals), 0,
3370         "h501.T_units", HFILL }},
3371     { &hf_h501_seconds,
3372       { "seconds", "h501.seconds",
3373         FT_NONE, BASE_NONE, NULL, 0,
3374         "h501.NULL", HFILL }},
3375     { &hf_h501_packets,
3376       { "packets", "h501.packets",
3377         FT_NONE, BASE_NONE, NULL, 0,
3378         "h501.NULL", HFILL }},
3379     { &hf_h501_bytes,
3380       { "bytes", "h501.bytes",
3381         FT_NONE, BASE_NONE, NULL, 0,
3382         "h501.NULL", HFILL }},
3383     { &hf_h501_initial,
3384       { "initial", "h501.initial",
3385         FT_NONE, BASE_NONE, NULL, 0,
3386         "h501.NULL", HFILL }},
3387     { &hf_h501_minimum,
3388       { "minimum", "h501.minimum",
3389         FT_NONE, BASE_NONE, NULL, 0,
3390         "h501.NULL", HFILL }},
3391     { &hf_h501_maximum,
3392       { "maximum", "h501.maximum",
3393         FT_NONE, BASE_NONE, NULL, 0,
3394         "h501.NULL", HFILL }},
3395     { &hf_h501_descriptorInfo_02,
3396       { "descriptorInfo", "h501.descriptorInfo",
3397         FT_NONE, BASE_NONE, NULL, 0,
3398         "h501.DescriptorInfo", HFILL }},
3399     { &hf_h501_gatekeeperID,
3400       { "gatekeeperID", "h501.gatekeeperID",
3401         FT_STRING, BASE_NONE, NULL, 0,
3402         "h225.GatekeeperIdentifier", HFILL }},
3403     { &hf_h501_lastChanged,
3404       { "lastChanged", "h501.lastChanged",
3405         FT_STRING, BASE_NONE, NULL, 0,
3406         "h501.GlobalTimeStamp", HFILL }},
3407     { &hf_h501_alternatePE,
3408       { "alternatePE", "h501.alternatePE",
3409         FT_UINT32, BASE_DEC, NULL, 0,
3410         "h501.SEQUENCE_OF_AlternatePE", HFILL }},
3411     { &hf_h501_alternatePE_item,
3412       { "alternatePE", "h501.alternatePE_item",
3413         FT_NONE, BASE_NONE, NULL, 0,
3414         "h501.AlternatePE", HFILL }},
3415     { &hf_h501_alternateIsPermanent,
3416       { "alternateIsPermanent", "h501.alternateIsPermanent",
3417         FT_BOOLEAN, 8, NULL, 0,
3418         "h501.BOOLEAN", HFILL }},
3419     { &hf_h501_contactAddress,
3420       { "contactAddress", "h501.contactAddress",
3421         FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
3422         "h225.AliasAddress", HFILL }},
3423     { &hf_h501_priority_01,
3424       { "priority", "h501.priority",
3425         FT_UINT32, BASE_DEC, NULL, 0,
3426         "h501.INTEGER_1_127", HFILL }},
3427     { &hf_h501_token,
3428       { "token", "h501.token",
3429         FT_NONE, BASE_NONE, NULL, 0,
3430         "h235.ClearToken", HFILL }},
3431     { &hf_h501_cryptoToken,
3432       { "cryptoToken", "h501.cryptoToken",
3433         FT_UINT32, BASE_DEC, VALS(h225_CryptoH323Token_vals), 0,
3434         "h225.CryptoH323Token", HFILL }},
3435     { &hf_h501_genericData_01,
3436       { "genericData", "h501.genericData",
3437         FT_NONE, BASE_NONE, NULL, 0,
3438         "h225.GenericData", HFILL }},
3439     { &hf_h501_callIdentifier,
3440       { "callIdentifier", "h501.callIdentifier",
3441         FT_NONE, BASE_NONE, NULL, 0,
3442         "h225.CallIdentifier", HFILL }},
3443     { &hf_h501_conferenceID,
3444       { "conferenceID", "h501.conferenceID",
3445         FT_GUID, BASE_NONE, NULL, 0,
3446         "h225.ConferenceIdentifier", HFILL }},
3447     { &hf_h501_preConnect,
3448       { "preConnect", "h501.preConnect",
3449         FT_NONE, BASE_NONE, NULL, 0,
3450         "h501.NULL", HFILL }},
3451     { &hf_h501_callInProgress,
3452       { "callInProgress", "h501.callInProgress",
3453         FT_NONE, BASE_NONE, NULL, 0,
3454         "h501.NULL", HFILL }},
3455     { &hf_h501_callEnded,
3456       { "callEnded", "h501.callEnded",
3457         FT_NONE, BASE_NONE, NULL, 0,
3458         "h501.NULL", HFILL }},
3459     { &hf_h501_registrationLost,
3460       { "registrationLost", "h501.registrationLost",
3461         FT_NONE, BASE_NONE, NULL, 0,
3462         "h501.NULL", HFILL }},
3463     { &hf_h501_userIdentifier,
3464       { "userIdentifier", "h501.userIdentifier",
3465         FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
3466         "h225.AliasAddress", HFILL }},
3467     { &hf_h501_userAuthenticator,
3468       { "userAuthenticator", "h501.userAuthenticator",
3469         FT_UINT32, BASE_DEC, NULL, 0,
3470         "h501.SEQUENCE_OF_CryptoH323Token", HFILL }},
3471     { &hf_h501_userAuthenticator_item,
3472       { "userAuthenticator", "h501.userAuthenticator_item",
3473         FT_UINT32, BASE_DEC, VALS(h225_CryptoH323Token_vals), 0,
3474         "h225.CryptoH323Token", HFILL }},
3475     { &hf_h501_sendTo,
3476       { "sendTo", "h501.sendTo",
3477         FT_STRING, BASE_NONE, NULL, 0,
3478         "h501.ElementIdentifier", HFILL }},
3479     { &hf_h501_when,
3480       { "when", "h501.when",
3481         FT_NONE, BASE_NONE, NULL, 0,
3482         "h501.T_when", HFILL }},
3483     { &hf_h501_never,
3484       { "never", "h501.never",
3485         FT_NONE, BASE_NONE, NULL, 0,
3486         "h501.NULL", HFILL }},
3487     { &hf_h501_start,
3488       { "start", "h501.start",
3489         FT_NONE, BASE_NONE, NULL, 0,
3490         "h501.NULL", HFILL }},
3491     { &hf_h501_end,
3492       { "end", "h501.end",
3493         FT_NONE, BASE_NONE, NULL, 0,
3494         "h501.NULL", HFILL }},
3495     { &hf_h501_period,
3496       { "period", "h501.period",
3497         FT_UINT32, BASE_DEC, NULL, 0,
3498         "h501.INTEGER_1_65535", HFILL }},
3499     { &hf_h501_failures,
3500       { "failures", "h501.failures",
3501         FT_NONE, BASE_NONE, NULL, 0,
3502         "h501.NULL", HFILL }},
3503     { &hf_h501_required,
3504       { "required", "h501.required",
3505         FT_UINT32, BASE_DEC, NULL, 0,
3506         "h501.T_required", HFILL }},
3507     { &hf_h501_required_item,
3508       { "required", "h501.required_item",
3509         FT_OID, BASE_NONE, NULL, 0,
3510         "h501.OBJECT_IDENTIFIER", HFILL }},
3511     { &hf_h501_preferred,
3512       { "preferred", "h501.preferred",
3513         FT_UINT32, BASE_DEC, NULL, 0,
3514         "h501.T_preferred", HFILL }},
3515     { &hf_h501_preferred_item,
3516       { "preferred", "h501.preferred_item",
3517         FT_OID, BASE_NONE, NULL, 0,
3518         "h501.OBJECT_IDENTIFIER", HFILL }},
3519     { &hf_h501_sendToPEAddress,
3520       { "sendToPEAddress", "h501.sendToPEAddress",
3521         FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
3522         "h225.AliasAddress", HFILL }},
3523     { &hf_h501_logicalAddresses,
3524       { "logicalAddresses", "h501.logicalAddresses",
3525         FT_UINT32, BASE_DEC, NULL, 0,
3526         "h501.SEQUENCE_OF_AliasAddress", HFILL }},
3527     { &hf_h501_logicalAddresses_item,
3528       { "logicalAddresses", "h501.logicalAddresses_item",
3529         FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
3530         "h225.AliasAddress", HFILL }},
3531     { &hf_h501_endpointType,
3532       { "endpointType", "h501.endpointType",
3533         FT_NONE, BASE_NONE, NULL, 0,
3534         "h225.EndpointType", HFILL }},
3535     { &hf_h501_userInfo,
3536       { "userInfo", "h501.userInfo",
3537         FT_NONE, BASE_NONE, NULL, 0,
3538         "h501.UserInformation", HFILL }},
3539     { &hf_h501_timeZone,
3540       { "timeZone", "h501.timeZone",
3541         FT_INT32, BASE_DEC, NULL, 0,
3542         "h501.TimeZone", HFILL }},
3543     { &hf_h501_originator,
3544       { "originator", "h501.originator",
3545         FT_NONE, BASE_NONE, NULL, 0,
3546         "h501.NULL", HFILL }},
3547     { &hf_h501_destination,
3548       { "destination", "h501.destination",
3549         FT_NONE, BASE_NONE, NULL, 0,
3550         "h501.NULL", HFILL }},
3551     { &hf_h501_nonStandardData,
3552       { "nonStandardData", "h501.nonStandardData",
3553         FT_NONE, BASE_NONE, NULL, 0,
3554         "h225.NonStandardParameter", HFILL }},
3555     { &hf_h501_releaseCompleteReason,
3556       { "releaseCompleteReason", "h501.releaseCompleteReason",
3557         FT_UINT32, BASE_DEC, VALS(h225_ReleaseCompleteReason_vals), 0,
3558         "h225.ReleaseCompleteReason", HFILL }},
3559     { &hf_h501_causeIE,
3560       { "causeIE", "h501.causeIE",
3561         FT_UINT32, BASE_DEC, NULL, 0,
3562         "h501.INTEGER_1_65535", HFILL }},
3563
3564 /*--- End of included file: packet-h501-hfarr.c ---*/
3565 #line 104 "packet-h501-template.c"
3566   };
3567
3568   /* List of subtrees */
3569   static gint *ett[] = {
3570     &ett_h501,
3571
3572 /*--- Included file: packet-h501-ettarr.c ---*/
3573 #line 1 "packet-h501-ettarr.c"
3574     &ett_h501_Message,
3575     &ett_h501_MessageBody,
3576     &ett_h501_MessageCommonInfo,
3577     &ett_h501_SEQUENCE_OF_TransportAddress,
3578     &ett_h501_SEQUENCE_OF_ClearToken,
3579     &ett_h501_SEQUENCE_OF_CryptoH323Token,
3580     &ett_h501_SEQUENCE_OF_NonStandardParameter,
3581     &ett_h501_SEQUENCE_OF_GenericData,
3582     &ett_h501_ServiceRequest,
3583     &ett_h501_SEQUENCE_OF_SecurityMode,
3584     &ett_h501_SecurityMode,
3585     &ett_h501_T_algorithmOIDs,
3586     &ett_h501_ServiceConfirmation,
3587     &ett_h501_ServiceRejection,
3588     &ett_h501_ServiceRejectionReason,
3589     &ett_h501_ServiceRelease,
3590     &ett_h501_ServiceReleaseReason,
3591     &ett_h501_DescriptorRequest,
3592     &ett_h501_SEQUENCE_OF_DescriptorID,
3593     &ett_h501_DescriptorConfirmation,
3594     &ett_h501_SEQUENCE_OF_Descriptor,
3595     &ett_h501_DescriptorRejection,
3596     &ett_h501_DescriptorRejectionReason,
3597     &ett_h501_DescriptorIDRequest,
3598     &ett_h501_DescriptorIDConfirmation,
3599     &ett_h501_SEQUENCE_OF_DescriptorInfo,
3600     &ett_h501_DescriptorIDRejection,
3601     &ett_h501_DescriptorIDRejectionReason,
3602     &ett_h501_DescriptorUpdate,
3603     &ett_h501_SEQUENCE_OF_UpdateInformation,
3604     &ett_h501_UpdateInformation,
3605     &ett_h501_T_descriptorInfo,
3606     &ett_h501_T_updateType,
3607     &ett_h501_DescriptorUpdateAck,
3608     &ett_h501_AccessRequest,
3609     &ett_h501_SEQUENCE_OF_SupportedProtocols,
3610     &ett_h501_AccessConfirmation,
3611     &ett_h501_SEQUENCE_OF_AddressTemplate,
3612     &ett_h501_SEQUENCE_OF_ServiceControlSession,
3613     &ett_h501_AccessRejection,
3614     &ett_h501_AccessRejectionReason,
3615     &ett_h501_UsageRequest,
3616     &ett_h501_UsageConfirmation,
3617     &ett_h501_UsageRejection,
3618     &ett_h501_UsageIndication,
3619     &ett_h501_SEQUENCE_OF_AccessToken,
3620     &ett_h501_SEQUENCE_OF_UsageField,
3621     &ett_h501_UsageField,
3622     &ett_h501_UsageRejectReason,
3623     &ett_h501_UsageIndicationConfirmation,
3624     &ett_h501_UsageIndicationRejection,
3625     &ett_h501_UsageIndicationRejectionReason,
3626     &ett_h501_ValidationRequest,
3627     &ett_h501_ValidationConfirmation,
3628     &ett_h501_ValidationRejection,
3629     &ett_h501_ValidationRejectionReason,
3630     &ett_h501_RequestInProgress,
3631     &ett_h501_NonStandardRequest,
3632     &ett_h501_NonStandardConfirmation,
3633     &ett_h501_NonStandardRejection,
3634     &ett_h501_NonStandardRejectionReason,
3635     &ett_h501_UnknownMessageResponse,
3636     &ett_h501_UnknownMessageReason,
3637     &ett_h501_AuthenticationRequest,
3638     &ett_h501_AuthenticationConfirmation,
3639     &ett_h501_AuthenticationRejection,
3640     &ett_h501_AuthenticationRejectionReason,
3641     &ett_h501_AddressTemplate,
3642     &ett_h501_SEQUENCE_OF_Pattern,
3643     &ett_h501_SEQUENCE_OF_RouteInformation,
3644     &ett_h501_Pattern,
3645     &ett_h501_T_range,
3646     &ett_h501_RouteInformation,
3647     &ett_h501_T_messageType,
3648     &ett_h501_SEQUENCE_OF_PriceInfoSpec,
3649     &ett_h501_SEQUENCE_OF_ContactInformation,
3650     &ett_h501_SEQUENCE_OF_CircuitIdentifier,
3651     &ett_h501_ContactInformation,
3652     &ett_h501_PriceInfoSpec,
3653     &ett_h501_SEQUENCE_OF_PriceElement,
3654     &ett_h501_PriceElement,
3655     &ett_h501_T_units,
3656     &ett_h501_Descriptor,
3657     &ett_h501_DescriptorInfo,
3658     &ett_h501_AlternatePEInfo,
3659     &ett_h501_SEQUENCE_OF_AlternatePE,
3660     &ett_h501_AlternatePE,
3661     &ett_h501_AccessToken,
3662     &ett_h501_CallInformation,
3663     &ett_h501_UsageCallStatus,
3664     &ett_h501_UserInformation,
3665     &ett_h501_UsageSpecification,
3666     &ett_h501_T_when,
3667     &ett_h501_T_required,
3668     &ett_h501_T_preferred,
3669     &ett_h501_PartyInformation,
3670     &ett_h501_SEQUENCE_OF_AliasAddress,
3671     &ett_h501_Role,
3672     &ett_h501_TerminationCause,
3673
3674 /*--- End of included file: packet-h501-ettarr.c ---*/
3675 #line 110 "packet-h501-template.c"
3676   };
3677
3678   /* Register protocol */
3679   proto_h501 = proto_register_protocol(PNAME, PSNAME, PFNAME);
3680
3681   /* Register fields and subtrees */
3682   proto_register_field_array(proto_h501, hf, array_length(hf));
3683   proto_register_subtree_array(ett, array_length(ett));
3684
3685   new_register_dissector(PFNAME, dissect_h501_pdu, proto_h501);
3686
3687   h501_module = prefs_register_protocol(proto_h501, proto_reg_handoff_h501);
3688   prefs_register_uint_preference(h501_module, "udp.port",
3689                                  "UDP port",
3690                                  "Port to be decoded as h501",
3691                                  10, &h501_udp_port);
3692   prefs_register_uint_preference(h501_module, "tcp.port",
3693                                  "TCP port",
3694                                  "Port to be decoded as h501",
3695                                  10, &h501_tcp_port);
3696   prefs_register_bool_preference(h501_module, "desegment",
3697                                  "Desegment H.501 over TCP",
3698                                  "Desegment H.501 messages that span more TCP segments",
3699                                  &h501_desegment_tcp);
3700
3701 }
3702
3703 /*--- proto_reg_handoff_h501 -------------------------------------------*/
3704 void proto_reg_handoff_h501(void) 
3705 {
3706   static gboolean h501_prefs_initialized = FALSE;
3707   static dissector_handle_t h501_udp_handle;
3708   static dissector_handle_t h501_tcp_handle;
3709   static guint saved_h501_udp_port;
3710   static guint saved_h501_tcp_port;
3711
3712   if (!h501_prefs_initialized) {
3713     h501_pdu_handle = find_dissector(PFNAME);
3714     h501_udp_handle = new_create_dissector_handle(dissect_h501_udp, proto_h501);
3715     h501_tcp_handle = new_create_dissector_handle(dissect_h501_tcp, proto_h501);
3716     h501_prefs_initialized = TRUE;
3717   } else {
3718     dissector_delete("udp.port", saved_h501_udp_port, h501_udp_handle);
3719     dissector_delete("tcp.port", saved_h501_tcp_port, h501_tcp_handle);
3720   }
3721
3722   /* Set our port number for future use */
3723   saved_h501_udp_port = h501_udp_port;
3724   dissector_add("udp.port", saved_h501_udp_port, h501_udp_handle);
3725   saved_h501_tcp_port = h501_tcp_port;
3726   dissector_add("tcp.port", saved_h501_tcp_port, h501_tcp_handle);
3727
3728 }
3729