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