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