1 /* Do not modify this file. Changes will be overwritten.                      */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler       */
3 /* packet-z3950.c                                                             */
4 /* asn2wrs.py -b -p z3950 -c ./z3950.cnf -s ./packet-z3950-template -D . -O ../.. z3950.asn z3950-oclc.asn z3950-externals.asn */
5 
6 /* Input file: packet-z3950-template.c */
7 
8 #line 1 "./asn1/z3950/packet-z3950-template.c"
9 /* packet-z3950.c
10  * Routines for dissection of the NISO Z39.50 Information Retrieval protocol
11  * Also contains a dissector for the MARC Machine Readable Cataloging file
12  * format. The general format is specified by ISO 2709 and the specific
13  * instance is MARC21.
14  *
15  * Copyright 2018, Craig Jackson <cejackson51@gmail.com>
16  *
17  * Wireshark - Network traffic analyzer
18  * By Gerald Combs <gerald@wireshark.org>
19  * Copyright 1998 Gerald Combs
20  *
21  * SPDX-License-Identifier: GPL-2.0-or-later
22  *
23  * References:
24  * ISO 2709: https://www.iso.org/standard/41319.html
25  * MARC21: http://www.loc.gov/marc/bibliographic/
26  * Z39.50 Maintenance Agency: http://www.loc.gov/z3950/agency/
27  * Z39.50 2003 standard: http://www.loc.gov/z3950/agency/Z39-50-2003.pdf
28  * Z39.50 1995 ASN.1: https://www.loc.gov/z3950/agency/asn1.html
29  * Registered Z39.50 Object Identifiers:
30  *   http://www.loc.gov/z3950/agency/defns/oids.html
31  * Bib-1 Attribute Set: https://www.loc.gov/z3950/agency/defns/bib1.html
32  * Bib-1 Diagnostics: https://www.loc.gov/z3950/agency/defns/bib1diag.html
33  * RFC for Z39.50 over TCP/IP: https://tools.ietf.org/html/rfc1729
34  *
35  */
36 
37 #include "config.h"
38 
39 #include <epan/packet.h>
40 #include <epan/conversation.h>
41 #include <epan/exceptions.h>
42 #include <epan/expert.h>
43 #include <epan/oids.h>
44 #include <epan/proto_data.h>
45 #include <wsutil/str_util.h>
46 
47 #include <string.h>
48 
49 #include "packet-ber.h"
50 #include "packet-tcp.h"
51 
52 typedef struct z3950_atinfo_t {
53     gint     atsetidx;
54     gint     attype;
55 } z3950_atinfo_t;
56 
57 typedef struct z3950_diaginfo_t {
58     gint     diagsetidx;
59     gint     diagcondition;
60 } z3950_diaginfo_t;
61 
62 #define PNAME  "Z39.50 Protocol"
63 #define PSNAME "Z39.50"
64 #define PFNAME "z3950"
65 #define Z3950_PORT 210    /* UDP port */
66 
67 /* Known attribute set ids */
68 #define Z3950_ATSET_BIB1_OID              "1.2.840.10003.3.1"
69 
70 /* Known diagnostic set ids */
71 #define Z3950_DIAGSET_BIB1_OID            "1.2.840.10003.4.1"
72 
73 /* Known record syntax ids */
74 #define Z3950_RECORDSYNTAX_MARC21_OID     "1.2.840.10003.5.10"
75 
76 /* Indexes of known attribute set ids */
77 #define Z3950_ATSET_UNKNOWN         0
78 #define Z3950_ATSET_BIB1            1
79 
80 /* bib-1 Attribute Types */
81 #define Z3950_BIB1_AT_USE           1
82 #define Z3950_BIB1_AT_RELATION      2
83 #define Z3950_BIB1_AT_POSITION      3
84 #define Z3950_BIB1_AT_STRUCTURE     4
85 #define Z3950_BIB1_AT_TRUNCATION    5
86 #define Z3950_BIB1_AT_COMPLETENESS  6
87 
88 /* Indexes of known diagnostic set ids */
89 #define Z3950_DIAGSET_UNKNOWN       0
90 #define Z3950_DIAGSET_BIB1          1
91 
92 /* Per-packet data keys */
93 #define Z3950_ATINFO_KEY            1
94 #define Z3950_DIAGSET_KEY           2
95 
96 /* MARC defines */
97 #define MARC_SUBFIELD_INDICATOR     '\x1f'
98 #define MARC_LEADER_LENGTH          24
99 #define MARC_CHAR_UNINITIALIZED     256
100 
101 #define marc_isdigit(x)            (((x) >='0') && ((x) <= '9'))
102 #define marc_char_to_int(x)        ((x) - '0')
103 
104 typedef struct marc_directory_entry {
105     guint32 tag;
106     guint32 length;
107     guint32 starting_character;
108 } marc_directory_entry;
109 
110 static dissector_handle_t z3950_handle=NULL;
111 
112 void proto_reg_handoff_z3950(void);
113 void proto_register_z3950(void);
114 
115 /* Initialize the protocol and registered fields */
116 static int proto_z3950 = -1;
117 static int global_z3950_port = Z3950_PORT;
118 static gboolean z3950_desegment = TRUE;
119 
120 static const value_string z3950_bib1_att_types[] = {
121     { Z3950_BIB1_AT_USE, "Use" },
122     { Z3950_BIB1_AT_RELATION, "Relation" },
123     { Z3950_BIB1_AT_POSITION, "Position" },
124     { Z3950_BIB1_AT_STRUCTURE, "Structure" },
125     { Z3950_BIB1_AT_TRUNCATION, "Truncation" },
126     { Z3950_BIB1_AT_COMPLETENESS, "Completeness"},
127     { 0, NULL}
128 };
129 
130 static const value_string z3950_bib1_at_use[] = {
131     { 1, "Personal name" },
132     { 2, "Corporate name" },
133     { 3, "Conference name" },
134     { 4, "Title" },
135     { 5, "Title series" },
136     { 6, "Title uniform" },
137     { 7, "ISBN" },
138     { 8, "ISSN" },
139     { 9, "LC card number" },
140     { 10, "BNB card number" },
141     { 11, "BGF card number" },
142     { 12, "Local number" },
143     { 13, "Dewey classification" },
144     { 14, "UDC classification" },
145     { 15, "Bliss classification" },
146     { 16, "LC call number" },
147     { 17, "NLM call number" },
148     { 18, "NAL call number" },
149     { 19, "MOS call number" },
150     { 20, "Local classification" },
151     { 21, "Subject heading" },
152     { 22, "Subject Rameau" },
153     { 23, "BDI index subject" },
154     { 24, "INSPEC subject" },
155     { 25, "MESH subject" },
156     { 26, "PA subject" },
157     { 27, "LC subject heading" },
158     { 28, "RVM subject heading" },
159     { 29, "Local subject index" },
160     { 30, "Date" },
161     { 31, "Date of publication" },
162     { 32, "Date of acquisition" },
163     { 33, "Title key" },
164     { 34, "Title collective" },
165     { 35, "Title parallel" },
166     { 36, "Title cover" },
167     { 37, "Title added title pagw" },
168     { 38, "Title caption" },
169     { 39, "Title running" },
170     { 40, "Title spine" },
171     { 41, "Title other variant" },
172     { 42, "Title former" },
173     { 43, "Title abbreviated" },
174     { 44, "Title expanded" },
175     { 45, "Subject precis" },
176     { 46, "Subject rswk" },
177     { 47, "Subject subdivision" },
178     { 48, "No. nat'l biblio." },
179     { 49, "No. legal deposit" },
180     { 50, "No. govt pub." },
181     { 51, "No. music publisher" },
182     { 52, "Number db" },
183     { 53, "Number local call" },
184     { 54, "Code-language" },
185     { 55, "Code-geographic area" },
186     { 56, "Code-institution" },
187     { 57, "Name and title *" },
188     { 58, "Name geographic" },
189     { 59, "Place publication" },
190     { 60, "CODEN" },
191     { 61, "Microform generation" },
192     { 62, "Abstract" },
193     { 63, "Note" },
194     { 1000, "Author-title" },
195     { 1001, "Record type" },
196     { 1002, "Name" },
197     { 1003, "Author" },
198     { 1004, "Author-name personal" },
199     { 1005, "Author-name corporate" },
200     { 1006, "Author-name conference" },
201     { 1007, "Identifier-standard" },
202     { 1008, "Subject-LC children's" },
203     { 1009, "Subject name-personal" },
204     { 1010, "Body of text" },
205     { 1011, "Date/time added to db" },
206     { 1012, "Date/time last modified" },
207     { 1013, "Authority/format id" },
208     { 1014, "Concept-text" },
209     { 1015, "Concept-reference" },
210     { 1016, "Any" },
211     { 1017, "Server-choice" },
212     { 1018, "Publisher" },
213     { 1019, "Record-source" },
214     { 1020, "Editor" },
215     { 1021, "Bib-level" },
216     { 1022, "Geographic class" },
217     { 1023, "Indexed-by" },
218     { 1024, "Map-scale" },
219     { 1025, "Music-key" },
220     { 1026, "Related-periodical" },
221     { 1027, "Report-number" },
222     { 1028, "Stock-number" },
223     { 1030, "Thematic-number" },
224     { 1031, "Material-type" },
225     { 1032, "Doc-id" },
226     { 1033, "Host-item" },
227     { 1034, "Content-type" },
228     { 1035, "Anywhere" },
229     { 1036, "Author-Title-Subject" },
230     { 1037, "Serial Item and Contribution Identifier (SICI)" },
231     { 1038, "Abstract-language" },
232     { 1039, "Application-kind" },
233     { 1040, "Classification" },
234     { 1041, "Classification-basic" },
235     { 1042, "Classification-local-record" },
236     { 1043, "Enzyme" },
237     { 1044, "Possessing-institution" },
238     { 1045, "Record-linking" },
239     { 1046, "Record-status" },
240     { 1047, "Treatment" },
241     { 1048, "Control-number-GKD" },
242     { 1049, "Control-number-linking" },
243     { 1050, "Control-number-PND" },
244     { 1051, "Control-number-SWD" },
245     { 1052, "Control-number-ZDB" },
246     { 1053, "Country-publication" },
247     { 1054, "Date-conference" },
248     { 1055, "Date-record-status" },
249     { 1056, "Dissertation-information" },
250     { 1057, "Meeting-organizer" },
251     { 1058, "Note-availability" },
252     { 1059, "Number-CAS-registry" },
253     { 1060, "Number-document" },
254     { 1061, "Number-local-accounting" },
255     { 1062, "Number-local-acquisition" },
256     { 1063, "Number-local-call-copy-specific" },
257     { 1064, "Number-of-reference" },
258     { 1065, "Number-norm" },
259     { 1066, "Number-volume" },
260     { 1067, "Place-conference (meeting location)" },
261     { 1068, "Reference (references and footnotes)" },
262     { 1069, "Referenced-journal" },
263     { 1070, "Section-code" },
264     { 1071, "Section-heading" },
265     { 1072, "Subject-GOO" },
266     { 1073, "Subject-name-conference" },
267     { 1074, "Subject-name-corporate" },
268     { 1075, "Subject-genre/form" },
269     { 1076, "Subject-name-geographical" },
270     { 1077, "Subject-chronological" },
271     { 1078, "Subject-title" },
272     { 1079, "Subject-topical" },
273     { 1080, "Subject-uncontrolled" },
274     { 1081, "Terminology-chemical" },
275     { 1082, "Title-translated" },
276     { 1083, "Year-of-beginning" },
277     { 1084, "Year-of-ending" },
278     { 1085, "Subject-AGROVOC" },
279     { 1086, "Subject-COMPASS" },
280     { 1087, "Subject-EPT" },
281     { 1088, "Subject-NAL" },
282     { 1089, "Classification-BCM" },
283     { 1090, "Classification-DB" },
284     { 1091, "Identifier-ISRC" },
285     { 1092, "Identifier-ISMN" },
286     { 1093, "Identifier-ISRN" },
287     { 1094, "Identifier-DOI" },
288     { 1095, "Code-language-original" },
289     { 1096, "Title-later" },
290     { 1097, "DC-Title" },
291     { 1098, "DC-Creator" },
292     { 1099, "DC-Subject" },
293     { 1100, "DC-Description" },
294     { 1101, "DC-Publisher" },
295     { 1102, "DC-Date" },
296     { 1103, "DC-ResourceType" },
297     { 1104, "DC-ResourceIdentifier" },
298     { 1105, "DC-Language" },
299     { 1106, "DC-OtherContributor" },
300     { 1107, "DC-Format" },
301     { 1108, "DC-Source" },
302     { 1109, "DC-Relation" },
303     { 1110, "DC-Coverage" },
304     { 1111, "DC-RightsManagment" },
305     { 1112, "GILS Controlled Subject Index" },
306     { 1113, "GILS Subject Thesaurus" },
307     { 1114, "GILS Index Terms -- Controlled" },
308     { 1115, "GILS Controlled Term" },
309     { 1116, "GILS Spacial Domain" },
310     { 1117, "GILS Bounding Coordinates" },
311     { 1118, "GILS West Bounding Coordinate" },
312     { 1119, "GILS East Bounding Coordinate" },
313     { 1120, "GILS North Bounding Coordinate" },
314     { 1121, "GILS South Bounding Coordinate" },
315     { 1122, "GILS Place" },
316     { 1123, "GILS Place Keyword Thesaurus" },
317     { 1124, "GILS Place Keyword" },
318     { 1125, "GILS Time Period" },
319     { 1126, "GILS Time Period Textual" },
320     { 1127, "GILS Time Period Structured" },
321     { 1128, "GILS Beginning Date" },
322     { 1129, "GILS Ending Date" },
323     { 1130, "GILS Availability" },
324     { 1131, "GILS Distributor" },
325     { 1132, "GILS Distributor Name" },
326     { 1133, "GILS Distributor Organization" },
327     { 1134, "GILS Distributor Street Address" },
328     { 1135, "GILS Distributor City" },
329     { 1136, "GILS Distributor State or Province" },
330     { 1137, "GILS Distributor Zip or Postal Code" },
331     { 1138, "GILS Distributor Country" },
332     { 1139, "GILS Distributor Network Address" },
333     { 1140, "GILS Distributor Hours of Service" },
334     { 1141, "GILS Distributor Telephone" },
335     { 1142, "GILS Distributor Fax" },
336     { 1143, "GILS Resource Description" },
337     { 1144, "GILS Order Process" },
338     { 1145, "GILS Order Information" },
339     { 1146, "GILS Cost" },
340     { 1147, "GILS Cost Information" },
341     { 1148, "GILS Technical Prerequisites" },
342     { 1149, "GILS Available Time Period" },
343     { 1150, "GILS Available Time Textual" },
344     { 1151, "GILS Available Time Structured" },
345     { 1152, "GILS Available Linkage" },
346     { 1153, "GILS Linkage Type" },
347     { 1154, "GILS Linkage" },
348     { 1155, "GILS Sources of Data" },
349     { 1156, "GILS Methodology" },
350     { 1157, "GILS Access Constraints" },
351     { 1158, "GILS General Access Constraints" },
352     { 1159, "GILS Originator Dissemination Control" },
353     { 1160, "GILS Security Classification Control" },
354     { 1161, "GILS Use Constraints" },
355     { 1162, "GILS Point of Contact" },
356     { 1163, "GILS Contact Name" },
357     { 1164, "GILS Contact Organization" },
358     { 1165, "GILS Contact Street Address" },
359     { 1166, "GILS Contact City" },
360     { 1167, "GILS Contact State or Province" },
361     { 1168, "GILS Contact Zip or Postal Code" },
362     { 1169, "GILS Contact Country" },
363     { 1170, "GILS Contact Network Address" },
364     { 1171, "GILS Contact Hours of Service" },
365     { 1172, "GILS Contact Telephone" },
366     { 1173, "GILS Contact Fax" },
367     { 1174, "GILS Supplemental Information" },
368     { 1175, "GILS Purpose" },
369     { 1176, "GILS Agency Program" },
370     { 1177, "GILS Cross Reference" },
371     { 1178, "GILS Cross Reference Title" },
372     { 1179, "GILS Cross Reference Relationship" },
373     { 1180, "GILS Cross Reference Linkage" },
374     { 1181, "GILS Schedule Number" },
375     { 1182, "GILS Original Control Identifier" },
376     { 1183, "GILS Language of Record" },
377     { 1184, "GILS Record Review Date" },
378     { 1185, "Performer" },
379     { 1186, "Performer-Individual" },
380     { 1187, "Performer-Group" },
381     { 1188, "Instrumentation" },
382     { 1189, "Instrumentation-Original" },
383     { 1190, "Instrumentation-Current" },
384     { 1191, "Arrangement" },
385     { 1192, "Arrangement-Original" },
386     { 1193, "Arrangement-Current" },
387     { 1194, "Musical Key-Original" },
388     { 1195, "Musical Key-Current" },
389     { 1196, "Date-Composition" },
390     { 1197, "Date-Recording" },
391     { 1198, "Place-Recording" },
392     { 1199, "Country-Recording" },
393     { 1200, "Number-ISWC" },
394     { 1201, "Number-Matrix" },
395     { 1202, "Number-Plate" },
396     { 1203, "Classification-McColvin" },
397     { 1204, "Duration" },
398     { 1205, "Number-Copies" },
399     { 1206, "Musical Theme" },
400     { 1207, "Instruments - total number" },
401     { 1208, "Instruments - distinct number" },
402     { 1209, "Identifier - URN" },
403     { 1210, "Sears Subject Heading" },
404     { 1211, "OCLC Number" },
405     { 1212, "NORZIG Composition" },
406     { 1213, "NORZIG Intellectual level" },
407     { 1214, "NORZIG EAN" },
408     { 1215, "NORZIG NLC" },
409     { 1216, "NORZIG CRCS" },
410     { 1217, "NORZIG Nationality" },
411     { 1218, "NORZIG Equinox" },
412     { 1219, "NORZIG Compression" },
413     { 1220, "NORZIG Format" },
414     { 1221, "NORZIG Subject - occupation" },
415     { 1222, "NORZIG Subject - function" },
416     { 1223, "NORZIG Edition" },
417     { 1224, "GPO Item Number" },
418     { 1225, "Provider" },
419     { 0, NULL}
420 };
421 
422 static const value_string z3950_bib1_at_relation[] = {
423     { 1, "Less than" },
424     { 2, "Less than or equal" },
425     { 3, "Equal" },
426     { 4, "Greater than or equal" },
427     { 5, "Greater than" },
428     { 6, "Not equal" },
429     { 100, "Phonetic" },
430     { 101, "Stem" },
431     { 102, "Relevance" },
432     { 103, "Always Matches" },
433     { 0, NULL}
434 };
435 
436 static const value_string z3950_bib1_at_position[] = {
437     { 1, "First in field" },
438     { 2, "First in subfield" },
439     { 3, "Any position in field" },
440     { 0, NULL}
441 };
442 
443 static const value_string z3950_bib1_at_structure[] = {
444     { 1, "Phrase" },
445     { 2, "Word" },
446     { 3, "Key" },
447     { 4, "Year" },
448     { 5, "Date (normalized)" },
449     { 6, "Word list" },
450     { 100, "Date (un-normalized)" },
451     { 101, "Name (normalized)" },
452     { 102, "Name (un-normalized)" },
453     { 103, "Structure" },
454     { 104, "Urx" },
455     { 105, "Free-form-text" },
456     { 106, "Document-text" },
457     { 107, "Local" },
458     { 108, "String" },
459     { 109, "Numeric" },
460     { 0, NULL}
461 };
462 
463 static const value_string z3950_bib1_at_truncation[] = {
464     { 1, "Right truncation" },
465     { 2, "Left truncation" },
466     { 3, "Left and right truncation" },
467     { 100, "Do not truncate" },
468     { 101, "Process # in search term" },
469     { 102, "regExpr-1" },
470     { 103, "regExpr-2" },
471     { 104, "Z39.58-1992 Character masking" },
472     { 0, NULL}
473 };
474 
475 static const value_string z3950_bib1_at_completeness[] = {
476     { 1, "Incomplete subfield" },
477     { 2, "Complete subfield" },
478     { 3, "Complete field" },
479     { 0, NULL}
480 };
481 
482 static const value_string z3950_bib1_diagconditions[] = {
483     { 1, "Permanent system error" },
484     { 2, "Temporary system error" },
485     { 3, "Unsupported search" },
486     { 4, "Terms only exclusion (stop) words" },
487     { 5, "Too many argument words" },
488     { 6, "Too many boolean operators" },
489     { 7, "Too many truncated words" },
490     { 8, "Too many incomplete subfields" },
491     { 9, "Truncated words too short" },
492     { 10, "Invalid format for record number (search term)" },
493     { 11, "Too many characters in search statement" },
494     { 12, "Too many records retrieved" },
495     { 13, "Present request out of range" },
496     { 14, "System error in presenting records" },
497     { 15, "Record no authorized to be sent intersystem" },
498     { 16, "Record exceeds Preferred-message-size" },
499     { 17, "Record exceeds Maximum-record-size" },
500     { 18, "Result set not supported as a search term" },
501     { 19, "Only single result set as search term supported" },
502     { 20, "Only ANDing of a single result set as search term supported" },
503     { 21, "Result set exists and replace indicator off" },
504     { 22, "Result set naming not supported" },
505     { 23, "Combination of specified databases not supported" },
506     { 24, "Element set names not supported" },
507     { 25, "Specified element set name not valid for specified database" },
508     { 26, "Only a single element set name supported" },
509     { 27, "Result set no longer exists - unilaterally deleted by target" },
510     { 28, "Result set is in use" },
511     { 29, "One of the specified databases is locked" },
512     { 30, "Specified result set does not exist" },
513     { 31, "Resources exhausted - no results available" },
514     { 32, "Resources exhausted - unpredictable partial results available" },
515     { 33, "Resources exhausted - valid subset of results available" },
516     { 100, "Unspecified error" },
517     { 101, "Access-control failure" },
518     { 102, "Security challenge required but could not be issued - request terminated" },
519     { 103, "Security challenge required but could not be issued - record not included" },
520     { 104, "Security challenge failed - record not included" },
521     { 105, "Terminated by negative continue response" },
522     { 106, "No abstract syntaxes agreed to for this record" },
523     { 107, "Query type not supported" },
524     { 108, "Malformed query" },
525     { 109, "Database unavailable" },
526     { 110, "Operator unsupported" },
527     { 111, "Too many databases specified" },
528     { 112, "Too many result sets created" },
529     { 113, "Unsupported attribute type" },
530     { 114, "Unsupported Use attribute" },
531     { 115, "Unsupported value for Use attribute" },
532     { 116, "Use attribute required but not supplied" },
533     { 117, "Unsupported Relation attribute" },
534     { 118, "Unsupported Structure attribute" },
535     { 119, "Unsupported Position attribute" },
536     { 120, "Unsupported Truncation attribute" },
537     { 121, "Unsupported Attribute Set" },
538     { 122, "Unsupported Completeness attribute" },
539     { 123, "Unsupported attribute combination" },
540     { 124, "Unsupported coded value for term" },
541     { 125, "Malformed search term" },
542     { 126, "Illegal term value for attribute" },
543     { 127, "Unparsable format for un-normalized value" },
544     { 128, "Illegal result set name" },
545     { 129, "Proximity search of sets not supported" },
546     { 130, "Illegal result set in proximity search" },
547     { 131, "Unsupported proximity relation" },
548     { 132, "Unsupported proximity unit code" },
549     { 201, "Proximity not supported with this attribute combination" },
550     { 202, "Unsupported distance for proximity" },
551     { 203, "Ordered flag not supported for proximity" },
552     { 205, "Only zero step size supported for Scan" },
553     { 206, "Specified step size not supported for Scan" },
554     { 207, "Cannot sort according to sequence" },
555     { 208, "No result set name supplied on Sort" },
556     { 209, "Generic sort not supported (database-specific sort only supported)" },
557     { 210, "Database specific sort not supported" },
558     { 211, "Too many sort keys" },
559     { 212, "Duplicate sort keys" },
560     { 213, "Unsupported missing data action" },
561     { 214, "Illegal sort relation" },
562     { 215, "Illegal case value" },
563     { 216, "Illegal missing data action" },
564     { 217, "Segmentation: Cannot guarantee records will fit in specified segments" },
565     { 218, "ES: Package name already in use" },
566     { 219, "ES: no such package, on modify/delete" },
567     { 220, "ES: quota exceeded" },
568     { 221, "ES: extended service type not supported" },
569     { 222, "ES: permission denied on ES - id not authorized" },
570     { 223, "ES: permission denied on ES - cannot modify or delete" },
571     { 224, "ES: immediate execution failed" },
572     { 225, "ES: immediate execution not supported for this service" },
573     { 226, "ES: immediate execution not supported for these parameters" },
574     { 227, "No data available in requested record syntax" },
575     { 228, "Scan: malformed scan" },
576     { 229, "Term type not supported" },
577     { 230, "Sort: too many input results" },
578     { 231, "Sort: incompatible record formats" },
579     { 232, "Scan: term list not supported" },
580     { 233, "Scan: unsupported value of position-in-response" },
581     { 234, "Too many index terms processed" },
582     { 235, "Database does not exist" },
583     { 236, "Access to specified database denied" },
584     { 237, "Sort: illegal sort" },
585     { 238, "Record not available in requested syntax" },
586     { 239, "Record syntax not supported" },
587     { 240, "Scan: Resources exhausted looking for satisfying terms" },
588     { 241, "Scan: Beginning or end of term list" },
589     { 242, "Segmentation: max-segment-size too small to segment record" },
590     { 243, "Present:  additional-ranges parameter not supported" },
591     { 244, "Present:  comp-spec parameter not supported" },
592     { 245, "Type-1 query: restriction ('resultAttr') operand not supported" },
593     { 246, "Type-1 query: 'complex' attributeValue not supported" },
594     { 247, "Type-1 query: 'attributeSet' as part of AttributeElement not supported" },
595     { 1001, "Malformed APDU"  },
596     { 1002, "ES: EXTERNAL form of Item Order request not supported" },
597     { 1003, "ES: Result set item form of Item Order request not supported" },
598     { 1004, "ES: Extended services not supported unless access control is in effect" },
599     { 1005, "Response records in Search response not supported" },
600     { 1006, "Response records in Search response not possible for specified database (or database combination)" },
601     { 1007, "No Explain server. Addinfo: pointers to servers that have a surrogate Explain database for this server" },
602     { 1008, "ES: missing mandatory parameter for specified function. Addinfo: parameter" },
603     { 1009, "ES: Item Order, unsupported OID in itemRequest. Addinfo: OID" },
604     { 1010, "Init/AC: Bad Userid" },
605     { 1011, "Init/AC: Bad Userid and/or Password" },
606     { 1012, "Init/AC: No searches remaining (pre-purchased searches exhausted)" },
607     { 1013, "Init/AC: Incorrect interface type (specified id valid only when used with a particular access method or client)" },
608     { 1014, "Init/AC: Authentication System error" },
609     { 1015, "Init/AC: Maximum number of simultaneous sessions for Userid" },
610     { 1016, "Init/AC: Blocked network address" },
611     { 1017, "Init/AC: No databases available for specified userId" },
612     { 1018, "Init/AC: System temporarily out of resources" },
613     { 1019, "Init/AC: System not available due to maintenance" },
614     { 1020, "Init/AC: System temporarily unavailable (Addinfo: when it's expected back up)" },
615     { 1021, "Init/AC: Account has expired" },
616     { 1022, "Init/AC: Password has expired so a new one must be supplied" },
617     { 1023, "Init/AC: Password has been changed by an administrator so a new one must be supplied" },
618     { 1024, "Unsupported Attribute" },
619     { 1025, "Service not supported for this database" },
620     { 1026, "Record cannot be opened because it is locked" },
621     { 1027, "SQL error" },
622     { 1028, "Record deleted" },
623     { 1029, "Scan: too many terms requested. Addinfo: max terms supported" },
624     { 1040, "ES: Invalid function" },
625     { 1041, "ES: Error in retention time" },
626     { 1042, "ES: Permissions data not understood" },
627     { 1043, "ES: Invalid OID for task specific parameters" },
628     { 1044, "ES: Invalid action" },
629     { 1045, "ES: Unknown schema" },
630     { 1046, "ES: Too many records in package" },
631     { 1047, "ES: Invalid wait action" },
632     { 1048, "ES: Cannot create task package -- exceeds maximum permissible size" },
633     { 1049, "ES: Cannot return task package -- exceeds maximum permissible size" },
634     { 1050, "ES: Extended services request too large" },
635     { 1051, "Scan: Attribute set id required -- not supplied" },
636     { 1052, "ES: Cannot process task package record -- exceeds maximum permissible record size for ES" },
637     { 1053, "ES: Cannot return task package record -- exceeds maximum permissible record size for ES response" },
638     { 1054, "Init: Required negotiation record not included" },
639     { 1055, "Init: negotiation option required" },
640     { 1056, "Attribute not supported for database" },
641     { 1057, "ES: Unsupported value of task package parameter" },
642     { 1058, "Duplicate Detection: Cannot dedup on requested record portion"   },
643     { 1059, "Duplicate Detection: Requested detection criterion not supported" },
644     { 1060, "Duplicate Detection: Requested level of match not supported" },
645     { 1061, "Duplicate Detection: Requested regular expression not supported" },
646     { 1062, "Duplicate Detection: Cannot do clustering" },
647     { 1063, "Duplicate Detection: Retention criterion not supported" },
648     { 1064, "Duplicate Detection: Requested number (or percentage) of entries for retention too large" },
649     { 1065, "Duplicate Detection: Requested sort criterion not supported" },
650     { 1066, "CompSpec: Unknown schema, or schema not supported." },
651     { 1067, "Encapsulation: Encapsulated sequence of PDUs not supported" },
652     { 1068, "Encapsulation: Base operation (and encapsulated PDUs) not executed based on pre-screening analysis" },
653     { 1069, "No syntaxes available for this request" },
654     { 1070, "user not authorized to receive record(s) in requested syntax" },
655     { 1071, "preferredRecordSyntax not supplied" },
656     { 1072, "Query term includes characters that do not translate into the target character set" },
657     { 1073, "Database records do not contain data associated with access point" },
658     { 1074, "Proxy failure" },
659     { 0, NULL}
660 };
661 
662 
663 /*--- Included file: packet-z3950-hf.c ---*/
664 #line 1 "./asn1/z3950/packet-z3950-hf.c"
665 static int hf_z3950_OCLC_UserInformation_PDU = -1;  /* OCLC_UserInformation */
666 static int hf_z3950_SutrsRecord_PDU = -1;         /* SutrsRecord */
667 static int hf_z3950_OPACRecord_PDU = -1;          /* OPACRecord */
668 static int hf_z3950_DiagnosticFormat_PDU = -1;    /* DiagnosticFormat */
669 static int hf_z3950_Explain_Record_PDU = -1;      /* Explain_Record */
670 static int hf_z3950_BriefBib_PDU = -1;            /* BriefBib */
671 static int hf_z3950_GenericRecord_PDU = -1;       /* GenericRecord */
672 static int hf_z3950_TaskPackage_PDU = -1;         /* TaskPackage */
673 static int hf_z3950_PromptObject_PDU = -1;        /* PromptObject */
674 static int hf_z3950_DES_RN_Object_PDU = -1;       /* DES_RN_Object */
675 static int hf_z3950_KRBObject_PDU = -1;           /* KRBObject */
676 static int hf_z3950_SearchInfoReport_PDU = -1;    /* SearchInfoReport */
677 static int hf_z3950_initRequest = -1;             /* InitializeRequest */
678 static int hf_z3950_initResponse = -1;            /* InitializeResponse */
679 static int hf_z3950_searchRequest = -1;           /* SearchRequest */
680 static int hf_z3950_searchResponse = -1;          /* SearchResponse */
681 static int hf_z3950_presentRequest = -1;          /* PresentRequest */
682 static int hf_z3950_presentResponse = -1;         /* PresentResponse */
683 static int hf_z3950_deleteResultSetRequest = -1;  /* DeleteResultSetRequest */
684 static int hf_z3950_deleteResultSetResponse = -1;  /* DeleteResultSetResponse */
685 static int hf_z3950_accessControlRequest = -1;    /* AccessControlRequest */
686 static int hf_z3950_accessControlResponse = -1;   /* AccessControlResponse */
687 static int hf_z3950_resourceControlRequest = -1;  /* ResourceControlRequest */
688 static int hf_z3950_resourceControlResponse = -1;  /* ResourceControlResponse */
689 static int hf_z3950_triggerResourceControlRequest = -1;  /* TriggerResourceControlRequest */
690 static int hf_z3950_resourceReportRequest = -1;   /* ResourceReportRequest */
691 static int hf_z3950_resourceReportResponse = -1;  /* ResourceReportResponse */
692 static int hf_z3950_scanRequest = -1;             /* ScanRequest */
693 static int hf_z3950_scanResponse = -1;            /* ScanResponse */
694 static int hf_z3950_sortRequest = -1;             /* SortRequest */
695 static int hf_z3950_sortResponse = -1;            /* SortResponse */
696 static int hf_z3950_segmentRequest = -1;          /* Segment */
697 static int hf_z3950_extendedServicesRequest = -1;  /* ExtendedServicesRequest */
698 static int hf_z3950_extendedServicesResponse = -1;  /* ExtendedServicesResponse */
699 static int hf_z3950_close = -1;                   /* Close */
700 static int hf_z3950_referenceId = -1;             /* ReferenceId */
701 static int hf_z3950_protocolVersion = -1;         /* ProtocolVersion */
702 static int hf_z3950_options = -1;                 /* Options */
703 static int hf_z3950_preferredMessageSize = -1;    /* INTEGER */
704 static int hf_z3950_exceptionalRecordSize = -1;   /* INTEGER */
705 static int hf_z3950_idAuthentication = -1;        /* T_idAuthentication */
706 static int hf_z3950_open = -1;                    /* VisibleString */
707 static int hf_z3950_idPass = -1;                  /* T_idPass */
708 static int hf_z3950_groupId = -1;                 /* InternationalString */
709 static int hf_z3950_userId = -1;                  /* InternationalString */
710 static int hf_z3950_password = -1;                /* InternationalString */
711 static int hf_z3950_anonymous = -1;               /* NULL */
712 static int hf_z3950_other = -1;                   /* EXTERNAL */
713 static int hf_z3950_implementationId = -1;        /* InternationalString */
714 static int hf_z3950_implementationName = -1;      /* InternationalString */
715 static int hf_z3950_implementationVersion = -1;   /* InternationalString */
716 static int hf_z3950_userInformationField = -1;    /* EXTERNAL */
717 static int hf_z3950_otherInfo = -1;               /* OtherInformation */
718 static int hf_z3950_result = -1;                  /* BOOLEAN */
719 static int hf_z3950_smallSetUpperBound = -1;      /* INTEGER */
720 static int hf_z3950_largeSetLowerBound = -1;      /* INTEGER */
721 static int hf_z3950_mediumSetPresentNumber = -1;  /* INTEGER */
722 static int hf_z3950_replaceIndicator = -1;        /* BOOLEAN */
723 static int hf_z3950_resultSetName = -1;           /* InternationalString */
724 static int hf_z3950_databaseNames = -1;           /* SEQUENCE_OF_DatabaseName */
725 static int hf_z3950_databaseNames_item = -1;      /* DatabaseName */
726 static int hf_z3950_smallSetElementSetNames = -1;  /* ElementSetNames */
727 static int hf_z3950_mediumSetElementSetNames = -1;  /* ElementSetNames */
728 static int hf_z3950_preferredRecordSyntax = -1;   /* OBJECT_IDENTIFIER */
729 static int hf_z3950_query = -1;                   /* Query */
730 static int hf_z3950_additionalSearchInfo = -1;    /* OtherInformation */
731 static int hf_z3950_type_0 = -1;                  /* T_type_0 */
732 static int hf_z3950_type_1 = -1;                  /* RPNQuery */
733 static int hf_z3950_type_2 = -1;                  /* OCTET_STRING */
734 static int hf_z3950_type_100 = -1;                /* OCTET_STRING */
735 static int hf_z3950_type_101 = -1;                /* RPNQuery */
736 static int hf_z3950_type_102 = -1;                /* OCTET_STRING */
737 static int hf_z3950_attributeSet = -1;            /* AttributeSetId */
738 static int hf_z3950_rpn = -1;                     /* RPNStructure */
739 static int hf_z3950_operandRpnOp = -1;            /* Operand */
740 static int hf_z3950_rpnRpnOp = -1;                /* T_rpnRpnOp */
741 static int hf_z3950_rpn1 = -1;                    /* RPNStructure */
742 static int hf_z3950_rpn2 = -1;                    /* RPNStructure */
743 static int hf_z3950_operatorRpnOp = -1;           /* Operator */
744 static int hf_z3950_attrTerm = -1;                /* AttributesPlusTerm */
745 static int hf_z3950_resultSet = -1;               /* ResultSetId */
746 static int hf_z3950_resultAttr = -1;              /* ResultSetPlusAttributes */
747 static int hf_z3950_attributes = -1;              /* AttributeList */
748 static int hf_z3950_term = -1;                    /* Term */
749 static int hf_z3950_attributeList_item = -1;      /* AttributeElement */
750 static int hf_z3950_general = -1;                 /* T_general */
751 static int hf_z3950_numeric = -1;                 /* INTEGER */
752 static int hf_z3950_characterString = -1;         /* InternationalString */
753 static int hf_z3950_oid = -1;                     /* OBJECT_IDENTIFIER */
754 static int hf_z3950_dateTime = -1;                /* GeneralizedTime */
755 static int hf_z3950_external = -1;                /* EXTERNAL */
756 static int hf_z3950_integerAndUnit = -1;          /* IntUnit */
757 static int hf_z3950_null = -1;                    /* NULL */
758 static int hf_z3950_and = -1;                     /* NULL */
759 static int hf_z3950_or = -1;                      /* NULL */
760 static int hf_z3950_and_not = -1;                 /* NULL */
761 static int hf_z3950_prox = -1;                    /* ProximityOperator */
762 static int hf_z3950_attributeElement_attributeType = -1;  /* T_attributeElement_attributeType */
763 static int hf_z3950_attributeValue = -1;          /* T_attributeValue */
764 static int hf_z3950_attributeValue_numeric = -1;  /* T_attributeValue_numeric */
765 static int hf_z3950_attributeValue_complex = -1;  /* T_attributeValue_complex */
766 static int hf_z3950_attributeValue_complex_list = -1;  /* SEQUENCE_OF_StringOrNumeric */
767 static int hf_z3950_attributeValue_complex_list_item = -1;  /* StringOrNumeric */
768 static int hf_z3950_semanticAction = -1;          /* T_semanticAction */
769 static int hf_z3950_semanticAction_item = -1;     /* INTEGER */
770 static int hf_z3950_exclusion = -1;               /* BOOLEAN */
771 static int hf_z3950_distance = -1;                /* INTEGER */
772 static int hf_z3950_ordered = -1;                 /* BOOLEAN */
773 static int hf_z3950_relationType = -1;            /* T_relationType */
774 static int hf_z3950_proximityUnitCode = -1;       /* T_proximityUnitCode */
775 static int hf_z3950_known = -1;                   /* KnownProximityUnit */
776 static int hf_z3950_private = -1;                 /* INTEGER */
777 static int hf_z3950_resultCount = -1;             /* INTEGER */
778 static int hf_z3950_numberOfRecordsReturned = -1;  /* INTEGER */
779 static int hf_z3950_nextResultSetPosition = -1;   /* INTEGER */
780 static int hf_z3950_searchStatus = -1;            /* BOOLEAN */
781 static int hf_z3950_search_resultSetStatus = -1;  /* T_search_resultSetStatus */
782 static int hf_z3950_presentStatus = -1;           /* PresentStatus */
783 static int hf_z3950_records = -1;                 /* Records */
784 static int hf_z3950_resultSetId = -1;             /* ResultSetId */
785 static int hf_z3950_resultSetStartPoint = -1;     /* INTEGER */
786 static int hf_z3950_numberOfRecordsRequested = -1;  /* INTEGER */
787 static int hf_z3950_additionalRanges = -1;        /* SEQUENCE_OF_Range */
788 static int hf_z3950_additionalRanges_item = -1;   /* Range */
789 static int hf_z3950_recordComposition = -1;       /* T_recordComposition */
790 static int hf_z3950_simple = -1;                  /* ElementSetNames */
791 static int hf_z3950_recordComposition_complex = -1;  /* CompSpec */
792 static int hf_z3950_maxSegmentCount = -1;         /* INTEGER */
793 static int hf_z3950_maxRecordSize = -1;           /* INTEGER */
794 static int hf_z3950_maxSegmentSize = -1;          /* INTEGER */
795 static int hf_z3950_segmentRecords = -1;          /* SEQUENCE_OF_NamePlusRecord */
796 static int hf_z3950_segmentRecords_item = -1;     /* NamePlusRecord */
797 static int hf_z3950_responseRecords = -1;         /* SEQUENCE_OF_NamePlusRecord */
798 static int hf_z3950_responseRecords_item = -1;    /* NamePlusRecord */
799 static int hf_z3950_nonSurrogateDiagnostic = -1;  /* DefaultDiagFormat */
800 static int hf_z3950_multipleNonSurDiagnostics = -1;  /* SEQUENCE_OF_DiagRec */
801 static int hf_z3950_multipleNonSurDiagnostics_item = -1;  /* DiagRec */
802 static int hf_z3950_namePlusRecord_name = -1;     /* DatabaseName */
803 static int hf_z3950_record = -1;                  /* T_record */
804 static int hf_z3950_retrievalRecord = -1;         /* EXTERNAL */
805 static int hf_z3950_surrogateDiagnostic = -1;     /* DiagRec */
806 static int hf_z3950_startingFragment = -1;        /* FragmentSyntax */
807 static int hf_z3950_intermediateFragment = -1;    /* FragmentSyntax */
808 static int hf_z3950_finalFragment = -1;           /* FragmentSyntax */
809 static int hf_z3950_externallyTagged = -1;        /* EXTERNAL */
810 static int hf_z3950_notExternallyTagged = -1;     /* OCTET_STRING */
811 static int hf_z3950_defaultFormat = -1;           /* DefaultDiagFormat */
812 static int hf_z3950_externallyDefined = -1;       /* EXTERNAL */
813 static int hf_z3950_diagnosticSetId = -1;         /* T_diagnosticSetId */
814 static int hf_z3950_condition = -1;               /* T_condition */
815 static int hf_z3950_addinfo = -1;                 /* T_addinfo */
816 static int hf_z3950_v2Addinfo = -1;               /* VisibleString */
817 static int hf_z3950_v3Addinfo = -1;               /* InternationalString */
818 static int hf_z3950_startingPosition = -1;        /* INTEGER */
819 static int hf_z3950_numberOfRecords = -1;         /* INTEGER */
820 static int hf_z3950_genericElementSetName = -1;   /* InternationalString */
821 static int hf_z3950_databaseSpecific = -1;        /* T_databaseSpecific */
822 static int hf_z3950_databaseSpecific_item = -1;   /* T_databaseSpecific_item */
823 static int hf_z3950_dbName = -1;                  /* DatabaseName */
824 static int hf_z3950_esn = -1;                     /* ElementSetName */
825 static int hf_z3950_selectAlternativeSyntax = -1;  /* BOOLEAN */
826 static int hf_z3950_compSpec_generic = -1;        /* Specification */
827 static int hf_z3950_dbSpecific = -1;              /* T_dbSpecific */
828 static int hf_z3950_dbSpecific_item = -1;         /* T_dbSpecific_item */
829 static int hf_z3950_db = -1;                      /* DatabaseName */
830 static int hf_z3950_spec = -1;                    /* Specification */
831 static int hf_z3950_compSpec_recordSyntax = -1;   /* T_compSpec_recordSyntax */
832 static int hf_z3950_compSpec_recordSyntax_item = -1;  /* OBJECT_IDENTIFIER */
833 static int hf_z3950_schema = -1;                  /* OBJECT_IDENTIFIER */
834 static int hf_z3950_specification_elementSpec = -1;  /* T_specification_elementSpec */
835 static int hf_z3950_elementSetName = -1;          /* InternationalString */
836 static int hf_z3950_externalEspec = -1;           /* EXTERNAL */
837 static int hf_z3950_deleteFunction = -1;          /* T_deleteFunction */
838 static int hf_z3950_resultSetList = -1;           /* SEQUENCE_OF_ResultSetId */
839 static int hf_z3950_resultSetList_item = -1;      /* ResultSetId */
840 static int hf_z3950_deleteOperationStatus = -1;   /* DeleteSetStatus */
841 static int hf_z3950_deleteListStatuses = -1;      /* ListStatuses */
842 static int hf_z3950_numberNotDeleted = -1;        /* INTEGER */
843 static int hf_z3950_bulkStatuses = -1;            /* ListStatuses */
844 static int hf_z3950_deleteMessage = -1;           /* InternationalString */
845 static int hf_z3950_ListStatuses_item = -1;       /* ListStatuses_item */
846 static int hf_z3950_listStatuses_id = -1;         /* ResultSetId */
847 static int hf_z3950_status = -1;                  /* DeleteSetStatus */
848 static int hf_z3950_securityChallenge = -1;       /* T_securityChallenge */
849 static int hf_z3950_simpleForm = -1;              /* OCTET_STRING */
850 static int hf_z3950_securityChallengeResponse = -1;  /* T_securityChallengeResponse */
851 static int hf_z3950_diagnostic = -1;              /* DiagRec */
852 static int hf_z3950_suspendedFlag = -1;           /* BOOLEAN */
853 static int hf_z3950_resourceReport = -1;          /* ResourceReport */
854 static int hf_z3950_partialResultsAvailable = -1;  /* T_partialResultsAvailable */
855 static int hf_z3950_resourceControlRequest_responseRequired = -1;  /* BOOLEAN */
856 static int hf_z3950_triggeredRequestFlag = -1;    /* BOOLEAN */
857 static int hf_z3950_continueFlag = -1;            /* BOOLEAN */
858 static int hf_z3950_resultSetWanted = -1;         /* BOOLEAN */
859 static int hf_z3950_requestedAction = -1;         /* T_requestedAction */
860 static int hf_z3950_prefResourceReportFormat = -1;  /* ResourceReportId */
861 static int hf_z3950_opId = -1;                    /* ReferenceId */
862 static int hf_z3950_resourceReportStatus = -1;    /* T_resourceReportStatus */
863 static int hf_z3950_termListAndStartPoint = -1;   /* AttributesPlusTerm */
864 static int hf_z3950_stepSize = -1;                /* INTEGER */
865 static int hf_z3950_numberOfTermsRequested = -1;  /* INTEGER */
866 static int hf_z3950_preferredPositionInResponse = -1;  /* INTEGER */
867 static int hf_z3950_scanStatus = -1;              /* T_scanStatus */
868 static int hf_z3950_numberOfEntriesReturned = -1;  /* INTEGER */
869 static int hf_z3950_positionOfTerm = -1;          /* INTEGER */
870 static int hf_z3950_scanResponse_entries = -1;    /* ListEntries */
871 static int hf_z3950_listEntries_entries = -1;     /* SEQUENCE_OF_Entry */
872 static int hf_z3950_listEntries_entries_item = -1;  /* Entry */
873 static int hf_z3950_nonsurrogateDiagnostics = -1;  /* SEQUENCE_OF_DiagRec */
874 static int hf_z3950_nonsurrogateDiagnostics_item = -1;  /* DiagRec */
875 static int hf_z3950_termInfo = -1;                /* TermInfo */
876 static int hf_z3950_displayTerm = -1;             /* InternationalString */
877 static int hf_z3950_suggestedAttributes = -1;     /* AttributeList */
878 static int hf_z3950_alternativeTerm = -1;         /* SEQUENCE_OF_AttributesPlusTerm */
879 static int hf_z3950_alternativeTerm_item = -1;    /* AttributesPlusTerm */
880 static int hf_z3950_globalOccurrences = -1;       /* INTEGER */
881 static int hf_z3950_byAttributes = -1;            /* OccurrenceByAttributes */
882 static int hf_z3950_otherTermInfo = -1;           /* OtherInformation */
883 static int hf_z3950_OccurrenceByAttributes_item = -1;  /* OccurrenceByAttributes_item */
884 static int hf_z3950_occurrences = -1;             /* T_occurrences */
885 static int hf_z3950_global = -1;                  /* INTEGER */
886 static int hf_z3950_byDatabase = -1;              /* T_byDatabase */
887 static int hf_z3950_byDatabase_item = -1;         /* T_byDatabase_item */
888 static int hf_z3950_num = -1;                     /* INTEGER */
889 static int hf_z3950_otherDbInfo = -1;             /* OtherInformation */
890 static int hf_z3950_otherOccurInfo = -1;          /* OtherInformation */
891 static int hf_z3950_inputResultSetNames = -1;     /* SEQUENCE_OF_InternationalString */
892 static int hf_z3950_inputResultSetNames_item = -1;  /* InternationalString */
893 static int hf_z3950_sortedResultSetName = -1;     /* InternationalString */
894 static int hf_z3950_sortSequence = -1;            /* SEQUENCE_OF_SortKeySpec */
895 static int hf_z3950_sortSequence_item = -1;       /* SortKeySpec */
896 static int hf_z3950_sortStatus = -1;              /* T_sortStatus */
897 static int hf_z3950_sort_resultSetStatus = -1;    /* T_sort_resultSetStatus */
898 static int hf_z3950_diagnostics = -1;             /* SEQUENCE_OF_DiagRec */
899 static int hf_z3950_diagnostics_item = -1;        /* DiagRec */
900 static int hf_z3950_sortElement = -1;             /* SortElement */
901 static int hf_z3950_sortRelation = -1;            /* T_sortRelation */
902 static int hf_z3950_caseSensitivity = -1;         /* T_caseSensitivity */
903 static int hf_z3950_missingValueAction = -1;      /* T_missingValueAction */
904 static int hf_z3950_abort = -1;                   /* NULL */
905 static int hf_z3950_missingValueData = -1;        /* OCTET_STRING */
906 static int hf_z3950_sortElement_generic = -1;     /* SortKey */
907 static int hf_z3950_datbaseSpecific = -1;         /* T_datbaseSpecific */
908 static int hf_z3950_datbaseSpecific_item = -1;    /* T_datbaseSpecific_item */
909 static int hf_z3950_databaseName = -1;            /* DatabaseName */
910 static int hf_z3950_dbSort = -1;                  /* SortKey */
911 static int hf_z3950_sortfield = -1;               /* InternationalString */
912 static int hf_z3950_sortKey_elementSpec = -1;     /* Specification */
913 static int hf_z3950_sortAttributes = -1;          /* T_sortAttributes */
914 static int hf_z3950_sortAttributes_id = -1;       /* AttributeSetId */
915 static int hf_z3950_sortAttributes_list = -1;     /* AttributeList */
916 static int hf_z3950_function = -1;                /* T_function */
917 static int hf_z3950_packageType = -1;             /* OBJECT_IDENTIFIER */
918 static int hf_z3950_packageName = -1;             /* InternationalString */
919 static int hf_z3950_retentionTime = -1;           /* IntUnit */
920 static int hf_z3950_permissions = -1;             /* Permissions */
921 static int hf_z3950_extendedServicesRequest_description = -1;  /* InternationalString */
922 static int hf_z3950_taskSpecificParameters = -1;  /* EXTERNAL */
923 static int hf_z3950_waitAction = -1;              /* T_waitAction */
924 static int hf_z3950_elements = -1;                /* ElementSetName */
925 static int hf_z3950_operationStatus = -1;         /* T_operationStatus */
926 static int hf_z3950_taskPackage = -1;             /* EXTERNAL */
927 static int hf_z3950_Permissions_item = -1;        /* Permissions_item */
928 static int hf_z3950_allowableFunctions = -1;      /* T_allowableFunctions */
929 static int hf_z3950_allowableFunctions_item = -1;  /* T_allowableFunctions_item */
930 static int hf_z3950_closeReason = -1;             /* CloseReason */
931 static int hf_z3950_diagnosticInformation = -1;   /* InternationalString */
932 static int hf_z3950_resourceReportFormat = -1;    /* ResourceReportId */
933 static int hf_z3950_otherInformation_item = -1;   /* T__untag_item */
934 static int hf_z3950_category = -1;                /* InfoCategory */
935 static int hf_z3950_information = -1;             /* T_information */
936 static int hf_z3950_characterInfo = -1;           /* InternationalString */
937 static int hf_z3950_binaryInfo = -1;              /* OCTET_STRING */
938 static int hf_z3950_externallyDefinedInfo = -1;   /* EXTERNAL */
939 static int hf_z3950_categoryTypeId = -1;          /* OBJECT_IDENTIFIER */
940 static int hf_z3950_categoryValue = -1;           /* INTEGER */
941 static int hf_z3950_value = -1;                   /* INTEGER */
942 static int hf_z3950_unitUsed = -1;                /* Unit */
943 static int hf_z3950_unitSystem = -1;              /* InternationalString */
944 static int hf_z3950_unitType = -1;                /* StringOrNumeric */
945 static int hf_z3950_unit = -1;                    /* StringOrNumeric */
946 static int hf_z3950_scaleFactor = -1;             /* INTEGER */
947 static int hf_z3950_string = -1;                  /* InternationalString */
948 static int hf_z3950_motd = -1;                    /* VisibleString */
949 static int hf_z3950_dblist = -1;                  /* SEQUENCE_OF_DBName */
950 static int hf_z3950_dblist_item = -1;             /* DBName */
951 static int hf_z3950_failReason = -1;              /* BOOLEAN */
952 static int hf_z3950_oCLC_UserInformation_text = -1;  /* VisibleString */
953 static int hf_z3950_bibliographicRecord = -1;     /* EXTERNAL */
954 static int hf_z3950_holdingsData = -1;            /* SEQUENCE_OF_HoldingsRecord */
955 static int hf_z3950_holdingsData_item = -1;       /* HoldingsRecord */
956 static int hf_z3950_marcHoldingsRecord = -1;      /* EXTERNAL */
957 static int hf_z3950_holdingsAndCirc = -1;         /* HoldingsAndCircData */
958 static int hf_z3950_typeOfRecord = -1;            /* InternationalString */
959 static int hf_z3950_encodingLevel = -1;           /* InternationalString */
960 static int hf_z3950_format = -1;                  /* InternationalString */
961 static int hf_z3950_receiptAcqStatus = -1;        /* InternationalString */
962 static int hf_z3950_generalRetention = -1;        /* InternationalString */
963 static int hf_z3950_completeness = -1;            /* InternationalString */
964 static int hf_z3950_dateOfReport = -1;            /* InternationalString */
965 static int hf_z3950_nucCode = -1;                 /* InternationalString */
966 static int hf_z3950_localLocation = -1;           /* InternationalString */
967 static int hf_z3950_shelvingLocation = -1;        /* InternationalString */
968 static int hf_z3950_callNumber = -1;              /* InternationalString */
969 static int hf_z3950_shelvingData = -1;            /* InternationalString */
970 static int hf_z3950_copyNumber = -1;              /* InternationalString */
971 static int hf_z3950_publicNote = -1;              /* InternationalString */
972 static int hf_z3950_reproductionNote = -1;        /* InternationalString */
973 static int hf_z3950_termsUseRepro = -1;           /* InternationalString */
974 static int hf_z3950_enumAndChron = -1;            /* InternationalString */
975 static int hf_z3950_volumes = -1;                 /* SEQUENCE_OF_Volume */
976 static int hf_z3950_volumes_item = -1;            /* Volume */
977 static int hf_z3950_circulationData = -1;         /* SEQUENCE_OF_CircRecord */
978 static int hf_z3950_circulationData_item = -1;    /* CircRecord */
979 static int hf_z3950_enumeration = -1;             /* InternationalString */
980 static int hf_z3950_chronology = -1;              /* InternationalString */
981 static int hf_z3950_availableNow = -1;            /* BOOLEAN */
982 static int hf_z3950_availablityDate = -1;         /* InternationalString */
983 static int hf_z3950_availableThru = -1;           /* InternationalString */
984 static int hf_z3950_circRecord_restrictions = -1;  /* InternationalString */
985 static int hf_z3950_itemId = -1;                  /* InternationalString */
986 static int hf_z3950_renewable = -1;               /* BOOLEAN */
987 static int hf_z3950_onHold = -1;                  /* BOOLEAN */
988 static int hf_z3950_midspine = -1;                /* InternationalString */
989 static int hf_z3950_temporaryLocation = -1;       /* InternationalString */
990 static int hf_z3950_DiagnosticFormat_item = -1;   /* DiagnosticFormat_item */
991 static int hf_z3950_diagnosticFormat_item_diagnostic = -1;  /* T_diagnosticFormat_item_diagnostic */
992 static int hf_z3950_defaultDiagRec = -1;          /* DefaultDiagFormat */
993 static int hf_z3950_explicitDiagnostic = -1;      /* DiagFormat */
994 static int hf_z3950_message = -1;                 /* InternationalString */
995 static int hf_z3950_tooMany = -1;                 /* T_tooMany */
996 static int hf_z3950_tooManyWhat = -1;             /* T_tooManyWhat */
997 static int hf_z3950_max = -1;                     /* INTEGER */
998 static int hf_z3950_badSpec = -1;                 /* T_badSpec */
999 static int hf_z3950_goodOnes = -1;                /* SEQUENCE_OF_Specification */
1000 static int hf_z3950_goodOnes_item = -1;           /* Specification */
1001 static int hf_z3950_dbUnavail = -1;               /* T_dbUnavail */
1002 static int hf_z3950_why = -1;                     /* T_why */
1003 static int hf_z3950_reasonCode = -1;              /* T_reasonCode */
1004 static int hf_z3950_unSupOp = -1;                 /* T_unSupOp */
1005 static int hf_z3950_attribute = -1;               /* T_attribute */
1006 static int hf_z3950_id = -1;                      /* OBJECT_IDENTIFIER */
1007 static int hf_z3950_type = -1;                    /* INTEGER */
1008 static int hf_z3950_attCombo = -1;                /* T_attCombo */
1009 static int hf_z3950_unsupportedCombination = -1;  /* AttributeList */
1010 static int hf_z3950_recommendedAlternatives = -1;  /* SEQUENCE_OF_AttributeList */
1011 static int hf_z3950_recommendedAlternatives_item = -1;  /* AttributeList */
1012 static int hf_z3950_diagFormat_term = -1;         /* T_diagFormat_term */
1013 static int hf_z3950_problem = -1;                 /* T_problem */
1014 static int hf_z3950_diagFormat_proximity = -1;    /* T_diagFormat_proximity */
1015 static int hf_z3950_resultSets = -1;              /* NULL */
1016 static int hf_z3950_badSet = -1;                  /* InternationalString */
1017 static int hf_z3950_relation = -1;                /* INTEGER */
1018 static int hf_z3950_diagFormat_proximity_unit = -1;  /* INTEGER */
1019 static int hf_z3950_diagFormat_proximity_ordered = -1;  /* NULL */
1020 static int hf_z3950_diagFormat_proximity_exclusion = -1;  /* NULL */
1021 static int hf_z3950_scan = -1;                    /* T_scan */
1022 static int hf_z3950_nonZeroStepSize = -1;         /* NULL */
1023 static int hf_z3950_specifiedStepSize = -1;       /* NULL */
1024 static int hf_z3950_termList1 = -1;               /* NULL */
1025 static int hf_z3950_termList2 = -1;               /* SEQUENCE_OF_AttributeList */
1026 static int hf_z3950_termList2_item = -1;          /* AttributeList */
1027 static int hf_z3950_posInResponse = -1;           /* T_posInResponse */
1028 static int hf_z3950_resources = -1;               /* NULL */
1029 static int hf_z3950_endOfList = -1;               /* NULL */
1030 static int hf_z3950_sort = -1;                    /* T_sort */
1031 static int hf_z3950_sequence = -1;                /* NULL */
1032 static int hf_z3950_noRsName = -1;                /* NULL */
1033 static int hf_z3950_diagFormat_sort_tooMany = -1;  /* INTEGER */
1034 static int hf_z3950_incompatible = -1;            /* NULL */
1035 static int hf_z3950_generic = -1;                 /* NULL */
1036 static int hf_z3950_diagFormat_sort_dbSpecific = -1;  /* NULL */
1037 static int hf_z3950_key = -1;                     /* T_key */
1038 static int hf_z3950_action = -1;                  /* NULL */
1039 static int hf_z3950_illegal = -1;                 /* T_illegal */
1040 static int hf_z3950_inputTooLarge = -1;           /* SEQUENCE_OF_InternationalString */
1041 static int hf_z3950_inputTooLarge_item = -1;      /* InternationalString */
1042 static int hf_z3950_aggregateTooLarge = -1;       /* NULL */
1043 static int hf_z3950_segmentation = -1;            /* T_segmentation */
1044 static int hf_z3950_segmentCount = -1;            /* NULL */
1045 static int hf_z3950_segmentSize = -1;             /* INTEGER */
1046 static int hf_z3950_extServices = -1;             /* T_extServices */
1047 static int hf_z3950_req = -1;                     /* T_req */
1048 static int hf_z3950_permission = -1;              /* T_permission */
1049 static int hf_z3950_immediate = -1;               /* T_immediate */
1050 static int hf_z3950_accessCtrl = -1;              /* T_accessCtrl */
1051 static int hf_z3950_noUser = -1;                  /* NULL */
1052 static int hf_z3950_refused = -1;                 /* NULL */
1053 static int hf_z3950_diagFormat_accessCtrl_simple = -1;  /* NULL */
1054 static int hf_z3950_diagFormat_accessCtrl_oid = -1;  /* T_diagFormat_accessCtrl_oid */
1055 static int hf_z3950_diagFormat_accessCtrl_oid_item = -1;  /* OBJECT_IDENTIFIER */
1056 static int hf_z3950_alternative = -1;             /* T_alternative */
1057 static int hf_z3950_alternative_item = -1;        /* OBJECT_IDENTIFIER */
1058 static int hf_z3950_pwdInv = -1;                  /* NULL */
1059 static int hf_z3950_pwdExp = -1;                  /* NULL */
1060 static int hf_z3950_diagFormat_recordSyntax = -1;  /* T_diagFormat_recordSyntax */
1061 static int hf_z3950_unsupportedSyntax = -1;       /* OBJECT_IDENTIFIER */
1062 static int hf_z3950_suggestedAlternatives = -1;   /* T_suggestedAlternatives */
1063 static int hf_z3950_suggestedAlternatives_item = -1;  /* OBJECT_IDENTIFIER */
1064 static int hf_z3950_targetInfo = -1;              /* TargetInfo */
1065 static int hf_z3950_databaseInfo = -1;            /* DatabaseInfo */
1066 static int hf_z3950_schemaInfo = -1;              /* SchemaInfo */
1067 static int hf_z3950_tagSetInfo = -1;              /* TagSetInfo */
1068 static int hf_z3950_recordSyntaxInfo = -1;        /* RecordSyntaxInfo */
1069 static int hf_z3950_attributeSetInfo = -1;        /* AttributeSetInfo */
1070 static int hf_z3950_termListInfo = -1;            /* TermListInfo */
1071 static int hf_z3950_extendedServicesInfo = -1;    /* ExtendedServicesInfo */
1072 static int hf_z3950_attributeDetails = -1;        /* AttributeDetails */
1073 static int hf_z3950_termListDetails = -1;         /* TermListDetails */
1074 static int hf_z3950_elementSetDetails = -1;       /* ElementSetDetails */
1075 static int hf_z3950_retrievalRecordDetails = -1;  /* RetrievalRecordDetails */
1076 static int hf_z3950_sortDetails = -1;             /* SortDetails */
1077 static int hf_z3950_processing = -1;              /* ProcessingInformation */
1078 static int hf_z3950_variants = -1;                /* VariantSetInfo */
1079 static int hf_z3950_units = -1;                   /* UnitInfo */
1080 static int hf_z3950_categoryList = -1;            /* CategoryList */
1081 static int hf_z3950_commonInfo = -1;              /* CommonInfo */
1082 static int hf_z3950_name = -1;                    /* InternationalString */
1083 static int hf_z3950_recent_news = -1;             /* HumanString */
1084 static int hf_z3950_icon = -1;                    /* IconObject */
1085 static int hf_z3950_namedResultSets = -1;         /* BOOLEAN */
1086 static int hf_z3950_multipleDBsearch = -1;        /* BOOLEAN */
1087 static int hf_z3950_maxResultSets = -1;           /* INTEGER */
1088 static int hf_z3950_maxResultSize = -1;           /* INTEGER */
1089 static int hf_z3950_maxTerms = -1;                /* INTEGER */
1090 static int hf_z3950_timeoutInterval = -1;         /* IntUnit */
1091 static int hf_z3950_welcomeMessage = -1;          /* HumanString */
1092 static int hf_z3950_contactInfo = -1;             /* ContactInfo */
1093 static int hf_z3950_description = -1;             /* HumanString */
1094 static int hf_z3950_nicknames = -1;               /* SEQUENCE_OF_InternationalString */
1095 static int hf_z3950_nicknames_item = -1;          /* InternationalString */
1096 static int hf_z3950_usage_restrictions = -1;      /* HumanString */
1097 static int hf_z3950_paymentAddr = -1;             /* HumanString */
1098 static int hf_z3950_hours = -1;                   /* HumanString */
1099 static int hf_z3950_dbCombinations = -1;          /* SEQUENCE_OF_DatabaseList */
1100 static int hf_z3950_dbCombinations_item = -1;     /* DatabaseList */
1101 static int hf_z3950_addresses = -1;               /* SEQUENCE_OF_NetworkAddress */
1102 static int hf_z3950_addresses_item = -1;          /* NetworkAddress */
1103 static int hf_z3950_languages = -1;               /* SEQUENCE_OF_InternationalString */
1104 static int hf_z3950_languages_item = -1;          /* InternationalString */
1105 static int hf_z3950_commonAccessInfo = -1;        /* AccessInfo */
1106 static int hf_z3950_databaseInfo_name = -1;       /* DatabaseName */
1107 static int hf_z3950_explainDatabase = -1;         /* NULL */
1108 static int hf_z3950_databaseInfo_nicknames = -1;  /* SEQUENCE_OF_DatabaseName */
1109 static int hf_z3950_databaseInfo_nicknames_item = -1;  /* DatabaseName */
1110 static int hf_z3950_user_fee = -1;                /* BOOLEAN */
1111 static int hf_z3950_available = -1;               /* BOOLEAN */
1112 static int hf_z3950_titleString = -1;             /* HumanString */
1113 static int hf_z3950_keywords = -1;                /* SEQUENCE_OF_HumanString */
1114 static int hf_z3950_keywords_item = -1;           /* HumanString */
1115 static int hf_z3950_associatedDbs = -1;           /* DatabaseList */
1116 static int hf_z3950_subDbs = -1;                  /* DatabaseList */
1117 static int hf_z3950_disclaimers = -1;             /* HumanString */
1118 static int hf_z3950_news = -1;                    /* HumanString */
1119 static int hf_z3950_recordCount = -1;             /* T_recordCount */
1120 static int hf_z3950_actualNumber = -1;            /* INTEGER */
1121 static int hf_z3950_approxNumber = -1;            /* INTEGER */
1122 static int hf_z3950_defaultOrder = -1;            /* HumanString */
1123 static int hf_z3950_avRecordSize = -1;            /* INTEGER */
1124 static int hf_z3950_bestTime = -1;                /* HumanString */
1125 static int hf_z3950_lastUpdate = -1;              /* GeneralizedTime */
1126 static int hf_z3950_updateInterval = -1;          /* IntUnit */
1127 static int hf_z3950_coverage = -1;                /* HumanString */
1128 static int hf_z3950_proprietary = -1;             /* BOOLEAN */
1129 static int hf_z3950_copyrightText = -1;           /* HumanString */
1130 static int hf_z3950_copyrightNotice = -1;         /* HumanString */
1131 static int hf_z3950_producerContactInfo = -1;     /* ContactInfo */
1132 static int hf_z3950_supplierContactInfo = -1;     /* ContactInfo */
1133 static int hf_z3950_submissionContactInfo = -1;   /* ContactInfo */
1134 static int hf_z3950_accessInfo = -1;              /* AccessInfo */
1135 static int hf_z3950_tagTypeMapping = -1;          /* T_tagTypeMapping */
1136 static int hf_z3950_tagTypeMapping_item = -1;     /* T_tagTypeMapping_item */
1137 static int hf_z3950_tagType = -1;                 /* INTEGER */
1138 static int hf_z3950_tagSet = -1;                  /* OBJECT_IDENTIFIER */
1139 static int hf_z3950_defaultTagType = -1;          /* NULL */
1140 static int hf_z3950_recordStructure = -1;         /* SEQUENCE_OF_ElementInfo */
1141 static int hf_z3950_recordStructure_item = -1;    /* ElementInfo */
1142 static int hf_z3950_elementName = -1;             /* InternationalString */
1143 static int hf_z3950_elementTagPath = -1;          /* Path */
1144 static int hf_z3950_elementInfo_dataType = -1;    /* ElementDataType */
1145 static int hf_z3950_required = -1;                /* BOOLEAN */
1146 static int hf_z3950_repeatable = -1;              /* BOOLEAN */
1147 static int hf_z3950_Path_item = -1;               /* Path_item */
1148 static int hf_z3950_tagValue = -1;                /* StringOrNumeric */
1149 static int hf_z3950_primitive = -1;               /* PrimitiveDataType */
1150 static int hf_z3950_structured = -1;              /* SEQUENCE_OF_ElementInfo */
1151 static int hf_z3950_structured_item = -1;         /* ElementInfo */
1152 static int hf_z3950_tagSetInfo_elements = -1;     /* T_tagSetInfo_elements */
1153 static int hf_z3950_tagSetInfo_elements_item = -1;  /* T_tagSetInfo_elements_item */
1154 static int hf_z3950_elementname = -1;             /* InternationalString */
1155 static int hf_z3950_elementTag = -1;              /* StringOrNumeric */
1156 static int hf_z3950_dataType = -1;                /* PrimitiveDataType */
1157 static int hf_z3950_otherTagInfo = -1;            /* OtherInformation */
1158 static int hf_z3950_recordSyntax = -1;            /* OBJECT_IDENTIFIER */
1159 static int hf_z3950_transferSyntaxes = -1;        /* T_transferSyntaxes */
1160 static int hf_z3950_transferSyntaxes_item = -1;   /* OBJECT_IDENTIFIER */
1161 static int hf_z3950_asn1Module = -1;              /* InternationalString */
1162 static int hf_z3950_abstractStructure = -1;       /* SEQUENCE_OF_ElementInfo */
1163 static int hf_z3950_abstractStructure_item = -1;  /* ElementInfo */
1164 static int hf_z3950_attributeSetInfo_attributes = -1;  /* SEQUENCE_OF_AttributeType */
1165 static int hf_z3950_attributeSetInfo_attributes_item = -1;  /* AttributeType */
1166 static int hf_z3950_attributeType = -1;           /* INTEGER */
1167 static int hf_z3950_attributeValues = -1;         /* SEQUENCE_OF_AttributeDescription */
1168 static int hf_z3950_attributeValues_item = -1;    /* AttributeDescription */
1169 static int hf_z3950_attributeDescription_attributeValue = -1;  /* StringOrNumeric */
1170 static int hf_z3950_equivalentAttributes = -1;    /* SEQUENCE_OF_StringOrNumeric */
1171 static int hf_z3950_equivalentAttributes_item = -1;  /* StringOrNumeric */
1172 static int hf_z3950_termLists = -1;               /* T_termLists */
1173 static int hf_z3950_termLists_item = -1;          /* T_termLists_item */
1174 static int hf_z3950_title = -1;                   /* HumanString */
1175 static int hf_z3950_searchCost = -1;              /* T_searchCost */
1176 static int hf_z3950_scanable = -1;                /* BOOLEAN */
1177 static int hf_z3950_broader = -1;                 /* SEQUENCE_OF_InternationalString */
1178 static int hf_z3950_broader_item = -1;            /* InternationalString */
1179 static int hf_z3950_narrower = -1;                /* SEQUENCE_OF_InternationalString */
1180 static int hf_z3950_narrower_item = -1;           /* InternationalString */
1181 static int hf_z3950_extendedServicesInfo_type = -1;  /* OBJECT_IDENTIFIER */
1182 static int hf_z3950_privateType = -1;             /* BOOLEAN */
1183 static int hf_z3950_restrictionsApply = -1;       /* BOOLEAN */
1184 static int hf_z3950_feeApply = -1;                /* BOOLEAN */
1185 static int hf_z3950_retentionSupported = -1;      /* BOOLEAN */
1186 static int hf_z3950_extendedServicesInfo_waitAction = -1;  /* T_extendedServicesInfo_waitAction */
1187 static int hf_z3950_specificExplain = -1;         /* EXTERNAL */
1188 static int hf_z3950_esASN = -1;                   /* InternationalString */
1189 static int hf_z3950_attributesBySet = -1;         /* SEQUENCE_OF_AttributeSetDetails */
1190 static int hf_z3950_attributesBySet_item = -1;    /* AttributeSetDetails */
1191 static int hf_z3950_attributeCombinations = -1;   /* AttributeCombinations */
1192 static int hf_z3950_attributesByType = -1;        /* SEQUENCE_OF_AttributeTypeDetails */
1193 static int hf_z3950_attributesByType_item = -1;   /* AttributeTypeDetails */
1194 static int hf_z3950_defaultIfOmitted = -1;        /* OmittedAttributeInterpretation */
1195 static int hf_z3950_attributeTypeDetails_attributeValues = -1;  /* SEQUENCE_OF_AttributeValue */
1196 static int hf_z3950_attributeTypeDetails_attributeValues_item = -1;  /* AttributeValue */
1197 static int hf_z3950_defaultValue = -1;            /* StringOrNumeric */
1198 static int hf_z3950_defaultDescription = -1;      /* HumanString */
1199 static int hf_z3950_attributeValue_value = -1;    /* StringOrNumeric */
1200 static int hf_z3950_subAttributes = -1;           /* SEQUENCE_OF_StringOrNumeric */
1201 static int hf_z3950_subAttributes_item = -1;      /* StringOrNumeric */
1202 static int hf_z3950_superAttributes = -1;         /* SEQUENCE_OF_StringOrNumeric */
1203 static int hf_z3950_superAttributes_item = -1;    /* StringOrNumeric */
1204 static int hf_z3950_partialSupport = -1;          /* NULL */
1205 static int hf_z3950_termListName = -1;            /* InternationalString */
1206 static int hf_z3950_termListDetails_attributes = -1;  /* AttributeCombinations */
1207 static int hf_z3950_scanInfo = -1;                /* T_scanInfo */
1208 static int hf_z3950_maxStepSize = -1;             /* INTEGER */
1209 static int hf_z3950_collatingSequence = -1;       /* HumanString */
1210 static int hf_z3950_increasing = -1;              /* BOOLEAN */
1211 static int hf_z3950_estNumberTerms = -1;          /* INTEGER */
1212 static int hf_z3950_sampleTerms = -1;             /* SEQUENCE_OF_Term */
1213 static int hf_z3950_sampleTerms_item = -1;        /* Term */
1214 static int hf_z3950_elementSetDetails_elementSetName = -1;  /* ElementSetName */
1215 static int hf_z3950_detailsPerElement = -1;       /* SEQUENCE_OF_PerElementDetails */
1216 static int hf_z3950_detailsPerElement_item = -1;  /* PerElementDetails */
1217 static int hf_z3950_recordTag = -1;               /* RecordTag */
1218 static int hf_z3950_schemaTags = -1;              /* SEQUENCE_OF_Path */
1219 static int hf_z3950_schemaTags_item = -1;         /* Path */
1220 static int hf_z3950_maxSize = -1;                 /* INTEGER */
1221 static int hf_z3950_minSize = -1;                 /* INTEGER */
1222 static int hf_z3950_avgSize = -1;                 /* INTEGER */
1223 static int hf_z3950_fixedSize = -1;               /* INTEGER */
1224 static int hf_z3950_contents = -1;                /* HumanString */
1225 static int hf_z3950_billingInfo = -1;             /* HumanString */
1226 static int hf_z3950_restrictions = -1;            /* HumanString */
1227 static int hf_z3950_alternateNames = -1;          /* SEQUENCE_OF_InternationalString */
1228 static int hf_z3950_alternateNames_item = -1;     /* InternationalString */
1229 static int hf_z3950_genericNames = -1;            /* SEQUENCE_OF_InternationalString */
1230 static int hf_z3950_genericNames_item = -1;       /* InternationalString */
1231 static int hf_z3950_searchAccess = -1;            /* AttributeCombinations */
1232 static int hf_z3950_qualifier = -1;               /* StringOrNumeric */
1233 static int hf_z3950_sortKeys = -1;                /* SEQUENCE_OF_SortKeyDetails */
1234 static int hf_z3950_sortKeys_item = -1;           /* SortKeyDetails */
1235 static int hf_z3950_elementSpecifications = -1;   /* SEQUENCE_OF_Specification */
1236 static int hf_z3950_elementSpecifications_item = -1;  /* Specification */
1237 static int hf_z3950_attributeSpecifications = -1;  /* AttributeCombinations */
1238 static int hf_z3950_sortType = -1;                /* T_sortType */
1239 static int hf_z3950_character = -1;               /* NULL */
1240 static int hf_z3950_sortKeyDetails_sortType_numeric = -1;  /* NULL */
1241 static int hf_z3950_sortKeyDetails_sortType_structured = -1;  /* HumanString */
1242 static int hf_z3950_sortKeyDetails_caseSensitivity = -1;  /* T_sortKeyDetails_caseSensitivity */
1243 static int hf_z3950_processingContext = -1;       /* T_processingContext */
1244 static int hf_z3950_instructions = -1;            /* EXTERNAL */
1245 static int hf_z3950_variantSet = -1;              /* OBJECT_IDENTIFIER */
1246 static int hf_z3950_variantSetInfo_variants = -1;  /* SEQUENCE_OF_VariantClass */
1247 static int hf_z3950_variantSetInfo_variants_item = -1;  /* VariantClass */
1248 static int hf_z3950_variantClass = -1;            /* INTEGER */
1249 static int hf_z3950_variantTypes = -1;            /* SEQUENCE_OF_VariantType */
1250 static int hf_z3950_variantTypes_item = -1;       /* VariantType */
1251 static int hf_z3950_variantType = -1;             /* INTEGER */
1252 static int hf_z3950_variantValue = -1;            /* VariantValue */
1253 static int hf_z3950_values = -1;                  /* ValueSet */
1254 static int hf_z3950_range = -1;                   /* ValueRange */
1255 static int hf_z3950_enumerated = -1;              /* SEQUENCE_OF_ValueDescription */
1256 static int hf_z3950_enumerated_item = -1;         /* ValueDescription */
1257 static int hf_z3950_lower = -1;                   /* ValueDescription */
1258 static int hf_z3950_upper = -1;                   /* ValueDescription */
1259 static int hf_z3950_integer = -1;                 /* INTEGER */
1260 static int hf_z3950_octets = -1;                  /* OCTET_STRING */
1261 static int hf_z3950_valueDescription_unit = -1;   /* Unit */
1262 static int hf_z3950_valueAndUnit = -1;            /* IntUnit */
1263 static int hf_z3950_unitInfo_units = -1;          /* SEQUENCE_OF_UnitType */
1264 static int hf_z3950_unitInfo_units_item = -1;     /* UnitType */
1265 static int hf_z3950_unitType_units = -1;          /* SEQUENCE_OF_Units */
1266 static int hf_z3950_unitType_units_item = -1;     /* Units */
1267 static int hf_z3950_categories = -1;              /* SEQUENCE_OF_CategoryInfo */
1268 static int hf_z3950_categories_item = -1;         /* CategoryInfo */
1269 static int hf_z3950_categoryInfo_category = -1;   /* InternationalString */
1270 static int hf_z3950_originalCategory = -1;        /* InternationalString */
1271 static int hf_z3950_dateAdded = -1;               /* GeneralizedTime */
1272 static int hf_z3950_dateChanged = -1;             /* GeneralizedTime */
1273 static int hf_z3950_expiry = -1;                  /* GeneralizedTime */
1274 static int hf_z3950_humanString_Language = -1;    /* LanguageCode */
1275 static int hf_z3950_HumanString_item = -1;        /* HumanString_item */
1276 static int hf_z3950_language = -1;                /* LanguageCode */
1277 static int hf_z3950_text = -1;                    /* InternationalString */
1278 static int hf_z3950_IconObject_item = -1;         /* IconObject_item */
1279 static int hf_z3950_bodyType = -1;                /* T_bodyType */
1280 static int hf_z3950_ianaType = -1;                /* InternationalString */
1281 static int hf_z3950_z3950type = -1;               /* InternationalString */
1282 static int hf_z3950_otherType = -1;               /* InternationalString */
1283 static int hf_z3950_content = -1;                 /* OCTET_STRING */
1284 static int hf_z3950_address = -1;                 /* HumanString */
1285 static int hf_z3950_email = -1;                   /* InternationalString */
1286 static int hf_z3950_phone = -1;                   /* InternationalString */
1287 static int hf_z3950_internetAddress = -1;         /* T_internetAddress */
1288 static int hf_z3950_hostAddress = -1;             /* InternationalString */
1289 static int hf_z3950_port = -1;                    /* INTEGER */
1290 static int hf_z3950_osiPresentationAddress = -1;  /* T_osiPresentationAddress */
1291 static int hf_z3950_pSel = -1;                    /* InternationalString */
1292 static int hf_z3950_sSel = -1;                    /* InternationalString */
1293 static int hf_z3950_tSel = -1;                    /* InternationalString */
1294 static int hf_z3950_nSap = -1;                    /* InternationalString */
1295 static int hf_z3950_networkAddress_other = -1;    /* T_networkAddress_other */
1296 static int hf_z3950_networkAddress_other_type = -1;  /* InternationalString */
1297 static int hf_z3950_networkAddress_other_address = -1;  /* InternationalString */
1298 static int hf_z3950_queryTypesSupported = -1;     /* SEQUENCE_OF_QueryTypeDetails */
1299 static int hf_z3950_queryTypesSupported_item = -1;  /* QueryTypeDetails */
1300 static int hf_z3950_diagnosticsSets = -1;         /* T_diagnosticsSets */
1301 static int hf_z3950_diagnosticsSets_item = -1;    /* OBJECT_IDENTIFIER */
1302 static int hf_z3950_attributeSetIds = -1;         /* SEQUENCE_OF_AttributeSetId */
1303 static int hf_z3950_attributeSetIds_item = -1;    /* AttributeSetId */
1304 static int hf_z3950_schemas = -1;                 /* T_schemas */
1305 static int hf_z3950_schemas_item = -1;            /* OBJECT_IDENTIFIER */
1306 static int hf_z3950_recordSyntaxes = -1;          /* T_recordSyntaxes */
1307 static int hf_z3950_recordSyntaxes_item = -1;     /* OBJECT_IDENTIFIER */
1308 static int hf_z3950_resourceChallenges = -1;      /* T_resourceChallenges */
1309 static int hf_z3950_resourceChallenges_item = -1;  /* OBJECT_IDENTIFIER */
1310 static int hf_z3950_restrictedAccess = -1;        /* AccessRestrictions */
1311 static int hf_z3950_costInfo = -1;                /* Costs */
1312 static int hf_z3950_variantSets = -1;             /* T_variantSets */
1313 static int hf_z3950_variantSets_item = -1;        /* OBJECT_IDENTIFIER */
1314 static int hf_z3950_elementSetNames = -1;         /* SEQUENCE_OF_ElementSetName */
1315 static int hf_z3950_elementSetNames_item = -1;    /* ElementSetName */
1316 static int hf_z3950_unitSystems = -1;             /* SEQUENCE_OF_InternationalString */
1317 static int hf_z3950_unitSystems_item = -1;        /* InternationalString */
1318 static int hf_z3950_queryTypeDetails_private = -1;  /* PrivateCapabilities */
1319 static int hf_z3950_queryTypeDetails_rpn = -1;    /* RpnCapabilities */
1320 static int hf_z3950_iso8777 = -1;                 /* Iso8777Capabilities */
1321 static int hf_z3950_z39_58 = -1;                  /* HumanString */
1322 static int hf_z3950_erpn = -1;                    /* RpnCapabilities */
1323 static int hf_z3950_rankedList = -1;              /* HumanString */
1324 static int hf_z3950_privateCapabilities_operators = -1;  /* T_privateCapabilities_operators */
1325 static int hf_z3950_privateCapabilities_operators_item = -1;  /* T_privateCapabilities_operators_item */
1326 static int hf_z3950_operator = -1;                /* InternationalString */
1327 static int hf_z3950_searchKeys = -1;              /* SEQUENCE_OF_SearchKey */
1328 static int hf_z3950_searchKeys_item = -1;         /* SearchKey */
1329 static int hf_z3950_privateCapabilities_description = -1;  /* SEQUENCE_OF_HumanString */
1330 static int hf_z3950_privateCapabilities_description_item = -1;  /* HumanString */
1331 static int hf_z3950_operators = -1;               /* T_operators */
1332 static int hf_z3950_operators_item = -1;          /* INTEGER */
1333 static int hf_z3950_resultSetAsOperandSupported = -1;  /* BOOLEAN */
1334 static int hf_z3950_restrictionOperandSupported = -1;  /* BOOLEAN */
1335 static int hf_z3950_proximity = -1;               /* ProximitySupport */
1336 static int hf_z3950_anySupport = -1;              /* BOOLEAN */
1337 static int hf_z3950_unitsSupported = -1;          /* T_unitsSupported */
1338 static int hf_z3950_unitsSupported_item = -1;     /* T_unitsSupported_item */
1339 static int hf_z3950_proximitySupport_unitsSupported_item_known = -1;  /* INTEGER */
1340 static int hf_z3950_proximitySupport_unitsSupported_item_private = -1;  /* T_proximitySupport_unitsSupported_item_private */
1341 static int hf_z3950_proximitySupport_unitsSupported_item_private_unit = -1;  /* INTEGER */
1342 static int hf_z3950_searchKey = -1;               /* InternationalString */
1343 static int hf_z3950_AccessRestrictions_item = -1;  /* AccessRestrictions_item */
1344 static int hf_z3950_accessType = -1;              /* T_accessType */
1345 static int hf_z3950_accessText = -1;              /* HumanString */
1346 static int hf_z3950_accessChallenges = -1;        /* T_accessChallenges */
1347 static int hf_z3950_accessChallenges_item = -1;   /* OBJECT_IDENTIFIER */
1348 static int hf_z3950_connectCharge = -1;           /* Charge */
1349 static int hf_z3950_connectTime = -1;             /* Charge */
1350 static int hf_z3950_displayCharge = -1;           /* Charge */
1351 static int hf_z3950_searchCharge = -1;            /* Charge */
1352 static int hf_z3950_subscriptCharge = -1;         /* Charge */
1353 static int hf_z3950_otherCharges = -1;            /* T_otherCharges */
1354 static int hf_z3950_otherCharges_item = -1;       /* T_otherCharges_item */
1355 static int hf_z3950_forWhat = -1;                 /* HumanString */
1356 static int hf_z3950_charge = -1;                  /* Charge */
1357 static int hf_z3950_cost = -1;                    /* IntUnit */
1358 static int hf_z3950_perWhat = -1;                 /* Unit */
1359 static int hf_z3950_charge_text = -1;             /* HumanString */
1360 static int hf_z3950_DatabaseList_item = -1;       /* DatabaseName */
1361 static int hf_z3950_defaultAttributeSet = -1;     /* AttributeSetId */
1362 static int hf_z3950_legalCombinations = -1;       /* SEQUENCE_OF_AttributeCombination */
1363 static int hf_z3950_legalCombinations_item = -1;  /* AttributeCombination */
1364 static int hf_z3950_AttributeCombination_item = -1;  /* AttributeOccurrence */
1365 static int hf_z3950_mustBeSupplied = -1;          /* NULL */
1366 static int hf_z3950_attributeOccurrence_attributeValues = -1;  /* T_attributeOccurrence_attributeValues */
1367 static int hf_z3950_any_or_none = -1;             /* NULL */
1368 static int hf_z3950_specific = -1;                /* SEQUENCE_OF_StringOrNumeric */
1369 static int hf_z3950_specific_item = -1;           /* StringOrNumeric */
1370 static int hf_z3950_briefBib_title = -1;          /* InternationalString */
1371 static int hf_z3950_author = -1;                  /* InternationalString */
1372 static int hf_z3950_recordType = -1;              /* InternationalString */
1373 static int hf_z3950_bibliographicLevel = -1;      /* InternationalString */
1374 static int hf_z3950_briefBib_format = -1;         /* SEQUENCE_OF_FormatSpec */
1375 static int hf_z3950_briefBib_format_item = -1;    /* FormatSpec */
1376 static int hf_z3950_publicationPlace = -1;        /* InternationalString */
1377 static int hf_z3950_publicationDate = -1;         /* InternationalString */
1378 static int hf_z3950_targetSystemKey = -1;         /* InternationalString */
1379 static int hf_z3950_satisfyingElement = -1;       /* InternationalString */
1380 static int hf_z3950_rank = -1;                    /* INTEGER */
1381 static int hf_z3950_documentId = -1;              /* InternationalString */
1382 static int hf_z3950_abstract = -1;                /* InternationalString */
1383 static int hf_z3950_formatSpec_type = -1;         /* InternationalString */
1384 static int hf_z3950_size = -1;                    /* INTEGER */
1385 static int hf_z3950_bestPosn = -1;                /* INTEGER */
1386 static int hf_z3950_GenericRecord_item = -1;      /* TaggedElement */
1387 static int hf_z3950_tagOccurrence = -1;           /* INTEGER */
1388 static int hf_z3950_taggedElement_content = -1;   /* ElementData */
1389 static int hf_z3950_metaData = -1;                /* ElementMetaData */
1390 static int hf_z3950_appliedVariant = -1;          /* Variant */
1391 static int hf_z3950_date = -1;                    /* GeneralizedTime */
1392 static int hf_z3950_ext = -1;                     /* EXTERNAL */
1393 static int hf_z3950_trueOrFalse = -1;             /* BOOLEAN */
1394 static int hf_z3950_intUnit = -1;                 /* IntUnit */
1395 static int hf_z3950_elementNotThere = -1;         /* NULL */
1396 static int hf_z3950_elementEmpty = -1;            /* NULL */
1397 static int hf_z3950_noDataRequested = -1;         /* NULL */
1398 static int hf_z3950_elementData_diagnostic = -1;  /* EXTERNAL */
1399 static int hf_z3950_subtree = -1;                 /* SEQUENCE_OF_TaggedElement */
1400 static int hf_z3950_subtree_item = -1;            /* TaggedElement */
1401 static int hf_z3950_seriesOrder = -1;             /* Order */
1402 static int hf_z3950_usageRight = -1;              /* Usage */
1403 static int hf_z3950_hits = -1;                    /* SEQUENCE_OF_HitVector */
1404 static int hf_z3950_hits_item = -1;               /* HitVector */
1405 static int hf_z3950_displayName = -1;             /* InternationalString */
1406 static int hf_z3950_supportedVariants = -1;       /* SEQUENCE_OF_Variant */
1407 static int hf_z3950_supportedVariants_item = -1;  /* Variant */
1408 static int hf_z3950_elementDescriptor = -1;       /* OCTET_STRING */
1409 static int hf_z3950_surrogateFor = -1;            /* TagPath */
1410 static int hf_z3950_surrogateElement = -1;        /* TagPath */
1411 static int hf_z3950_TagPath_item = -1;            /* TagPath_item */
1412 static int hf_z3950_ascending = -1;               /* BOOLEAN */
1413 static int hf_z3950_order = -1;                   /* INTEGER */
1414 static int hf_z3950_usage_type = -1;              /* T_usage_type */
1415 static int hf_z3950_restriction = -1;             /* InternationalString */
1416 static int hf_z3950_satisfier = -1;               /* Term */
1417 static int hf_z3950_offsetIntoElement = -1;       /* IntUnit */
1418 static int hf_z3950_length = -1;                  /* IntUnit */
1419 static int hf_z3950_hitRank = -1;                 /* INTEGER */
1420 static int hf_z3950_targetToken = -1;             /* OCTET_STRING */
1421 static int hf_z3950_globalVariantSetId = -1;      /* OBJECT_IDENTIFIER */
1422 static int hf_z3950_triples = -1;                 /* T_triples */
1423 static int hf_z3950_triples_item = -1;            /* T_triples_item */
1424 static int hf_z3950_variantSetId = -1;            /* OBJECT_IDENTIFIER */
1425 static int hf_z3950_class = -1;                   /* INTEGER */
1426 static int hf_z3950_variant_triples_item_value = -1;  /* T_variant_triples_item_value */
1427 static int hf_z3950_octetString = -1;             /* OCTET_STRING */
1428 static int hf_z3950_boolean = -1;                 /* BOOLEAN */
1429 static int hf_z3950_variant_triples_item_value_unit = -1;  /* Unit */
1430 static int hf_z3950_taskPackage_description = -1;  /* InternationalString */
1431 static int hf_z3950_targetReference = -1;         /* OCTET_STRING */
1432 static int hf_z3950_creationDateTime = -1;        /* GeneralizedTime */
1433 static int hf_z3950_taskStatus = -1;              /* T_taskStatus */
1434 static int hf_z3950_packageDiagnostics = -1;      /* SEQUENCE_OF_DiagRec */
1435 static int hf_z3950_packageDiagnostics_item = -1;  /* DiagRec */
1436 static int hf_z3950_challenge = -1;               /* Challenge */
1437 static int hf_z3950_response = -1;                /* Response */
1438 static int hf_z3950_Challenge_item = -1;          /* Challenge_item */
1439 static int hf_z3950_promptId = -1;                /* PromptId */
1440 static int hf_z3950_defaultResponse = -1;         /* InternationalString */
1441 static int hf_z3950_promptInfo = -1;              /* T_promptInfo */
1442 static int hf_z3950_challenge_item_promptInfo_character = -1;  /* InternationalString */
1443 static int hf_z3950_encrypted = -1;               /* Encryption */
1444 static int hf_z3950_regExpr = -1;                 /* InternationalString */
1445 static int hf_z3950_responseRequired = -1;        /* NULL */
1446 static int hf_z3950_allowedValues = -1;           /* SEQUENCE_OF_InternationalString */
1447 static int hf_z3950_allowedValues_item = -1;      /* InternationalString */
1448 static int hf_z3950_shouldSave = -1;              /* NULL */
1449 static int hf_z3950_challenge_item_dataType = -1;  /* T_challenge_item_dataType */
1450 static int hf_z3950_challenge_item_diagnostic = -1;  /* EXTERNAL */
1451 static int hf_z3950_Response_item = -1;           /* Response_item */
1452 static int hf_z3950_promptResponse = -1;          /* T_promptResponse */
1453 static int hf_z3950_accept = -1;                  /* BOOLEAN */
1454 static int hf_z3950_acknowledge = -1;             /* NULL */
1455 static int hf_z3950_enummeratedPrompt = -1;       /* T_enummeratedPrompt */
1456 static int hf_z3950_promptId_enummeratedPrompt_type = -1;  /* T_promptId_enummeratedPrompt_type */
1457 static int hf_z3950_suggestedString = -1;         /* InternationalString */
1458 static int hf_z3950_nonEnumeratedPrompt = -1;     /* InternationalString */
1459 static int hf_z3950_cryptType = -1;               /* OCTET_STRING */
1460 static int hf_z3950_credential = -1;              /* OCTET_STRING */
1461 static int hf_z3950_data = -1;                    /* OCTET_STRING */
1462 static int hf_z3950_dES_RN_Object_challenge = -1;  /* DRNType */
1463 static int hf_z3950_rES_RN_Object_response = -1;  /* DRNType */
1464 static int hf_z3950_dRNType_userId = -1;          /* OCTET_STRING */
1465 static int hf_z3950_salt = -1;                    /* OCTET_STRING */
1466 static int hf_z3950_randomNumber = -1;            /* OCTET_STRING */
1467 static int hf_z3950_kRBObject_challenge = -1;     /* KRBRequest */
1468 static int hf_z3950_kRBObject_response = -1;      /* KRBResponse */
1469 static int hf_z3950_service = -1;                 /* InternationalString */
1470 static int hf_z3950_instance = -1;                /* InternationalString */
1471 static int hf_z3950_realm = -1;                   /* InternationalString */
1472 static int hf_z3950_userid = -1;                  /* InternationalString */
1473 static int hf_z3950_ticket = -1;                  /* OCTET_STRING */
1474 static int hf_z3950_SearchInfoReport_item = -1;   /* SearchInfoReport_item */
1475 static int hf_z3950_subqueryId = -1;              /* InternationalString */
1476 static int hf_z3950_fullQuery = -1;               /* BOOLEAN */
1477 static int hf_z3950_subqueryExpression = -1;      /* QueryExpression */
1478 static int hf_z3950_subqueryInterpretation = -1;  /* QueryExpression */
1479 static int hf_z3950_subqueryRecommendation = -1;  /* QueryExpression */
1480 static int hf_z3950_subqueryCount = -1;           /* INTEGER */
1481 static int hf_z3950_subqueryWeight = -1;          /* IntUnit */
1482 static int hf_z3950_resultsByDB = -1;             /* ResultsByDB */
1483 static int hf_z3950_ResultsByDB_item = -1;        /* ResultsByDB_item */
1484 static int hf_z3950_databases = -1;               /* T_databases */
1485 static int hf_z3950_all = -1;                     /* NULL */
1486 static int hf_z3950_list = -1;                    /* SEQUENCE_OF_DatabaseName */
1487 static int hf_z3950_list_item = -1;               /* DatabaseName */
1488 static int hf_z3950_count = -1;                   /* INTEGER */
1489 static int hf_z3950_queryExpression_term = -1;    /* T_queryExpression_term */
1490 static int hf_z3950_queryTerm = -1;               /* Term */
1491 static int hf_z3950_termComment = -1;             /* InternationalString */
1492 /* named bits */
1493 static int hf_z3950_ProtocolVersion_U_version_1 = -1;
1494 static int hf_z3950_ProtocolVersion_U_version_2 = -1;
1495 static int hf_z3950_ProtocolVersion_U_version_3 = -1;
1496 static int hf_z3950_Options_U_search = -1;
1497 static int hf_z3950_Options_U_present = -1;
1498 static int hf_z3950_Options_U_delSet = -1;
1499 static int hf_z3950_Options_U_resourceReport = -1;
1500 static int hf_z3950_Options_U_triggerResourceCtrl = -1;
1501 static int hf_z3950_Options_U_resourceCtrl = -1;
1502 static int hf_z3950_Options_U_accessCtrl = -1;
1503 static int hf_z3950_Options_U_scan = -1;
1504 static int hf_z3950_Options_U_sort = -1;
1505 static int hf_z3950_Options_U_spare_bit9 = -1;
1506 static int hf_z3950_Options_U_extendedServices = -1;
1507 static int hf_z3950_Options_U_level_1Segmentation = -1;
1508 static int hf_z3950_Options_U_level_2Segmentation = -1;
1509 static int hf_z3950_Options_U_concurrentOperations = -1;
1510 static int hf_z3950_Options_U_namedResultSets = -1;
1511 
1512 /*--- End of included file: packet-z3950-hf.c ---*/
1513 #line 655 "./asn1/z3950/packet-z3950-template.c"
1514 
1515 static int hf_z3950_referenceId_printable = -1;
1516 static int hf_z3950_general_printable = -1;
1517 
1518 /* Initialize the subtree pointers */
1519 static int ett_z3950 = -1;
1520 
1521 
1522 /*--- Included file: packet-z3950-ett.c ---*/
1523 #line 1 "./asn1/z3950/packet-z3950-ett.c"
1524 static gint ett_z3950_PDU = -1;
1525 static gint ett_z3950_InitializeRequest = -1;
1526 static gint ett_z3950_T_idAuthentication = -1;
1527 static gint ett_z3950_T_idPass = -1;
1528 static gint ett_z3950_InitializeResponse = -1;
1529 static gint ett_z3950_ProtocolVersion_U = -1;
1530 static gint ett_z3950_Options_U = -1;
1531 static gint ett_z3950_SearchRequest = -1;
1532 static gint ett_z3950_SEQUENCE_OF_DatabaseName = -1;
1533 static gint ett_z3950_Query = -1;
1534 static gint ett_z3950_RPNQuery = -1;
1535 static gint ett_z3950_RPNStructure = -1;
1536 static gint ett_z3950_T_rpnRpnOp = -1;
1537 static gint ett_z3950_Operand = -1;
1538 static gint ett_z3950_AttributesPlusTerm_U = -1;
1539 static gint ett_z3950_ResultSetPlusAttributes_U = -1;
1540 static gint ett_z3950_SEQUENCE_OF_AttributeElement = -1;
1541 static gint ett_z3950_Term = -1;
1542 static gint ett_z3950_Operator_U = -1;
1543 static gint ett_z3950_AttributeElement = -1;
1544 static gint ett_z3950_T_attributeValue = -1;
1545 static gint ett_z3950_T_attributeValue_complex = -1;
1546 static gint ett_z3950_SEQUENCE_OF_StringOrNumeric = -1;
1547 static gint ett_z3950_T_semanticAction = -1;
1548 static gint ett_z3950_ProximityOperator = -1;
1549 static gint ett_z3950_T_proximityUnitCode = -1;
1550 static gint ett_z3950_SearchResponse = -1;
1551 static gint ett_z3950_PresentRequest = -1;
1552 static gint ett_z3950_SEQUENCE_OF_Range = -1;
1553 static gint ett_z3950_T_recordComposition = -1;
1554 static gint ett_z3950_Segment = -1;
1555 static gint ett_z3950_SEQUENCE_OF_NamePlusRecord = -1;
1556 static gint ett_z3950_PresentResponse = -1;
1557 static gint ett_z3950_Records = -1;
1558 static gint ett_z3950_SEQUENCE_OF_DiagRec = -1;
1559 static gint ett_z3950_NamePlusRecord = -1;
1560 static gint ett_z3950_T_record = -1;
1561 static gint ett_z3950_FragmentSyntax = -1;
1562 static gint ett_z3950_DiagRec = -1;
1563 static gint ett_z3950_DefaultDiagFormat = -1;
1564 static gint ett_z3950_T_addinfo = -1;
1565 static gint ett_z3950_Range = -1;
1566 static gint ett_z3950_ElementSetNames = -1;
1567 static gint ett_z3950_T_databaseSpecific = -1;
1568 static gint ett_z3950_T_databaseSpecific_item = -1;
1569 static gint ett_z3950_CompSpec = -1;
1570 static gint ett_z3950_T_dbSpecific = -1;
1571 static gint ett_z3950_T_dbSpecific_item = -1;
1572 static gint ett_z3950_T_compSpec_recordSyntax = -1;
1573 static gint ett_z3950_Specification = -1;
1574 static gint ett_z3950_T_specification_elementSpec = -1;
1575 static gint ett_z3950_DeleteResultSetRequest = -1;
1576 static gint ett_z3950_SEQUENCE_OF_ResultSetId = -1;
1577 static gint ett_z3950_DeleteResultSetResponse = -1;
1578 static gint ett_z3950_ListStatuses = -1;
1579 static gint ett_z3950_ListStatuses_item = -1;
1580 static gint ett_z3950_AccessControlRequest = -1;
1581 static gint ett_z3950_T_securityChallenge = -1;
1582 static gint ett_z3950_AccessControlResponse = -1;
1583 static gint ett_z3950_T_securityChallengeResponse = -1;
1584 static gint ett_z3950_ResourceControlRequest = -1;
1585 static gint ett_z3950_ResourceControlResponse = -1;
1586 static gint ett_z3950_TriggerResourceControlRequest = -1;
1587 static gint ett_z3950_ResourceReportRequest = -1;
1588 static gint ett_z3950_ResourceReportResponse = -1;
1589 static gint ett_z3950_ScanRequest = -1;
1590 static gint ett_z3950_ScanResponse = -1;
1591 static gint ett_z3950_ListEntries = -1;
1592 static gint ett_z3950_SEQUENCE_OF_Entry = -1;
1593 static gint ett_z3950_Entry = -1;
1594 static gint ett_z3950_TermInfo = -1;
1595 static gint ett_z3950_SEQUENCE_OF_AttributesPlusTerm = -1;
1596 static gint ett_z3950_OccurrenceByAttributes = -1;
1597 static gint ett_z3950_OccurrenceByAttributes_item = -1;
1598 static gint ett_z3950_T_occurrences = -1;
1599 static gint ett_z3950_T_byDatabase = -1;
1600 static gint ett_z3950_T_byDatabase_item = -1;
1601 static gint ett_z3950_SortRequest = -1;
1602 static gint ett_z3950_SEQUENCE_OF_InternationalString = -1;
1603 static gint ett_z3950_SEQUENCE_OF_SortKeySpec = -1;
1604 static gint ett_z3950_SortResponse = -1;
1605 static gint ett_z3950_SortKeySpec = -1;
1606 static gint ett_z3950_T_missingValueAction = -1;
1607 static gint ett_z3950_SortElement = -1;
1608 static gint ett_z3950_T_datbaseSpecific = -1;
1609 static gint ett_z3950_T_datbaseSpecific_item = -1;
1610 static gint ett_z3950_SortKey = -1;
1611 static gint ett_z3950_T_sortAttributes = -1;
1612 static gint ett_z3950_ExtendedServicesRequest = -1;
1613 static gint ett_z3950_ExtendedServicesResponse = -1;
1614 static gint ett_z3950_Permissions = -1;
1615 static gint ett_z3950_Permissions_item = -1;
1616 static gint ett_z3950_T_allowableFunctions = -1;
1617 static gint ett_z3950_Close = -1;
1618 static gint ett_z3950_OtherInformation_U = -1;
1619 static gint ett_z3950_T__untag_item = -1;
1620 static gint ett_z3950_T_information = -1;
1621 static gint ett_z3950_InfoCategory = -1;
1622 static gint ett_z3950_IntUnit = -1;
1623 static gint ett_z3950_Unit = -1;
1624 static gint ett_z3950_StringOrNumeric = -1;
1625 static gint ett_z3950_OCLC_UserInformation = -1;
1626 static gint ett_z3950_SEQUENCE_OF_DBName = -1;
1627 static gint ett_z3950_OPACRecord = -1;
1628 static gint ett_z3950_SEQUENCE_OF_HoldingsRecord = -1;
1629 static gint ett_z3950_HoldingsRecord = -1;
1630 static gint ett_z3950_HoldingsAndCircData = -1;
1631 static gint ett_z3950_SEQUENCE_OF_Volume = -1;
1632 static gint ett_z3950_SEQUENCE_OF_CircRecord = -1;
1633 static gint ett_z3950_Volume = -1;
1634 static gint ett_z3950_CircRecord = -1;
1635 static gint ett_z3950_DiagnosticFormat = -1;
1636 static gint ett_z3950_DiagnosticFormat_item = -1;
1637 static gint ett_z3950_T_diagnosticFormat_item_diagnostic = -1;
1638 static gint ett_z3950_DiagFormat = -1;
1639 static gint ett_z3950_T_tooMany = -1;
1640 static gint ett_z3950_T_badSpec = -1;
1641 static gint ett_z3950_SEQUENCE_OF_Specification = -1;
1642 static gint ett_z3950_T_dbUnavail = -1;
1643 static gint ett_z3950_T_why = -1;
1644 static gint ett_z3950_T_attribute = -1;
1645 static gint ett_z3950_T_attCombo = -1;
1646 static gint ett_z3950_SEQUENCE_OF_AttributeList = -1;
1647 static gint ett_z3950_T_diagFormat_term = -1;
1648 static gint ett_z3950_T_diagFormat_proximity = -1;
1649 static gint ett_z3950_T_scan = -1;
1650 static gint ett_z3950_T_sort = -1;
1651 static gint ett_z3950_T_segmentation = -1;
1652 static gint ett_z3950_T_extServices = -1;
1653 static gint ett_z3950_T_accessCtrl = -1;
1654 static gint ett_z3950_T_diagFormat_accessCtrl_oid = -1;
1655 static gint ett_z3950_T_alternative = -1;
1656 static gint ett_z3950_T_diagFormat_recordSyntax = -1;
1657 static gint ett_z3950_T_suggestedAlternatives = -1;
1658 static gint ett_z3950_Explain_Record = -1;
1659 static gint ett_z3950_TargetInfo = -1;
1660 static gint ett_z3950_SEQUENCE_OF_DatabaseList = -1;
1661 static gint ett_z3950_SEQUENCE_OF_NetworkAddress = -1;
1662 static gint ett_z3950_DatabaseInfo = -1;
1663 static gint ett_z3950_SEQUENCE_OF_HumanString = -1;
1664 static gint ett_z3950_T_recordCount = -1;
1665 static gint ett_z3950_SchemaInfo = -1;
1666 static gint ett_z3950_T_tagTypeMapping = -1;
1667 static gint ett_z3950_T_tagTypeMapping_item = -1;
1668 static gint ett_z3950_SEQUENCE_OF_ElementInfo = -1;
1669 static gint ett_z3950_ElementInfo = -1;
1670 static gint ett_z3950_Path = -1;
1671 static gint ett_z3950_Path_item = -1;
1672 static gint ett_z3950_ElementDataType = -1;
1673 static gint ett_z3950_TagSetInfo = -1;
1674 static gint ett_z3950_T_tagSetInfo_elements = -1;
1675 static gint ett_z3950_T_tagSetInfo_elements_item = -1;
1676 static gint ett_z3950_RecordSyntaxInfo = -1;
1677 static gint ett_z3950_T_transferSyntaxes = -1;
1678 static gint ett_z3950_AttributeSetInfo = -1;
1679 static gint ett_z3950_SEQUENCE_OF_AttributeType = -1;
1680 static gint ett_z3950_AttributeType = -1;
1681 static gint ett_z3950_SEQUENCE_OF_AttributeDescription = -1;
1682 static gint ett_z3950_AttributeDescription = -1;
1683 static gint ett_z3950_TermListInfo = -1;
1684 static gint ett_z3950_T_termLists = -1;
1685 static gint ett_z3950_T_termLists_item = -1;
1686 static gint ett_z3950_ExtendedServicesInfo = -1;
1687 static gint ett_z3950_AttributeDetails = -1;
1688 static gint ett_z3950_SEQUENCE_OF_AttributeSetDetails = -1;
1689 static gint ett_z3950_AttributeSetDetails = -1;
1690 static gint ett_z3950_SEQUENCE_OF_AttributeTypeDetails = -1;
1691 static gint ett_z3950_AttributeTypeDetails = -1;
1692 static gint ett_z3950_SEQUENCE_OF_AttributeValue = -1;
1693 static gint ett_z3950_OmittedAttributeInterpretation = -1;
1694 static gint ett_z3950_AttributeValue = -1;
1695 static gint ett_z3950_TermListDetails = -1;
1696 static gint ett_z3950_T_scanInfo = -1;
1697 static gint ett_z3950_SEQUENCE_OF_Term = -1;
1698 static gint ett_z3950_ElementSetDetails = -1;
1699 static gint ett_z3950_SEQUENCE_OF_PerElementDetails = -1;
1700 static gint ett_z3950_RetrievalRecordDetails = -1;
1701 static gint ett_z3950_PerElementDetails = -1;
1702 static gint ett_z3950_SEQUENCE_OF_Path = -1;
1703 static gint ett_z3950_RecordTag = -1;
1704 static gint ett_z3950_SortDetails = -1;
1705 static gint ett_z3950_SEQUENCE_OF_SortKeyDetails = -1;
1706 static gint ett_z3950_SortKeyDetails = -1;
1707 static gint ett_z3950_T_sortType = -1;
1708 static gint ett_z3950_ProcessingInformation = -1;
1709 static gint ett_z3950_VariantSetInfo = -1;
1710 static gint ett_z3950_SEQUENCE_OF_VariantClass = -1;
1711 static gint ett_z3950_VariantClass = -1;
1712 static gint ett_z3950_SEQUENCE_OF_VariantType = -1;
1713 static gint ett_z3950_VariantType = -1;
1714 static gint ett_z3950_VariantValue = -1;
1715 static gint ett_z3950_ValueSet = -1;
1716 static gint ett_z3950_SEQUENCE_OF_ValueDescription = -1;
1717 static gint ett_z3950_ValueRange = -1;
1718 static gint ett_z3950_ValueDescription = -1;
1719 static gint ett_z3950_UnitInfo = -1;
1720 static gint ett_z3950_SEQUENCE_OF_UnitType = -1;
1721 static gint ett_z3950_UnitType = -1;
1722 static gint ett_z3950_SEQUENCE_OF_Units = -1;
1723 static gint ett_z3950_Units = -1;
1724 static gint ett_z3950_CategoryList = -1;
1725 static gint ett_z3950_SEQUENCE_OF_CategoryInfo = -1;
1726 static gint ett_z3950_CategoryInfo = -1;
1727 static gint ett_z3950_CommonInfo = -1;
1728 static gint ett_z3950_HumanString = -1;
1729 static gint ett_z3950_HumanString_item = -1;
1730 static gint ett_z3950_IconObject = -1;
1731 static gint ett_z3950_IconObject_item = -1;
1732 static gint ett_z3950_T_bodyType = -1;
1733 static gint ett_z3950_ContactInfo = -1;
1734 static gint ett_z3950_NetworkAddress = -1;
1735 static gint ett_z3950_T_internetAddress = -1;
1736 static gint ett_z3950_T_osiPresentationAddress = -1;
1737 static gint ett_z3950_T_networkAddress_other = -1;
1738 static gint ett_z3950_AccessInfo = -1;
1739 static gint ett_z3950_SEQUENCE_OF_QueryTypeDetails = -1;
1740 static gint ett_z3950_T_diagnosticsSets = -1;
1741 static gint ett_z3950_SEQUENCE_OF_AttributeSetId = -1;
1742 static gint ett_z3950_T_schemas = -1;
1743 static gint ett_z3950_T_recordSyntaxes = -1;
1744 static gint ett_z3950_T_resourceChallenges = -1;
1745 static gint ett_z3950_T_variantSets = -1;
1746 static gint ett_z3950_SEQUENCE_OF_ElementSetName = -1;
1747 static gint ett_z3950_QueryTypeDetails = -1;
1748 static gint ett_z3950_PrivateCapabilities = -1;
1749 static gint ett_z3950_T_privateCapabilities_operators = -1;
1750 static gint ett_z3950_T_privateCapabilities_operators_item = -1;
1751 static gint ett_z3950_SEQUENCE_OF_SearchKey = -1;
1752 static gint ett_z3950_RpnCapabilities = -1;
1753 static gint ett_z3950_T_operators = -1;
1754 static gint ett_z3950_Iso8777Capabilities = -1;
1755 static gint ett_z3950_ProximitySupport = -1;
1756 static gint ett_z3950_T_unitsSupported = -1;
1757 static gint ett_z3950_T_unitsSupported_item = -1;
1758 static gint ett_z3950_T_proximitySupport_unitsSupported_item_private = -1;
1759 static gint ett_z3950_SearchKey = -1;
1760 static gint ett_z3950_AccessRestrictions = -1;
1761 static gint ett_z3950_AccessRestrictions_item = -1;
1762 static gint ett_z3950_T_accessChallenges = -1;
1763 static gint ett_z3950_Costs = -1;
1764 static gint ett_z3950_T_otherCharges = -1;
1765 static gint ett_z3950_T_otherCharges_item = -1;
1766 static gint ett_z3950_Charge = -1;
1767 static gint ett_z3950_DatabaseList = -1;
1768 static gint ett_z3950_AttributeCombinations = -1;
1769 static gint ett_z3950_SEQUENCE_OF_AttributeCombination = -1;
1770 static gint ett_z3950_AttributeCombination = -1;
1771 static gint ett_z3950_AttributeOccurrence = -1;
1772 static gint ett_z3950_T_attributeOccurrence_attributeValues = -1;
1773 static gint ett_z3950_BriefBib = -1;
1774 static gint ett_z3950_SEQUENCE_OF_FormatSpec = -1;
1775 static gint ett_z3950_FormatSpec = -1;
1776 static gint ett_z3950_GenericRecord = -1;
1777 static gint ett_z3950_TaggedElement = -1;
1778 static gint ett_z3950_ElementData = -1;
1779 static gint ett_z3950_SEQUENCE_OF_TaggedElement = -1;
1780 static gint ett_z3950_ElementMetaData = -1;
1781 static gint ett_z3950_SEQUENCE_OF_HitVector = -1;
1782 static gint ett_z3950_SEQUENCE_OF_Variant = -1;
1783 static gint ett_z3950_TagPath = -1;
1784 static gint ett_z3950_TagPath_item = -1;
1785 static gint ett_z3950_Order = -1;
1786 static gint ett_z3950_Usage = -1;
1787 static gint ett_z3950_HitVector = -1;
1788 static gint ett_z3950_Variant = -1;
1789 static gint ett_z3950_T_triples = -1;
1790 static gint ett_z3950_T_triples_item = -1;
1791 static gint ett_z3950_T_variant_triples_item_value = -1;
1792 static gint ett_z3950_TaskPackage = -1;
1793 static gint ett_z3950_PromptObject = -1;
1794 static gint ett_z3950_Challenge = -1;
1795 static gint ett_z3950_Challenge_item = -1;
1796 static gint ett_z3950_T_promptInfo = -1;
1797 static gint ett_z3950_Response = -1;
1798 static gint ett_z3950_Response_item = -1;
1799 static gint ett_z3950_T_promptResponse = -1;
1800 static gint ett_z3950_PromptId = -1;
1801 static gint ett_z3950_T_enummeratedPrompt = -1;
1802 static gint ett_z3950_Encryption = -1;
1803 static gint ett_z3950_DES_RN_Object = -1;
1804 static gint ett_z3950_DRNType = -1;
1805 static gint ett_z3950_KRBObject = -1;
1806 static gint ett_z3950_KRBRequest = -1;
1807 static gint ett_z3950_KRBResponse = -1;
1808 static gint ett_z3950_SearchInfoReport = -1;
1809 static gint ett_z3950_SearchInfoReport_item = -1;
1810 static gint ett_z3950_ResultsByDB = -1;
1811 static gint ett_z3950_ResultsByDB_item = -1;
1812 static gint ett_z3950_T_databases = -1;
1813 static gint ett_z3950_QueryExpression = -1;
1814 static gint ett_z3950_T_queryExpression_term = -1;
1815 
1816 /*--- End of included file: packet-z3950-ett.c ---*/
1817 #line 663 "./asn1/z3950/packet-z3950-template.c"
1818 
1819 /* MARC variables and forwards */
1820 
1821 static int dissect_marc_record(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void * data _U_);
1822 
1823 /* MARC fields */
1824 static int hf_marc_record = -1;
1825 static int hf_marc_record_terminator = -1;
1826 static int hf_marc_leader = -1;
1827 static int hf_marc_leader_length = -1;
1828 static int hf_marc_leader_status = -1;
1829 static int hf_marc_leader_type = -1;
1830 static int hf_marc_leader_biblevel = -1;
1831 static int hf_marc_leader_control = -1;
1832 static int hf_marc_leader_encoding = -1;
1833 static int hf_marc_leader_indicator_count = -1;
1834 static int hf_marc_leader_subfield_count = -1;
1835 static int hf_marc_leader_data_offset = -1;
1836 static int hf_marc_leader_encoding_level = -1;
1837 static int hf_marc_leader_descriptive_cataloging = -1;
1838 static int hf_marc_leader_multipart_level = -1;
1839 static int hf_marc_leader_length_of_field_length = -1;
1840 static int hf_marc_leader_starting_character_position_length = -1;
1841 static int hf_marc_leader_implementation_defined_length = -1;
1842 static int hf_marc_directory = -1;
1843 static int hf_marc_directory_entry = -1;
1844 static int hf_marc_directory_entry_tag = -1;
1845 static int hf_marc_directory_entry_length = -1;
1846 static int hf_marc_directory_entry_starting_position = -1;
1847 static int hf_marc_directory_terminator = -1;
1848 static int hf_marc_fields = -1;
1849 static int hf_marc_field = -1;
1850 static int hf_marc_field_control = -1;
1851 static int hf_marc_field_terminator = -1;
1852 static int hf_marc_field_indicator1 = -1;
1853 static int hf_marc_field_indicator2 = -1;
1854 static int hf_marc_field_subfield_indicator = -1;
1855 static int hf_marc_field_subfield_tag = -1;
1856 static int hf_marc_field_subfield = -1;
1857 
1858 /* MARC subtree pointers */
1859 static int ett_marc_record = -1;
1860 static int ett_marc_leader = -1;
1861 static int ett_marc_directory = -1;
1862 static int ett_marc_directory_entry = -1;
1863 static int ett_marc_fields = -1;
1864 static int ett_marc_field = -1;
1865 
1866 /* MARC expert fields */
1867 static expert_field ei_marc_invalid_length = EI_INIT;
1868 static expert_field ei_marc_invalid_value = EI_INIT;
1869 static expert_field ei_marc_invalid_record_length = EI_INIT;
1870 
1871 /* MARC value strings */
1872 
1873 static const value_string marc_tag_names[] = {
1874     { 1, "Control Number" },
1875     { 3, "Control Number Identifier" },
1876     { 5, "Date and Time of Latest Transaction" },
1877     { 6, "Fixed-length Data Elements - Additional Material Characteristics" },
1878     { 8, "Fixed-length Data Elements" },
1879     { 7, "Physical Description Fixed Field" },
1880     { 10, "Library of Congress Control Number" },
1881     { 15, "National Bibliography Number" },
1882     { 16, "National Bibliographic Agency Control Number" },
1883     { 17, "Copyright or Legal Deposit Number" },
1884     { 20, "International Standard Book Number (ISBN)" },
1885     { 22, "International Standard Serial Number (ISSN)" },
1886     { 24, "Other Standard Identifier" },
1887     { 25, "Overseas Acquisition Number" },
1888     { 26, "Fingerprint Identifier" },
1889     { 27, "Standard Technical Report Number" },
1890     { 28, "Publisher or Distributor Number" },
1891     { 30, "CODEN Designation" },
1892     { 32, "Postal Registration Number" },
1893     { 33, "Date/Time and Place of an Event" },
1894     { 35, "System Control Number" },
1895     { 37, "Source of Acquisition" },
1896     { 38, "Record Content Licensor" },
1897     { 40, "Cataloging Source" },
1898     { 41, "Language Code" },
1899     { 42, "Authentication Code" },
1900     { 43, "Geographic Area Code" },
1901     { 44, "Country of Publishing/Producing Entity Code" },
1902     { 45, "Time Period of Content" },
1903     { 47, "Form of Musical Composition Code" },
1904     { 50, "Library of Congress Call Number" },
1905     { 51, "Library of Congress Copy, Issue, Offprint Statement" },
1906     { 60, "National Library of Medicine Call Number" },
1907     { 66, "Character Sets Present" },
1908     { 80, "Universal Decimal Classification Number" },
1909     { 82, "Dewey Decimal Classification Number" },
1910     { 83, "Additional Dewey Decimal Classification Number" },
1911     { 84, "Other Classification Number" },
1912     { 100, "Main Entry - Personal Name" },
1913     { 110, "Main Entry - Corporate Name" },
1914     { 111, "Main Entry - Meeting Name" },
1915     { 130, "Main Entry - Uniform Title" },
1916     { 210, "Abbreviated Title" },
1917     { 222, "Key Title" },
1918     { 240, "Uniform Title" },
1919     { 242, "Translation of Title by Cataloging Agency" },
1920     { 243, "Collective Uniform Title" },
1921     { 245, "Title Statement" },
1922     { 246, "Varying Form of Title" },
1923     { 247, "Former Title" },
1924     { 249, "Local LoC Varying Form of Title" },
1925     { 250, "Edition Statement" },
1926     { 260, "Publication, Distribution, etc. (Imprint)" },
1927     { 264, "Production, Publication, Distribution, Manufacture, and Copyright Notice" },
1928     { 300, "Physical Description" },
1929     { 310, "Current Publication Frequency" },
1930     { 321, "former Publication Frequency" },
1931     { 336, "Content Type" },
1932     { 337, "Media Type" },
1933     { 338, "Carrier Type" },
1934     { 340, "Physical Medium" },
1935     { 362, "Dates of Publication and/or Sequential Designation" },
1936     { 400, "Series Statement/Added Entry-Personal Name" },
1937     { 410, "Series Statement/Added Entry-Corporate Name" },
1938     { 411, "Series Statement/Added Entry-Meeting Name" },
1939     { 440, "Series Statement/Added Entry-Title" },
1940     { 490, "Series Statement" },
1941     { 500, "General Note" },
1942     { 504, "Bibliography, etc. Note" },
1943     { 505, "Formatted Contents Note" },
1944     { 506, "Restrictions on Access Note" },
1945     { 508, "Creation/Production Credits Note" },
1946     { 510, "Citation/References Note" },
1947     { 511, "Participant or Performer Note" },
1948     { 515, "Numbering Peculiarities Note" },
1949     { 518, "Date/Time and Place of an Event Note" },
1950     { 520, "Summary, etc." },
1951     { 521, "Target Audience Note" },
1952     { 522, "Geographic Coverage Note" },
1953     { 524, "Preferred Citation of Described Materials Note" },
1954     { 525, "Supplement Note" },
1955     { 530, "Additional Physical Form available Note" },
1956     { 532, "Accessibility Note" },
1957     { 533, "Reproduction Note" },
1958     { 534, "Original Version Note" },
1959     { 538, "System Details Note" },
1960     { 540, "Terms Governing Use and Reproduction Note" },
1961     { 541, "Immediate Source of Acquisition Note" },
1962     { 542, "Information Relating to Copyright Status" },
1963     { 546, "Language Note" },
1964     { 550, "Issuing Body Note" },
1965     { 555, "Cumulative Index/Finding Aids Note" },
1966     { 583, "Action Note" },
1967     { 588, "Source of Description, Etc. Note" },
1968     { 590, "Local LoC Note" },
1969     { 591, "Local LoC \"With\" Note" },
1970     { 592, "Local LoC Acquisition Note" },
1971     { 600, "Subject Added Entry - Personal Name" },
1972     { 610, "Subject Added Entry - Corporate Name" },
1973     { 611, "Subject Added Entry - Meeting Name" },
1974     { 630, "Subject Added Entry - Uniform Title" },
1975     { 647, "Subject Added Entry - Named Event" },
1976     { 648, "Subject Added Entry - Chronological Term" },
1977     { 650, "Subject Added Entry - Topical Term" },
1978     { 651, "Subject Added Entry - Geographic Name" },
1979     { 653, "Index Term - Uncontrolled" },
1980     { 654, "Subject Added Entry - Faceted Topical Terms" },
1981     { 655, "Index Term - Genre/Form" },
1982     { 656, "Index Term - Occupation" },
1983     { 657, "Index Term - Function" },
1984     { 658, "Index Term - Curriculum Objective" },
1985     { 662, "Subject Added Entry - Hierarchical Place Name" },
1986     { 700, "Added Entry - Personal Name" },
1987     { 710, "Added Entry - Corporate Name" },
1988     { 711, "Added Entry - Meeting Name" },
1989     { 720, "Added Entry - Uncontrolled Name" },
1990     { 730, "Added Entry - Uniform Title" },
1991     { 740, "Added Entry - Uncontrolled Related/Analytical Title" },
1992     { 751, "Added Entry - Geographic Name" },
1993     { 752, "Added Entry - Hierarchical Place Name" },
1994     { 753, "System Details Access to Computer Files" },
1995     { 754, "Added Entry - Taxonomic Identification" },
1996     { 758, "Resource Identifier" },
1997     { 760, "Main Series Entry" },
1998     { 762, "Subseries Entry" },
1999     { 765, "Original Language Entry" },
2000     { 767, "Translation Entry" },
2001     { 770, "Supplement/Special Issue Entry" },
2002     { 772, "Supplement Parent Entry" },
2003     { 773, "Host Item Entry" },
2004     { 774, "Constituent Unit Entry" },
2005     { 775, "Other Edition Entry" },
2006     { 776, "Additional Physical Form Entry" },
2007     { 777, "Issued With Entry" },
2008     { 780, "Preceding Entry" },
2009     { 785, "Succeeding Entry" },
2010     { 786, "Data Source Entry" },
2011     { 787, "Other Relationship Entry" },
2012     { 800, "Series Added Entry - Personal Name" },
2013     { 810, "Series Added Entry - Corporate Name" },
2014     { 811, "Series Added Entry - Meeting Name" },
2015     { 830, "Series Added Entry - Uniform Title" },
2016     { 850, "Holding Institution" },
2017     { 852, "Location" },
2018     { 853, "Captions and Pattern - Basic Bibliographic Unit" },
2019     { 856, "Electronic Location and Access" },
2020     { 859, "Local LoC Electronic Location and Access" },
2021     { 863, "Enumeration and Chronology - Basic Bibliographic Unit" },
2022     { 880, "Alternate Graphic Representation" },
2023     { 890, "Local LoC Visible File Entry" },
2024     { 906, "Local LoC Processing Data" },
2025     { 920, "Local LoC Selection Decision" },
2026     { 922, "Local LoC Book Source" },
2027     { 923, "Local LoC Supplier Invoice or Shipment Id" },
2028     { 925, "Local LoC Selection Decision" },
2029     { 952, "Local LoC Cataloger's Permanent Note" },
2030     { 955, "Local LoC Functional Identifying Information" },
2031     { 984, "Local LoC Shelflist Compare Status" },
2032     { 985, "Local LoC Record History" },
2033     { 987, "Local LoC Conversation History" },
2034     { 991, "Local LoC Location Information" },
2035     { 992, "Local LoC Location Information" },
2036     { 0, NULL}
2037 };
2038 
2039 static int
dissect_z3950_printable_OCTET_STRING(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2040 dissect_z3950_printable_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2041     tvbuff_t *next_tvb = NULL;
2042     int hf_alternate = -1;
2043     guint old_offset = offset;
2044 
2045     if (hf_index == hf_z3950_referenceId) {
2046         hf_alternate = hf_z3950_referenceId_printable;
2047     }
2048     else if ( hf_index == hf_z3950_general) {
2049         hf_alternate = hf_z3950_general_printable;
2050     }
2051 
2052     if (hf_alternate > 0) {
2053         /* extract the value of the octet string so we can look at it. */
2054         /* This does not display anything because tree is NULL. */
2055         offset = dissect_ber_octet_string(implicit_tag, actx, NULL, tvb, offset, hf_index, &next_tvb);
2056 
2057         if (next_tvb &&
2058             tvb_ascii_isprint(next_tvb, 0, tvb_reported_length(next_tvb))) {
2059                 proto_tree_add_item(tree, hf_alternate, next_tvb,
2060                     0, tvb_reported_length(next_tvb), ENC_ASCII|ENC_NA);
2061         }
2062         else {
2063             offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb,
2064                          old_offset, hf_index, NULL);
2065         }
2066     }
2067     else {
2068         offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb,
2069                      old_offset, hf_index, NULL);
2070     }
2071 
2072     return offset;
2073 }
2074 
2075 
2076 /*--- Included file: packet-z3950-fn.c ---*/
2077 #line 1 "./asn1/z3950/packet-z3950-fn.c"
2078 /*--- Cyclic dependencies ---*/
2079 
2080 /* RPNStructure -> RPNStructure/rpnRpnOp -> RPNStructure */
2081 /* RPNStructure -> RPNStructure/rpnRpnOp -> RPNStructure */
2082 static int dissect_z3950_RPNStructure(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
2083 
2084 /* ElementInfo -> ElementDataType -> ElementDataType/structured -> ElementInfo */
2085 static int dissect_z3950_ElementInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
2086 
2087 /* TaggedElement -> ElementData -> ElementData/subtree -> TaggedElement */
2088 static int dissect_z3950_TaggedElement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
2089 
2090 
2091 
2092 
2093 static int
dissect_z3950_OCTET_STRING(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2094 dissect_z3950_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2095   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
2096                                        NULL);
2097 
2098   return offset;
2099 }
2100 
2101 
2102 
2103 static int
dissect_z3950_ReferenceId(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2104 dissect_z3950_ReferenceId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2105 #line 142 "./asn1/z3950/z3950.cnf"
2106   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2107               hf_index, BER_CLASS_CON, 2, TRUE,
2108               dissect_z3950_printable_OCTET_STRING);
2109 
2110 
2111 
2112   return offset;
2113 }
2114 
2115 
2116 static int * const ProtocolVersion_U_bits[] = {
2117   &hf_z3950_ProtocolVersion_U_version_1,
2118   &hf_z3950_ProtocolVersion_U_version_2,
2119   &hf_z3950_ProtocolVersion_U_version_3,
2120   NULL
2121 };
2122 
2123 static int
dissect_z3950_ProtocolVersion_U(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2124 dissect_z3950_ProtocolVersion_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2125   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
2126                                     ProtocolVersion_U_bits, 3, hf_index, ett_z3950_ProtocolVersion_U,
2127                                     NULL);
2128 
2129   return offset;
2130 }
2131 
2132 
2133 
2134 static int
dissect_z3950_ProtocolVersion(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2135 dissect_z3950_ProtocolVersion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2136   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2137                                       hf_index, BER_CLASS_CON, 3, TRUE, dissect_z3950_ProtocolVersion_U);
2138 
2139   return offset;
2140 }
2141 
2142 
2143 static int * const Options_U_bits[] = {
2144   &hf_z3950_Options_U_search,
2145   &hf_z3950_Options_U_present,
2146   &hf_z3950_Options_U_delSet,
2147   &hf_z3950_Options_U_resourceReport,
2148   &hf_z3950_Options_U_triggerResourceCtrl,
2149   &hf_z3950_Options_U_resourceCtrl,
2150   &hf_z3950_Options_U_accessCtrl,
2151   &hf_z3950_Options_U_scan,
2152   &hf_z3950_Options_U_sort,
2153   &hf_z3950_Options_U_spare_bit9,
2154   &hf_z3950_Options_U_extendedServices,
2155   &hf_z3950_Options_U_level_1Segmentation,
2156   &hf_z3950_Options_U_level_2Segmentation,
2157   &hf_z3950_Options_U_concurrentOperations,
2158   &hf_z3950_Options_U_namedResultSets,
2159   NULL
2160 };
2161 
2162 static int
dissect_z3950_Options_U(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2163 dissect_z3950_Options_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2164   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
2165                                     Options_U_bits, 15, hf_index, ett_z3950_Options_U,
2166                                     NULL);
2167 
2168   return offset;
2169 }
2170 
2171 
2172 
2173 static int
dissect_z3950_Options(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2174 dissect_z3950_Options(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2175   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2176                                       hf_index, BER_CLASS_CON, 4, TRUE, dissect_z3950_Options_U);
2177 
2178   return offset;
2179 }
2180 
2181 
2182 
2183 static int
dissect_z3950_INTEGER(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2184 dissect_z3950_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2185   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2186                                                 NULL);
2187 
2188   return offset;
2189 }
2190 
2191 
2192 
2193 static int
dissect_z3950_VisibleString(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2194 dissect_z3950_VisibleString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2195   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_VisibleString,
2196                                             actx, tree, tvb, offset, hf_index,
2197                                             NULL);
2198 
2199   return offset;
2200 }
2201 
2202 
2203 
2204 static int
dissect_z3950_InternationalString(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2205 dissect_z3950_InternationalString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2206   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GeneralString,
2207                                             actx, tree, tvb, offset, hf_index,
2208                                             NULL);
2209 
2210   return offset;
2211 }
2212 
2213 
2214 static const ber_sequence_t T_idPass_sequence[] = {
2215   { &hf_z3950_groupId       , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2216   { &hf_z3950_userId        , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2217   { &hf_z3950_password      , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2218   { NULL, 0, 0, 0, NULL }
2219 };
2220 
2221 static int
dissect_z3950_T_idPass(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2222 dissect_z3950_T_idPass(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2223   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2224                                    T_idPass_sequence, hf_index, ett_z3950_T_idPass);
2225 
2226   return offset;
2227 }
2228 
2229 
2230 
2231 static int
dissect_z3950_NULL(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2232 dissect_z3950_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2233   offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
2234 
2235   return offset;
2236 }
2237 
2238 
2239 
2240 static int
dissect_z3950_EXTERNAL(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2241 dissect_z3950_EXTERNAL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2242   offset = dissect_ber_external_type(implicit_tag, tree, tvb, offset, actx, hf_index, NULL);
2243 
2244   return offset;
2245 }
2246 
2247 
2248 static const value_string z3950_T_idAuthentication_vals[] = {
2249   {   0, "open" },
2250   {   1, "idPass" },
2251   {   2, "anonymous" },
2252   {   3, "other" },
2253   { 0, NULL }
2254 };
2255 
2256 static const ber_choice_t T_idAuthentication_choice[] = {
2257   {   0, &hf_z3950_open          , BER_CLASS_UNI, BER_UNI_TAG_VisibleString, BER_FLAGS_NOOWNTAG, dissect_z3950_VisibleString },
2258   {   1, &hf_z3950_idPass        , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_idPass },
2259   {   2, &hf_z3950_anonymous     , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_z3950_NULL },
2260   {   3, &hf_z3950_other         , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_z3950_EXTERNAL },
2261   { 0, NULL, 0, 0, 0, NULL }
2262 };
2263 
2264 static int
dissect_z3950_T_idAuthentication(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2265 dissect_z3950_T_idAuthentication(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2266   offset = dissect_ber_choice(actx, tree, tvb, offset,
2267                                  T_idAuthentication_choice, hf_index, ett_z3950_T_idAuthentication,
2268                                  NULL);
2269 
2270   return offset;
2271 }
2272 
2273 
2274 
2275 static int
dissect_z3950_OBJECT_IDENTIFIER(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2276 dissect_z3950_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2277   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2278 
2279   return offset;
2280 }
2281 
2282 
2283 static const ber_sequence_t InfoCategory_sequence[] = {
2284   { &hf_z3950_categoryTypeId, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
2285   { &hf_z3950_categoryValue , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2286   { NULL, 0, 0, 0, NULL }
2287 };
2288 
2289 static int
dissect_z3950_InfoCategory(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2290 dissect_z3950_InfoCategory(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2291   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2292                                    InfoCategory_sequence, hf_index, ett_z3950_InfoCategory);
2293 
2294   return offset;
2295 }
2296 
2297 
2298 static const value_string z3950_T_information_vals[] = {
2299   {   2, "characterInfo" },
2300   {   3, "binaryInfo" },
2301   {   4, "externallyDefinedInfo" },
2302   {   5, "oid" },
2303   { 0, NULL }
2304 };
2305 
2306 static const ber_choice_t T_information_choice[] = {
2307   {   2, &hf_z3950_characterInfo , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2308   {   3, &hf_z3950_binaryInfo    , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
2309   {   4, &hf_z3950_externallyDefinedInfo, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
2310   {   5, &hf_z3950_oid           , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
2311   { 0, NULL, 0, 0, 0, NULL }
2312 };
2313 
2314 static int
dissect_z3950_T_information(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2315 dissect_z3950_T_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2316   offset = dissect_ber_choice(actx, tree, tvb, offset,
2317                                  T_information_choice, hf_index, ett_z3950_T_information,
2318                                  NULL);
2319 
2320   return offset;
2321 }
2322 
2323 
2324 static const ber_sequence_t T__untag_item_sequence[] = {
2325   { &hf_z3950_category      , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InfoCategory },
2326   { &hf_z3950_information   , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_information },
2327   { NULL, 0, 0, 0, NULL }
2328 };
2329 
2330 static int
dissect_z3950_T__untag_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2331 dissect_z3950_T__untag_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2332   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2333                                    T__untag_item_sequence, hf_index, ett_z3950_T__untag_item);
2334 
2335   return offset;
2336 }
2337 
2338 
2339 static const ber_sequence_t OtherInformation_U_sequence_of[1] = {
2340   { &hf_z3950_otherInformation_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T__untag_item },
2341 };
2342 
2343 static int
dissect_z3950_OtherInformation_U(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2344 dissect_z3950_OtherInformation_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2345   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2346                                       OtherInformation_U_sequence_of, hf_index, ett_z3950_OtherInformation_U);
2347 
2348   return offset;
2349 }
2350 
2351 
2352 
2353 static int
dissect_z3950_OtherInformation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2354 dissect_z3950_OtherInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2355   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2356                                       hf_index, BER_CLASS_CON, 201, TRUE, dissect_z3950_OtherInformation_U);
2357 
2358   return offset;
2359 }
2360 
2361 
2362 static const ber_sequence_t InitializeRequest_sequence[] = {
2363   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
2364   { &hf_z3950_protocolVersion, BER_CLASS_CON, 3, BER_FLAGS_NOOWNTAG, dissect_z3950_ProtocolVersion },
2365   { &hf_z3950_options       , BER_CLASS_CON, 4, BER_FLAGS_NOOWNTAG, dissect_z3950_Options },
2366   { &hf_z3950_preferredMessageSize, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2367   { &hf_z3950_exceptionalRecordSize, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2368   { &hf_z3950_idAuthentication, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_z3950_T_idAuthentication },
2369   { &hf_z3950_implementationId, BER_CLASS_CON, 110, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2370   { &hf_z3950_implementationName, BER_CLASS_CON, 111, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2371   { &hf_z3950_implementationVersion, BER_CLASS_CON, 112, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2372   { &hf_z3950_userInformationField, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_z3950_EXTERNAL },
2373   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
2374   { NULL, 0, 0, 0, NULL }
2375 };
2376 
2377 static int
dissect_z3950_InitializeRequest(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2378 dissect_z3950_InitializeRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2379   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2380                                    InitializeRequest_sequence, hf_index, ett_z3950_InitializeRequest);
2381 
2382   return offset;
2383 }
2384 
2385 
2386 
2387 static int
dissect_z3950_BOOLEAN(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2388 dissect_z3950_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2389   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2390 
2391   return offset;
2392 }
2393 
2394 
2395 static const ber_sequence_t InitializeResponse_sequence[] = {
2396   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
2397   { &hf_z3950_protocolVersion, BER_CLASS_CON, 3, BER_FLAGS_NOOWNTAG, dissect_z3950_ProtocolVersion },
2398   { &hf_z3950_options       , BER_CLASS_CON, 4, BER_FLAGS_NOOWNTAG, dissect_z3950_Options },
2399   { &hf_z3950_preferredMessageSize, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2400   { &hf_z3950_exceptionalRecordSize, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2401   { &hf_z3950_result        , BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
2402   { &hf_z3950_implementationId, BER_CLASS_CON, 110, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2403   { &hf_z3950_implementationName, BER_CLASS_CON, 111, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2404   { &hf_z3950_implementationVersion, BER_CLASS_CON, 112, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2405   { &hf_z3950_userInformationField, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_z3950_EXTERNAL },
2406   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
2407   { NULL, 0, 0, 0, NULL }
2408 };
2409 
2410 static int
dissect_z3950_InitializeResponse(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2411 dissect_z3950_InitializeResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2412   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2413                                    InitializeResponse_sequence, hf_index, ett_z3950_InitializeResponse);
2414 
2415   return offset;
2416 }
2417 
2418 
2419 
2420 static int
dissect_z3950_DatabaseName(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2421 dissect_z3950_DatabaseName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2422   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2423                                       hf_index, BER_CLASS_CON, 105, TRUE, dissect_z3950_InternationalString);
2424 
2425   return offset;
2426 }
2427 
2428 
2429 static const ber_sequence_t SEQUENCE_OF_DatabaseName_sequence_of[1] = {
2430   { &hf_z3950_databaseNames_item, BER_CLASS_CON, 105, BER_FLAGS_NOOWNTAG, dissect_z3950_DatabaseName },
2431 };
2432 
2433 static int
dissect_z3950_SEQUENCE_OF_DatabaseName(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2434 dissect_z3950_SEQUENCE_OF_DatabaseName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2435   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2436                                       SEQUENCE_OF_DatabaseName_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_DatabaseName);
2437 
2438   return offset;
2439 }
2440 
2441 
2442 
2443 static int
dissect_z3950_ElementSetName(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2444 dissect_z3950_ElementSetName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2445   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2446                                       hf_index, BER_CLASS_CON, 103, TRUE, dissect_z3950_InternationalString);
2447 
2448   return offset;
2449 }
2450 
2451 
2452 static const ber_sequence_t T_databaseSpecific_item_sequence[] = {
2453   { &hf_z3950_dbName        , BER_CLASS_CON, 105, BER_FLAGS_NOOWNTAG, dissect_z3950_DatabaseName },
2454   { &hf_z3950_esn           , BER_CLASS_CON, 103, BER_FLAGS_NOOWNTAG, dissect_z3950_ElementSetName },
2455   { NULL, 0, 0, 0, NULL }
2456 };
2457 
2458 static int
dissect_z3950_T_databaseSpecific_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2459 dissect_z3950_T_databaseSpecific_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2460   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2461                                    T_databaseSpecific_item_sequence, hf_index, ett_z3950_T_databaseSpecific_item);
2462 
2463   return offset;
2464 }
2465 
2466 
2467 static const ber_sequence_t T_databaseSpecific_sequence_of[1] = {
2468   { &hf_z3950_databaseSpecific_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_databaseSpecific_item },
2469 };
2470 
2471 static int
dissect_z3950_T_databaseSpecific(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2472 dissect_z3950_T_databaseSpecific(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2473   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2474                                       T_databaseSpecific_sequence_of, hf_index, ett_z3950_T_databaseSpecific);
2475 
2476   return offset;
2477 }
2478 
2479 
2480 static const value_string z3950_ElementSetNames_vals[] = {
2481   {   0, "genericElementSetName" },
2482   {   1, "databaseSpecific" },
2483   { 0, NULL }
2484 };
2485 
2486 static const ber_choice_t ElementSetNames_choice[] = {
2487   {   0, &hf_z3950_genericElementSetName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2488   {   1, &hf_z3950_databaseSpecific, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_databaseSpecific },
2489   { 0, NULL, 0, 0, 0, NULL }
2490 };
2491 
2492 static int
dissect_z3950_ElementSetNames(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2493 dissect_z3950_ElementSetNames(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2494   offset = dissect_ber_choice(actx, tree, tvb, offset,
2495                                  ElementSetNames_choice, hf_index, ett_z3950_ElementSetNames,
2496                                  NULL);
2497 
2498   return offset;
2499 }
2500 
2501 
2502 
2503 static int
dissect_z3950_T_type_0(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2504 dissect_z3950_T_type_0(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2505 #line 139 "./asn1/z3950/z3950.cnf"
2506 /*XXX Not implemented yet */
2507 
2508 
2509 
2510   return offset;
2511 }
2512 
2513 
2514 
2515 static int
dissect_z3950_AttributeSetId(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2516 dissect_z3950_AttributeSetId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2517 #line 152 "./asn1/z3950/z3950.cnf"
2518   tvbuff_t *oid_tvb=NULL;
2519 
2520 
2521   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, &oid_tvb);
2522 
2523 #line 156 "./asn1/z3950/z3950.cnf"
2524   if (oid_tvb) {
2525     packet_info *pinfo = actx->pinfo;
2526     guint len = tvb_reported_length_remaining(oid_tvb, 0);
2527     gchar *oid_str = oid_encoded2string(pinfo->pool,
2528                                         tvb_get_ptr(oid_tvb, 0, len), len);
2529     gint attribute_set_idx = Z3950_ATSET_UNKNOWN;
2530     z3950_atinfo_t *atinfo_data;
2531 
2532     if (g_strcmp0(oid_str, Z3950_ATSET_BIB1_OID) == 0) {
2533       attribute_set_idx = Z3950_ATSET_BIB1;
2534     }
2535     if ((atinfo_data = (z3950_atinfo_t *)p_get_proto_data(pinfo->pool, pinfo, proto_z3950, Z3950_ATINFO_KEY)) == NULL) {
2536 
2537       atinfo_data = wmem_new0(pinfo->pool, z3950_atinfo_t);
2538       atinfo_data->atsetidx = attribute_set_idx;
2539       p_add_proto_data(pinfo->pool, pinfo,
2540                        proto_z3950, Z3950_ATINFO_KEY, atinfo_data);
2541     }
2542     else {
2543       atinfo_data->atsetidx = attribute_set_idx;
2544     }
2545   }
2546 
2547 
2548   return offset;
2549 }
2550 
2551 
2552 
2553 static int
dissect_z3950_T_attributeElement_attributeType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2554 dissect_z3950_T_attributeElement_attributeType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2555 #line 180 "./asn1/z3950/z3950.cnf"
2556   gint att_type=0;
2557   packet_info *pinfo = actx->pinfo;
2558   z3950_atinfo_t *atinfo_data;
2559 
2560   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2561                                                 &att_type);
2562 
2563 #line 185 "./asn1/z3950/z3950.cnf"
2564   atinfo_data = (z3950_atinfo_t *)p_get_proto_data(pinfo->pool, pinfo, proto_z3950, Z3950_ATINFO_KEY);
2565   if (atinfo_data && atinfo_data->atsetidx == Z3950_ATSET_BIB1) {
2566     proto_item_append_text(actx->created_item, " (%s)",
2567       val_to_str(att_type, z3950_bib1_att_types, "Unknown bib-1 attributeType %d"));
2568     atinfo_data->attype = att_type;
2569   }
2570 
2571   return offset;
2572 }
2573 
2574 
2575 
2576 static int
dissect_z3950_T_attributeValue_numeric(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2577 dissect_z3950_T_attributeValue_numeric(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2578 #line 192 "./asn1/z3950/z3950.cnf"
2579   gint att_value=0;
2580   packet_info *pinfo = actx->pinfo;
2581   z3950_atinfo_t *atinfo_data;
2582   const value_string *att_value_string = NULL;
2583 
2584   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2585                                                 &att_value);
2586 
2587 #line 198 "./asn1/z3950/z3950.cnf"
2588   atinfo_data = (z3950_atinfo_t *)p_get_proto_data(pinfo->pool, pinfo, proto_z3950, Z3950_ATINFO_KEY);
2589   if (atinfo_data && atinfo_data->atsetidx == Z3950_ATSET_BIB1) {
2590     switch (atinfo_data->attype) {
2591     case Z3950_BIB1_AT_USE:
2592       att_value_string = z3950_bib1_at_use;
2593       break;
2594     case Z3950_BIB1_AT_RELATION:
2595       att_value_string = z3950_bib1_at_relation;
2596       break;
2597     case Z3950_BIB1_AT_POSITION:
2598       att_value_string = z3950_bib1_at_position;
2599       break;
2600     case Z3950_BIB1_AT_STRUCTURE:
2601       att_value_string = z3950_bib1_at_structure;
2602       break;
2603     case Z3950_BIB1_AT_TRUNCATION:
2604       att_value_string = z3950_bib1_at_truncation;
2605       break;
2606     case Z3950_BIB1_AT_COMPLETENESS:
2607       att_value_string = z3950_bib1_at_completeness;
2608       break;
2609     default:
2610       att_value_string = NULL;
2611     }
2612     if (att_value_string) {
2613       proto_item_append_text(actx->created_item, " (%s)",
2614         val_to_str(att_value, att_value_string, "Unknown bib-1 attributeValue %d"));
2615     }
2616   }
2617 
2618   return offset;
2619 }
2620 
2621 
2622 static const value_string z3950_StringOrNumeric_vals[] = {
2623   {   1, "string" },
2624   {   2, "numeric" },
2625   { 0, NULL }
2626 };
2627 
2628 static const ber_choice_t StringOrNumeric_choice[] = {
2629   {   1, &hf_z3950_string        , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2630   {   2, &hf_z3950_numeric       , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2631   { 0, NULL, 0, 0, 0, NULL }
2632 };
2633 
2634 static int
dissect_z3950_StringOrNumeric(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2635 dissect_z3950_StringOrNumeric(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2636   offset = dissect_ber_choice(actx, tree, tvb, offset,
2637                                  StringOrNumeric_choice, hf_index, ett_z3950_StringOrNumeric,
2638                                  NULL);
2639 
2640   return offset;
2641 }
2642 
2643 
2644 static const ber_sequence_t SEQUENCE_OF_StringOrNumeric_sequence_of[1] = {
2645   { &hf_z3950_attributeValue_complex_list_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
2646 };
2647 
2648 static int
dissect_z3950_SEQUENCE_OF_StringOrNumeric(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2649 dissect_z3950_SEQUENCE_OF_StringOrNumeric(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2650   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2651                                       SEQUENCE_OF_StringOrNumeric_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_StringOrNumeric);
2652 
2653   return offset;
2654 }
2655 
2656 
2657 static const ber_sequence_t T_semanticAction_sequence_of[1] = {
2658   { &hf_z3950_semanticAction_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_z3950_INTEGER },
2659 };
2660 
2661 static int
dissect_z3950_T_semanticAction(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2662 dissect_z3950_T_semanticAction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2663   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2664                                       T_semanticAction_sequence_of, hf_index, ett_z3950_T_semanticAction);
2665 
2666   return offset;
2667 }
2668 
2669 
2670 static const ber_sequence_t T_attributeValue_complex_sequence[] = {
2671   { &hf_z3950_attributeValue_complex_list, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_StringOrNumeric },
2672   { &hf_z3950_semanticAction, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_semanticAction },
2673   { NULL, 0, 0, 0, NULL }
2674 };
2675 
2676 static int
dissect_z3950_T_attributeValue_complex(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2677 dissect_z3950_T_attributeValue_complex(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2678   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2679                                    T_attributeValue_complex_sequence, hf_index, ett_z3950_T_attributeValue_complex);
2680 
2681   return offset;
2682 }
2683 
2684 
2685 static const value_string z3950_T_attributeValue_vals[] = {
2686   { 121, "numeric" },
2687   { 224, "complex" },
2688   { 0, NULL }
2689 };
2690 
2691 static const ber_choice_t T_attributeValue_choice[] = {
2692   { 121, &hf_z3950_attributeValue_numeric, BER_CLASS_CON, 121, BER_FLAGS_IMPLTAG, dissect_z3950_T_attributeValue_numeric },
2693   { 224, &hf_z3950_attributeValue_complex, BER_CLASS_CON, 224, BER_FLAGS_IMPLTAG, dissect_z3950_T_attributeValue_complex },
2694   { 0, NULL, 0, 0, 0, NULL }
2695 };
2696 
2697 static int
dissect_z3950_T_attributeValue(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2698 dissect_z3950_T_attributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2699   offset = dissect_ber_choice(actx, tree, tvb, offset,
2700                                  T_attributeValue_choice, hf_index, ett_z3950_T_attributeValue,
2701                                  NULL);
2702 
2703   return offset;
2704 }
2705 
2706 
2707 static const ber_sequence_t AttributeElement_sequence[] = {
2708   { &hf_z3950_attributeSet  , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AttributeSetId },
2709   { &hf_z3950_attributeElement_attributeType, BER_CLASS_CON, 120, BER_FLAGS_IMPLTAG, dissect_z3950_T_attributeElement_attributeType },
2710   { &hf_z3950_attributeValue, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_attributeValue },
2711   { NULL, 0, 0, 0, NULL }
2712 };
2713 
2714 static int
dissect_z3950_AttributeElement(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2715 dissect_z3950_AttributeElement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2716   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2717                                    AttributeElement_sequence, hf_index, ett_z3950_AttributeElement);
2718 
2719   return offset;
2720 }
2721 
2722 
2723 static const ber_sequence_t SEQUENCE_OF_AttributeElement_sequence_of[1] = {
2724   { &hf_z3950_attributeList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeElement },
2725 };
2726 
2727 static int
dissect_z3950_SEQUENCE_OF_AttributeElement(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2728 dissect_z3950_SEQUENCE_OF_AttributeElement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2729   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2730                                       SEQUENCE_OF_AttributeElement_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeElement);
2731 
2732   return offset;
2733 }
2734 
2735 
2736 
2737 static int
dissect_z3950_AttributeList(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2738 dissect_z3950_AttributeList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2739   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2740                                       hf_index, BER_CLASS_CON, 44, TRUE, dissect_z3950_SEQUENCE_OF_AttributeElement);
2741 
2742   return offset;
2743 }
2744 
2745 
2746 
2747 static int
dissect_z3950_T_general(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2748 dissect_z3950_T_general(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2749 #line 147 "./asn1/z3950/z3950.cnf"
2750   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2751               hf_index, BER_CLASS_CON, 2, TRUE,
2752               dissect_z3950_printable_OCTET_STRING);
2753 
2754 
2755 
2756   return offset;
2757 }
2758 
2759 
2760 
2761 static int
dissect_z3950_GeneralizedTime(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2762 dissect_z3950_GeneralizedTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2763   offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
2764 
2765   return offset;
2766 }
2767 
2768 
2769 static const ber_sequence_t Unit_sequence[] = {
2770   { &hf_z3950_unitSystem    , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_z3950_InternationalString },
2771   { &hf_z3950_unitType      , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
2772   { &hf_z3950_unit          , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
2773   { &hf_z3950_scaleFactor   , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2774   { NULL, 0, 0, 0, NULL }
2775 };
2776 
2777 static int
dissect_z3950_Unit(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2778 dissect_z3950_Unit(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2779   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2780                                    Unit_sequence, hf_index, ett_z3950_Unit);
2781 
2782   return offset;
2783 }
2784 
2785 
2786 static const ber_sequence_t IntUnit_sequence[] = {
2787   { &hf_z3950_value         , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2788   { &hf_z3950_unitUsed      , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_Unit },
2789   { NULL, 0, 0, 0, NULL }
2790 };
2791 
2792 static int
dissect_z3950_IntUnit(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2793 dissect_z3950_IntUnit(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2794   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2795                                    IntUnit_sequence, hf_index, ett_z3950_IntUnit);
2796 
2797   return offset;
2798 }
2799 
2800 
2801 static const value_string z3950_Term_vals[] = {
2802   {  45, "general" },
2803   { 215, "numeric" },
2804   { 216, "characterString" },
2805   { 217, "oid" },
2806   { 218, "dateTime" },
2807   { 219, "external" },
2808   { 220, "integerAndUnit" },
2809   { 221, "null" },
2810   { 0, NULL }
2811 };
2812 
2813 static const ber_choice_t Term_choice[] = {
2814   {  45, &hf_z3950_general       , BER_CLASS_CON, 45, BER_FLAGS_IMPLTAG, dissect_z3950_T_general },
2815   { 215, &hf_z3950_numeric       , BER_CLASS_CON, 215, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2816   { 216, &hf_z3950_characterString, BER_CLASS_CON, 216, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2817   { 217, &hf_z3950_oid           , BER_CLASS_CON, 217, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
2818   { 218, &hf_z3950_dateTime      , BER_CLASS_CON, 218, BER_FLAGS_IMPLTAG, dissect_z3950_GeneralizedTime },
2819   { 219, &hf_z3950_external      , BER_CLASS_CON, 219, BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
2820   { 220, &hf_z3950_integerAndUnit, BER_CLASS_CON, 220, BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
2821   { 221, &hf_z3950_null          , BER_CLASS_CON, 221, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
2822   { 0, NULL, 0, 0, 0, NULL }
2823 };
2824 
2825 static int
dissect_z3950_Term(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2826 dissect_z3950_Term(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2827   offset = dissect_ber_choice(actx, tree, tvb, offset,
2828                                  Term_choice, hf_index, ett_z3950_Term,
2829                                  NULL);
2830 
2831   return offset;
2832 }
2833 
2834 
2835 static const ber_sequence_t AttributesPlusTerm_U_sequence[] = {
2836   { &hf_z3950_attributes    , BER_CLASS_CON, 44, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeList },
2837   { &hf_z3950_term          , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_Term },
2838   { NULL, 0, 0, 0, NULL }
2839 };
2840 
2841 static int
dissect_z3950_AttributesPlusTerm_U(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2842 dissect_z3950_AttributesPlusTerm_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2843   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2844                                    AttributesPlusTerm_U_sequence, hf_index, ett_z3950_AttributesPlusTerm_U);
2845 
2846   return offset;
2847 }
2848 
2849 
2850 
2851 static int
dissect_z3950_AttributesPlusTerm(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2852 dissect_z3950_AttributesPlusTerm(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2853   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2854                                       hf_index, BER_CLASS_CON, 102, TRUE, dissect_z3950_AttributesPlusTerm_U);
2855 
2856   return offset;
2857 }
2858 
2859 
2860 
2861 static int
dissect_z3950_ResultSetId(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2862 dissect_z3950_ResultSetId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2863   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2864                                       hf_index, BER_CLASS_CON, 31, TRUE, dissect_z3950_InternationalString);
2865 
2866   return offset;
2867 }
2868 
2869 
2870 static const ber_sequence_t ResultSetPlusAttributes_U_sequence[] = {
2871   { &hf_z3950_resultSet     , BER_CLASS_CON, 31, BER_FLAGS_NOOWNTAG, dissect_z3950_ResultSetId },
2872   { &hf_z3950_attributes    , BER_CLASS_CON, 44, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeList },
2873   { NULL, 0, 0, 0, NULL }
2874 };
2875 
2876 static int
dissect_z3950_ResultSetPlusAttributes_U(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2877 dissect_z3950_ResultSetPlusAttributes_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2878   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2879                                    ResultSetPlusAttributes_U_sequence, hf_index, ett_z3950_ResultSetPlusAttributes_U);
2880 
2881   return offset;
2882 }
2883 
2884 
2885 
2886 static int
dissect_z3950_ResultSetPlusAttributes(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2887 dissect_z3950_ResultSetPlusAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2888   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2889                                       hf_index, BER_CLASS_CON, 214, TRUE, dissect_z3950_ResultSetPlusAttributes_U);
2890 
2891   return offset;
2892 }
2893 
2894 
2895 static const value_string z3950_Operand_vals[] = {
2896   { 102, "attrTerm" },
2897   {  31, "resultSet" },
2898   { 214, "resultAttr" },
2899   { 0, NULL }
2900 };
2901 
2902 static const ber_choice_t Operand_choice[] = {
2903   { 102, &hf_z3950_attrTerm      , BER_CLASS_CON, 102, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributesPlusTerm },
2904   {  31, &hf_z3950_resultSet     , BER_CLASS_CON, 31, BER_FLAGS_NOOWNTAG, dissect_z3950_ResultSetId },
2905   { 214, &hf_z3950_resultAttr    , BER_CLASS_CON, 214, BER_FLAGS_NOOWNTAG, dissect_z3950_ResultSetPlusAttributes },
2906   { 0, NULL, 0, 0, 0, NULL }
2907 };
2908 
2909 static int
dissect_z3950_Operand(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2910 dissect_z3950_Operand(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2911   offset = dissect_ber_choice(actx, tree, tvb, offset,
2912                                  Operand_choice, hf_index, ett_z3950_Operand,
2913                                  NULL);
2914 
2915   return offset;
2916 }
2917 
2918 
2919 static const value_string z3950_T_relationType_vals[] = {
2920   {   1, "lessThan" },
2921   {   2, "lessThanOrEqual" },
2922   {   3, "equal" },
2923   {   4, "greaterThanOrEqual" },
2924   {   5, "greaterThan" },
2925   {   6, "notEqual" },
2926   { 0, NULL }
2927 };
2928 
2929 
2930 static int
dissect_z3950_T_relationType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2931 dissect_z3950_T_relationType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2932   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2933                                                 NULL);
2934 
2935   return offset;
2936 }
2937 
2938 
2939 static const value_string z3950_KnownProximityUnit_vals[] = {
2940   {   1, "character" },
2941   {   2, "word" },
2942   {   3, "sentence" },
2943   {   4, "paragraph" },
2944   {   5, "section" },
2945   {   6, "chapter" },
2946   {   7, "document" },
2947   {   8, "element" },
2948   {   9, "subelement" },
2949   {  10, "elementType" },
2950   {  11, "byte" },
2951   { 0, NULL }
2952 };
2953 
2954 
2955 static int
dissect_z3950_KnownProximityUnit(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2956 dissect_z3950_KnownProximityUnit(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2957   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2958                                                 NULL);
2959 
2960   return offset;
2961 }
2962 
2963 
2964 static const value_string z3950_T_proximityUnitCode_vals[] = {
2965   {   1, "known" },
2966   {   2, "private" },
2967   { 0, NULL }
2968 };
2969 
2970 static const ber_choice_t T_proximityUnitCode_choice[] = {
2971   {   1, &hf_z3950_known         , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_KnownProximityUnit },
2972   {   2, &hf_z3950_private       , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2973   { 0, NULL, 0, 0, 0, NULL }
2974 };
2975 
2976 static int
dissect_z3950_T_proximityUnitCode(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2977 dissect_z3950_T_proximityUnitCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2978   offset = dissect_ber_choice(actx, tree, tvb, offset,
2979                                  T_proximityUnitCode_choice, hf_index, ett_z3950_T_proximityUnitCode,
2980                                  NULL);
2981 
2982   return offset;
2983 }
2984 
2985 
2986 static const ber_sequence_t ProximityOperator_sequence[] = {
2987   { &hf_z3950_exclusion     , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
2988   { &hf_z3950_distance      , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2989   { &hf_z3950_ordered       , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
2990   { &hf_z3950_relationType  , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_T_relationType },
2991   { &hf_z3950_proximityUnitCode, BER_CLASS_CON, 5, 0, dissect_z3950_T_proximityUnitCode },
2992   { NULL, 0, 0, 0, NULL }
2993 };
2994 
2995 static int
dissect_z3950_ProximityOperator(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2996 dissect_z3950_ProximityOperator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2997   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2998                                    ProximityOperator_sequence, hf_index, ett_z3950_ProximityOperator);
2999 
3000   return offset;
3001 }
3002 
3003 
3004 static const value_string z3950_Operator_U_vals[] = {
3005   {   0, "and" },
3006   {   1, "or" },
3007   {   2, "and-not" },
3008   {   3, "prox" },
3009   { 0, NULL }
3010 };
3011 
3012 static const ber_choice_t Operator_U_choice[] = {
3013   {   0, &hf_z3950_and           , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
3014   {   1, &hf_z3950_or            , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
3015   {   2, &hf_z3950_and_not       , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
3016   {   3, &hf_z3950_prox          , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_ProximityOperator },
3017   { 0, NULL, 0, 0, 0, NULL }
3018 };
3019 
3020 static int
dissect_z3950_Operator_U(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3021 dissect_z3950_Operator_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3022   offset = dissect_ber_choice(actx, tree, tvb, offset,
3023                                  Operator_U_choice, hf_index, ett_z3950_Operator_U,
3024                                  NULL);
3025 
3026   return offset;
3027 }
3028 
3029 
3030 
3031 static int
dissect_z3950_Operator(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3032 dissect_z3950_Operator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3033   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
3034                                       hf_index, BER_CLASS_CON, 46, FALSE, dissect_z3950_Operator_U);
3035 
3036   return offset;
3037 }
3038 
3039 
3040 static const ber_sequence_t T_rpnRpnOp_sequence[] = {
3041   { &hf_z3950_rpn1          , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_RPNStructure },
3042   { &hf_z3950_rpn2          , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_RPNStructure },
3043   { &hf_z3950_operatorRpnOp , BER_CLASS_CON, 46, BER_FLAGS_NOOWNTAG, dissect_z3950_Operator },
3044   { NULL, 0, 0, 0, NULL }
3045 };
3046 
3047 static int
dissect_z3950_T_rpnRpnOp(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3048 dissect_z3950_T_rpnRpnOp(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3049   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3050                                    T_rpnRpnOp_sequence, hf_index, ett_z3950_T_rpnRpnOp);
3051 
3052   return offset;
3053 }
3054 
3055 
3056 static const value_string z3950_RPNStructure_vals[] = {
3057   {   0, "op" },
3058   {   1, "rpnRpnOp" },
3059   { 0, NULL }
3060 };
3061 
3062 static const ber_choice_t RPNStructure_choice[] = {
3063   {   0, &hf_z3950_operandRpnOp  , BER_CLASS_CON, 0, 0, dissect_z3950_Operand },
3064   {   1, &hf_z3950_rpnRpnOp      , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_rpnRpnOp },
3065   { 0, NULL, 0, 0, 0, NULL }
3066 };
3067 
3068 static int
dissect_z3950_RPNStructure(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3069 dissect_z3950_RPNStructure(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3070   offset = dissect_ber_choice(actx, tree, tvb, offset,
3071                                  RPNStructure_choice, hf_index, ett_z3950_RPNStructure,
3072                                  NULL);
3073 
3074   return offset;
3075 }
3076 
3077 
3078 static const ber_sequence_t RPNQuery_sequence[] = {
3079   { &hf_z3950_attributeSet  , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeSetId },
3080   { &hf_z3950_rpn           , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_RPNStructure },
3081   { NULL, 0, 0, 0, NULL }
3082 };
3083 
3084 static int
dissect_z3950_RPNQuery(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3085 dissect_z3950_RPNQuery(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3086   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3087                                    RPNQuery_sequence, hf_index, ett_z3950_RPNQuery);
3088 
3089   return offset;
3090 }
3091 
3092 
3093 static const value_string z3950_Query_vals[] = {
3094   {   0, "type-0" },
3095   {   1, "type-1" },
3096   {   2, "type-2" },
3097   { 100, "type-100" },
3098   { 101, "type-101" },
3099   { 102, "type-102" },
3100   { 0, NULL }
3101 };
3102 
3103 static const ber_choice_t Query_choice[] = {
3104   {   0, &hf_z3950_type_0        , BER_CLASS_CON, 0, 0, dissect_z3950_T_type_0 },
3105   {   1, &hf_z3950_type_1        , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_RPNQuery },
3106   {   2, &hf_z3950_type_2        , BER_CLASS_CON, 2, 0, dissect_z3950_OCTET_STRING },
3107   { 100, &hf_z3950_type_100      , BER_CLASS_CON, 100, 0, dissect_z3950_OCTET_STRING },
3108   { 101, &hf_z3950_type_101      , BER_CLASS_CON, 101, BER_FLAGS_IMPLTAG, dissect_z3950_RPNQuery },
3109   { 102, &hf_z3950_type_102      , BER_CLASS_CON, 102, 0, dissect_z3950_OCTET_STRING },
3110   { 0, NULL, 0, 0, 0, NULL }
3111 };
3112 
3113 static int
dissect_z3950_Query(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3114 dissect_z3950_Query(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3115   offset = dissect_ber_choice(actx, tree, tvb, offset,
3116                                  Query_choice, hf_index, ett_z3950_Query,
3117                                  NULL);
3118 
3119   return offset;
3120 }
3121 
3122 
3123 static const ber_sequence_t SearchRequest_sequence[] = {
3124   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3125   { &hf_z3950_smallSetUpperBound, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3126   { &hf_z3950_largeSetLowerBound, BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3127   { &hf_z3950_mediumSetPresentNumber, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3128   { &hf_z3950_replaceIndicator, BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3129   { &hf_z3950_resultSetName , BER_CLASS_CON, 17, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
3130   { &hf_z3950_databaseNames , BER_CLASS_CON, 18, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DatabaseName },
3131   { &hf_z3950_smallSetElementSetNames, BER_CLASS_CON, 100, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_ElementSetNames },
3132   { &hf_z3950_mediumSetElementSetNames, BER_CLASS_CON, 101, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_ElementSetNames },
3133   { &hf_z3950_preferredRecordSyntax, BER_CLASS_CON, 104, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
3134   { &hf_z3950_query         , BER_CLASS_CON, 21, BER_FLAGS_NOTCHKTAG, dissect_z3950_Query },
3135   { &hf_z3950_additionalSearchInfo, BER_CLASS_CON, 203, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OtherInformation },
3136   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3137   { NULL, 0, 0, 0, NULL }
3138 };
3139 
3140 static int
dissect_z3950_SearchRequest(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3141 dissect_z3950_SearchRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3142   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3143                                    SearchRequest_sequence, hf_index, ett_z3950_SearchRequest);
3144 
3145   return offset;
3146 }
3147 
3148 
3149 static const value_string z3950_T_search_resultSetStatus_vals[] = {
3150   {   1, "subset" },
3151   {   2, "interim" },
3152   {   3, "none" },
3153   { 0, NULL }
3154 };
3155 
3156 
3157 static int
dissect_z3950_T_search_resultSetStatus(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3158 dissect_z3950_T_search_resultSetStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3159   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3160                                                 NULL);
3161 
3162   return offset;
3163 }
3164 
3165 
3166 static const value_string z3950_PresentStatus_U_vals[] = {
3167   {   0, "success" },
3168   {   1, "partial-1" },
3169   {   2, "partial-2" },
3170   {   3, "partial-3" },
3171   {   4, "partial-4" },
3172   {   5, "failure" },
3173   { 0, NULL }
3174 };
3175 
3176 
3177 static int
dissect_z3950_PresentStatus_U(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3178 dissect_z3950_PresentStatus_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3179   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3180                                                 NULL);
3181 
3182   return offset;
3183 }
3184 
3185 
3186 
3187 static int
dissect_z3950_PresentStatus(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3188 dissect_z3950_PresentStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3189   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
3190                                       hf_index, BER_CLASS_CON, 27, TRUE, dissect_z3950_PresentStatus_U);
3191 
3192   return offset;
3193 }
3194 
3195 
3196 
3197 static int
dissect_z3950_T_diagnosticSetId(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3198 dissect_z3950_T_diagnosticSetId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3199 #line 228 "./asn1/z3950/z3950.cnf"
3200   tvbuff_t *oid_tvb=NULL;
3201 
3202 
3203   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, &oid_tvb);
3204 
3205 #line 232 "./asn1/z3950/z3950.cnf"
3206   if (oid_tvb) {
3207     packet_info *pinfo = actx->pinfo;
3208     guint len = tvb_reported_length_remaining(oid_tvb, 0);
3209     gchar *oid_str = oid_encoded2string(pinfo->pool,
3210                                         tvb_get_ptr(oid_tvb, 0, len), len);
3211     gint diagset_idx = Z3950_DIAGSET_UNKNOWN;
3212     z3950_diaginfo_t *diaginfo_data;
3213 
3214     if (g_strcmp0(oid_str, Z3950_DIAGSET_BIB1_OID) == 0) {
3215       diagset_idx = Z3950_DIAGSET_BIB1;
3216     }
3217     if ((diaginfo_data = (z3950_diaginfo_t *)p_get_proto_data(pinfo->pool, pinfo, proto_z3950, Z3950_DIAGSET_KEY)) == NULL) {
3218 
3219       diaginfo_data = wmem_new0(pinfo->pool, z3950_diaginfo_t);
3220       diaginfo_data->diagsetidx = diagset_idx;
3221       p_add_proto_data(pinfo->pool, pinfo,
3222                        proto_z3950, Z3950_DIAGSET_KEY, diaginfo_data);
3223     }
3224     else {
3225       diaginfo_data->diagsetidx = diagset_idx;
3226     }
3227   }
3228 
3229 
3230   return offset;
3231 }
3232 
3233 
3234 
3235 static int
dissect_z3950_T_condition(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3236 dissect_z3950_T_condition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3237 #line 256 "./asn1/z3950/z3950.cnf"
3238   gint diag_condition=0;
3239   packet_info *pinfo = actx->pinfo;
3240   z3950_diaginfo_t *diaginfo_data;
3241 
3242   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3243                                                 &diag_condition);
3244 
3245 #line 261 "./asn1/z3950/z3950.cnf"
3246   diaginfo_data = (z3950_diaginfo_t *)p_get_proto_data(pinfo->pool, pinfo, proto_z3950, Z3950_DIAGSET_KEY);
3247   if (diaginfo_data && diaginfo_data->diagsetidx == Z3950_DIAGSET_BIB1) {
3248     proto_item_append_text(actx->created_item, " (%s)",
3249       val_to_str(diag_condition, z3950_bib1_diagconditions, "Unknown bib-1 diagnostic %d"));
3250     diaginfo_data->diagcondition = diag_condition;
3251   }
3252 
3253   return offset;
3254 }
3255 
3256 
3257 static const value_string z3950_T_addinfo_vals[] = {
3258   {   0, "v2Addinfo" },
3259   {   1, "v3Addinfo" },
3260   { 0, NULL }
3261 };
3262 
3263 static const ber_choice_t T_addinfo_choice[] = {
3264   {   0, &hf_z3950_v2Addinfo     , BER_CLASS_UNI, BER_UNI_TAG_VisibleString, BER_FLAGS_NOOWNTAG, dissect_z3950_VisibleString },
3265   {   1, &hf_z3950_v3Addinfo     , BER_CLASS_UNI, BER_UNI_TAG_GeneralString, BER_FLAGS_NOOWNTAG, dissect_z3950_InternationalString },
3266   { 0, NULL, 0, 0, 0, NULL }
3267 };
3268 
3269 static int
dissect_z3950_T_addinfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3270 dissect_z3950_T_addinfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3271   offset = dissect_ber_choice(actx, tree, tvb, offset,
3272                                  T_addinfo_choice, hf_index, ett_z3950_T_addinfo,
3273                                  NULL);
3274 
3275   return offset;
3276 }
3277 
3278 
3279 static const ber_sequence_t DefaultDiagFormat_sequence[] = {
3280   { &hf_z3950_diagnosticSetId, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_T_diagnosticSetId },
3281   { &hf_z3950_condition     , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_z3950_T_condition },
3282   { &hf_z3950_addinfo       , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_addinfo },
3283   { NULL, 0, 0, 0, NULL }
3284 };
3285 
3286 static int
dissect_z3950_DefaultDiagFormat(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3287 dissect_z3950_DefaultDiagFormat(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3288   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3289                                    DefaultDiagFormat_sequence, hf_index, ett_z3950_DefaultDiagFormat);
3290 
3291   return offset;
3292 }
3293 
3294 
3295 static const value_string z3950_DiagRec_vals[] = {
3296   {   0, "defaultFormat" },
3297   {   1, "externallyDefined" },
3298   { 0, NULL }
3299 };
3300 
3301 static const ber_choice_t DiagRec_choice[] = {
3302   {   0, &hf_z3950_defaultFormat , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_DefaultDiagFormat },
3303   {   1, &hf_z3950_externallyDefined, BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_z3950_EXTERNAL },
3304   { 0, NULL, 0, 0, 0, NULL }
3305 };
3306 
3307 static int
dissect_z3950_DiagRec(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3308 dissect_z3950_DiagRec(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3309   offset = dissect_ber_choice(actx, tree, tvb, offset,
3310                                  DiagRec_choice, hf_index, ett_z3950_DiagRec,
3311                                  NULL);
3312 
3313   return offset;
3314 }
3315 
3316 
3317 static const value_string z3950_FragmentSyntax_vals[] = {
3318   {   0, "externallyTagged" },
3319   {   1, "notExternallyTagged" },
3320   { 0, NULL }
3321 };
3322 
3323 static const ber_choice_t FragmentSyntax_choice[] = {
3324   {   0, &hf_z3950_externallyTagged, BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_z3950_EXTERNAL },
3325   {   1, &hf_z3950_notExternallyTagged, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_z3950_OCTET_STRING },
3326   { 0, NULL, 0, 0, 0, NULL }
3327 };
3328 
3329 static int
dissect_z3950_FragmentSyntax(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3330 dissect_z3950_FragmentSyntax(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3331   offset = dissect_ber_choice(actx, tree, tvb, offset,
3332                                  FragmentSyntax_choice, hf_index, ett_z3950_FragmentSyntax,
3333                                  NULL);
3334 
3335   return offset;
3336 }
3337 
3338 
3339 static const value_string z3950_T_record_vals[] = {
3340   {   1, "retrievalRecord" },
3341   {   2, "surrogateDiagnostic" },
3342   {   3, "startingFragment" },
3343   {   4, "intermediateFragment" },
3344   {   5, "finalFragment" },
3345   { 0, NULL }
3346 };
3347 
3348 static const ber_choice_t T_record_choice[] = {
3349   {   1, &hf_z3950_retrievalRecord, BER_CLASS_CON, 1, 0, dissect_z3950_EXTERNAL },
3350   {   2, &hf_z3950_surrogateDiagnostic, BER_CLASS_CON, 2, 0, dissect_z3950_DiagRec },
3351   {   3, &hf_z3950_startingFragment, BER_CLASS_CON, 3, 0, dissect_z3950_FragmentSyntax },
3352   {   4, &hf_z3950_intermediateFragment, BER_CLASS_CON, 4, 0, dissect_z3950_FragmentSyntax },
3353   {   5, &hf_z3950_finalFragment , BER_CLASS_CON, 5, 0, dissect_z3950_FragmentSyntax },
3354   { 0, NULL, 0, 0, 0, NULL }
3355 };
3356 
3357 static int
dissect_z3950_T_record(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3358 dissect_z3950_T_record(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3359   offset = dissect_ber_choice(actx, tree, tvb, offset,
3360                                  T_record_choice, hf_index, ett_z3950_T_record,
3361                                  NULL);
3362 
3363   return offset;
3364 }
3365 
3366 
3367 static const ber_sequence_t NamePlusRecord_sequence[] = {
3368   { &hf_z3950_namePlusRecord_name, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
3369   { &hf_z3950_record        , BER_CLASS_CON, 1, 0, dissect_z3950_T_record },
3370   { NULL, 0, 0, 0, NULL }
3371 };
3372 
3373 static int
dissect_z3950_NamePlusRecord(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3374 dissect_z3950_NamePlusRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3375   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3376                                    NamePlusRecord_sequence, hf_index, ett_z3950_NamePlusRecord);
3377 
3378   return offset;
3379 }
3380 
3381 
3382 static const ber_sequence_t SEQUENCE_OF_NamePlusRecord_sequence_of[1] = {
3383   { &hf_z3950_segmentRecords_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_NamePlusRecord },
3384 };
3385 
3386 static int
dissect_z3950_SEQUENCE_OF_NamePlusRecord(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3387 dissect_z3950_SEQUENCE_OF_NamePlusRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3388   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3389                                       SEQUENCE_OF_NamePlusRecord_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_NamePlusRecord);
3390 
3391   return offset;
3392 }
3393 
3394 
3395 static const ber_sequence_t SEQUENCE_OF_DiagRec_sequence_of[1] = {
3396   { &hf_z3950_multipleNonSurDiagnostics_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_DiagRec },
3397 };
3398 
3399 static int
dissect_z3950_SEQUENCE_OF_DiagRec(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3400 dissect_z3950_SEQUENCE_OF_DiagRec(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3401   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3402                                       SEQUENCE_OF_DiagRec_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_DiagRec);
3403 
3404   return offset;
3405 }
3406 
3407 
3408 static const value_string z3950_Records_vals[] = {
3409   {  28, "responseRecords" },
3410   { 130, "nonSurrogateDiagnostic" },
3411   { 205, "multipleNonSurDiagnostics" },
3412   { 0, NULL }
3413 };
3414 
3415 static const ber_choice_t Records_choice[] = {
3416   {  28, &hf_z3950_responseRecords, BER_CLASS_CON, 28, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_NamePlusRecord },
3417   { 130, &hf_z3950_nonSurrogateDiagnostic, BER_CLASS_CON, 130, BER_FLAGS_IMPLTAG, dissect_z3950_DefaultDiagFormat },
3418   { 205, &hf_z3950_multipleNonSurDiagnostics, BER_CLASS_CON, 205, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DiagRec },
3419   { 0, NULL, 0, 0, 0, NULL }
3420 };
3421 
3422 static int
dissect_z3950_Records(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3423 dissect_z3950_Records(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3424   offset = dissect_ber_choice(actx, tree, tvb, offset,
3425                                  Records_choice, hf_index, ett_z3950_Records,
3426                                  NULL);
3427 
3428   return offset;
3429 }
3430 
3431 
3432 static const ber_sequence_t SearchResponse_sequence[] = {
3433   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3434   { &hf_z3950_resultCount   , BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3435   { &hf_z3950_numberOfRecordsReturned, BER_CLASS_CON, 24, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3436   { &hf_z3950_nextResultSetPosition, BER_CLASS_CON, 25, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3437   { &hf_z3950_searchStatus  , BER_CLASS_CON, 22, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3438   { &hf_z3950_search_resultSetStatus, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_search_resultSetStatus },
3439   { &hf_z3950_presentStatus , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_PresentStatus },
3440   { &hf_z3950_records       , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_Records },
3441   { &hf_z3950_additionalSearchInfo, BER_CLASS_CON, 203, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OtherInformation },
3442   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3443   { NULL, 0, 0, 0, NULL }
3444 };
3445 
3446 static int
dissect_z3950_SearchResponse(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3447 dissect_z3950_SearchResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3448   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3449                                    SearchResponse_sequence, hf_index, ett_z3950_SearchResponse);
3450 
3451   return offset;
3452 }
3453 
3454 
3455 static const ber_sequence_t Range_sequence[] = {
3456   { &hf_z3950_startingPosition, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3457   { &hf_z3950_numberOfRecords, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3458   { NULL, 0, 0, 0, NULL }
3459 };
3460 
3461 static int
dissect_z3950_Range(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3462 dissect_z3950_Range(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3463   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3464                                    Range_sequence, hf_index, ett_z3950_Range);
3465 
3466   return offset;
3467 }
3468 
3469 
3470 static const ber_sequence_t SEQUENCE_OF_Range_sequence_of[1] = {
3471   { &hf_z3950_additionalRanges_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Range },
3472 };
3473 
3474 static int
dissect_z3950_SEQUENCE_OF_Range(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3475 dissect_z3950_SEQUENCE_OF_Range(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3476   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3477                                       SEQUENCE_OF_Range_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_Range);
3478 
3479   return offset;
3480 }
3481 
3482 
3483 static const value_string z3950_T_specification_elementSpec_vals[] = {
3484   {   1, "elementSetName" },
3485   {   2, "externalEspec" },
3486   { 0, NULL }
3487 };
3488 
3489 static const ber_choice_t T_specification_elementSpec_choice[] = {
3490   {   1, &hf_z3950_elementSetName, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
3491   {   2, &hf_z3950_externalEspec , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
3492   { 0, NULL, 0, 0, 0, NULL }
3493 };
3494 
3495 static int
dissect_z3950_T_specification_elementSpec(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3496 dissect_z3950_T_specification_elementSpec(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3497   offset = dissect_ber_choice(actx, tree, tvb, offset,
3498                                  T_specification_elementSpec_choice, hf_index, ett_z3950_T_specification_elementSpec,
3499                                  NULL);
3500 
3501   return offset;
3502 }
3503 
3504 
3505 static const ber_sequence_t Specification_sequence[] = {
3506   { &hf_z3950_schema        , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
3507   { &hf_z3950_specification_elementSpec, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_z3950_T_specification_elementSpec },
3508   { NULL, 0, 0, 0, NULL }
3509 };
3510 
3511 static int
dissect_z3950_Specification(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3512 dissect_z3950_Specification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3513   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3514                                    Specification_sequence, hf_index, ett_z3950_Specification);
3515 
3516   return offset;
3517 }
3518 
3519 
3520 static const ber_sequence_t T_dbSpecific_item_sequence[] = {
3521   { &hf_z3950_db            , BER_CLASS_CON, 1, 0, dissect_z3950_DatabaseName },
3522   { &hf_z3950_spec          , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_Specification },
3523   { NULL, 0, 0, 0, NULL }
3524 };
3525 
3526 static int
dissect_z3950_T_dbSpecific_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3527 dissect_z3950_T_dbSpecific_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3528   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3529                                    T_dbSpecific_item_sequence, hf_index, ett_z3950_T_dbSpecific_item);
3530 
3531   return offset;
3532 }
3533 
3534 
3535 static const ber_sequence_t T_dbSpecific_sequence_of[1] = {
3536   { &hf_z3950_dbSpecific_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_dbSpecific_item },
3537 };
3538 
3539 static int
dissect_z3950_T_dbSpecific(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3540 dissect_z3950_T_dbSpecific(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3541   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3542                                       T_dbSpecific_sequence_of, hf_index, ett_z3950_T_dbSpecific);
3543 
3544   return offset;
3545 }
3546 
3547 
3548 static const ber_sequence_t T_compSpec_recordSyntax_sequence_of[1] = {
3549   { &hf_z3950_compSpec_recordSyntax_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
3550 };
3551 
3552 static int
dissect_z3950_T_compSpec_recordSyntax(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3553 dissect_z3950_T_compSpec_recordSyntax(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3554   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3555                                       T_compSpec_recordSyntax_sequence_of, hf_index, ett_z3950_T_compSpec_recordSyntax);
3556 
3557   return offset;
3558 }
3559 
3560 
3561 static const ber_sequence_t CompSpec_sequence[] = {
3562   { &hf_z3950_selectAlternativeSyntax, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3563   { &hf_z3950_compSpec_generic, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Specification },
3564   { &hf_z3950_dbSpecific    , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_dbSpecific },
3565   { &hf_z3950_compSpec_recordSyntax, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_compSpec_recordSyntax },
3566   { NULL, 0, 0, 0, NULL }
3567 };
3568 
3569 static int
dissect_z3950_CompSpec(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3570 dissect_z3950_CompSpec(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3571   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3572                                    CompSpec_sequence, hf_index, ett_z3950_CompSpec);
3573 
3574   return offset;
3575 }
3576 
3577 
3578 static const value_string z3950_T_recordComposition_vals[] = {
3579   {  19, "simple" },
3580   { 209, "complex" },
3581   { 0, NULL }
3582 };
3583 
3584 static const ber_choice_t T_recordComposition_choice[] = {
3585   {  19, &hf_z3950_simple        , BER_CLASS_CON, 19, 0, dissect_z3950_ElementSetNames },
3586   { 209, &hf_z3950_recordComposition_complex, BER_CLASS_CON, 209, BER_FLAGS_IMPLTAG, dissect_z3950_CompSpec },
3587   { 0, NULL, 0, 0, 0, NULL }
3588 };
3589 
3590 static int
dissect_z3950_T_recordComposition(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3591 dissect_z3950_T_recordComposition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3592   offset = dissect_ber_choice(actx, tree, tvb, offset,
3593                                  T_recordComposition_choice, hf_index, ett_z3950_T_recordComposition,
3594                                  NULL);
3595 
3596   return offset;
3597 }
3598 
3599 
3600 static const ber_sequence_t PresentRequest_sequence[] = {
3601   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3602   { &hf_z3950_resultSetId   , BER_CLASS_CON, 31, BER_FLAGS_NOOWNTAG, dissect_z3950_ResultSetId },
3603   { &hf_z3950_resultSetStartPoint, BER_CLASS_CON, 30, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3604   { &hf_z3950_numberOfRecordsRequested, BER_CLASS_CON, 29, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3605   { &hf_z3950_additionalRanges, BER_CLASS_CON, 212, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Range },
3606   { &hf_z3950_recordComposition, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_recordComposition },
3607   { &hf_z3950_preferredRecordSyntax, BER_CLASS_CON, 104, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
3608   { &hf_z3950_maxSegmentCount, BER_CLASS_CON, 204, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3609   { &hf_z3950_maxRecordSize , BER_CLASS_CON, 206, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3610   { &hf_z3950_maxSegmentSize, BER_CLASS_CON, 207, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3611   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3612   { NULL, 0, 0, 0, NULL }
3613 };
3614 
3615 static int
dissect_z3950_PresentRequest(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3616 dissect_z3950_PresentRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3617   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3618                                    PresentRequest_sequence, hf_index, ett_z3950_PresentRequest);
3619 
3620   return offset;
3621 }
3622 
3623 
3624 static const ber_sequence_t PresentResponse_sequence[] = {
3625   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3626   { &hf_z3950_numberOfRecordsReturned, BER_CLASS_CON, 24, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3627   { &hf_z3950_nextResultSetPosition, BER_CLASS_CON, 25, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3628   { &hf_z3950_presentStatus , BER_CLASS_CON, 27, BER_FLAGS_NOOWNTAG, dissect_z3950_PresentStatus },
3629   { &hf_z3950_records       , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_Records },
3630   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3631   { NULL, 0, 0, 0, NULL }
3632 };
3633 
3634 static int
dissect_z3950_PresentResponse(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3635 dissect_z3950_PresentResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3636   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3637                                    PresentResponse_sequence, hf_index, ett_z3950_PresentResponse);
3638 
3639   return offset;
3640 }
3641 
3642 
3643 static const value_string z3950_T_deleteFunction_vals[] = {
3644   {   0, "list" },
3645   {   1, "all" },
3646   { 0, NULL }
3647 };
3648 
3649 
3650 static int
dissect_z3950_T_deleteFunction(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3651 dissect_z3950_T_deleteFunction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3652   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3653                                                 NULL);
3654 
3655   return offset;
3656 }
3657 
3658 
3659 static const ber_sequence_t SEQUENCE_OF_ResultSetId_sequence_of[1] = {
3660   { &hf_z3950_resultSetList_item, BER_CLASS_CON, 31, BER_FLAGS_NOOWNTAG, dissect_z3950_ResultSetId },
3661 };
3662 
3663 static int
dissect_z3950_SEQUENCE_OF_ResultSetId(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3664 dissect_z3950_SEQUENCE_OF_ResultSetId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3665   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3666                                       SEQUENCE_OF_ResultSetId_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_ResultSetId);
3667 
3668   return offset;
3669 }
3670 
3671 
3672 static const ber_sequence_t DeleteResultSetRequest_sequence[] = {
3673   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3674   { &hf_z3950_deleteFunction, BER_CLASS_CON, 32, BER_FLAGS_IMPLTAG, dissect_z3950_T_deleteFunction },
3675   { &hf_z3950_resultSetList , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_SEQUENCE_OF_ResultSetId },
3676   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3677   { NULL, 0, 0, 0, NULL }
3678 };
3679 
3680 static int
dissect_z3950_DeleteResultSetRequest(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3681 dissect_z3950_DeleteResultSetRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3682   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3683                                    DeleteResultSetRequest_sequence, hf_index, ett_z3950_DeleteResultSetRequest);
3684 
3685   return offset;
3686 }
3687 
3688 
3689 static const value_string z3950_DeleteSetStatus_U_vals[] = {
3690   {   0, "success" },
3691   {   1, "resultSetDidNotExist" },
3692   {   2, "previouslyDeletedByTarget" },
3693   {   3, "systemProblemAtTarget" },
3694   {   4, "accessNotAllowed" },
3695   {   5, "resourceControlAtOrigin" },
3696   {   6, "resourceControlAtTarget" },
3697   {   7, "bulkDeleteNotSupported" },
3698   {   8, "notAllRsltSetsDeletedOnBulkDlte" },
3699   {   9, "notAllRequestedResultSetsDeleted" },
3700   {  10, "resultSetInUse" },
3701   { 0, NULL }
3702 };
3703 
3704 
3705 static int
dissect_z3950_DeleteSetStatus_U(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3706 dissect_z3950_DeleteSetStatus_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3707   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3708                                                 NULL);
3709 
3710   return offset;
3711 }
3712 
3713 
3714 
3715 static int
dissect_z3950_DeleteSetStatus(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3716 dissect_z3950_DeleteSetStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3717   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
3718                                       hf_index, BER_CLASS_CON, 33, TRUE, dissect_z3950_DeleteSetStatus_U);
3719 
3720   return offset;
3721 }
3722 
3723 
3724 static const ber_sequence_t ListStatuses_item_sequence[] = {
3725   { &hf_z3950_listStatuses_id, BER_CLASS_CON, 31, BER_FLAGS_NOOWNTAG, dissect_z3950_ResultSetId },
3726   { &hf_z3950_status        , BER_CLASS_CON, 33, BER_FLAGS_NOOWNTAG, dissect_z3950_DeleteSetStatus },
3727   { NULL, 0, 0, 0, NULL }
3728 };
3729 
3730 static int
dissect_z3950_ListStatuses_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3731 dissect_z3950_ListStatuses_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3732   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3733                                    ListStatuses_item_sequence, hf_index, ett_z3950_ListStatuses_item);
3734 
3735   return offset;
3736 }
3737 
3738 
3739 static const ber_sequence_t ListStatuses_sequence_of[1] = {
3740   { &hf_z3950_ListStatuses_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_ListStatuses_item },
3741 };
3742 
3743 static int
dissect_z3950_ListStatuses(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3744 dissect_z3950_ListStatuses(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3745   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3746                                       ListStatuses_sequence_of, hf_index, ett_z3950_ListStatuses);
3747 
3748   return offset;
3749 }
3750 
3751 
3752 static const ber_sequence_t DeleteResultSetResponse_sequence[] = {
3753   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3754   { &hf_z3950_deleteOperationStatus, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_DeleteSetStatus },
3755   { &hf_z3950_deleteListStatuses, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ListStatuses },
3756   { &hf_z3950_numberNotDeleted, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3757   { &hf_z3950_bulkStatuses  , BER_CLASS_CON, 35, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ListStatuses },
3758   { &hf_z3950_deleteMessage , BER_CLASS_CON, 36, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
3759   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3760   { NULL, 0, 0, 0, NULL }
3761 };
3762 
3763 static int
dissect_z3950_DeleteResultSetResponse(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3764 dissect_z3950_DeleteResultSetResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3765   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3766                                    DeleteResultSetResponse_sequence, hf_index, ett_z3950_DeleteResultSetResponse);
3767 
3768   return offset;
3769 }
3770 
3771 
3772 static const value_string z3950_T_securityChallenge_vals[] = {
3773   {  37, "simpleForm" },
3774   {   0, "externallyDefined" },
3775   { 0, NULL }
3776 };
3777 
3778 static const ber_choice_t T_securityChallenge_choice[] = {
3779   {  37, &hf_z3950_simpleForm    , BER_CLASS_CON, 37, BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
3780   {   0, &hf_z3950_externallyDefined, BER_CLASS_CON, 0, 0, dissect_z3950_EXTERNAL },
3781   { 0, NULL, 0, 0, 0, NULL }
3782 };
3783 
3784 static int
dissect_z3950_T_securityChallenge(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3785 dissect_z3950_T_securityChallenge(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3786   offset = dissect_ber_choice(actx, tree, tvb, offset,
3787                                  T_securityChallenge_choice, hf_index, ett_z3950_T_securityChallenge,
3788                                  NULL);
3789 
3790   return offset;
3791 }
3792 
3793 
3794 static const ber_sequence_t AccessControlRequest_sequence[] = {
3795   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3796   { &hf_z3950_securityChallenge, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_securityChallenge },
3797   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3798   { NULL, 0, 0, 0, NULL }
3799 };
3800 
3801 static int
dissect_z3950_AccessControlRequest(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3802 dissect_z3950_AccessControlRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3803   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3804                                    AccessControlRequest_sequence, hf_index, ett_z3950_AccessControlRequest);
3805 
3806   return offset;
3807 }
3808 
3809 
3810 static const value_string z3950_T_securityChallengeResponse_vals[] = {
3811   {  38, "simpleForm" },
3812   {   0, "externallyDefined" },
3813   { 0, NULL }
3814 };
3815 
3816 static const ber_choice_t T_securityChallengeResponse_choice[] = {
3817   {  38, &hf_z3950_simpleForm    , BER_CLASS_CON, 38, BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
3818   {   0, &hf_z3950_externallyDefined, BER_CLASS_CON, 0, 0, dissect_z3950_EXTERNAL },
3819   { 0, NULL, 0, 0, 0, NULL }
3820 };
3821 
3822 static int
dissect_z3950_T_securityChallengeResponse(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3823 dissect_z3950_T_securityChallengeResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3824   offset = dissect_ber_choice(actx, tree, tvb, offset,
3825                                  T_securityChallengeResponse_choice, hf_index, ett_z3950_T_securityChallengeResponse,
3826                                  NULL);
3827 
3828   return offset;
3829 }
3830 
3831 
3832 static const ber_sequence_t AccessControlResponse_sequence[] = {
3833   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3834   { &hf_z3950_securityChallengeResponse, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_securityChallengeResponse },
3835   { &hf_z3950_diagnostic    , BER_CLASS_CON, 223, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_DiagRec },
3836   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3837   { NULL, 0, 0, 0, NULL }
3838 };
3839 
3840 static int
dissect_z3950_AccessControlResponse(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3841 dissect_z3950_AccessControlResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3842   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3843                                    AccessControlResponse_sequence, hf_index, ett_z3950_AccessControlResponse);
3844 
3845   return offset;
3846 }
3847 
3848 
3849 
3850 static int
dissect_z3950_ResourceReport(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3851 dissect_z3950_ResourceReport(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3852   offset = dissect_ber_external_type(implicit_tag, tree, tvb, offset, actx, hf_index, NULL);
3853 
3854   return offset;
3855 }
3856 
3857 
3858 static const value_string z3950_T_partialResultsAvailable_vals[] = {
3859   {   1, "subset" },
3860   {   2, "interim" },
3861   {   3, "none" },
3862   { 0, NULL }
3863 };
3864 
3865 
3866 static int
dissect_z3950_T_partialResultsAvailable(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3867 dissect_z3950_T_partialResultsAvailable(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3868   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3869                                                 NULL);
3870 
3871   return offset;
3872 }
3873 
3874 
3875 static const ber_sequence_t ResourceControlRequest_sequence[] = {
3876   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3877   { &hf_z3950_suspendedFlag , BER_CLASS_CON, 39, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3878   { &hf_z3950_resourceReport, BER_CLASS_CON, 40, BER_FLAGS_OPTIONAL, dissect_z3950_ResourceReport },
3879   { &hf_z3950_partialResultsAvailable, BER_CLASS_CON, 41, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_partialResultsAvailable },
3880   { &hf_z3950_resourceControlRequest_responseRequired, BER_CLASS_CON, 42, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3881   { &hf_z3950_triggeredRequestFlag, BER_CLASS_CON, 43, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3882   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3883   { NULL, 0, 0, 0, NULL }
3884 };
3885 
3886 static int
dissect_z3950_ResourceControlRequest(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3887 dissect_z3950_ResourceControlRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3888   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3889                                    ResourceControlRequest_sequence, hf_index, ett_z3950_ResourceControlRequest);
3890 
3891   return offset;
3892 }
3893 
3894 
3895 static const ber_sequence_t ResourceControlResponse_sequence[] = {
3896   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3897   { &hf_z3950_continueFlag  , BER_CLASS_CON, 44, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3898   { &hf_z3950_resultSetWanted, BER_CLASS_CON, 45, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3899   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3900   { NULL, 0, 0, 0, NULL }
3901 };
3902 
3903 static int
dissect_z3950_ResourceControlResponse(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3904 dissect_z3950_ResourceControlResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3905   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3906                                    ResourceControlResponse_sequence, hf_index, ett_z3950_ResourceControlResponse);
3907 
3908   return offset;
3909 }
3910 
3911 
3912 static const value_string z3950_T_requestedAction_vals[] = {
3913   {   1, "resourceReport" },
3914   {   2, "resourceControl" },
3915   {   3, "cancel" },
3916   { 0, NULL }
3917 };
3918 
3919 
3920 static int
dissect_z3950_T_requestedAction(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3921 dissect_z3950_T_requestedAction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3922   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3923                                                 NULL);
3924 
3925   return offset;
3926 }
3927 
3928 
3929 
3930 static int
dissect_z3950_ResourceReportId(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3931 dissect_z3950_ResourceReportId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3932   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
3933 
3934   return offset;
3935 }
3936 
3937 
3938 static const ber_sequence_t TriggerResourceControlRequest_sequence[] = {
3939   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3940   { &hf_z3950_requestedAction, BER_CLASS_CON, 46, BER_FLAGS_IMPLTAG, dissect_z3950_T_requestedAction },
3941   { &hf_z3950_prefResourceReportFormat, BER_CLASS_CON, 47, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ResourceReportId },
3942   { &hf_z3950_resultSetWanted, BER_CLASS_CON, 48, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3943   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3944   { NULL, 0, 0, 0, NULL }
3945 };
3946 
3947 static int
dissect_z3950_TriggerResourceControlRequest(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3948 dissect_z3950_TriggerResourceControlRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3949   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3950                                    TriggerResourceControlRequest_sequence, hf_index, ett_z3950_TriggerResourceControlRequest);
3951 
3952   return offset;
3953 }
3954 
3955 
3956 static const ber_sequence_t ResourceReportRequest_sequence[] = {
3957   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3958   { &hf_z3950_opId          , BER_CLASS_CON, 210, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ReferenceId },
3959   { &hf_z3950_prefResourceReportFormat, BER_CLASS_CON, 49, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ResourceReportId },
3960   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3961   { NULL, 0, 0, 0, NULL }
3962 };
3963 
3964 static int
dissect_z3950_ResourceReportRequest(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3965 dissect_z3950_ResourceReportRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3966   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3967                                    ResourceReportRequest_sequence, hf_index, ett_z3950_ResourceReportRequest);
3968 
3969   return offset;
3970 }
3971 
3972 
3973 static const value_string z3950_T_resourceReportStatus_vals[] = {
3974   {   0, "success" },
3975   {   1, "partial" },
3976   {   2, "failure-1" },
3977   {   3, "failure-2" },
3978   {   4, "failure-3" },
3979   {   5, "failure-4" },
3980   {   6, "failure-5" },
3981   {   7, "failure-6" },
3982   { 0, NULL }
3983 };
3984 
3985 
3986 static int
dissect_z3950_T_resourceReportStatus(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3987 dissect_z3950_T_resourceReportStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3988   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3989                                                 NULL);
3990 
3991   return offset;
3992 }
3993 
3994 
3995 static const ber_sequence_t ResourceReportResponse_sequence[] = {
3996   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3997   { &hf_z3950_resourceReportStatus, BER_CLASS_CON, 50, BER_FLAGS_IMPLTAG, dissect_z3950_T_resourceReportStatus },
3998   { &hf_z3950_resourceReport, BER_CLASS_CON, 51, BER_FLAGS_OPTIONAL, dissect_z3950_ResourceReport },
3999   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4000   { NULL, 0, 0, 0, NULL }
4001 };
4002 
4003 static int
dissect_z3950_ResourceReportResponse(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4004 dissect_z3950_ResourceReportResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4005   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4006                                    ResourceReportResponse_sequence, hf_index, ett_z3950_ResourceReportResponse);
4007 
4008   return offset;
4009 }
4010 
4011 
4012 static const ber_sequence_t ScanRequest_sequence[] = {
4013   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
4014   { &hf_z3950_databaseNames , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DatabaseName },
4015   { &hf_z3950_attributeSet  , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeSetId },
4016   { &hf_z3950_termListAndStartPoint, BER_CLASS_CON, 102, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributesPlusTerm },
4017   { &hf_z3950_stepSize      , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
4018   { &hf_z3950_numberOfTermsRequested, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
4019   { &hf_z3950_preferredPositionInResponse, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
4020   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4021   { NULL, 0, 0, 0, NULL }
4022 };
4023 
4024 static int
dissect_z3950_ScanRequest(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4025 dissect_z3950_ScanRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4026   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4027                                    ScanRequest_sequence, hf_index, ett_z3950_ScanRequest);
4028 
4029   return offset;
4030 }
4031 
4032 
4033 static const value_string z3950_T_scanStatus_vals[] = {
4034   {   0, "success" },
4035   {   1, "partial-1" },
4036   {   2, "partial-2" },
4037   {   3, "partial-3" },
4038   {   4, "partial-4" },
4039   {   5, "partial-5" },
4040   {   6, "failure" },
4041   { 0, NULL }
4042 };
4043 
4044 
4045 static int
dissect_z3950_T_scanStatus(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4046 dissect_z3950_T_scanStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4047   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4048                                                 NULL);
4049 
4050   return offset;
4051 }
4052 
4053 
4054 static const ber_sequence_t SEQUENCE_OF_AttributesPlusTerm_sequence_of[1] = {
4055   { &hf_z3950_alternativeTerm_item, BER_CLASS_CON, 102, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributesPlusTerm },
4056 };
4057 
4058 static int
dissect_z3950_SEQUENCE_OF_AttributesPlusTerm(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4059 dissect_z3950_SEQUENCE_OF_AttributesPlusTerm(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4060   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4061                                       SEQUENCE_OF_AttributesPlusTerm_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributesPlusTerm);
4062 
4063   return offset;
4064 }
4065 
4066 
4067 static const ber_sequence_t T_byDatabase_item_sequence[] = {
4068   { &hf_z3950_db            , BER_CLASS_CON, 105, BER_FLAGS_NOOWNTAG, dissect_z3950_DatabaseName },
4069   { &hf_z3950_num           , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
4070   { &hf_z3950_otherDbInfo   , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4071   { NULL, 0, 0, 0, NULL }
4072 };
4073 
4074 static int
dissect_z3950_T_byDatabase_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4075 dissect_z3950_T_byDatabase_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4076   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4077                                    T_byDatabase_item_sequence, hf_index, ett_z3950_T_byDatabase_item);
4078 
4079   return offset;
4080 }
4081 
4082 
4083 static const ber_sequence_t T_byDatabase_sequence_of[1] = {
4084   { &hf_z3950_byDatabase_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_byDatabase_item },
4085 };
4086 
4087 static int
dissect_z3950_T_byDatabase(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4088 dissect_z3950_T_byDatabase(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4089   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4090                                       T_byDatabase_sequence_of, hf_index, ett_z3950_T_byDatabase);
4091 
4092   return offset;
4093 }
4094 
4095 
4096 static const value_string z3950_T_occurrences_vals[] = {
4097   {   2, "global" },
4098   {   3, "byDatabase" },
4099   { 0, NULL }
4100 };
4101 
4102 static const ber_choice_t T_occurrences_choice[] = {
4103   {   2, &hf_z3950_global        , BER_CLASS_CON, 2, 0, dissect_z3950_INTEGER },
4104   {   3, &hf_z3950_byDatabase    , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_T_byDatabase },
4105   { 0, NULL, 0, 0, 0, NULL }
4106 };
4107 
4108 static int
dissect_z3950_T_occurrences(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4109 dissect_z3950_T_occurrences(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4110   offset = dissect_ber_choice(actx, tree, tvb, offset,
4111                                  T_occurrences_choice, hf_index, ett_z3950_T_occurrences,
4112                                  NULL);
4113 
4114   return offset;
4115 }
4116 
4117 
4118 static const ber_sequence_t OccurrenceByAttributes_item_sequence[] = {
4119   { &hf_z3950_attributes    , BER_CLASS_CON, 1, 0, dissect_z3950_AttributeList },
4120   { &hf_z3950_occurrences   , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_occurrences },
4121   { &hf_z3950_otherOccurInfo, BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4122   { NULL, 0, 0, 0, NULL }
4123 };
4124 
4125 static int
dissect_z3950_OccurrenceByAttributes_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4126 dissect_z3950_OccurrenceByAttributes_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4127   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4128                                    OccurrenceByAttributes_item_sequence, hf_index, ett_z3950_OccurrenceByAttributes_item);
4129 
4130   return offset;
4131 }
4132 
4133 
4134 static const ber_sequence_t OccurrenceByAttributes_sequence_of[1] = {
4135   { &hf_z3950_OccurrenceByAttributes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_OccurrenceByAttributes_item },
4136 };
4137 
4138 static int
dissect_z3950_OccurrenceByAttributes(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4139 dissect_z3950_OccurrenceByAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4140   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4141                                       OccurrenceByAttributes_sequence_of, hf_index, ett_z3950_OccurrenceByAttributes);
4142 
4143   return offset;
4144 }
4145 
4146 
4147 static const ber_sequence_t TermInfo_sequence[] = {
4148   { &hf_z3950_term          , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_Term },
4149   { &hf_z3950_displayTerm   , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4150   { &hf_z3950_suggestedAttributes, BER_CLASS_CON, 44, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeList },
4151   { &hf_z3950_alternativeTerm, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributesPlusTerm },
4152   { &hf_z3950_globalOccurrences, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
4153   { &hf_z3950_byAttributes  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OccurrenceByAttributes },
4154   { &hf_z3950_otherTermInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4155   { NULL, 0, 0, 0, NULL }
4156 };
4157 
4158 static int
dissect_z3950_TermInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4159 dissect_z3950_TermInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4160   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4161                                    TermInfo_sequence, hf_index, ett_z3950_TermInfo);
4162 
4163   return offset;
4164 }
4165 
4166 
4167 static const value_string z3950_Entry_vals[] = {
4168   {   1, "termInfo" },
4169   {   2, "surrogateDiagnostic" },
4170   { 0, NULL }
4171 };
4172 
4173 static const ber_choice_t Entry_choice[] = {
4174   {   1, &hf_z3950_termInfo      , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_TermInfo },
4175   {   2, &hf_z3950_surrogateDiagnostic, BER_CLASS_CON, 2, 0, dissect_z3950_DiagRec },
4176   { 0, NULL, 0, 0, 0, NULL }
4177 };
4178 
4179 static int
dissect_z3950_Entry(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4180 dissect_z3950_Entry(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4181   offset = dissect_ber_choice(actx, tree, tvb, offset,
4182                                  Entry_choice, hf_index, ett_z3950_Entry,
4183                                  NULL);
4184 
4185   return offset;
4186 }
4187 
4188 
4189 static const ber_sequence_t SEQUENCE_OF_Entry_sequence_of[1] = {
4190   { &hf_z3950_listEntries_entries_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_Entry },
4191 };
4192 
4193 static int
dissect_z3950_SEQUENCE_OF_Entry(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4194 dissect_z3950_SEQUENCE_OF_Entry(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4195   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4196                                       SEQUENCE_OF_Entry_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_Entry);
4197 
4198   return offset;
4199 }
4200 
4201 
4202 static const ber_sequence_t ListEntries_sequence[] = {
4203   { &hf_z3950_listEntries_entries, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Entry },
4204   { &hf_z3950_nonsurrogateDiagnostics, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DiagRec },
4205   { NULL, 0, 0, 0, NULL }
4206 };
4207 
4208 static int
dissect_z3950_ListEntries(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4209 dissect_z3950_ListEntries(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4210   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4211                                    ListEntries_sequence, hf_index, ett_z3950_ListEntries);
4212 
4213   return offset;
4214 }
4215 
4216 
4217 static const ber_sequence_t ScanResponse_sequence[] = {
4218   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
4219   { &hf_z3950_stepSize      , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
4220   { &hf_z3950_scanStatus    , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_T_scanStatus },
4221   { &hf_z3950_numberOfEntriesReturned, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
4222   { &hf_z3950_positionOfTerm, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
4223   { &hf_z3950_scanResponse_entries, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ListEntries },
4224   { &hf_z3950_attributeSet  , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AttributeSetId },
4225   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4226   { NULL, 0, 0, 0, NULL }
4227 };
4228 
4229 static int
dissect_z3950_ScanResponse(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4230 dissect_z3950_ScanResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4231   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4232                                    ScanResponse_sequence, hf_index, ett_z3950_ScanResponse);
4233 
4234   return offset;
4235 }
4236 
4237 
4238 static const ber_sequence_t SEQUENCE_OF_InternationalString_sequence_of[1] = {
4239   { &hf_z3950_inputResultSetNames_item, BER_CLASS_UNI, BER_UNI_TAG_GeneralString, BER_FLAGS_NOOWNTAG, dissect_z3950_InternationalString },
4240 };
4241 
4242 static int
dissect_z3950_SEQUENCE_OF_InternationalString(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4243 dissect_z3950_SEQUENCE_OF_InternationalString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4244   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4245                                       SEQUENCE_OF_InternationalString_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_InternationalString);
4246 
4247   return offset;
4248 }
4249 
4250 
4251 static const ber_sequence_t T_sortAttributes_sequence[] = {
4252   { &hf_z3950_sortAttributes_id, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeSetId },
4253   { &hf_z3950_sortAttributes_list, BER_CLASS_CON, 44, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeList },
4254   { NULL, 0, 0, 0, NULL }
4255 };
4256 
4257 static int
dissect_z3950_T_sortAttributes(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4258 dissect_z3950_T_sortAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4259   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4260                                    T_sortAttributes_sequence, hf_index, ett_z3950_T_sortAttributes);
4261 
4262   return offset;
4263 }
4264 
4265 
4266 static const value_string z3950_SortKey_vals[] = {
4267   {   0, "sortfield" },
4268   {   1, "elementSpec" },
4269   {   2, "sortAttributes" },
4270   { 0, NULL }
4271 };
4272 
4273 static const ber_choice_t SortKey_choice[] = {
4274   {   0, &hf_z3950_sortfield     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4275   {   1, &hf_z3950_sortKey_elementSpec, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_Specification },
4276   {   2, &hf_z3950_sortAttributes, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_sortAttributes },
4277   { 0, NULL, 0, 0, 0, NULL }
4278 };
4279 
4280 static int
dissect_z3950_SortKey(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4281 dissect_z3950_SortKey(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4282   offset = dissect_ber_choice(actx, tree, tvb, offset,
4283                                  SortKey_choice, hf_index, ett_z3950_SortKey,
4284                                  NULL);
4285 
4286   return offset;
4287 }
4288 
4289 
4290 static const ber_sequence_t T_datbaseSpecific_item_sequence[] = {
4291   { &hf_z3950_databaseName  , BER_CLASS_CON, 105, BER_FLAGS_NOOWNTAG, dissect_z3950_DatabaseName },
4292   { &hf_z3950_dbSort        , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_SortKey },
4293   { NULL, 0, 0, 0, NULL }
4294 };
4295 
4296 static int
dissect_z3950_T_datbaseSpecific_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4297 dissect_z3950_T_datbaseSpecific_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4298   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4299                                    T_datbaseSpecific_item_sequence, hf_index, ett_z3950_T_datbaseSpecific_item);
4300 
4301   return offset;
4302 }
4303 
4304 
4305 static const ber_sequence_t T_datbaseSpecific_sequence_of[1] = {
4306   { &hf_z3950_datbaseSpecific_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_datbaseSpecific_item },
4307 };
4308 
4309 static int
dissect_z3950_T_datbaseSpecific(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4310 dissect_z3950_T_datbaseSpecific(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4311   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4312                                       T_datbaseSpecific_sequence_of, hf_index, ett_z3950_T_datbaseSpecific);
4313 
4314   return offset;
4315 }
4316 
4317 
4318 static const value_string z3950_SortElement_vals[] = {
4319   {   1, "generic" },
4320   {   2, "datbaseSpecific" },
4321   { 0, NULL }
4322 };
4323 
4324 static const ber_choice_t SortElement_choice[] = {
4325   {   1, &hf_z3950_sortElement_generic, BER_CLASS_CON, 1, 0, dissect_z3950_SortKey },
4326   {   2, &hf_z3950_datbaseSpecific, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_datbaseSpecific },
4327   { 0, NULL, 0, 0, 0, NULL }
4328 };
4329 
4330 static int
dissect_z3950_SortElement(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4331 dissect_z3950_SortElement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4332   offset = dissect_ber_choice(actx, tree, tvb, offset,
4333                                  SortElement_choice, hf_index, ett_z3950_SortElement,
4334                                  NULL);
4335 
4336   return offset;
4337 }
4338 
4339 
4340 static const value_string z3950_T_sortRelation_vals[] = {
4341   {   0, "ascending" },
4342   {   1, "descending" },
4343   {   3, "ascendingByFrequency" },
4344   {   4, "descendingByfrequency" },
4345   { 0, NULL }
4346 };
4347 
4348 
4349 static int
dissect_z3950_T_sortRelation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4350 dissect_z3950_T_sortRelation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4351   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4352                                                 NULL);
4353 
4354   return offset;
4355 }
4356 
4357 
4358 static const value_string z3950_T_caseSensitivity_vals[] = {
4359   {   0, "caseSensitive" },
4360   {   1, "caseInsensitive" },
4361   { 0, NULL }
4362 };
4363 
4364 
4365 static int
dissect_z3950_T_caseSensitivity(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4366 dissect_z3950_T_caseSensitivity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4367   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4368                                                 NULL);
4369 
4370   return offset;
4371 }
4372 
4373 
4374 static const value_string z3950_T_missingValueAction_vals[] = {
4375   {   1, "abort" },
4376   {   2, "null" },
4377   {   3, "missingValueData" },
4378   { 0, NULL }
4379 };
4380 
4381 static const ber_choice_t T_missingValueAction_choice[] = {
4382   {   1, &hf_z3950_abort         , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
4383   {   2, &hf_z3950_null          , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
4384   {   3, &hf_z3950_missingValueData, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
4385   { 0, NULL, 0, 0, 0, NULL }
4386 };
4387 
4388 static int
dissect_z3950_T_missingValueAction(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4389 dissect_z3950_T_missingValueAction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4390   offset = dissect_ber_choice(actx, tree, tvb, offset,
4391                                  T_missingValueAction_choice, hf_index, ett_z3950_T_missingValueAction,
4392                                  NULL);
4393 
4394   return offset;
4395 }
4396 
4397 
4398 static const ber_sequence_t SortKeySpec_sequence[] = {
4399   { &hf_z3950_sortElement   , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_SortElement },
4400   { &hf_z3950_sortRelation  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_sortRelation },
4401   { &hf_z3950_caseSensitivity, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_caseSensitivity },
4402   { &hf_z3950_missingValueAction, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_z3950_T_missingValueAction },
4403   { NULL, 0, 0, 0, NULL }
4404 };
4405 
4406 static int
dissect_z3950_SortKeySpec(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4407 dissect_z3950_SortKeySpec(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4408   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4409                                    SortKeySpec_sequence, hf_index, ett_z3950_SortKeySpec);
4410 
4411   return offset;
4412 }
4413 
4414 
4415 static const ber_sequence_t SEQUENCE_OF_SortKeySpec_sequence_of[1] = {
4416   { &hf_z3950_sortSequence_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_SortKeySpec },
4417 };
4418 
4419 static int
dissect_z3950_SEQUENCE_OF_SortKeySpec(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4420 dissect_z3950_SEQUENCE_OF_SortKeySpec(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4421   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4422                                       SEQUENCE_OF_SortKeySpec_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_SortKeySpec);
4423 
4424   return offset;
4425 }
4426 
4427 
4428 static const ber_sequence_t SortRequest_sequence[] = {
4429   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
4430   { &hf_z3950_inputResultSetNames, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
4431   { &hf_z3950_sortedResultSetName, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4432   { &hf_z3950_sortSequence  , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_SortKeySpec },
4433   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4434   { NULL, 0, 0, 0, NULL }
4435 };
4436 
4437 static int
dissect_z3950_SortRequest(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4438 dissect_z3950_SortRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4439   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4440                                    SortRequest_sequence, hf_index, ett_z3950_SortRequest);
4441 
4442   return offset;
4443 }
4444 
4445 
4446 static const value_string z3950_T_sortStatus_vals[] = {
4447   {   0, "success" },
4448   {   1, "partial-1" },
4449   {   2, "failure" },
4450   { 0, NULL }
4451 };
4452 
4453 
4454 static int
dissect_z3950_T_sortStatus(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4455 dissect_z3950_T_sortStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4456   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4457                                                 NULL);
4458 
4459   return offset;
4460 }
4461 
4462 
4463 static const value_string z3950_T_sort_resultSetStatus_vals[] = {
4464   {   1, "empty" },
4465   {   2, "interim" },
4466   {   3, "unchanged" },
4467   {   4, "none" },
4468   { 0, NULL }
4469 };
4470 
4471 
4472 static int
dissect_z3950_T_sort_resultSetStatus(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4473 dissect_z3950_T_sort_resultSetStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4474   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4475                                                 NULL);
4476 
4477   return offset;
4478 }
4479 
4480 
4481 static const ber_sequence_t SortResponse_sequence[] = {
4482   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
4483   { &hf_z3950_sortStatus    , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_T_sortStatus },
4484   { &hf_z3950_sort_resultSetStatus, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_sort_resultSetStatus },
4485   { &hf_z3950_diagnostics   , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DiagRec },
4486   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4487   { NULL, 0, 0, 0, NULL }
4488 };
4489 
4490 static int
dissect_z3950_SortResponse(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4491 dissect_z3950_SortResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4492   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4493                                    SortResponse_sequence, hf_index, ett_z3950_SortResponse);
4494 
4495   return offset;
4496 }
4497 
4498 
4499 static const ber_sequence_t Segment_sequence[] = {
4500   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
4501   { &hf_z3950_numberOfRecordsReturned, BER_CLASS_CON, 24, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
4502   { &hf_z3950_segmentRecords, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_NamePlusRecord },
4503   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4504   { NULL, 0, 0, 0, NULL }
4505 };
4506 
4507 static int
dissect_z3950_Segment(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4508 dissect_z3950_Segment(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4509   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4510                                    Segment_sequence, hf_index, ett_z3950_Segment);
4511 
4512   return offset;
4513 }
4514 
4515 
4516 static const value_string z3950_T_function_vals[] = {
4517   {   1, "create" },
4518   {   2, "delete" },
4519   {   3, "modify" },
4520   { 0, NULL }
4521 };
4522 
4523 
4524 static int
dissect_z3950_T_function(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4525 dissect_z3950_T_function(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4526   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4527                                                 NULL);
4528 
4529   return offset;
4530 }
4531 
4532 
4533 static const value_string z3950_T_allowableFunctions_item_vals[] = {
4534   {   1, "delete" },
4535   {   2, "modifyContents" },
4536   {   3, "modifyPermissions" },
4537   {   4, "present" },
4538   {   5, "invoke" },
4539   { 0, NULL }
4540 };
4541 
4542 
4543 static int
dissect_z3950_T_allowableFunctions_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4544 dissect_z3950_T_allowableFunctions_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4545   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4546                                                 NULL);
4547 
4548   return offset;
4549 }
4550 
4551 
4552 static const ber_sequence_t T_allowableFunctions_sequence_of[1] = {
4553   { &hf_z3950_allowableFunctions_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_z3950_T_allowableFunctions_item },
4554 };
4555 
4556 static int
dissect_z3950_T_allowableFunctions(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4557 dissect_z3950_T_allowableFunctions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4558   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4559                                       T_allowableFunctions_sequence_of, hf_index, ett_z3950_T_allowableFunctions);
4560 
4561   return offset;
4562 }
4563 
4564 
4565 static const ber_sequence_t Permissions_item_sequence[] = {
4566   { &hf_z3950_userId        , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4567   { &hf_z3950_allowableFunctions, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_allowableFunctions },
4568   { NULL, 0, 0, 0, NULL }
4569 };
4570 
4571 static int
dissect_z3950_Permissions_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4572 dissect_z3950_Permissions_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4573   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4574                                    Permissions_item_sequence, hf_index, ett_z3950_Permissions_item);
4575 
4576   return offset;
4577 }
4578 
4579 
4580 static const ber_sequence_t Permissions_sequence_of[1] = {
4581   { &hf_z3950_Permissions_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Permissions_item },
4582 };
4583 
4584 static int
dissect_z3950_Permissions(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4585 dissect_z3950_Permissions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4586   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4587                                       Permissions_sequence_of, hf_index, ett_z3950_Permissions);
4588 
4589   return offset;
4590 }
4591 
4592 
4593 static const value_string z3950_T_waitAction_vals[] = {
4594   {   1, "wait" },
4595   {   2, "waitIfPossible" },
4596   {   3, "dontWait" },
4597   {   4, "dontReturnPackage" },
4598   { 0, NULL }
4599 };
4600 
4601 
4602 static int
dissect_z3950_T_waitAction(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4603 dissect_z3950_T_waitAction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4604   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4605                                                 NULL);
4606 
4607   return offset;
4608 }
4609 
4610 
4611 static const ber_sequence_t ExtendedServicesRequest_sequence[] = {
4612   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
4613   { &hf_z3950_function      , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_T_function },
4614   { &hf_z3950_packageType   , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
4615   { &hf_z3950_packageName   , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4616   { &hf_z3950_userId        , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4617   { &hf_z3950_retentionTime , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
4618   { &hf_z3950_permissions   , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Permissions },
4619   { &hf_z3950_extendedServicesRequest_description, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4620   { &hf_z3950_taskSpecificParameters, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
4621   { &hf_z3950_waitAction    , BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_z3950_T_waitAction },
4622   { &hf_z3950_elements      , BER_CLASS_CON, 103, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ElementSetName },
4623   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4624   { NULL, 0, 0, 0, NULL }
4625 };
4626 
4627 static int
dissect_z3950_ExtendedServicesRequest(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4628 dissect_z3950_ExtendedServicesRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4629   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4630                                    ExtendedServicesRequest_sequence, hf_index, ett_z3950_ExtendedServicesRequest);
4631 
4632   return offset;
4633 }
4634 
4635 
4636 static const value_string z3950_T_operationStatus_vals[] = {
4637   {   1, "done" },
4638   {   2, "accepted" },
4639   {   3, "failure" },
4640   { 0, NULL }
4641 };
4642 
4643 
4644 static int
dissect_z3950_T_operationStatus(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4645 dissect_z3950_T_operationStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4646   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4647                                                 NULL);
4648 
4649   return offset;
4650 }
4651 
4652 
4653 static const ber_sequence_t ExtendedServicesResponse_sequence[] = {
4654   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
4655   { &hf_z3950_operationStatus, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_T_operationStatus },
4656   { &hf_z3950_diagnostics   , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DiagRec },
4657   { &hf_z3950_taskPackage   , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
4658   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4659   { NULL, 0, 0, 0, NULL }
4660 };
4661 
4662 static int
dissect_z3950_ExtendedServicesResponse(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4663 dissect_z3950_ExtendedServicesResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4664   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4665                                    ExtendedServicesResponse_sequence, hf_index, ett_z3950_ExtendedServicesResponse);
4666 
4667   return offset;
4668 }
4669 
4670 
4671 static const value_string z3950_CloseReason_U_vals[] = {
4672   {   0, "finished" },
4673   {   1, "shutdown" },
4674   {   2, "systemProblem" },
4675   {   3, "costLimit" },
4676   {   4, "resources" },
4677   {   5, "securityViolation" },
4678   {   6, "protocolError" },
4679   {   7, "lackOfActivity" },
4680   {   8, "peerAbort" },
4681   {   9, "unspecified" },
4682   { 0, NULL }
4683 };
4684 
4685 
4686 static int
dissect_z3950_CloseReason_U(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4687 dissect_z3950_CloseReason_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4688   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4689                                                 NULL);
4690 
4691   return offset;
4692 }
4693 
4694 
4695 
4696 static int
dissect_z3950_CloseReason(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4697 dissect_z3950_CloseReason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4698   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
4699                                       hf_index, BER_CLASS_CON, 211, TRUE, dissect_z3950_CloseReason_U);
4700 
4701   return offset;
4702 }
4703 
4704 
4705 static const ber_sequence_t Close_sequence[] = {
4706   { &hf_z3950_referenceId   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
4707   { &hf_z3950_closeReason   , BER_CLASS_CON, 211, BER_FLAGS_NOOWNTAG, dissect_z3950_CloseReason },
4708   { &hf_z3950_diagnosticInformation, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4709   { &hf_z3950_resourceReportFormat, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ResourceReportId },
4710   { &hf_z3950_resourceReport, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_z3950_ResourceReport },
4711   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4712   { NULL, 0, 0, 0, NULL }
4713 };
4714 
4715 static int
dissect_z3950_Close(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4716 dissect_z3950_Close(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4717   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4718                                    Close_sequence, hf_index, ett_z3950_Close);
4719 
4720   return offset;
4721 }
4722 
4723 
4724 static const value_string z3950_PDU_vals[] = {
4725   {  20, "initRequest" },
4726   {  21, "initResponse" },
4727   {  22, "searchRequest" },
4728   {  23, "searchResponse" },
4729   {  24, "presentRequest" },
4730   {  25, "presentResponse" },
4731   {  26, "deleteResultSetRequest" },
4732   {  27, "deleteResultSetResponse" },
4733   {  28, "accessControlRequest" },
4734   {  29, "accessControlResponse" },
4735   {  30, "resourceControlRequest" },
4736   {  31, "resourceControlResponse" },
4737   {  32, "triggerResourceControlRequest" },
4738   {  33, "resourceReportRequest" },
4739   {  34, "resourceReportResponse" },
4740   {  35, "scanRequest" },
4741   {  36, "scanResponse" },
4742   {  43, "sortRequest" },
4743   {  44, "sortResponse" },
4744   {  45, "segmentRequest" },
4745   {  46, "extendedServicesRequest" },
4746   {  47, "extendedServicesResponse" },
4747   {  48, "close" },
4748   { 0, NULL }
4749 };
4750 
4751 static const ber_choice_t PDU_choice[] = {
4752   {  20, &hf_z3950_initRequest   , BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_z3950_InitializeRequest },
4753   {  21, &hf_z3950_initResponse  , BER_CLASS_CON, 21, BER_FLAGS_IMPLTAG, dissect_z3950_InitializeResponse },
4754   {  22, &hf_z3950_searchRequest , BER_CLASS_CON, 22, BER_FLAGS_IMPLTAG, dissect_z3950_SearchRequest },
4755   {  23, &hf_z3950_searchResponse, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_z3950_SearchResponse },
4756   {  24, &hf_z3950_presentRequest, BER_CLASS_CON, 24, BER_FLAGS_IMPLTAG, dissect_z3950_PresentRequest },
4757   {  25, &hf_z3950_presentResponse, BER_CLASS_CON, 25, BER_FLAGS_IMPLTAG, dissect_z3950_PresentResponse },
4758   {  26, &hf_z3950_deleteResultSetRequest, BER_CLASS_CON, 26, BER_FLAGS_IMPLTAG, dissect_z3950_DeleteResultSetRequest },
4759   {  27, &hf_z3950_deleteResultSetResponse, BER_CLASS_CON, 27, BER_FLAGS_IMPLTAG, dissect_z3950_DeleteResultSetResponse },
4760   {  28, &hf_z3950_accessControlRequest, BER_CLASS_CON, 28, BER_FLAGS_IMPLTAG, dissect_z3950_AccessControlRequest },
4761   {  29, &hf_z3950_accessControlResponse, BER_CLASS_CON, 29, BER_FLAGS_IMPLTAG, dissect_z3950_AccessControlResponse },
4762   {  30, &hf_z3950_resourceControlRequest, BER_CLASS_CON, 30, BER_FLAGS_IMPLTAG, dissect_z3950_ResourceControlRequest },
4763   {  31, &hf_z3950_resourceControlResponse, BER_CLASS_CON, 31, BER_FLAGS_IMPLTAG, dissect_z3950_ResourceControlResponse },
4764   {  32, &hf_z3950_triggerResourceControlRequest, BER_CLASS_CON, 32, BER_FLAGS_IMPLTAG, dissect_z3950_TriggerResourceControlRequest },
4765   {  33, &hf_z3950_resourceReportRequest, BER_CLASS_CON, 33, BER_FLAGS_IMPLTAG, dissect_z3950_ResourceReportRequest },
4766   {  34, &hf_z3950_resourceReportResponse, BER_CLASS_CON, 34, BER_FLAGS_IMPLTAG, dissect_z3950_ResourceReportResponse },
4767   {  35, &hf_z3950_scanRequest   , BER_CLASS_CON, 35, BER_FLAGS_IMPLTAG, dissect_z3950_ScanRequest },
4768   {  36, &hf_z3950_scanResponse  , BER_CLASS_CON, 36, BER_FLAGS_IMPLTAG, dissect_z3950_ScanResponse },
4769   {  43, &hf_z3950_sortRequest   , BER_CLASS_CON, 43, BER_FLAGS_IMPLTAG, dissect_z3950_SortRequest },
4770   {  44, &hf_z3950_sortResponse  , BER_CLASS_CON, 44, BER_FLAGS_IMPLTAG, dissect_z3950_SortResponse },
4771   {  45, &hf_z3950_segmentRequest, BER_CLASS_CON, 45, BER_FLAGS_IMPLTAG, dissect_z3950_Segment },
4772   {  46, &hf_z3950_extendedServicesRequest, BER_CLASS_CON, 46, BER_FLAGS_IMPLTAG, dissect_z3950_ExtendedServicesRequest },
4773   {  47, &hf_z3950_extendedServicesResponse, BER_CLASS_CON, 47, BER_FLAGS_IMPLTAG, dissect_z3950_ExtendedServicesResponse },
4774   {  48, &hf_z3950_close         , BER_CLASS_CON, 48, BER_FLAGS_IMPLTAG, dissect_z3950_Close },
4775   { 0, NULL, 0, 0, 0, NULL }
4776 };
4777 
4778 static int
dissect_z3950_PDU(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4779 dissect_z3950_PDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4780 #line 127 "./asn1/z3950/z3950.cnf"
4781   gint choice;
4782 
4783   offset = dissect_ber_choice(actx, tree, tvb, offset,
4784                                  PDU_choice, hf_index, ett_z3950_PDU,
4785                                  &choice);
4786 
4787 #line 130 "./asn1/z3950/z3950.cnf"
4788   if (choice >= 0) {
4789     packet_info *pinfo = actx->pinfo;
4790     gint32 tag = PDU_choice[choice].tag;
4791 
4792     col_set_str(pinfo->cinfo, COL_INFO,
4793       val_to_str_const(tag, z3950_PDU_vals, "Unknown Z39.50 PDU"));
4794   }
4795 
4796 
4797   return offset;
4798 }
4799 
4800 
4801 
4802 static int
dissect_z3950_DBName(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4803 dissect_z3950_DBName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4804   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
4805                                       hf_index, BER_CLASS_CON, 2, TRUE, dissect_z3950_VisibleString);
4806 
4807   return offset;
4808 }
4809 
4810 
4811 static const ber_sequence_t SEQUENCE_OF_DBName_sequence_of[1] = {
4812   { &hf_z3950_dblist_item   , BER_CLASS_CON, 2, BER_FLAGS_NOOWNTAG, dissect_z3950_DBName },
4813 };
4814 
4815 static int
dissect_z3950_SEQUENCE_OF_DBName(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4816 dissect_z3950_SEQUENCE_OF_DBName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4817   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4818                                       SEQUENCE_OF_DBName_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_DBName);
4819 
4820   return offset;
4821 }
4822 
4823 
4824 static const ber_sequence_t OCLC_UserInformation_sequence[] = {
4825   { &hf_z3950_motd          , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_VisibleString },
4826   { &hf_z3950_dblist        , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_SEQUENCE_OF_DBName },
4827   { &hf_z3950_failReason    , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
4828   { &hf_z3950_oCLC_UserInformation_text, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_VisibleString },
4829   { NULL, 0, 0, 0, NULL }
4830 };
4831 
4832 static int
dissect_z3950_OCLC_UserInformation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4833 dissect_z3950_OCLC_UserInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4834   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4835                                    OCLC_UserInformation_sequence, hf_index, ett_z3950_OCLC_UserInformation);
4836 
4837   return offset;
4838 }
4839 
4840 
4841 
4842 static int
dissect_z3950_SutrsRecord(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4843 dissect_z3950_SutrsRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4844   offset = dissect_z3950_InternationalString(implicit_tag, tvb, offset, actx, tree, hf_index);
4845 
4846   return offset;
4847 }
4848 
4849 
4850 static const ber_sequence_t Volume_sequence[] = {
4851   { &hf_z3950_enumeration   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4852   { &hf_z3950_chronology    , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4853   { &hf_z3950_enumAndChron  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4854   { NULL, 0, 0, 0, NULL }
4855 };
4856 
4857 static int
dissect_z3950_Volume(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4858 dissect_z3950_Volume(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4859   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4860                                    Volume_sequence, hf_index, ett_z3950_Volume);
4861 
4862   return offset;
4863 }
4864 
4865 
4866 static const ber_sequence_t SEQUENCE_OF_Volume_sequence_of[1] = {
4867   { &hf_z3950_volumes_item  , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Volume },
4868 };
4869 
4870 static int
dissect_z3950_SEQUENCE_OF_Volume(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4871 dissect_z3950_SEQUENCE_OF_Volume(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4872   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4873                                       SEQUENCE_OF_Volume_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_Volume);
4874 
4875   return offset;
4876 }
4877 
4878 
4879 static const ber_sequence_t CircRecord_sequence[] = {
4880   { &hf_z3950_availableNow  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
4881   { &hf_z3950_availablityDate, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4882   { &hf_z3950_availableThru , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4883   { &hf_z3950_circRecord_restrictions, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4884   { &hf_z3950_itemId        , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4885   { &hf_z3950_renewable     , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
4886   { &hf_z3950_onHold        , BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
4887   { &hf_z3950_enumAndChron  , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4888   { &hf_z3950_midspine      , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4889   { &hf_z3950_temporaryLocation, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4890   { NULL, 0, 0, 0, NULL }
4891 };
4892 
4893 static int
dissect_z3950_CircRecord(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4894 dissect_z3950_CircRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4895   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4896                                    CircRecord_sequence, hf_index, ett_z3950_CircRecord);
4897 
4898   return offset;
4899 }
4900 
4901 
4902 static const ber_sequence_t SEQUENCE_OF_CircRecord_sequence_of[1] = {
4903   { &hf_z3950_circulationData_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_CircRecord },
4904 };
4905 
4906 static int
dissect_z3950_SEQUENCE_OF_CircRecord(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4907 dissect_z3950_SEQUENCE_OF_CircRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4908   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4909                                       SEQUENCE_OF_CircRecord_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_CircRecord);
4910 
4911   return offset;
4912 }
4913 
4914 
4915 static const ber_sequence_t HoldingsAndCircData_sequence[] = {
4916   { &hf_z3950_typeOfRecord  , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4917   { &hf_z3950_encodingLevel , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4918   { &hf_z3950_format        , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4919   { &hf_z3950_receiptAcqStatus, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4920   { &hf_z3950_generalRetention, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4921   { &hf_z3950_completeness  , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4922   { &hf_z3950_dateOfReport  , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4923   { &hf_z3950_nucCode       , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4924   { &hf_z3950_localLocation , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4925   { &hf_z3950_shelvingLocation, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4926   { &hf_z3950_callNumber    , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4927   { &hf_z3950_shelvingData  , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4928   { &hf_z3950_copyNumber    , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4929   { &hf_z3950_publicNote    , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4930   { &hf_z3950_reproductionNote, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4931   { &hf_z3950_termsUseRepro , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4932   { &hf_z3950_enumAndChron  , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4933   { &hf_z3950_volumes       , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Volume },
4934   { &hf_z3950_circulationData, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_CircRecord },
4935   { NULL, 0, 0, 0, NULL }
4936 };
4937 
4938 static int
dissect_z3950_HoldingsAndCircData(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4939 dissect_z3950_HoldingsAndCircData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4940   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4941                                    HoldingsAndCircData_sequence, hf_index, ett_z3950_HoldingsAndCircData);
4942 
4943   return offset;
4944 }
4945 
4946 
4947 static const value_string z3950_HoldingsRecord_vals[] = {
4948   {   1, "marcHoldingsRecord" },
4949   {   2, "holdingsAndCirc" },
4950   { 0, NULL }
4951 };
4952 
4953 static const ber_choice_t HoldingsRecord_choice[] = {
4954   {   1, &hf_z3950_marcHoldingsRecord, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
4955   {   2, &hf_z3950_holdingsAndCirc, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_HoldingsAndCircData },
4956   { 0, NULL, 0, 0, 0, NULL }
4957 };
4958 
4959 static int
dissect_z3950_HoldingsRecord(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4960 dissect_z3950_HoldingsRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4961   offset = dissect_ber_choice(actx, tree, tvb, offset,
4962                                  HoldingsRecord_choice, hf_index, ett_z3950_HoldingsRecord,
4963                                  NULL);
4964 
4965   return offset;
4966 }
4967 
4968 
4969 static const ber_sequence_t SEQUENCE_OF_HoldingsRecord_sequence_of[1] = {
4970   { &hf_z3950_holdingsData_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_HoldingsRecord },
4971 };
4972 
4973 static int
dissect_z3950_SEQUENCE_OF_HoldingsRecord(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4974 dissect_z3950_SEQUENCE_OF_HoldingsRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4975   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4976                                       SEQUENCE_OF_HoldingsRecord_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_HoldingsRecord);
4977 
4978   return offset;
4979 }
4980 
4981 
4982 static const ber_sequence_t OPACRecord_sequence[] = {
4983   { &hf_z3950_bibliographicRecord, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
4984   { &hf_z3950_holdingsData  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_HoldingsRecord },
4985   { NULL, 0, 0, 0, NULL }
4986 };
4987 
4988 static int
dissect_z3950_OPACRecord(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4989 dissect_z3950_OPACRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4990   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4991                                    OPACRecord_sequence, hf_index, ett_z3950_OPACRecord);
4992 
4993   return offset;
4994 }
4995 
4996 
4997 static const value_string z3950_T_tooManyWhat_vals[] = {
4998   {   1, "argumentWords" },
4999   {   2, "truncatedWords" },
5000   {   3, "booleanOperators" },
5001   {   4, "incompleteSubfields" },
5002   {   5, "characters" },
5003   {   6, "recordsRetrieved" },
5004   {   7, "dataBasesSpecified" },
5005   {   8, "resultSetsCreated" },
5006   {   9, "indexTermsProcessed" },
5007   { 0, NULL }
5008 };
5009 
5010 
5011 static int
dissect_z3950_T_tooManyWhat(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5012 dissect_z3950_T_tooManyWhat(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5013   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5014                                                 NULL);
5015 
5016   return offset;
5017 }
5018 
5019 
5020 static const ber_sequence_t T_tooMany_sequence[] = {
5021   { &hf_z3950_tooManyWhat   , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_tooManyWhat },
5022   { &hf_z3950_max           , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5023   { NULL, 0, 0, 0, NULL }
5024 };
5025 
5026 static int
dissect_z3950_T_tooMany(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5027 dissect_z3950_T_tooMany(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5028   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5029                                    T_tooMany_sequence, hf_index, ett_z3950_T_tooMany);
5030 
5031   return offset;
5032 }
5033 
5034 
5035 static const ber_sequence_t SEQUENCE_OF_Specification_sequence_of[1] = {
5036   { &hf_z3950_goodOnes_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Specification },
5037 };
5038 
5039 static int
dissect_z3950_SEQUENCE_OF_Specification(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5040 dissect_z3950_SEQUENCE_OF_Specification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5041   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5042                                       SEQUENCE_OF_Specification_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_Specification);
5043 
5044   return offset;
5045 }
5046 
5047 
5048 static const ber_sequence_t T_badSpec_sequence[] = {
5049   { &hf_z3950_spec          , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_Specification },
5050   { &hf_z3950_db            , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
5051   { &hf_z3950_goodOnes      , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Specification },
5052   { NULL, 0, 0, 0, NULL }
5053 };
5054 
5055 static int
dissect_z3950_T_badSpec(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5056 dissect_z3950_T_badSpec(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5057   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5058                                    T_badSpec_sequence, hf_index, ett_z3950_T_badSpec);
5059 
5060   return offset;
5061 }
5062 
5063 
5064 static const value_string z3950_T_reasonCode_vals[] = {
5065   {   0, "doesNotExist" },
5066   {   1, "existsButUnavail" },
5067   {   2, "locked" },
5068   {   3, "accessDenied" },
5069   { 0, NULL }
5070 };
5071 
5072 
5073 static int
dissect_z3950_T_reasonCode(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5074 dissect_z3950_T_reasonCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5075   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5076                                                 NULL);
5077 
5078   return offset;
5079 }
5080 
5081 
5082 static const ber_sequence_t T_why_sequence[] = {
5083   { &hf_z3950_reasonCode    , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_reasonCode },
5084   { &hf_z3950_message       , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5085   { NULL, 0, 0, 0, NULL }
5086 };
5087 
5088 static int
dissect_z3950_T_why(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5089 dissect_z3950_T_why(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5090   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5091                                    T_why_sequence, hf_index, ett_z3950_T_why);
5092 
5093   return offset;
5094 }
5095 
5096 
5097 static const ber_sequence_t T_dbUnavail_sequence[] = {
5098   { &hf_z3950_db            , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
5099   { &hf_z3950_why           , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_why },
5100   { NULL, 0, 0, 0, NULL }
5101 };
5102 
5103 static int
dissect_z3950_T_dbUnavail(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5104 dissect_z3950_T_dbUnavail(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5105   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5106                                    T_dbUnavail_sequence, hf_index, ett_z3950_T_dbUnavail);
5107 
5108   return offset;
5109 }
5110 
5111 
5112 static const value_string z3950_T_unSupOp_vals[] = {
5113   {   0, "and" },
5114   {   1, "or" },
5115   {   2, "and-not" },
5116   {   3, "prox" },
5117   { 0, NULL }
5118 };
5119 
5120 
5121 static int
dissect_z3950_T_unSupOp(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5122 dissect_z3950_T_unSupOp(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5123   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5124                                                 NULL);
5125 
5126   return offset;
5127 }
5128 
5129 
5130 static const ber_sequence_t T_attribute_sequence[] = {
5131   { &hf_z3950_id            , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
5132   { &hf_z3950_type          , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5133   { &hf_z3950_value         , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5134   { &hf_z3950_term          , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_Term },
5135   { NULL, 0, 0, 0, NULL }
5136 };
5137 
5138 static int
dissect_z3950_T_attribute(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5139 dissect_z3950_T_attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5140   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5141                                    T_attribute_sequence, hf_index, ett_z3950_T_attribute);
5142 
5143   return offset;
5144 }
5145 
5146 
5147 static const ber_sequence_t SEQUENCE_OF_AttributeList_sequence_of[1] = {
5148   { &hf_z3950_recommendedAlternatives_item, BER_CLASS_CON, 44, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeList },
5149 };
5150 
5151 static int
dissect_z3950_SEQUENCE_OF_AttributeList(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5152 dissect_z3950_SEQUENCE_OF_AttributeList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5153   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5154                                       SEQUENCE_OF_AttributeList_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeList);
5155 
5156   return offset;
5157 }
5158 
5159 
5160 static const ber_sequence_t T_attCombo_sequence[] = {
5161   { &hf_z3950_unsupportedCombination, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_AttributeList },
5162   { &hf_z3950_recommendedAlternatives, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeList },
5163   { NULL, 0, 0, 0, NULL }
5164 };
5165 
5166 static int
dissect_z3950_T_attCombo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5167 dissect_z3950_T_attCombo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5168   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5169                                    T_attCombo_sequence, hf_index, ett_z3950_T_attCombo);
5170 
5171   return offset;
5172 }
5173 
5174 
5175 static const value_string z3950_T_problem_vals[] = {
5176   {   1, "codedValue" },
5177   {   2, "unparsable" },
5178   {   3, "tooShort" },
5179   {   4, "type" },
5180   { 0, NULL }
5181 };
5182 
5183 
5184 static int
dissect_z3950_T_problem(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5185 dissect_z3950_T_problem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5186   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5187                                                 NULL);
5188 
5189   return offset;
5190 }
5191 
5192 
5193 static const ber_sequence_t T_diagFormat_term_sequence[] = {
5194   { &hf_z3950_problem       , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_problem },
5195   { &hf_z3950_term          , BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_z3950_Term },
5196   { NULL, 0, 0, 0, NULL }
5197 };
5198 
5199 static int
dissect_z3950_T_diagFormat_term(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5200 dissect_z3950_T_diagFormat_term(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5201   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5202                                    T_diagFormat_term_sequence, hf_index, ett_z3950_T_diagFormat_term);
5203 
5204   return offset;
5205 }
5206 
5207 
5208 static const value_string z3950_T_diagFormat_proximity_vals[] = {
5209   {   1, "resultSets" },
5210   {   2, "badSet" },
5211   {   3, "relation" },
5212   {   4, "unit" },
5213   {   5, "distance" },
5214   {   6, "attributes" },
5215   {   7, "ordered" },
5216   {   8, "exclusion" },
5217   { 0, NULL }
5218 };
5219 
5220 static const ber_choice_t T_diagFormat_proximity_choice[] = {
5221   {   1, &hf_z3950_resultSets    , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5222   {   2, &hf_z3950_badSet        , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5223   {   3, &hf_z3950_relation      , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5224   {   4, &hf_z3950_diagFormat_proximity_unit, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5225   {   5, &hf_z3950_distance      , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5226   {   6, &hf_z3950_attributes    , BER_CLASS_CON, 6, 0, dissect_z3950_AttributeList },
5227   {   7, &hf_z3950_diagFormat_proximity_ordered, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5228   {   8, &hf_z3950_diagFormat_proximity_exclusion, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5229   { 0, NULL, 0, 0, 0, NULL }
5230 };
5231 
5232 static int
dissect_z3950_T_diagFormat_proximity(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5233 dissect_z3950_T_diagFormat_proximity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5234   offset = dissect_ber_choice(actx, tree, tvb, offset,
5235                                  T_diagFormat_proximity_choice, hf_index, ett_z3950_T_diagFormat_proximity,
5236                                  NULL);
5237 
5238   return offset;
5239 }
5240 
5241 
5242 static const value_string z3950_T_posInResponse_vals[] = {
5243   {   1, "mustBeOne" },
5244   {   2, "mustBePositive" },
5245   {   3, "mustBeNonNegative" },
5246   {   4, "other" },
5247   { 0, NULL }
5248 };
5249 
5250 
5251 static int
dissect_z3950_T_posInResponse(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5252 dissect_z3950_T_posInResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5253   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5254                                                 NULL);
5255 
5256   return offset;
5257 }
5258 
5259 
5260 static const value_string z3950_T_scan_vals[] = {
5261   {   0, "nonZeroStepSize" },
5262   {   1, "specifiedStepSize" },
5263   {   3, "termList1" },
5264   {   4, "termList2" },
5265   {   5, "posInResponse" },
5266   {   6, "resources" },
5267   {   7, "endOfList" },
5268   { 0, NULL }
5269 };
5270 
5271 static const ber_choice_t T_scan_choice[] = {
5272   {   0, &hf_z3950_nonZeroStepSize, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5273   {   1, &hf_z3950_specifiedStepSize, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5274   {   3, &hf_z3950_termList1     , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5275   {   4, &hf_z3950_termList2     , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeList },
5276   {   5, &hf_z3950_posInResponse , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_T_posInResponse },
5277   {   6, &hf_z3950_resources     , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5278   {   7, &hf_z3950_endOfList     , BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5279   { 0, NULL, 0, 0, 0, NULL }
5280 };
5281 
5282 static int
dissect_z3950_T_scan(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5283 dissect_z3950_T_scan(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5284   offset = dissect_ber_choice(actx, tree, tvb, offset,
5285                                  T_scan_choice, hf_index, ett_z3950_T_scan,
5286                                  NULL);
5287 
5288   return offset;
5289 }
5290 
5291 
5292 static const value_string z3950_T_key_vals[] = {
5293   {   1, "tooMany" },
5294   {   2, "duplicate" },
5295   { 0, NULL }
5296 };
5297 
5298 
5299 static int
dissect_z3950_T_key(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5300 dissect_z3950_T_key(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5301   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5302                                                 NULL);
5303 
5304   return offset;
5305 }
5306 
5307 
5308 static const value_string z3950_T_illegal_vals[] = {
5309   {   1, "relation" },
5310   {   2, "case" },
5311   {   3, "action" },
5312   {   4, "sort" },
5313   { 0, NULL }
5314 };
5315 
5316 
5317 static int
dissect_z3950_T_illegal(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5318 dissect_z3950_T_illegal(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5319   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5320                                                 NULL);
5321 
5322   return offset;
5323 }
5324 
5325 
5326 static const value_string z3950_T_sort_vals[] = {
5327   {   0, "sequence" },
5328   {   1, "noRsName" },
5329   {   2, "tooMany" },
5330   {   3, "incompatible" },
5331   {   4, "generic" },
5332   {   5, "dbSpecific" },
5333   {   6, "sortElement" },
5334   {   7, "key" },
5335   {   8, "action" },
5336   {   9, "illegal" },
5337   {  10, "inputTooLarge" },
5338   {  11, "aggregateTooLarge" },
5339   { 0, NULL }
5340 };
5341 
5342 static const ber_choice_t T_sort_choice[] = {
5343   {   0, &hf_z3950_sequence      , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5344   {   1, &hf_z3950_noRsName      , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5345   {   2, &hf_z3950_diagFormat_sort_tooMany, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5346   {   3, &hf_z3950_incompatible  , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5347   {   4, &hf_z3950_generic       , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5348   {   5, &hf_z3950_diagFormat_sort_dbSpecific, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5349   {   6, &hf_z3950_sortElement   , BER_CLASS_CON, 6, 0, dissect_z3950_SortElement },
5350   {   7, &hf_z3950_key           , BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_z3950_T_key },
5351   {   8, &hf_z3950_action        , BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5352   {   9, &hf_z3950_illegal       , BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_z3950_T_illegal },
5353   {  10, &hf_z3950_inputTooLarge , BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
5354   {  11, &hf_z3950_aggregateTooLarge, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5355   { 0, NULL, 0, 0, 0, NULL }
5356 };
5357 
5358 static int
dissect_z3950_T_sort(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5359 dissect_z3950_T_sort(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5360   offset = dissect_ber_choice(actx, tree, tvb, offset,
5361                                  T_sort_choice, hf_index, ett_z3950_T_sort,
5362                                  NULL);
5363 
5364   return offset;
5365 }
5366 
5367 
5368 static const value_string z3950_T_segmentation_vals[] = {
5369   {   0, "segmentCount" },
5370   {   1, "segmentSize" },
5371   { 0, NULL }
5372 };
5373 
5374 static const ber_choice_t T_segmentation_choice[] = {
5375   {   0, &hf_z3950_segmentCount  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5376   {   1, &hf_z3950_segmentSize   , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5377   { 0, NULL, 0, 0, 0, NULL }
5378 };
5379 
5380 static int
dissect_z3950_T_segmentation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5381 dissect_z3950_T_segmentation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5382   offset = dissect_ber_choice(actx, tree, tvb, offset,
5383                                  T_segmentation_choice, hf_index, ett_z3950_T_segmentation,
5384                                  NULL);
5385 
5386   return offset;
5387 }
5388 
5389 
5390 static const value_string z3950_T_req_vals[] = {
5391   {   1, "nameInUse" },
5392   {   2, "noSuchName" },
5393   {   3, "quota" },
5394   {   4, "type" },
5395   { 0, NULL }
5396 };
5397 
5398 
5399 static int
dissect_z3950_T_req(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5400 dissect_z3950_T_req(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5401   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5402                                                 NULL);
5403 
5404   return offset;
5405 }
5406 
5407 
5408 static const value_string z3950_T_permission_vals[] = {
5409   {   1, "id" },
5410   {   2, "modifyDelete" },
5411   { 0, NULL }
5412 };
5413 
5414 
5415 static int
dissect_z3950_T_permission(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5416 dissect_z3950_T_permission(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5417   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5418                                                 NULL);
5419 
5420   return offset;
5421 }
5422 
5423 
5424 static const value_string z3950_T_immediate_vals[] = {
5425   {   1, "failed" },
5426   {   2, "service" },
5427   {   3, "parameters" },
5428   { 0, NULL }
5429 };
5430 
5431 
5432 static int
dissect_z3950_T_immediate(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5433 dissect_z3950_T_immediate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5434   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5435                                                 NULL);
5436 
5437   return offset;
5438 }
5439 
5440 
5441 static const value_string z3950_T_extServices_vals[] = {
5442   {   1, "req" },
5443   {   2, "permission" },
5444   {   3, "immediate" },
5445   { 0, NULL }
5446 };
5447 
5448 static const ber_choice_t T_extServices_choice[] = {
5449   {   1, &hf_z3950_req           , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_req },
5450   {   2, &hf_z3950_permission    , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_permission },
5451   {   3, &hf_z3950_immediate     , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_T_immediate },
5452   { 0, NULL, 0, 0, 0, NULL }
5453 };
5454 
5455 static int
dissect_z3950_T_extServices(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5456 dissect_z3950_T_extServices(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5457   offset = dissect_ber_choice(actx, tree, tvb, offset,
5458                                  T_extServices_choice, hf_index, ett_z3950_T_extServices,
5459                                  NULL);
5460 
5461   return offset;
5462 }
5463 
5464 
5465 static const ber_sequence_t T_diagFormat_accessCtrl_oid_sequence_of[1] = {
5466   { &hf_z3950_diagFormat_accessCtrl_oid_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
5467 };
5468 
5469 static int
dissect_z3950_T_diagFormat_accessCtrl_oid(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5470 dissect_z3950_T_diagFormat_accessCtrl_oid(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5471   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5472                                       T_diagFormat_accessCtrl_oid_sequence_of, hf_index, ett_z3950_T_diagFormat_accessCtrl_oid);
5473 
5474   return offset;
5475 }
5476 
5477 
5478 static const ber_sequence_t T_alternative_sequence_of[1] = {
5479   { &hf_z3950_alternative_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
5480 };
5481 
5482 static int
dissect_z3950_T_alternative(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5483 dissect_z3950_T_alternative(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5484   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5485                                       T_alternative_sequence_of, hf_index, ett_z3950_T_alternative);
5486 
5487   return offset;
5488 }
5489 
5490 
5491 static const value_string z3950_T_accessCtrl_vals[] = {
5492   {   1, "noUser" },
5493   {   2, "refused" },
5494   {   3, "simple" },
5495   {   4, "oid" },
5496   {   5, "alternative" },
5497   {   6, "pwdInv" },
5498   {   7, "pwdExp" },
5499   { 0, NULL }
5500 };
5501 
5502 static const ber_choice_t T_accessCtrl_choice[] = {
5503   {   1, &hf_z3950_noUser        , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5504   {   2, &hf_z3950_refused       , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5505   {   3, &hf_z3950_diagFormat_accessCtrl_simple, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5506   {   4, &hf_z3950_diagFormat_accessCtrl_oid, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_T_diagFormat_accessCtrl_oid },
5507   {   5, &hf_z3950_alternative   , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_T_alternative },
5508   {   6, &hf_z3950_pwdInv        , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5509   {   7, &hf_z3950_pwdExp        , BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5510   { 0, NULL, 0, 0, 0, NULL }
5511 };
5512 
5513 static int
dissect_z3950_T_accessCtrl(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5514 dissect_z3950_T_accessCtrl(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5515   offset = dissect_ber_choice(actx, tree, tvb, offset,
5516                                  T_accessCtrl_choice, hf_index, ett_z3950_T_accessCtrl,
5517                                  NULL);
5518 
5519   return offset;
5520 }
5521 
5522 
5523 static const ber_sequence_t T_suggestedAlternatives_sequence_of[1] = {
5524   { &hf_z3950_suggestedAlternatives_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
5525 };
5526 
5527 static int
dissect_z3950_T_suggestedAlternatives(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5528 dissect_z3950_T_suggestedAlternatives(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5529   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5530                                       T_suggestedAlternatives_sequence_of, hf_index, ett_z3950_T_suggestedAlternatives);
5531 
5532   return offset;
5533 }
5534 
5535 
5536 static const ber_sequence_t T_diagFormat_recordSyntax_sequence[] = {
5537   { &hf_z3950_unsupportedSyntax, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
5538   { &hf_z3950_suggestedAlternatives, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_suggestedAlternatives },
5539   { NULL, 0, 0, 0, NULL }
5540 };
5541 
5542 static int
dissect_z3950_T_diagFormat_recordSyntax(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5543 dissect_z3950_T_diagFormat_recordSyntax(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5544   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5545                                    T_diagFormat_recordSyntax_sequence, hf_index, ett_z3950_T_diagFormat_recordSyntax);
5546 
5547   return offset;
5548 }
5549 
5550 
5551 static const value_string z3950_DiagFormat_vals[] = {
5552   { 1000, "tooMany" },
5553   { 1001, "badSpec" },
5554   { 1002, "dbUnavail" },
5555   { 1003, "unSupOp" },
5556   { 1004, "attribute" },
5557   { 1005, "attCombo" },
5558   { 1006, "term" },
5559   { 1007, "proximity" },
5560   { 1008, "scan" },
5561   { 1009, "sort" },
5562   { 1010, "segmentation" },
5563   { 1011, "extServices" },
5564   { 1012, "accessCtrl" },
5565   { 1013, "recordSyntax" },
5566   { 0, NULL }
5567 };
5568 
5569 static const ber_choice_t DiagFormat_choice[] = {
5570   { 1000, &hf_z3950_tooMany       , BER_CLASS_CON, 1000, BER_FLAGS_IMPLTAG, dissect_z3950_T_tooMany },
5571   { 1001, &hf_z3950_badSpec       , BER_CLASS_CON, 1001, BER_FLAGS_IMPLTAG, dissect_z3950_T_badSpec },
5572   { 1002, &hf_z3950_dbUnavail     , BER_CLASS_CON, 1002, BER_FLAGS_IMPLTAG, dissect_z3950_T_dbUnavail },
5573   { 1003, &hf_z3950_unSupOp       , BER_CLASS_CON, 1003, BER_FLAGS_IMPLTAG, dissect_z3950_T_unSupOp },
5574   { 1004, &hf_z3950_attribute     , BER_CLASS_CON, 1004, BER_FLAGS_IMPLTAG, dissect_z3950_T_attribute },
5575   { 1005, &hf_z3950_attCombo      , BER_CLASS_CON, 1005, BER_FLAGS_IMPLTAG, dissect_z3950_T_attCombo },
5576   { 1006, &hf_z3950_diagFormat_term, BER_CLASS_CON, 1006, BER_FLAGS_IMPLTAG, dissect_z3950_T_diagFormat_term },
5577   { 1007, &hf_z3950_diagFormat_proximity, BER_CLASS_CON, 1007, 0, dissect_z3950_T_diagFormat_proximity },
5578   { 1008, &hf_z3950_scan          , BER_CLASS_CON, 1008, 0, dissect_z3950_T_scan },
5579   { 1009, &hf_z3950_sort          , BER_CLASS_CON, 1009, 0, dissect_z3950_T_sort },
5580   { 1010, &hf_z3950_segmentation  , BER_CLASS_CON, 1010, 0, dissect_z3950_T_segmentation },
5581   { 1011, &hf_z3950_extServices   , BER_CLASS_CON, 1011, 0, dissect_z3950_T_extServices },
5582   { 1012, &hf_z3950_accessCtrl    , BER_CLASS_CON, 1012, 0, dissect_z3950_T_accessCtrl },
5583   { 1013, &hf_z3950_diagFormat_recordSyntax, BER_CLASS_CON, 1013, BER_FLAGS_IMPLTAG, dissect_z3950_T_diagFormat_recordSyntax },
5584   { 0, NULL, 0, 0, 0, NULL }
5585 };
5586 
5587 static int
dissect_z3950_DiagFormat(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5588 dissect_z3950_DiagFormat(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5589   offset = dissect_ber_choice(actx, tree, tvb, offset,
5590                                  DiagFormat_choice, hf_index, ett_z3950_DiagFormat,
5591                                  NULL);
5592 
5593   return offset;
5594 }
5595 
5596 
5597 static const value_string z3950_T_diagnosticFormat_item_diagnostic_vals[] = {
5598   {   1, "defaultDiagRec" },
5599   {   2, "explicitDiagnostic" },
5600   { 0, NULL }
5601 };
5602 
5603 static const ber_choice_t T_diagnosticFormat_item_diagnostic_choice[] = {
5604   {   1, &hf_z3950_defaultDiagRec, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DefaultDiagFormat },
5605   {   2, &hf_z3950_explicitDiagnostic, BER_CLASS_CON, 2, 0, dissect_z3950_DiagFormat },
5606   { 0, NULL, 0, 0, 0, NULL }
5607 };
5608 
5609 static int
dissect_z3950_T_diagnosticFormat_item_diagnostic(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5610 dissect_z3950_T_diagnosticFormat_item_diagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5611   offset = dissect_ber_choice(actx, tree, tvb, offset,
5612                                  T_diagnosticFormat_item_diagnostic_choice, hf_index, ett_z3950_T_diagnosticFormat_item_diagnostic,
5613                                  NULL);
5614 
5615   return offset;
5616 }
5617 
5618 
5619 static const ber_sequence_t DiagnosticFormat_item_sequence[] = {
5620   { &hf_z3950_diagnosticFormat_item_diagnostic, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_z3950_T_diagnosticFormat_item_diagnostic },
5621   { &hf_z3950_message       , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5622   { NULL, 0, 0, 0, NULL }
5623 };
5624 
5625 static int
dissect_z3950_DiagnosticFormat_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5626 dissect_z3950_DiagnosticFormat_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5627   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5628                                    DiagnosticFormat_item_sequence, hf_index, ett_z3950_DiagnosticFormat_item);
5629 
5630   return offset;
5631 }
5632 
5633 
5634 static const ber_sequence_t DiagnosticFormat_sequence_of[1] = {
5635   { &hf_z3950_DiagnosticFormat_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_DiagnosticFormat_item },
5636 };
5637 
5638 static int
dissect_z3950_DiagnosticFormat(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5639 dissect_z3950_DiagnosticFormat(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5640   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5641                                       DiagnosticFormat_sequence_of, hf_index, ett_z3950_DiagnosticFormat);
5642 
5643   return offset;
5644 }
5645 
5646 
5647 
5648 static int
dissect_z3950_LanguageCode(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5649 dissect_z3950_LanguageCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5650   offset = dissect_z3950_InternationalString(implicit_tag, tvb, offset, actx, tree, hf_index);
5651 
5652   return offset;
5653 }
5654 
5655 
5656 static const ber_sequence_t CommonInfo_sequence[] = {
5657   { &hf_z3950_dateAdded     , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_GeneralizedTime },
5658   { &hf_z3950_dateChanged   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_GeneralizedTime },
5659   { &hf_z3950_expiry        , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_GeneralizedTime },
5660   { &hf_z3950_humanString_Language, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_LanguageCode },
5661   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
5662   { NULL, 0, 0, 0, NULL }
5663 };
5664 
5665 static int
dissect_z3950_CommonInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5666 dissect_z3950_CommonInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5667   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5668                                    CommonInfo_sequence, hf_index, ett_z3950_CommonInfo);
5669 
5670   return offset;
5671 }
5672 
5673 
5674 static const ber_sequence_t HumanString_item_sequence[] = {
5675   { &hf_z3950_language      , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_LanguageCode },
5676   { &hf_z3950_text          , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5677   { NULL, 0, 0, 0, NULL }
5678 };
5679 
5680 static int
dissect_z3950_HumanString_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5681 dissect_z3950_HumanString_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5682   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5683                                    HumanString_item_sequence, hf_index, ett_z3950_HumanString_item);
5684 
5685   return offset;
5686 }
5687 
5688 
5689 static const ber_sequence_t HumanString_sequence_of[1] = {
5690   { &hf_z3950_HumanString_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_HumanString_item },
5691 };
5692 
5693 static int
dissect_z3950_HumanString(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5694 dissect_z3950_HumanString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5695   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5696                                       HumanString_sequence_of, hf_index, ett_z3950_HumanString);
5697 
5698   return offset;
5699 }
5700 
5701 
5702 static const value_string z3950_T_bodyType_vals[] = {
5703   {   1, "ianaType" },
5704   {   2, "z3950type" },
5705   {   3, "otherType" },
5706   { 0, NULL }
5707 };
5708 
5709 static const ber_choice_t T_bodyType_choice[] = {
5710   {   1, &hf_z3950_ianaType      , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5711   {   2, &hf_z3950_z3950type     , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5712   {   3, &hf_z3950_otherType     , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5713   { 0, NULL, 0, 0, 0, NULL }
5714 };
5715 
5716 static int
dissect_z3950_T_bodyType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5717 dissect_z3950_T_bodyType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5718   offset = dissect_ber_choice(actx, tree, tvb, offset,
5719                                  T_bodyType_choice, hf_index, ett_z3950_T_bodyType,
5720                                  NULL);
5721 
5722   return offset;
5723 }
5724 
5725 
5726 static const ber_sequence_t IconObject_item_sequence[] = {
5727   { &hf_z3950_bodyType      , BER_CLASS_CON, 1, 0, dissect_z3950_T_bodyType },
5728   { &hf_z3950_content       , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
5729   { NULL, 0, 0, 0, NULL }
5730 };
5731 
5732 static int
dissect_z3950_IconObject_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5733 dissect_z3950_IconObject_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5734   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5735                                    IconObject_item_sequence, hf_index, ett_z3950_IconObject_item);
5736 
5737   return offset;
5738 }
5739 
5740 
5741 static const ber_sequence_t IconObject_sequence_of[1] = {
5742   { &hf_z3950_IconObject_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_IconObject_item },
5743 };
5744 
5745 static int
dissect_z3950_IconObject(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5746 dissect_z3950_IconObject(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5747   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5748                                       IconObject_sequence_of, hf_index, ett_z3950_IconObject);
5749 
5750   return offset;
5751 }
5752 
5753 
5754 static const ber_sequence_t ContactInfo_sequence[] = {
5755   { &hf_z3950_name          , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5756   { &hf_z3950_description   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
5757   { &hf_z3950_address       , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
5758   { &hf_z3950_email         , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5759   { &hf_z3950_phone         , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5760   { NULL, 0, 0, 0, NULL }
5761 };
5762 
5763 static int
dissect_z3950_ContactInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5764 dissect_z3950_ContactInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5765   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5766                                    ContactInfo_sequence, hf_index, ett_z3950_ContactInfo);
5767 
5768   return offset;
5769 }
5770 
5771 
5772 static const ber_sequence_t DatabaseList_sequence_of[1] = {
5773   { &hf_z3950_DatabaseList_item, BER_CLASS_CON, 105, BER_FLAGS_NOOWNTAG, dissect_z3950_DatabaseName },
5774 };
5775 
5776 static int
dissect_z3950_DatabaseList(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5777 dissect_z3950_DatabaseList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5778   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5779                                       DatabaseList_sequence_of, hf_index, ett_z3950_DatabaseList);
5780 
5781   return offset;
5782 }
5783 
5784 
5785 static const ber_sequence_t SEQUENCE_OF_DatabaseList_sequence_of[1] = {
5786   { &hf_z3950_dbCombinations_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_DatabaseList },
5787 };
5788 
5789 static int
dissect_z3950_SEQUENCE_OF_DatabaseList(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5790 dissect_z3950_SEQUENCE_OF_DatabaseList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5791   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5792                                       SEQUENCE_OF_DatabaseList_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_DatabaseList);
5793 
5794   return offset;
5795 }
5796 
5797 
5798 static const ber_sequence_t T_internetAddress_sequence[] = {
5799   { &hf_z3950_hostAddress   , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5800   { &hf_z3950_port          , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5801   { NULL, 0, 0, 0, NULL }
5802 };
5803 
5804 static int
dissect_z3950_T_internetAddress(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5805 dissect_z3950_T_internetAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5806   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5807                                    T_internetAddress_sequence, hf_index, ett_z3950_T_internetAddress);
5808 
5809   return offset;
5810 }
5811 
5812 
5813 static const ber_sequence_t T_osiPresentationAddress_sequence[] = {
5814   { &hf_z3950_pSel          , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5815   { &hf_z3950_sSel          , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5816   { &hf_z3950_tSel          , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5817   { &hf_z3950_nSap          , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5818   { NULL, 0, 0, 0, NULL }
5819 };
5820 
5821 static int
dissect_z3950_T_osiPresentationAddress(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5822 dissect_z3950_T_osiPresentationAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5823   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5824                                    T_osiPresentationAddress_sequence, hf_index, ett_z3950_T_osiPresentationAddress);
5825 
5826   return offset;
5827 }
5828 
5829 
5830 static const ber_sequence_t T_networkAddress_other_sequence[] = {
5831   { &hf_z3950_networkAddress_other_type, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5832   { &hf_z3950_networkAddress_other_address, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5833   { NULL, 0, 0, 0, NULL }
5834 };
5835 
5836 static int
dissect_z3950_T_networkAddress_other(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5837 dissect_z3950_T_networkAddress_other(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5838   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5839                                    T_networkAddress_other_sequence, hf_index, ett_z3950_T_networkAddress_other);
5840 
5841   return offset;
5842 }
5843 
5844 
5845 static const value_string z3950_NetworkAddress_vals[] = {
5846   {   0, "internetAddress" },
5847   {   1, "osiPresentationAddress" },
5848   {   2, "other" },
5849   { 0, NULL }
5850 };
5851 
5852 static const ber_choice_t NetworkAddress_choice[] = {
5853   {   0, &hf_z3950_internetAddress, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_T_internetAddress },
5854   {   1, &hf_z3950_osiPresentationAddress, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_osiPresentationAddress },
5855   {   2, &hf_z3950_networkAddress_other, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_networkAddress_other },
5856   { 0, NULL, 0, 0, 0, NULL }
5857 };
5858 
5859 static int
dissect_z3950_NetworkAddress(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5860 dissect_z3950_NetworkAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5861   offset = dissect_ber_choice(actx, tree, tvb, offset,
5862                                  NetworkAddress_choice, hf_index, ett_z3950_NetworkAddress,
5863                                  NULL);
5864 
5865   return offset;
5866 }
5867 
5868 
5869 static const ber_sequence_t SEQUENCE_OF_NetworkAddress_sequence_of[1] = {
5870   { &hf_z3950_addresses_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_NetworkAddress },
5871 };
5872 
5873 static int
dissect_z3950_SEQUENCE_OF_NetworkAddress(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5874 dissect_z3950_SEQUENCE_OF_NetworkAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5875   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5876                                       SEQUENCE_OF_NetworkAddress_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_NetworkAddress);
5877 
5878   return offset;
5879 }
5880 
5881 
5882 static const ber_sequence_t T_privateCapabilities_operators_item_sequence[] = {
5883   { &hf_z3950_operator      , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5884   { &hf_z3950_description   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
5885   { NULL, 0, 0, 0, NULL }
5886 };
5887 
5888 static int
dissect_z3950_T_privateCapabilities_operators_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5889 dissect_z3950_T_privateCapabilities_operators_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5890   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5891                                    T_privateCapabilities_operators_item_sequence, hf_index, ett_z3950_T_privateCapabilities_operators_item);
5892 
5893   return offset;
5894 }
5895 
5896 
5897 static const ber_sequence_t T_privateCapabilities_operators_sequence_of[1] = {
5898   { &hf_z3950_privateCapabilities_operators_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_privateCapabilities_operators_item },
5899 };
5900 
5901 static int
dissect_z3950_T_privateCapabilities_operators(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5902 dissect_z3950_T_privateCapabilities_operators(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5903   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5904                                       T_privateCapabilities_operators_sequence_of, hf_index, ett_z3950_T_privateCapabilities_operators);
5905 
5906   return offset;
5907 }
5908 
5909 
5910 static const ber_sequence_t SearchKey_sequence[] = {
5911   { &hf_z3950_searchKey     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5912   { &hf_z3950_description   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
5913   { NULL, 0, 0, 0, NULL }
5914 };
5915 
5916 static int
dissect_z3950_SearchKey(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5917 dissect_z3950_SearchKey(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5918   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5919                                    SearchKey_sequence, hf_index, ett_z3950_SearchKey);
5920 
5921   return offset;
5922 }
5923 
5924 
5925 static const ber_sequence_t SEQUENCE_OF_SearchKey_sequence_of[1] = {
5926   { &hf_z3950_searchKeys_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_SearchKey },
5927 };
5928 
5929 static int
dissect_z3950_SEQUENCE_OF_SearchKey(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5930 dissect_z3950_SEQUENCE_OF_SearchKey(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5931   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5932                                       SEQUENCE_OF_SearchKey_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_SearchKey);
5933 
5934   return offset;
5935 }
5936 
5937 
5938 static const ber_sequence_t SEQUENCE_OF_HumanString_sequence_of[1] = {
5939   { &hf_z3950_keywords_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_HumanString },
5940 };
5941 
5942 static int
dissect_z3950_SEQUENCE_OF_HumanString(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5943 dissect_z3950_SEQUENCE_OF_HumanString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5944   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5945                                       SEQUENCE_OF_HumanString_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_HumanString);
5946 
5947   return offset;
5948 }
5949 
5950 
5951 static const ber_sequence_t PrivateCapabilities_sequence[] = {
5952   { &hf_z3950_privateCapabilities_operators, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_privateCapabilities_operators },
5953   { &hf_z3950_searchKeys    , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_SearchKey },
5954   { &hf_z3950_privateCapabilities_description, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_HumanString },
5955   { NULL, 0, 0, 0, NULL }
5956 };
5957 
5958 static int
dissect_z3950_PrivateCapabilities(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5959 dissect_z3950_PrivateCapabilities(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5960   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5961                                    PrivateCapabilities_sequence, hf_index, ett_z3950_PrivateCapabilities);
5962 
5963   return offset;
5964 }
5965 
5966 
5967 static const ber_sequence_t T_operators_sequence_of[1] = {
5968   { &hf_z3950_operators_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_z3950_INTEGER },
5969 };
5970 
5971 static int
dissect_z3950_T_operators(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5972 dissect_z3950_T_operators(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5973   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5974                                       T_operators_sequence_of, hf_index, ett_z3950_T_operators);
5975 
5976   return offset;
5977 }
5978 
5979 
5980 static const ber_sequence_t T_proximitySupport_unitsSupported_item_private_sequence[] = {
5981   { &hf_z3950_proximitySupport_unitsSupported_item_private_unit, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5982   { &hf_z3950_description   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_z3950_HumanString },
5983   { NULL, 0, 0, 0, NULL }
5984 };
5985 
5986 static int
dissect_z3950_T_proximitySupport_unitsSupported_item_private(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5987 dissect_z3950_T_proximitySupport_unitsSupported_item_private(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5988   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5989                                    T_proximitySupport_unitsSupported_item_private_sequence, hf_index, ett_z3950_T_proximitySupport_unitsSupported_item_private);
5990 
5991   return offset;
5992 }
5993 
5994 
5995 static const value_string z3950_T_unitsSupported_item_vals[] = {
5996   {   1, "known" },
5997   {   2, "private" },
5998   { 0, NULL }
5999 };
6000 
6001 static const ber_choice_t T_unitsSupported_item_choice[] = {
6002   {   1, &hf_z3950_proximitySupport_unitsSupported_item_known, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6003   {   2, &hf_z3950_proximitySupport_unitsSupported_item_private, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_proximitySupport_unitsSupported_item_private },
6004   { 0, NULL, 0, 0, 0, NULL }
6005 };
6006 
6007 static int
dissect_z3950_T_unitsSupported_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6008 dissect_z3950_T_unitsSupported_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6009   offset = dissect_ber_choice(actx, tree, tvb, offset,
6010                                  T_unitsSupported_item_choice, hf_index, ett_z3950_T_unitsSupported_item,
6011                                  NULL);
6012 
6013   return offset;
6014 }
6015 
6016 
6017 static const ber_sequence_t T_unitsSupported_sequence_of[1] = {
6018   { &hf_z3950_unitsSupported_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_unitsSupported_item },
6019 };
6020 
6021 static int
dissect_z3950_T_unitsSupported(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6022 dissect_z3950_T_unitsSupported(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6023   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6024                                       T_unitsSupported_sequence_of, hf_index, ett_z3950_T_unitsSupported);
6025 
6026   return offset;
6027 }
6028 
6029 
6030 static const ber_sequence_t ProximitySupport_sequence[] = {
6031   { &hf_z3950_anySupport    , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6032   { &hf_z3950_unitsSupported, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_unitsSupported },
6033   { NULL, 0, 0, 0, NULL }
6034 };
6035 
6036 static int
dissect_z3950_ProximitySupport(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6037 dissect_z3950_ProximitySupport(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6038   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6039                                    ProximitySupport_sequence, hf_index, ett_z3950_ProximitySupport);
6040 
6041   return offset;
6042 }
6043 
6044 
6045 static const ber_sequence_t RpnCapabilities_sequence[] = {
6046   { &hf_z3950_operators     , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_operators },
6047   { &hf_z3950_resultSetAsOperandSupported, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6048   { &hf_z3950_restrictionOperandSupported, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6049   { &hf_z3950_proximity     , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ProximitySupport },
6050   { NULL, 0, 0, 0, NULL }
6051 };
6052 
6053 static int
dissect_z3950_RpnCapabilities(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6054 dissect_z3950_RpnCapabilities(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6055   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6056                                    RpnCapabilities_sequence, hf_index, ett_z3950_RpnCapabilities);
6057 
6058   return offset;
6059 }
6060 
6061 
6062 static const ber_sequence_t Iso8777Capabilities_sequence[] = {
6063   { &hf_z3950_searchKeys    , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_SearchKey },
6064   { &hf_z3950_restrictions  , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6065   { NULL, 0, 0, 0, NULL }
6066 };
6067 
6068 static int
dissect_z3950_Iso8777Capabilities(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6069 dissect_z3950_Iso8777Capabilities(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6070   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6071                                    Iso8777Capabilities_sequence, hf_index, ett_z3950_Iso8777Capabilities);
6072 
6073   return offset;
6074 }
6075 
6076 
6077 static const value_string z3950_QueryTypeDetails_vals[] = {
6078   {   0, "private" },
6079   {   1, "rpn" },
6080   {   2, "iso8777" },
6081   { 100, "z39-58" },
6082   { 101, "erpn" },
6083   { 102, "rankedList" },
6084   { 0, NULL }
6085 };
6086 
6087 static const ber_choice_t QueryTypeDetails_choice[] = {
6088   {   0, &hf_z3950_queryTypeDetails_private, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_PrivateCapabilities },
6089   {   1, &hf_z3950_queryTypeDetails_rpn, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_RpnCapabilities },
6090   {   2, &hf_z3950_iso8777       , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_Iso8777Capabilities },
6091   { 100, &hf_z3950_z39_58        , BER_CLASS_CON, 100, BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6092   { 101, &hf_z3950_erpn          , BER_CLASS_CON, 101, BER_FLAGS_IMPLTAG, dissect_z3950_RpnCapabilities },
6093   { 102, &hf_z3950_rankedList    , BER_CLASS_CON, 102, BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6094   { 0, NULL, 0, 0, 0, NULL }
6095 };
6096 
6097 static int
dissect_z3950_QueryTypeDetails(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6098 dissect_z3950_QueryTypeDetails(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6099   offset = dissect_ber_choice(actx, tree, tvb, offset,
6100                                  QueryTypeDetails_choice, hf_index, ett_z3950_QueryTypeDetails,
6101                                  NULL);
6102 
6103   return offset;
6104 }
6105 
6106 
6107 static const ber_sequence_t SEQUENCE_OF_QueryTypeDetails_sequence_of[1] = {
6108   { &hf_z3950_queryTypesSupported_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_QueryTypeDetails },
6109 };
6110 
6111 static int
dissect_z3950_SEQUENCE_OF_QueryTypeDetails(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6112 dissect_z3950_SEQUENCE_OF_QueryTypeDetails(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6113   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6114                                       SEQUENCE_OF_QueryTypeDetails_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_QueryTypeDetails);
6115 
6116   return offset;
6117 }
6118 
6119 
6120 static const ber_sequence_t T_diagnosticsSets_sequence_of[1] = {
6121   { &hf_z3950_diagnosticsSets_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
6122 };
6123 
6124 static int
dissect_z3950_T_diagnosticsSets(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6125 dissect_z3950_T_diagnosticsSets(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6126   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6127                                       T_diagnosticsSets_sequence_of, hf_index, ett_z3950_T_diagnosticsSets);
6128 
6129   return offset;
6130 }
6131 
6132 
6133 static const ber_sequence_t SEQUENCE_OF_AttributeSetId_sequence_of[1] = {
6134   { &hf_z3950_attributeSetIds_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeSetId },
6135 };
6136 
6137 static int
dissect_z3950_SEQUENCE_OF_AttributeSetId(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6138 dissect_z3950_SEQUENCE_OF_AttributeSetId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6139   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6140                                       SEQUENCE_OF_AttributeSetId_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeSetId);
6141 
6142   return offset;
6143 }
6144 
6145 
6146 static const ber_sequence_t T_schemas_sequence_of[1] = {
6147   { &hf_z3950_schemas_item  , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
6148 };
6149 
6150 static int
dissect_z3950_T_schemas(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6151 dissect_z3950_T_schemas(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6152   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6153                                       T_schemas_sequence_of, hf_index, ett_z3950_T_schemas);
6154 
6155   return offset;
6156 }
6157 
6158 
6159 static const ber_sequence_t T_recordSyntaxes_sequence_of[1] = {
6160   { &hf_z3950_recordSyntaxes_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
6161 };
6162 
6163 static int
dissect_z3950_T_recordSyntaxes(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6164 dissect_z3950_T_recordSyntaxes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6165   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6166                                       T_recordSyntaxes_sequence_of, hf_index, ett_z3950_T_recordSyntaxes);
6167 
6168   return offset;
6169 }
6170 
6171 
6172 static const ber_sequence_t T_resourceChallenges_sequence_of[1] = {
6173   { &hf_z3950_resourceChallenges_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
6174 };
6175 
6176 static int
dissect_z3950_T_resourceChallenges(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6177 dissect_z3950_T_resourceChallenges(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6178   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6179                                       T_resourceChallenges_sequence_of, hf_index, ett_z3950_T_resourceChallenges);
6180 
6181   return offset;
6182 }
6183 
6184 
6185 static const value_string z3950_T_accessType_vals[] = {
6186   {   0, "any" },
6187   {   1, "search" },
6188   {   2, "present" },
6189   {   3, "specific-elements" },
6190   {   4, "extended-services" },
6191   {   5, "by-database" },
6192   { 0, NULL }
6193 };
6194 
6195 
6196 static int
dissect_z3950_T_accessType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6197 dissect_z3950_T_accessType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6198   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
6199                                                 NULL);
6200 
6201   return offset;
6202 }
6203 
6204 
6205 static const ber_sequence_t T_accessChallenges_sequence_of[1] = {
6206   { &hf_z3950_accessChallenges_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
6207 };
6208 
6209 static int
dissect_z3950_T_accessChallenges(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6210 dissect_z3950_T_accessChallenges(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6211   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6212                                       T_accessChallenges_sequence_of, hf_index, ett_z3950_T_accessChallenges);
6213 
6214   return offset;
6215 }
6216 
6217 
6218 static const ber_sequence_t AccessRestrictions_item_sequence[] = {
6219   { &hf_z3950_accessType    , BER_CLASS_CON, 0, 0, dissect_z3950_T_accessType },
6220   { &hf_z3950_accessText    , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6221   { &hf_z3950_accessChallenges, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_accessChallenges },
6222   { NULL, 0, 0, 0, NULL }
6223 };
6224 
6225 static int
dissect_z3950_AccessRestrictions_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6226 dissect_z3950_AccessRestrictions_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6227   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6228                                    AccessRestrictions_item_sequence, hf_index, ett_z3950_AccessRestrictions_item);
6229 
6230   return offset;
6231 }
6232 
6233 
6234 static const ber_sequence_t AccessRestrictions_sequence_of[1] = {
6235   { &hf_z3950_AccessRestrictions_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AccessRestrictions_item },
6236 };
6237 
6238 static int
dissect_z3950_AccessRestrictions(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6239 dissect_z3950_AccessRestrictions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6240   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6241                                       AccessRestrictions_sequence_of, hf_index, ett_z3950_AccessRestrictions);
6242 
6243   return offset;
6244 }
6245 
6246 
6247 static const ber_sequence_t Charge_sequence[] = {
6248   { &hf_z3950_cost          , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
6249   { &hf_z3950_perWhat       , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Unit },
6250   { &hf_z3950_charge_text   , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6251   { NULL, 0, 0, 0, NULL }
6252 };
6253 
6254 static int
dissect_z3950_Charge(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6255 dissect_z3950_Charge(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6256   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6257                                    Charge_sequence, hf_index, ett_z3950_Charge);
6258 
6259   return offset;
6260 }
6261 
6262 
6263 static const ber_sequence_t T_otherCharges_item_sequence[] = {
6264   { &hf_z3950_forWhat       , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6265   { &hf_z3950_charge        , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_Charge },
6266   { NULL, 0, 0, 0, NULL }
6267 };
6268 
6269 static int
dissect_z3950_T_otherCharges_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6270 dissect_z3950_T_otherCharges_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6271   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6272                                    T_otherCharges_item_sequence, hf_index, ett_z3950_T_otherCharges_item);
6273 
6274   return offset;
6275 }
6276 
6277 
6278 static const ber_sequence_t T_otherCharges_sequence_of[1] = {
6279   { &hf_z3950_otherCharges_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_otherCharges_item },
6280 };
6281 
6282 static int
dissect_z3950_T_otherCharges(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6283 dissect_z3950_T_otherCharges(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6284   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6285                                       T_otherCharges_sequence_of, hf_index, ett_z3950_T_otherCharges);
6286 
6287   return offset;
6288 }
6289 
6290 
6291 static const ber_sequence_t Costs_sequence[] = {
6292   { &hf_z3950_connectCharge , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Charge },
6293   { &hf_z3950_connectTime   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Charge },
6294   { &hf_z3950_displayCharge , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Charge },
6295   { &hf_z3950_searchCharge  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Charge },
6296   { &hf_z3950_subscriptCharge, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Charge },
6297   { &hf_z3950_otherCharges  , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_otherCharges },
6298   { NULL, 0, 0, 0, NULL }
6299 };
6300 
6301 static int
dissect_z3950_Costs(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6302 dissect_z3950_Costs(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6303   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6304                                    Costs_sequence, hf_index, ett_z3950_Costs);
6305 
6306   return offset;
6307 }
6308 
6309 
6310 static const ber_sequence_t T_variantSets_sequence_of[1] = {
6311   { &hf_z3950_variantSets_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
6312 };
6313 
6314 static int
dissect_z3950_T_variantSets(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6315 dissect_z3950_T_variantSets(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6316   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6317                                       T_variantSets_sequence_of, hf_index, ett_z3950_T_variantSets);
6318 
6319   return offset;
6320 }
6321 
6322 
6323 static const ber_sequence_t SEQUENCE_OF_ElementSetName_sequence_of[1] = {
6324   { &hf_z3950_elementSetNames_item, BER_CLASS_CON, 103, BER_FLAGS_NOOWNTAG, dissect_z3950_ElementSetName },
6325 };
6326 
6327 static int
dissect_z3950_SEQUENCE_OF_ElementSetName(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6328 dissect_z3950_SEQUENCE_OF_ElementSetName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6329   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6330                                       SEQUENCE_OF_ElementSetName_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_ElementSetName);
6331 
6332   return offset;
6333 }
6334 
6335 
6336 static const ber_sequence_t AccessInfo_sequence[] = {
6337   { &hf_z3950_queryTypesSupported, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_QueryTypeDetails },
6338   { &hf_z3950_diagnosticsSets, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_diagnosticsSets },
6339   { &hf_z3950_attributeSetIds, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeSetId },
6340   { &hf_z3950_schemas       , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_schemas },
6341   { &hf_z3950_recordSyntaxes, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_recordSyntaxes },
6342   { &hf_z3950_resourceChallenges, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_resourceChallenges },
6343   { &hf_z3950_restrictedAccess, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AccessRestrictions },
6344   { &hf_z3950_costInfo      , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Costs },
6345   { &hf_z3950_variantSets   , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_variantSets },
6346   { &hf_z3950_elementSetNames, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_ElementSetName },
6347   { &hf_z3950_unitSystems   , BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
6348   { NULL, 0, 0, 0, NULL }
6349 };
6350 
6351 static int
dissect_z3950_AccessInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6352 dissect_z3950_AccessInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6353   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6354                                    AccessInfo_sequence, hf_index, ett_z3950_AccessInfo);
6355 
6356   return offset;
6357 }
6358 
6359 
6360 static const ber_sequence_t TargetInfo_sequence[] = {
6361   { &hf_z3950_commonInfo    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
6362   { &hf_z3950_name          , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6363   { &hf_z3950_recent_news   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6364   { &hf_z3950_icon          , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IconObject },
6365   { &hf_z3950_namedResultSets, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6366   { &hf_z3950_multipleDBsearch, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6367   { &hf_z3950_maxResultSets , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6368   { &hf_z3950_maxResultSize , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6369   { &hf_z3950_maxTerms      , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6370   { &hf_z3950_timeoutInterval, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
6371   { &hf_z3950_welcomeMessage, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6372   { &hf_z3950_contactInfo   , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ContactInfo },
6373   { &hf_z3950_description   , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6374   { &hf_z3950_nicknames     , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
6375   { &hf_z3950_usage_restrictions, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6376   { &hf_z3950_paymentAddr   , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6377   { &hf_z3950_hours         , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6378   { &hf_z3950_dbCombinations, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DatabaseList },
6379   { &hf_z3950_addresses     , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_NetworkAddress },
6380   { &hf_z3950_languages     , BER_CLASS_CON, 101, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
6381   { &hf_z3950_commonAccessInfo, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AccessInfo },
6382   { NULL, 0, 0, 0, NULL }
6383 };
6384 
6385 static int
dissect_z3950_TargetInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6386 dissect_z3950_TargetInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6387   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6388                                    TargetInfo_sequence, hf_index, ett_z3950_TargetInfo);
6389 
6390   return offset;
6391 }
6392 
6393 
6394 static const value_string z3950_T_recordCount_vals[] = {
6395   {   0, "actualNumber" },
6396   {   1, "approxNumber" },
6397   { 0, NULL }
6398 };
6399 
6400 static const ber_choice_t T_recordCount_choice[] = {
6401   {   0, &hf_z3950_actualNumber  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6402   {   1, &hf_z3950_approxNumber  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6403   { 0, NULL, 0, 0, 0, NULL }
6404 };
6405 
6406 static int
dissect_z3950_T_recordCount(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6407 dissect_z3950_T_recordCount(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6408   offset = dissect_ber_choice(actx, tree, tvb, offset,
6409                                  T_recordCount_choice, hf_index, ett_z3950_T_recordCount,
6410                                  NULL);
6411 
6412   return offset;
6413 }
6414 
6415 
6416 static const ber_sequence_t DatabaseInfo_sequence[] = {
6417   { &hf_z3950_commonInfo    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
6418   { &hf_z3950_databaseInfo_name, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
6419   { &hf_z3950_explainDatabase, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
6420   { &hf_z3950_databaseInfo_nicknames, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DatabaseName },
6421   { &hf_z3950_icon          , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IconObject },
6422   { &hf_z3950_user_fee      , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6423   { &hf_z3950_available     , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6424   { &hf_z3950_titleString   , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6425   { &hf_z3950_keywords      , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_HumanString },
6426   { &hf_z3950_description   , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6427   { &hf_z3950_associatedDbs , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseList },
6428   { &hf_z3950_subDbs        , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseList },
6429   { &hf_z3950_disclaimers   , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6430   { &hf_z3950_news          , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6431   { &hf_z3950_recordCount   , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_z3950_T_recordCount },
6432   { &hf_z3950_defaultOrder  , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6433   { &hf_z3950_avRecordSize  , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6434   { &hf_z3950_maxRecordSize , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6435   { &hf_z3950_hours         , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6436   { &hf_z3950_bestTime      , BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6437   { &hf_z3950_lastUpdate    , BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_GeneralizedTime },
6438   { &hf_z3950_updateInterval, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
6439   { &hf_z3950_coverage      , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6440   { &hf_z3950_proprietary   , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6441   { &hf_z3950_copyrightText , BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6442   { &hf_z3950_copyrightNotice, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6443   { &hf_z3950_producerContactInfo, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ContactInfo },
6444   { &hf_z3950_supplierContactInfo, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ContactInfo },
6445   { &hf_z3950_submissionContactInfo, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ContactInfo },
6446   { &hf_z3950_accessInfo    , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AccessInfo },
6447   { NULL, 0, 0, 0, NULL }
6448 };
6449 
6450 static int
dissect_z3950_DatabaseInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6451 dissect_z3950_DatabaseInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6452   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6453                                    DatabaseInfo_sequence, hf_index, ett_z3950_DatabaseInfo);
6454 
6455   return offset;
6456 }
6457 
6458 
6459 static const ber_sequence_t T_tagTypeMapping_item_sequence[] = {
6460   { &hf_z3950_tagType       , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6461   { &hf_z3950_tagSet        , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
6462   { &hf_z3950_defaultTagType, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
6463   { NULL, 0, 0, 0, NULL }
6464 };
6465 
6466 static int
dissect_z3950_T_tagTypeMapping_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6467 dissect_z3950_T_tagTypeMapping_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6468   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6469                                    T_tagTypeMapping_item_sequence, hf_index, ett_z3950_T_tagTypeMapping_item);
6470 
6471   return offset;
6472 }
6473 
6474 
6475 static const ber_sequence_t T_tagTypeMapping_sequence_of[1] = {
6476   { &hf_z3950_tagTypeMapping_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_tagTypeMapping_item },
6477 };
6478 
6479 static int
dissect_z3950_T_tagTypeMapping(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6480 dissect_z3950_T_tagTypeMapping(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6481   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6482                                       T_tagTypeMapping_sequence_of, hf_index, ett_z3950_T_tagTypeMapping);
6483 
6484   return offset;
6485 }
6486 
6487 
6488 static const ber_sequence_t Path_item_sequence[] = {
6489   { &hf_z3950_tagType       , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6490   { &hf_z3950_tagValue      , BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
6491   { NULL, 0, 0, 0, NULL }
6492 };
6493 
6494 static int
dissect_z3950_Path_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6495 dissect_z3950_Path_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6496   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6497                                    Path_item_sequence, hf_index, ett_z3950_Path_item);
6498 
6499   return offset;
6500 }
6501 
6502 
6503 static const ber_sequence_t Path_sequence_of[1] = {
6504   { &hf_z3950_Path_item     , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Path_item },
6505 };
6506 
6507 static int
dissect_z3950_Path(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6508 dissect_z3950_Path(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6509   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6510                                       Path_sequence_of, hf_index, ett_z3950_Path);
6511 
6512   return offset;
6513 }
6514 
6515 
6516 static const value_string z3950_PrimitiveDataType_vals[] = {
6517   {   0, "octetString" },
6518   {   1, "numeric" },
6519   {   2, "date" },
6520   {   3, "external" },
6521   {   4, "string" },
6522   {   5, "trueOrFalse" },
6523   {   6, "oid" },
6524   {   7, "intUnit" },
6525   {   8, "empty" },
6526   { 100, "noneOfTheAbove" },
6527   { 0, NULL }
6528 };
6529 
6530 
6531 static int
dissect_z3950_PrimitiveDataType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6532 dissect_z3950_PrimitiveDataType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6533   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
6534                                                 NULL);
6535 
6536   return offset;
6537 }
6538 
6539 
6540 static const ber_sequence_t SEQUENCE_OF_ElementInfo_sequence_of[1] = {
6541   { &hf_z3950_recordStructure_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_ElementInfo },
6542 };
6543 
6544 static int
dissect_z3950_SEQUENCE_OF_ElementInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6545 dissect_z3950_SEQUENCE_OF_ElementInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6546   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6547                                       SEQUENCE_OF_ElementInfo_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_ElementInfo);
6548 
6549   return offset;
6550 }
6551 
6552 
6553 static const value_string z3950_ElementDataType_vals[] = {
6554   {   0, "primitive" },
6555   {   1, "structured" },
6556   { 0, NULL }
6557 };
6558 
6559 static const ber_choice_t ElementDataType_choice[] = {
6560   {   0, &hf_z3950_primitive     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_PrimitiveDataType },
6561   {   1, &hf_z3950_structured    , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_ElementInfo },
6562   { 0, NULL, 0, 0, 0, NULL }
6563 };
6564 
6565 static int
dissect_z3950_ElementDataType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6566 dissect_z3950_ElementDataType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6567   offset = dissect_ber_choice(actx, tree, tvb, offset,
6568                                  ElementDataType_choice, hf_index, ett_z3950_ElementDataType,
6569                                  NULL);
6570 
6571   return offset;
6572 }
6573 
6574 
6575 static const ber_sequence_t ElementInfo_sequence[] = {
6576   { &hf_z3950_elementName   , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6577   { &hf_z3950_elementTagPath, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_Path },
6578   { &hf_z3950_elementInfo_dataType, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_ElementDataType },
6579   { &hf_z3950_required      , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6580   { &hf_z3950_repeatable    , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6581   { &hf_z3950_description   , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6582   { NULL, 0, 0, 0, NULL }
6583 };
6584 
6585 static int
dissect_z3950_ElementInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6586 dissect_z3950_ElementInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6587   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6588                                    ElementInfo_sequence, hf_index, ett_z3950_ElementInfo);
6589 
6590   return offset;
6591 }
6592 
6593 
6594 static const ber_sequence_t SchemaInfo_sequence[] = {
6595   { &hf_z3950_commonInfo    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
6596   { &hf_z3950_schema        , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
6597   { &hf_z3950_name          , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6598   { &hf_z3950_description   , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6599   { &hf_z3950_tagTypeMapping, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_tagTypeMapping },
6600   { &hf_z3950_recordStructure, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_ElementInfo },
6601   { NULL, 0, 0, 0, NULL }
6602 };
6603 
6604 static int
dissect_z3950_SchemaInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6605 dissect_z3950_SchemaInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6606   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6607                                    SchemaInfo_sequence, hf_index, ett_z3950_SchemaInfo);
6608 
6609   return offset;
6610 }
6611 
6612 
6613 static const ber_sequence_t T_tagSetInfo_elements_item_sequence[] = {
6614   { &hf_z3950_elementname   , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6615   { &hf_z3950_nicknames     , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
6616   { &hf_z3950_elementTag    , BER_CLASS_CON, 3, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
6617   { &hf_z3950_description   , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6618   { &hf_z3950_dataType      , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_z3950_PrimitiveDataType },
6619   { &hf_z3950_otherTagInfo  , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
6620   { NULL, 0, 0, 0, NULL }
6621 };
6622 
6623 static int
dissect_z3950_T_tagSetInfo_elements_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6624 dissect_z3950_T_tagSetInfo_elements_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6625   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6626                                    T_tagSetInfo_elements_item_sequence, hf_index, ett_z3950_T_tagSetInfo_elements_item);
6627 
6628   return offset;
6629 }
6630 
6631 
6632 static const ber_sequence_t T_tagSetInfo_elements_sequence_of[1] = {
6633   { &hf_z3950_tagSetInfo_elements_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_tagSetInfo_elements_item },
6634 };
6635 
6636 static int
dissect_z3950_T_tagSetInfo_elements(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6637 dissect_z3950_T_tagSetInfo_elements(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6638   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6639                                       T_tagSetInfo_elements_sequence_of, hf_index, ett_z3950_T_tagSetInfo_elements);
6640 
6641   return offset;
6642 }
6643 
6644 
6645 static const ber_sequence_t TagSetInfo_sequence[] = {
6646   { &hf_z3950_commonInfo    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
6647   { &hf_z3950_tagSet        , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
6648   { &hf_z3950_name          , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6649   { &hf_z3950_description   , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6650   { &hf_z3950_tagSetInfo_elements, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_tagSetInfo_elements },
6651   { NULL, 0, 0, 0, NULL }
6652 };
6653 
6654 static int
dissect_z3950_TagSetInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6655 dissect_z3950_TagSetInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6656   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6657                                    TagSetInfo_sequence, hf_index, ett_z3950_TagSetInfo);
6658 
6659   return offset;
6660 }
6661 
6662 
6663 static const ber_sequence_t T_transferSyntaxes_sequence_of[1] = {
6664   { &hf_z3950_transferSyntaxes_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
6665 };
6666 
6667 static int
dissect_z3950_T_transferSyntaxes(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6668 dissect_z3950_T_transferSyntaxes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6669   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6670                                       T_transferSyntaxes_sequence_of, hf_index, ett_z3950_T_transferSyntaxes);
6671 
6672   return offset;
6673 }
6674 
6675 
6676 static const ber_sequence_t RecordSyntaxInfo_sequence[] = {
6677   { &hf_z3950_commonInfo    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
6678   { &hf_z3950_recordSyntax  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
6679   { &hf_z3950_name          , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6680   { &hf_z3950_transferSyntaxes, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_transferSyntaxes },
6681   { &hf_z3950_description   , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6682   { &hf_z3950_asn1Module    , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6683   { &hf_z3950_abstractStructure, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_ElementInfo },
6684   { NULL, 0, 0, 0, NULL }
6685 };
6686 
6687 static int
dissect_z3950_RecordSyntaxInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6688 dissect_z3950_RecordSyntaxInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6689   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6690                                    RecordSyntaxInfo_sequence, hf_index, ett_z3950_RecordSyntaxInfo);
6691 
6692   return offset;
6693 }
6694 
6695 
6696 static const ber_sequence_t AttributeDescription_sequence[] = {
6697   { &hf_z3950_name          , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6698   { &hf_z3950_description   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6699   { &hf_z3950_attributeDescription_attributeValue, BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
6700   { &hf_z3950_equivalentAttributes, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_StringOrNumeric },
6701   { NULL, 0, 0, 0, NULL }
6702 };
6703 
6704 static int
dissect_z3950_AttributeDescription(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6705 dissect_z3950_AttributeDescription(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6706   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6707                                    AttributeDescription_sequence, hf_index, ett_z3950_AttributeDescription);
6708 
6709   return offset;
6710 }
6711 
6712 
6713 static const ber_sequence_t SEQUENCE_OF_AttributeDescription_sequence_of[1] = {
6714   { &hf_z3950_attributeValues_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeDescription },
6715 };
6716 
6717 static int
dissect_z3950_SEQUENCE_OF_AttributeDescription(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6718 dissect_z3950_SEQUENCE_OF_AttributeDescription(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6719   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6720                                       SEQUENCE_OF_AttributeDescription_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeDescription);
6721 
6722   return offset;
6723 }
6724 
6725 
6726 static const ber_sequence_t AttributeType_sequence[] = {
6727   { &hf_z3950_name          , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6728   { &hf_z3950_description   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6729   { &hf_z3950_attributeType , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6730   { &hf_z3950_attributeValues, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeDescription },
6731   { NULL, 0, 0, 0, NULL }
6732 };
6733 
6734 static int
dissect_z3950_AttributeType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6735 dissect_z3950_AttributeType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6736   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6737                                    AttributeType_sequence, hf_index, ett_z3950_AttributeType);
6738 
6739   return offset;
6740 }
6741 
6742 
6743 static const ber_sequence_t SEQUENCE_OF_AttributeType_sequence_of[1] = {
6744   { &hf_z3950_attributeSetInfo_attributes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeType },
6745 };
6746 
6747 static int
dissect_z3950_SEQUENCE_OF_AttributeType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6748 dissect_z3950_SEQUENCE_OF_AttributeType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6749   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6750                                       SEQUENCE_OF_AttributeType_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeType);
6751 
6752   return offset;
6753 }
6754 
6755 
6756 static const ber_sequence_t AttributeSetInfo_sequence[] = {
6757   { &hf_z3950_commonInfo    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
6758   { &hf_z3950_attributeSet  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_AttributeSetId },
6759   { &hf_z3950_name          , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6760   { &hf_z3950_attributeSetInfo_attributes, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeType },
6761   { &hf_z3950_description   , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6762   { NULL, 0, 0, 0, NULL }
6763 };
6764 
6765 static int
dissect_z3950_AttributeSetInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6766 dissect_z3950_AttributeSetInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6767   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6768                                    AttributeSetInfo_sequence, hf_index, ett_z3950_AttributeSetInfo);
6769 
6770   return offset;
6771 }
6772 
6773 
6774 static const value_string z3950_T_searchCost_vals[] = {
6775   {   0, "optimized" },
6776   {   1, "normal" },
6777   {   2, "expensive" },
6778   {   3, "filter" },
6779   { 0, NULL }
6780 };
6781 
6782 
6783 static int
dissect_z3950_T_searchCost(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6784 dissect_z3950_T_searchCost(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6785   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
6786                                                 NULL);
6787 
6788   return offset;
6789 }
6790 
6791 
6792 static const ber_sequence_t T_termLists_item_sequence[] = {
6793   { &hf_z3950_name          , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6794   { &hf_z3950_title         , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6795   { &hf_z3950_searchCost    , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_searchCost },
6796   { &hf_z3950_scanable      , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6797   { &hf_z3950_broader       , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
6798   { &hf_z3950_narrower      , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
6799   { NULL, 0, 0, 0, NULL }
6800 };
6801 
6802 static int
dissect_z3950_T_termLists_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6803 dissect_z3950_T_termLists_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6804   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6805                                    T_termLists_item_sequence, hf_index, ett_z3950_T_termLists_item);
6806 
6807   return offset;
6808 }
6809 
6810 
6811 static const ber_sequence_t T_termLists_sequence_of[1] = {
6812   { &hf_z3950_termLists_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_termLists_item },
6813 };
6814 
6815 static int
dissect_z3950_T_termLists(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6816 dissect_z3950_T_termLists(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6817   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6818                                       T_termLists_sequence_of, hf_index, ett_z3950_T_termLists);
6819 
6820   return offset;
6821 }
6822 
6823 
6824 static const ber_sequence_t TermListInfo_sequence[] = {
6825   { &hf_z3950_commonInfo    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
6826   { &hf_z3950_databaseName  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
6827   { &hf_z3950_termLists     , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_termLists },
6828   { NULL, 0, 0, 0, NULL }
6829 };
6830 
6831 static int
dissect_z3950_TermListInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6832 dissect_z3950_TermListInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6833   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6834                                    TermListInfo_sequence, hf_index, ett_z3950_TermListInfo);
6835 
6836   return offset;
6837 }
6838 
6839 
6840 static const value_string z3950_T_extendedServicesInfo_waitAction_vals[] = {
6841   {   1, "waitSupported" },
6842   {   2, "waitAlways" },
6843   {   3, "waitNotSupported" },
6844   {   4, "depends" },
6845   {   5, "notSaying" },
6846   { 0, NULL }
6847 };
6848 
6849 
6850 static int
dissect_z3950_T_extendedServicesInfo_waitAction(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6851 dissect_z3950_T_extendedServicesInfo_waitAction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6852   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
6853                                                 NULL);
6854 
6855   return offset;
6856 }
6857 
6858 
6859 static const ber_sequence_t ExtendedServicesInfo_sequence[] = {
6860   { &hf_z3950_commonInfo    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
6861   { &hf_z3950_extendedServicesInfo_type, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
6862   { &hf_z3950_name          , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6863   { &hf_z3950_privateType   , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6864   { &hf_z3950_restrictionsApply, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6865   { &hf_z3950_feeApply      , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6866   { &hf_z3950_available     , BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6867   { &hf_z3950_retentionSupported, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6868   { &hf_z3950_extendedServicesInfo_waitAction, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_z3950_T_extendedServicesInfo_waitAction },
6869   { &hf_z3950_description   , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6870   { &hf_z3950_specificExplain, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
6871   { &hf_z3950_esASN         , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6872   { NULL, 0, 0, 0, NULL }
6873 };
6874 
6875 static int
dissect_z3950_ExtendedServicesInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6876 dissect_z3950_ExtendedServicesInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6877   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6878                                    ExtendedServicesInfo_sequence, hf_index, ett_z3950_ExtendedServicesInfo);
6879 
6880   return offset;
6881 }
6882 
6883 
6884 static const ber_sequence_t OmittedAttributeInterpretation_sequence[] = {
6885   { &hf_z3950_defaultValue  , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
6886   { &hf_z3950_defaultDescription, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6887   { NULL, 0, 0, 0, NULL }
6888 };
6889 
6890 static int
dissect_z3950_OmittedAttributeInterpretation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6891 dissect_z3950_OmittedAttributeInterpretation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6892   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6893                                    OmittedAttributeInterpretation_sequence, hf_index, ett_z3950_OmittedAttributeInterpretation);
6894 
6895   return offset;
6896 }
6897 
6898 
6899 static const ber_sequence_t AttributeValue_sequence[] = {
6900   { &hf_z3950_attributeValue_value, BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
6901   { &hf_z3950_description   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6902   { &hf_z3950_subAttributes , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_StringOrNumeric },
6903   { &hf_z3950_superAttributes, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_StringOrNumeric },
6904   { &hf_z3950_partialSupport, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
6905   { NULL, 0, 0, 0, NULL }
6906 };
6907 
6908 static int
dissect_z3950_AttributeValue(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6909 dissect_z3950_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6910   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6911                                    AttributeValue_sequence, hf_index, ett_z3950_AttributeValue);
6912 
6913   return offset;
6914 }
6915 
6916 
6917 static const ber_sequence_t SEQUENCE_OF_AttributeValue_sequence_of[1] = {
6918   { &hf_z3950_attributeTypeDetails_attributeValues_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeValue },
6919 };
6920 
6921 static int
dissect_z3950_SEQUENCE_OF_AttributeValue(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6922 dissect_z3950_SEQUENCE_OF_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6923   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6924                                       SEQUENCE_OF_AttributeValue_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeValue);
6925 
6926   return offset;
6927 }
6928 
6929 
6930 static const ber_sequence_t AttributeTypeDetails_sequence[] = {
6931   { &hf_z3950_attributeType , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6932   { &hf_z3950_defaultIfOmitted, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OmittedAttributeInterpretation },
6933   { &hf_z3950_attributeTypeDetails_attributeValues, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeValue },
6934   { NULL, 0, 0, 0, NULL }
6935 };
6936 
6937 static int
dissect_z3950_AttributeTypeDetails(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6938 dissect_z3950_AttributeTypeDetails(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6939   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6940                                    AttributeTypeDetails_sequence, hf_index, ett_z3950_AttributeTypeDetails);
6941 
6942   return offset;
6943 }
6944 
6945 
6946 static const ber_sequence_t SEQUENCE_OF_AttributeTypeDetails_sequence_of[1] = {
6947   { &hf_z3950_attributesByType_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeTypeDetails },
6948 };
6949 
6950 static int
dissect_z3950_SEQUENCE_OF_AttributeTypeDetails(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6951 dissect_z3950_SEQUENCE_OF_AttributeTypeDetails(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6952   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6953                                       SEQUENCE_OF_AttributeTypeDetails_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeTypeDetails);
6954 
6955   return offset;
6956 }
6957 
6958 
6959 static const ber_sequence_t AttributeSetDetails_sequence[] = {
6960   { &hf_z3950_attributeSet  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_AttributeSetId },
6961   { &hf_z3950_attributesByType, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeTypeDetails },
6962   { NULL, 0, 0, 0, NULL }
6963 };
6964 
6965 static int
dissect_z3950_AttributeSetDetails(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6966 dissect_z3950_AttributeSetDetails(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6967   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6968                                    AttributeSetDetails_sequence, hf_index, ett_z3950_AttributeSetDetails);
6969 
6970   return offset;
6971 }
6972 
6973 
6974 static const ber_sequence_t SEQUENCE_OF_AttributeSetDetails_sequence_of[1] = {
6975   { &hf_z3950_attributesBySet_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeSetDetails },
6976 };
6977 
6978 static int
dissect_z3950_SEQUENCE_OF_AttributeSetDetails(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)6979 dissect_z3950_SEQUENCE_OF_AttributeSetDetails(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6980   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6981                                       SEQUENCE_OF_AttributeSetDetails_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeSetDetails);
6982 
6983   return offset;
6984 }
6985 
6986 
6987 static const value_string z3950_T_attributeOccurrence_attributeValues_vals[] = {
6988   {   3, "any-or-none" },
6989   {   4, "specific" },
6990   { 0, NULL }
6991 };
6992 
6993 static const ber_choice_t T_attributeOccurrence_attributeValues_choice[] = {
6994   {   3, &hf_z3950_any_or_none   , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
6995   {   4, &hf_z3950_specific      , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_StringOrNumeric },
6996   { 0, NULL, 0, 0, 0, NULL }
6997 };
6998 
6999 static int
dissect_z3950_T_attributeOccurrence_attributeValues(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7000 dissect_z3950_T_attributeOccurrence_attributeValues(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7001   offset = dissect_ber_choice(actx, tree, tvb, offset,
7002                                  T_attributeOccurrence_attributeValues_choice, hf_index, ett_z3950_T_attributeOccurrence_attributeValues,
7003                                  NULL);
7004 
7005   return offset;
7006 }
7007 
7008 
7009 static const ber_sequence_t AttributeOccurrence_sequence[] = {
7010   { &hf_z3950_attributeSet  , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AttributeSetId },
7011   { &hf_z3950_attributeType , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7012   { &hf_z3950_mustBeSupplied, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
7013   { &hf_z3950_attributeOccurrence_attributeValues, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_attributeOccurrence_attributeValues },
7014   { NULL, 0, 0, 0, NULL }
7015 };
7016 
7017 static int
dissect_z3950_AttributeOccurrence(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7018 dissect_z3950_AttributeOccurrence(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7019   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7020                                    AttributeOccurrence_sequence, hf_index, ett_z3950_AttributeOccurrence);
7021 
7022   return offset;
7023 }
7024 
7025 
7026 static const ber_sequence_t AttributeCombination_sequence_of[1] = {
7027   { &hf_z3950_AttributeCombination_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeOccurrence },
7028 };
7029 
7030 static int
dissect_z3950_AttributeCombination(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7031 dissect_z3950_AttributeCombination(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7032   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7033                                       AttributeCombination_sequence_of, hf_index, ett_z3950_AttributeCombination);
7034 
7035   return offset;
7036 }
7037 
7038 
7039 static const ber_sequence_t SEQUENCE_OF_AttributeCombination_sequence_of[1] = {
7040   { &hf_z3950_legalCombinations_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeCombination },
7041 };
7042 
7043 static int
dissect_z3950_SEQUENCE_OF_AttributeCombination(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7044 dissect_z3950_SEQUENCE_OF_AttributeCombination(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7045   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7046                                       SEQUENCE_OF_AttributeCombination_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeCombination);
7047 
7048   return offset;
7049 }
7050 
7051 
7052 static const ber_sequence_t AttributeCombinations_sequence[] = {
7053   { &hf_z3950_defaultAttributeSet, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_AttributeSetId },
7054   { &hf_z3950_legalCombinations, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeCombination },
7055   { NULL, 0, 0, 0, NULL }
7056 };
7057 
7058 static int
dissect_z3950_AttributeCombinations(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7059 dissect_z3950_AttributeCombinations(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7060   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7061                                    AttributeCombinations_sequence, hf_index, ett_z3950_AttributeCombinations);
7062 
7063   return offset;
7064 }
7065 
7066 
7067 static const ber_sequence_t AttributeDetails_sequence[] = {
7068   { &hf_z3950_commonInfo    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7069   { &hf_z3950_databaseName  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
7070   { &hf_z3950_attributesBySet, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeSetDetails },
7071   { &hf_z3950_attributeCombinations, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AttributeCombinations },
7072   { NULL, 0, 0, 0, NULL }
7073 };
7074 
7075 static int
dissect_z3950_AttributeDetails(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7076 dissect_z3950_AttributeDetails(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7077   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7078                                    AttributeDetails_sequence, hf_index, ett_z3950_AttributeDetails);
7079 
7080   return offset;
7081 }
7082 
7083 
7084 static const ber_sequence_t T_scanInfo_sequence[] = {
7085   { &hf_z3950_maxStepSize   , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7086   { &hf_z3950_collatingSequence, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7087   { &hf_z3950_increasing    , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
7088   { NULL, 0, 0, 0, NULL }
7089 };
7090 
7091 static int
dissect_z3950_T_scanInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7092 dissect_z3950_T_scanInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7093   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7094                                    T_scanInfo_sequence, hf_index, ett_z3950_T_scanInfo);
7095 
7096   return offset;
7097 }
7098 
7099 
7100 static const ber_sequence_t SEQUENCE_OF_Term_sequence_of[1] = {
7101   { &hf_z3950_sampleTerms_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_Term },
7102 };
7103 
7104 static int
dissect_z3950_SEQUENCE_OF_Term(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7105 dissect_z3950_SEQUENCE_OF_Term(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7106   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7107                                       SEQUENCE_OF_Term_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_Term);
7108 
7109   return offset;
7110 }
7111 
7112 
7113 static const ber_sequence_t TermListDetails_sequence[] = {
7114   { &hf_z3950_commonInfo    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7115   { &hf_z3950_termListName  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7116   { &hf_z3950_description   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7117   { &hf_z3950_termListDetails_attributes, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AttributeCombinations },
7118   { &hf_z3950_scanInfo      , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_scanInfo },
7119   { &hf_z3950_estNumberTerms, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7120   { &hf_z3950_sampleTerms   , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Term },
7121   { NULL, 0, 0, 0, NULL }
7122 };
7123 
7124 static int
dissect_z3950_TermListDetails(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7125 dissect_z3950_TermListDetails(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7126   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7127                                    TermListDetails_sequence, hf_index, ett_z3950_TermListDetails);
7128 
7129   return offset;
7130 }
7131 
7132 
7133 static const ber_sequence_t RecordTag_sequence[] = {
7134   { &hf_z3950_qualifier     , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
7135   { &hf_z3950_tagValue      , BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
7136   { NULL, 0, 0, 0, NULL }
7137 };
7138 
7139 static int
dissect_z3950_RecordTag(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7140 dissect_z3950_RecordTag(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7141   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7142                                    RecordTag_sequence, hf_index, ett_z3950_RecordTag);
7143 
7144   return offset;
7145 }
7146 
7147 
7148 static const ber_sequence_t SEQUENCE_OF_Path_sequence_of[1] = {
7149   { &hf_z3950_schemaTags_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Path },
7150 };
7151 
7152 static int
dissect_z3950_SEQUENCE_OF_Path(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7153 dissect_z3950_SEQUENCE_OF_Path(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7154   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7155                                       SEQUENCE_OF_Path_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_Path);
7156 
7157   return offset;
7158 }
7159 
7160 
7161 static const ber_sequence_t PerElementDetails_sequence[] = {
7162   { &hf_z3950_name          , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7163   { &hf_z3950_recordTag     , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_RecordTag },
7164   { &hf_z3950_schemaTags    , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Path },
7165   { &hf_z3950_maxSize       , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7166   { &hf_z3950_minSize       , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7167   { &hf_z3950_avgSize       , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7168   { &hf_z3950_fixedSize     , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7169   { &hf_z3950_repeatable    , BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
7170   { &hf_z3950_required      , BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
7171   { &hf_z3950_description   , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7172   { &hf_z3950_contents      , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7173   { &hf_z3950_billingInfo   , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7174   { &hf_z3950_restrictions  , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7175   { &hf_z3950_alternateNames, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
7176   { &hf_z3950_genericNames  , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
7177   { &hf_z3950_searchAccess  , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AttributeCombinations },
7178   { NULL, 0, 0, 0, NULL }
7179 };
7180 
7181 static int
dissect_z3950_PerElementDetails(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7182 dissect_z3950_PerElementDetails(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7183   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7184                                    PerElementDetails_sequence, hf_index, ett_z3950_PerElementDetails);
7185 
7186   return offset;
7187 }
7188 
7189 
7190 static const ber_sequence_t SEQUENCE_OF_PerElementDetails_sequence_of[1] = {
7191   { &hf_z3950_detailsPerElement_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_PerElementDetails },
7192 };
7193 
7194 static int
dissect_z3950_SEQUENCE_OF_PerElementDetails(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7195 dissect_z3950_SEQUENCE_OF_PerElementDetails(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7196   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7197                                       SEQUENCE_OF_PerElementDetails_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_PerElementDetails);
7198 
7199   return offset;
7200 }
7201 
7202 
7203 static const ber_sequence_t ElementSetDetails_sequence[] = {
7204   { &hf_z3950_commonInfo    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7205   { &hf_z3950_databaseName  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
7206   { &hf_z3950_elementSetDetails_elementSetName, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_ElementSetName },
7207   { &hf_z3950_recordSyntax  , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
7208   { &hf_z3950_schema        , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
7209   { &hf_z3950_description   , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7210   { &hf_z3950_detailsPerElement, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_PerElementDetails },
7211   { NULL, 0, 0, 0, NULL }
7212 };
7213 
7214 static int
dissect_z3950_ElementSetDetails(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7215 dissect_z3950_ElementSetDetails(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7216   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7217                                    ElementSetDetails_sequence, hf_index, ett_z3950_ElementSetDetails);
7218 
7219   return offset;
7220 }
7221 
7222 
7223 static const ber_sequence_t RetrievalRecordDetails_sequence[] = {
7224   { &hf_z3950_commonInfo    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7225   { &hf_z3950_databaseName  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
7226   { &hf_z3950_schema        , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
7227   { &hf_z3950_recordSyntax  , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
7228   { &hf_z3950_description   , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7229   { &hf_z3950_detailsPerElement, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_PerElementDetails },
7230   { NULL, 0, 0, 0, NULL }
7231 };
7232 
7233 static int
dissect_z3950_RetrievalRecordDetails(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7234 dissect_z3950_RetrievalRecordDetails(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7235   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7236                                    RetrievalRecordDetails_sequence, hf_index, ett_z3950_RetrievalRecordDetails);
7237 
7238   return offset;
7239 }
7240 
7241 
7242 static const value_string z3950_T_sortType_vals[] = {
7243   {   0, "character" },
7244   {   1, "numeric" },
7245   {   2, "structured" },
7246   { 0, NULL }
7247 };
7248 
7249 static const ber_choice_t T_sortType_choice[] = {
7250   {   0, &hf_z3950_character     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
7251   {   1, &hf_z3950_sortKeyDetails_sortType_numeric, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
7252   {   2, &hf_z3950_sortKeyDetails_sortType_structured, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7253   { 0, NULL, 0, 0, 0, NULL }
7254 };
7255 
7256 static int
dissect_z3950_T_sortType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7257 dissect_z3950_T_sortType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7258   offset = dissect_ber_choice(actx, tree, tvb, offset,
7259                                  T_sortType_choice, hf_index, ett_z3950_T_sortType,
7260                                  NULL);
7261 
7262   return offset;
7263 }
7264 
7265 
7266 static const value_string z3950_T_sortKeyDetails_caseSensitivity_vals[] = {
7267   {   0, "always" },
7268   {   1, "never" },
7269   {   2, "default-yes" },
7270   {   3, "default-no" },
7271   { 0, NULL }
7272 };
7273 
7274 
7275 static int
dissect_z3950_T_sortKeyDetails_caseSensitivity(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7276 dissect_z3950_T_sortKeyDetails_caseSensitivity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7277   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7278                                                 NULL);
7279 
7280   return offset;
7281 }
7282 
7283 
7284 static const ber_sequence_t SortKeyDetails_sequence[] = {
7285   { &hf_z3950_description   , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7286   { &hf_z3950_elementSpecifications, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Specification },
7287   { &hf_z3950_attributeSpecifications, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AttributeCombinations },
7288   { &hf_z3950_sortType      , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_z3950_T_sortType },
7289   { &hf_z3950_sortKeyDetails_caseSensitivity, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_sortKeyDetails_caseSensitivity },
7290   { NULL, 0, 0, 0, NULL }
7291 };
7292 
7293 static int
dissect_z3950_SortKeyDetails(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7294 dissect_z3950_SortKeyDetails(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7295   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7296                                    SortKeyDetails_sequence, hf_index, ett_z3950_SortKeyDetails);
7297 
7298   return offset;
7299 }
7300 
7301 
7302 static const ber_sequence_t SEQUENCE_OF_SortKeyDetails_sequence_of[1] = {
7303   { &hf_z3950_sortKeys_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_SortKeyDetails },
7304 };
7305 
7306 static int
dissect_z3950_SEQUENCE_OF_SortKeyDetails(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7307 dissect_z3950_SEQUENCE_OF_SortKeyDetails(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7308   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7309                                       SEQUENCE_OF_SortKeyDetails_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_SortKeyDetails);
7310 
7311   return offset;
7312 }
7313 
7314 
7315 static const ber_sequence_t SortDetails_sequence[] = {
7316   { &hf_z3950_commonInfo    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7317   { &hf_z3950_databaseName  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
7318   { &hf_z3950_sortKeys      , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_SortKeyDetails },
7319   { NULL, 0, 0, 0, NULL }
7320 };
7321 
7322 static int
dissect_z3950_SortDetails(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7323 dissect_z3950_SortDetails(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7324   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7325                                    SortDetails_sequence, hf_index, ett_z3950_SortDetails);
7326 
7327   return offset;
7328 }
7329 
7330 
7331 static const value_string z3950_T_processingContext_vals[] = {
7332   {   0, "access" },
7333   {   1, "search" },
7334   {   2, "retrieval" },
7335   {   3, "record-presentation" },
7336   {   4, "record-handling" },
7337   { 0, NULL }
7338 };
7339 
7340 
7341 static int
dissect_z3950_T_processingContext(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7342 dissect_z3950_T_processingContext(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7343   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7344                                                 NULL);
7345 
7346   return offset;
7347 }
7348 
7349 
7350 static const ber_sequence_t ProcessingInformation_sequence[] = {
7351   { &hf_z3950_commonInfo    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7352   { &hf_z3950_databaseName  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
7353   { &hf_z3950_processingContext, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_processingContext },
7354   { &hf_z3950_name          , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7355   { &hf_z3950_oid           , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
7356   { &hf_z3950_description   , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7357   { &hf_z3950_instructions  , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
7358   { NULL, 0, 0, 0, NULL }
7359 };
7360 
7361 static int
dissect_z3950_ProcessingInformation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7362 dissect_z3950_ProcessingInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7363   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7364                                    ProcessingInformation_sequence, hf_index, ett_z3950_ProcessingInformation);
7365 
7366   return offset;
7367 }
7368 
7369 
7370 static const value_string z3950_ValueDescription_vals[] = {
7371   {   0, "integer" },
7372   {   1, "string" },
7373   {   2, "octets" },
7374   {   3, "oid" },
7375   {   4, "unit" },
7376   {   5, "valueAndUnit" },
7377   { 0, NULL }
7378 };
7379 
7380 static const ber_choice_t ValueDescription_choice[] = {
7381   {   0, &hf_z3950_integer       , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_z3950_INTEGER },
7382   {   1, &hf_z3950_string        , BER_CLASS_UNI, BER_UNI_TAG_GeneralString, BER_FLAGS_NOOWNTAG, dissect_z3950_InternationalString },
7383   {   2, &hf_z3950_octets        , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_z3950_OCTET_STRING },
7384   {   3, &hf_z3950_oid           , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
7385   {   4, &hf_z3950_valueDescription_unit, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_Unit },
7386   {   5, &hf_z3950_valueAndUnit  , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
7387   { 0, NULL, 0, 0, 0, NULL }
7388 };
7389 
7390 static int
dissect_z3950_ValueDescription(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7391 dissect_z3950_ValueDescription(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7392   offset = dissect_ber_choice(actx, tree, tvb, offset,
7393                                  ValueDescription_choice, hf_index, ett_z3950_ValueDescription,
7394                                  NULL);
7395 
7396   return offset;
7397 }
7398 
7399 
7400 static const ber_sequence_t ValueRange_sequence[] = {
7401   { &hf_z3950_lower         , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_ValueDescription },
7402   { &hf_z3950_upper         , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_ValueDescription },
7403   { NULL, 0, 0, 0, NULL }
7404 };
7405 
7406 static int
dissect_z3950_ValueRange(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7407 dissect_z3950_ValueRange(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7408   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7409                                    ValueRange_sequence, hf_index, ett_z3950_ValueRange);
7410 
7411   return offset;
7412 }
7413 
7414 
7415 static const ber_sequence_t SEQUENCE_OF_ValueDescription_sequence_of[1] = {
7416   { &hf_z3950_enumerated_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_ValueDescription },
7417 };
7418 
7419 static int
dissect_z3950_SEQUENCE_OF_ValueDescription(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7420 dissect_z3950_SEQUENCE_OF_ValueDescription(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7421   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7422                                       SEQUENCE_OF_ValueDescription_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_ValueDescription);
7423 
7424   return offset;
7425 }
7426 
7427 
7428 static const value_string z3950_ValueSet_vals[] = {
7429   {   0, "range" },
7430   {   1, "enumerated" },
7431   { 0, NULL }
7432 };
7433 
7434 static const ber_choice_t ValueSet_choice[] = {
7435   {   0, &hf_z3950_range         , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_ValueRange },
7436   {   1, &hf_z3950_enumerated    , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_ValueDescription },
7437   { 0, NULL, 0, 0, 0, NULL }
7438 };
7439 
7440 static int
dissect_z3950_ValueSet(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7441 dissect_z3950_ValueSet(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7442   offset = dissect_ber_choice(actx, tree, tvb, offset,
7443                                  ValueSet_choice, hf_index, ett_z3950_ValueSet,
7444                                  NULL);
7445 
7446   return offset;
7447 }
7448 
7449 
7450 static const ber_sequence_t VariantValue_sequence[] = {
7451   { &hf_z3950_dataType      , BER_CLASS_CON, 0, 0, dissect_z3950_PrimitiveDataType },
7452   { &hf_z3950_values        , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_ValueSet },
7453   { NULL, 0, 0, 0, NULL }
7454 };
7455 
7456 static int
dissect_z3950_VariantValue(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7457 dissect_z3950_VariantValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7458   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7459                                    VariantValue_sequence, hf_index, ett_z3950_VariantValue);
7460 
7461   return offset;
7462 }
7463 
7464 
7465 static const ber_sequence_t VariantType_sequence[] = {
7466   { &hf_z3950_name          , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7467   { &hf_z3950_description   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7468   { &hf_z3950_variantType   , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7469   { &hf_z3950_variantValue  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_VariantValue },
7470   { NULL, 0, 0, 0, NULL }
7471 };
7472 
7473 static int
dissect_z3950_VariantType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7474 dissect_z3950_VariantType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7475   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7476                                    VariantType_sequence, hf_index, ett_z3950_VariantType);
7477 
7478   return offset;
7479 }
7480 
7481 
7482 static const ber_sequence_t SEQUENCE_OF_VariantType_sequence_of[1] = {
7483   { &hf_z3950_variantTypes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_VariantType },
7484 };
7485 
7486 static int
dissect_z3950_SEQUENCE_OF_VariantType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7487 dissect_z3950_SEQUENCE_OF_VariantType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7488   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7489                                       SEQUENCE_OF_VariantType_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_VariantType);
7490 
7491   return offset;
7492 }
7493 
7494 
7495 static const ber_sequence_t VariantClass_sequence[] = {
7496   { &hf_z3950_name          , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7497   { &hf_z3950_description   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7498   { &hf_z3950_variantClass  , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7499   { &hf_z3950_variantTypes  , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_VariantType },
7500   { NULL, 0, 0, 0, NULL }
7501 };
7502 
7503 static int
dissect_z3950_VariantClass(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7504 dissect_z3950_VariantClass(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7505   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7506                                    VariantClass_sequence, hf_index, ett_z3950_VariantClass);
7507 
7508   return offset;
7509 }
7510 
7511 
7512 static const ber_sequence_t SEQUENCE_OF_VariantClass_sequence_of[1] = {
7513   { &hf_z3950_variantSetInfo_variants_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_VariantClass },
7514 };
7515 
7516 static int
dissect_z3950_SEQUENCE_OF_VariantClass(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7517 dissect_z3950_SEQUENCE_OF_VariantClass(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7518   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7519                                       SEQUENCE_OF_VariantClass_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_VariantClass);
7520 
7521   return offset;
7522 }
7523 
7524 
7525 static const ber_sequence_t VariantSetInfo_sequence[] = {
7526   { &hf_z3950_commonInfo    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7527   { &hf_z3950_variantSet    , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
7528   { &hf_z3950_name          , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7529   { &hf_z3950_variantSetInfo_variants, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_VariantClass },
7530   { NULL, 0, 0, 0, NULL }
7531 };
7532 
7533 static int
dissect_z3950_VariantSetInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7534 dissect_z3950_VariantSetInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7535   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7536                                    VariantSetInfo_sequence, hf_index, ett_z3950_VariantSetInfo);
7537 
7538   return offset;
7539 }
7540 
7541 
7542 static const ber_sequence_t Units_sequence[] = {
7543   { &hf_z3950_name          , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7544   { &hf_z3950_description   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7545   { &hf_z3950_unit          , BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
7546   { NULL, 0, 0, 0, NULL }
7547 };
7548 
7549 static int
dissect_z3950_Units(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7550 dissect_z3950_Units(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7551   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7552                                    Units_sequence, hf_index, ett_z3950_Units);
7553 
7554   return offset;
7555 }
7556 
7557 
7558 static const ber_sequence_t SEQUENCE_OF_Units_sequence_of[1] = {
7559   { &hf_z3950_unitType_units_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Units },
7560 };
7561 
7562 static int
dissect_z3950_SEQUENCE_OF_Units(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7563 dissect_z3950_SEQUENCE_OF_Units(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7564   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7565                                       SEQUENCE_OF_Units_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_Units);
7566 
7567   return offset;
7568 }
7569 
7570 
7571 static const ber_sequence_t UnitType_sequence[] = {
7572   { &hf_z3950_name          , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7573   { &hf_z3950_description   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7574   { &hf_z3950_unitType      , BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
7575   { &hf_z3950_unitType_units, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Units },
7576   { NULL, 0, 0, 0, NULL }
7577 };
7578 
7579 static int
dissect_z3950_UnitType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7580 dissect_z3950_UnitType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7581   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7582                                    UnitType_sequence, hf_index, ett_z3950_UnitType);
7583 
7584   return offset;
7585 }
7586 
7587 
7588 static const ber_sequence_t SEQUENCE_OF_UnitType_sequence_of[1] = {
7589   { &hf_z3950_unitInfo_units_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_UnitType },
7590 };
7591 
7592 static int
dissect_z3950_SEQUENCE_OF_UnitType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7593 dissect_z3950_SEQUENCE_OF_UnitType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7594   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7595                                       SEQUENCE_OF_UnitType_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_UnitType);
7596 
7597   return offset;
7598 }
7599 
7600 
7601 static const ber_sequence_t UnitInfo_sequence[] = {
7602   { &hf_z3950_commonInfo    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7603   { &hf_z3950_unitSystem    , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7604   { &hf_z3950_description   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7605   { &hf_z3950_unitInfo_units, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_UnitType },
7606   { NULL, 0, 0, 0, NULL }
7607 };
7608 
7609 static int
dissect_z3950_UnitInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7610 dissect_z3950_UnitInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7611   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7612                                    UnitInfo_sequence, hf_index, ett_z3950_UnitInfo);
7613 
7614   return offset;
7615 }
7616 
7617 
7618 static const ber_sequence_t CategoryInfo_sequence[] = {
7619   { &hf_z3950_categoryInfo_category, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7620   { &hf_z3950_originalCategory, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7621   { &hf_z3950_description   , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7622   { &hf_z3950_asn1Module    , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7623   { NULL, 0, 0, 0, NULL }
7624 };
7625 
7626 static int
dissect_z3950_CategoryInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7627 dissect_z3950_CategoryInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7628   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7629                                    CategoryInfo_sequence, hf_index, ett_z3950_CategoryInfo);
7630 
7631   return offset;
7632 }
7633 
7634 
7635 static const ber_sequence_t SEQUENCE_OF_CategoryInfo_sequence_of[1] = {
7636   { &hf_z3950_categories_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_CategoryInfo },
7637 };
7638 
7639 static int
dissect_z3950_SEQUENCE_OF_CategoryInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7640 dissect_z3950_SEQUENCE_OF_CategoryInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7641   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7642                                       SEQUENCE_OF_CategoryInfo_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_CategoryInfo);
7643 
7644   return offset;
7645 }
7646 
7647 
7648 static const ber_sequence_t CategoryList_sequence[] = {
7649   { &hf_z3950_commonInfo    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7650   { &hf_z3950_categories    , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_CategoryInfo },
7651   { NULL, 0, 0, 0, NULL }
7652 };
7653 
7654 static int
dissect_z3950_CategoryList(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7655 dissect_z3950_CategoryList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7656   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7657                                    CategoryList_sequence, hf_index, ett_z3950_CategoryList);
7658 
7659   return offset;
7660 }
7661 
7662 
7663 static const value_string z3950_Explain_Record_vals[] = {
7664   {   0, "targetInfo" },
7665   {   1, "databaseInfo" },
7666   {   2, "schemaInfo" },
7667   {   3, "tagSetInfo" },
7668   {   4, "recordSyntaxInfo" },
7669   {   5, "attributeSetInfo" },
7670   {   6, "termListInfo" },
7671   {   7, "extendedServicesInfo" },
7672   {   8, "attributeDetails" },
7673   {   9, "termListDetails" },
7674   {  10, "elementSetDetails" },
7675   {  11, "retrievalRecordDetails" },
7676   {  12, "sortDetails" },
7677   {  13, "processing" },
7678   {  14, "variants" },
7679   {  15, "units" },
7680   { 100, "categoryList" },
7681   { 0, NULL }
7682 };
7683 
7684 static const ber_choice_t Explain_Record_choice[] = {
7685   {   0, &hf_z3950_targetInfo    , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_TargetInfo },
7686   {   1, &hf_z3950_databaseInfo  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseInfo },
7687   {   2, &hf_z3950_schemaInfo    , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_SchemaInfo },
7688   {   3, &hf_z3950_tagSetInfo    , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_TagSetInfo },
7689   {   4, &hf_z3950_recordSyntaxInfo, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_RecordSyntaxInfo },
7690   {   5, &hf_z3950_attributeSetInfo, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_AttributeSetInfo },
7691   {   6, &hf_z3950_termListInfo  , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_TermListInfo },
7692   {   7, &hf_z3950_extendedServicesInfo, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_z3950_ExtendedServicesInfo },
7693   {   8, &hf_z3950_attributeDetails, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_z3950_AttributeDetails },
7694   {   9, &hf_z3950_termListDetails, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_z3950_TermListDetails },
7695   {  10, &hf_z3950_elementSetDetails, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_z3950_ElementSetDetails },
7696   {  11, &hf_z3950_retrievalRecordDetails, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_z3950_RetrievalRecordDetails },
7697   {  12, &hf_z3950_sortDetails   , BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_z3950_SortDetails },
7698   {  13, &hf_z3950_processing    , BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_z3950_ProcessingInformation },
7699   {  14, &hf_z3950_variants      , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_z3950_VariantSetInfo },
7700   {  15, &hf_z3950_units         , BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_z3950_UnitInfo },
7701   { 100, &hf_z3950_categoryList  , BER_CLASS_CON, 100, BER_FLAGS_IMPLTAG, dissect_z3950_CategoryList },
7702   { 0, NULL, 0, 0, 0, NULL }
7703 };
7704 
7705 static int
dissect_z3950_Explain_Record(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7706 dissect_z3950_Explain_Record(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7707   offset = dissect_ber_choice(actx, tree, tvb, offset,
7708                                  Explain_Record_choice, hf_index, ett_z3950_Explain_Record,
7709                                  NULL);
7710 
7711   return offset;
7712 }
7713 
7714 
7715 static const ber_sequence_t FormatSpec_sequence[] = {
7716   { &hf_z3950_formatSpec_type, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7717   { &hf_z3950_size          , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7718   { &hf_z3950_bestPosn      , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7719   { NULL, 0, 0, 0, NULL }
7720 };
7721 
7722 static int
dissect_z3950_FormatSpec(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7723 dissect_z3950_FormatSpec(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7724   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7725                                    FormatSpec_sequence, hf_index, ett_z3950_FormatSpec);
7726 
7727   return offset;
7728 }
7729 
7730 
7731 static const ber_sequence_t SEQUENCE_OF_FormatSpec_sequence_of[1] = {
7732   { &hf_z3950_briefBib_format_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_FormatSpec },
7733 };
7734 
7735 static int
dissect_z3950_SEQUENCE_OF_FormatSpec(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7736 dissect_z3950_SEQUENCE_OF_FormatSpec(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7737   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7738                                       SEQUENCE_OF_FormatSpec_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_FormatSpec);
7739 
7740   return offset;
7741 }
7742 
7743 
7744 static const ber_sequence_t BriefBib_sequence[] = {
7745   { &hf_z3950_briefBib_title, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7746   { &hf_z3950_author        , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7747   { &hf_z3950_callNumber    , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7748   { &hf_z3950_recordType    , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7749   { &hf_z3950_bibliographicLevel, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7750   { &hf_z3950_briefBib_format, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_FormatSpec },
7751   { &hf_z3950_publicationPlace, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7752   { &hf_z3950_publicationDate, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7753   { &hf_z3950_targetSystemKey, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7754   { &hf_z3950_satisfyingElement, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7755   { &hf_z3950_rank          , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7756   { &hf_z3950_documentId    , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7757   { &hf_z3950_abstract      , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7758   { &hf_z3950_otherInfo     , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
7759   { NULL, 0, 0, 0, NULL }
7760 };
7761 
7762 static int
dissect_z3950_BriefBib(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7763 dissect_z3950_BriefBib(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7764   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7765                                    BriefBib_sequence, hf_index, ett_z3950_BriefBib);
7766 
7767   return offset;
7768 }
7769 
7770 
7771 static const ber_sequence_t SEQUENCE_OF_TaggedElement_sequence_of[1] = {
7772   { &hf_z3950_subtree_item  , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_TaggedElement },
7773 };
7774 
7775 static int
dissect_z3950_SEQUENCE_OF_TaggedElement(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7776 dissect_z3950_SEQUENCE_OF_TaggedElement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7777   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7778                                       SEQUENCE_OF_TaggedElement_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_TaggedElement);
7779 
7780   return offset;
7781 }
7782 
7783 
7784 static const value_string z3950_ElementData_vals[] = {
7785   {   0, "octets" },
7786   {   1, "numeric" },
7787   {   2, "date" },
7788   {   3, "ext" },
7789   {   4, "string" },
7790   {   5, "trueOrFalse" },
7791   {   6, "oid" },
7792   {   7, "intUnit" },
7793   {   8, "elementNotThere" },
7794   {   9, "elementEmpty" },
7795   {  10, "noDataRequested" },
7796   {  11, "diagnostic" },
7797   {  12, "subtree" },
7798   { 0, NULL }
7799 };
7800 
7801 static const ber_choice_t ElementData_choice[] = {
7802   {   0, &hf_z3950_octets        , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_z3950_OCTET_STRING },
7803   {   1, &hf_z3950_numeric       , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_z3950_INTEGER },
7804   {   2, &hf_z3950_date          , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_z3950_GeneralizedTime },
7805   {   3, &hf_z3950_ext           , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_z3950_EXTERNAL },
7806   {   4, &hf_z3950_string        , BER_CLASS_UNI, BER_UNI_TAG_GeneralString, BER_FLAGS_NOOWNTAG, dissect_z3950_InternationalString },
7807   {   5, &hf_z3950_trueOrFalse   , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_NOOWNTAG, dissect_z3950_BOOLEAN },
7808   {   6, &hf_z3950_oid           , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
7809   {   7, &hf_z3950_intUnit       , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
7810   {   8, &hf_z3950_elementNotThere, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
7811   {   9, &hf_z3950_elementEmpty  , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
7812   {  10, &hf_z3950_noDataRequested, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
7813   {  11, &hf_z3950_elementData_diagnostic, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
7814   {  12, &hf_z3950_subtree       , BER_CLASS_CON, 6, 0, dissect_z3950_SEQUENCE_OF_TaggedElement },
7815   { 0, NULL, 0, 0, 0, NULL }
7816 };
7817 
7818 static int
dissect_z3950_ElementData(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7819 dissect_z3950_ElementData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7820   offset = dissect_ber_choice(actx, tree, tvb, offset,
7821                                  ElementData_choice, hf_index, ett_z3950_ElementData,
7822                                  NULL);
7823 
7824   return offset;
7825 }
7826 
7827 
7828 static const ber_sequence_t Order_sequence[] = {
7829   { &hf_z3950_ascending     , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
7830   { &hf_z3950_order         , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7831   { NULL, 0, 0, 0, NULL }
7832 };
7833 
7834 static int
dissect_z3950_Order(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7835 dissect_z3950_Order(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7836   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7837                                    Order_sequence, hf_index, ett_z3950_Order);
7838 
7839   return offset;
7840 }
7841 
7842 
7843 static const value_string z3950_T_usage_type_vals[] = {
7844   {   1, "redistributable" },
7845   {   2, "restricted" },
7846   {   3, "licensePointer" },
7847   { 0, NULL }
7848 };
7849 
7850 
7851 static int
dissect_z3950_T_usage_type(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7852 dissect_z3950_T_usage_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7853   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7854                                                 NULL);
7855 
7856   return offset;
7857 }
7858 
7859 
7860 static const ber_sequence_t Usage_sequence[] = {
7861   { &hf_z3950_usage_type    , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_usage_type },
7862   { &hf_z3950_restriction   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7863   { NULL, 0, 0, 0, NULL }
7864 };
7865 
7866 static int
dissect_z3950_Usage(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7867 dissect_z3950_Usage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7868   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7869                                    Usage_sequence, hf_index, ett_z3950_Usage);
7870 
7871   return offset;
7872 }
7873 
7874 
7875 static const ber_sequence_t HitVector_sequence[] = {
7876   { &hf_z3950_satisfier     , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_Term },
7877   { &hf_z3950_offsetIntoElement, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
7878   { &hf_z3950_length        , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
7879   { &hf_z3950_hitRank       , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7880   { &hf_z3950_targetToken   , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
7881   { NULL, 0, 0, 0, NULL }
7882 };
7883 
7884 static int
dissect_z3950_HitVector(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7885 dissect_z3950_HitVector(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7886   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7887                                    HitVector_sequence, hf_index, ett_z3950_HitVector);
7888 
7889   return offset;
7890 }
7891 
7892 
7893 static const ber_sequence_t SEQUENCE_OF_HitVector_sequence_of[1] = {
7894   { &hf_z3950_hits_item     , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_HitVector },
7895 };
7896 
7897 static int
dissect_z3950_SEQUENCE_OF_HitVector(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7898 dissect_z3950_SEQUENCE_OF_HitVector(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7899   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7900                                       SEQUENCE_OF_HitVector_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_HitVector);
7901 
7902   return offset;
7903 }
7904 
7905 
7906 static const value_string z3950_T_variant_triples_item_value_vals[] = {
7907   {   0, "integer" },
7908   {   1, "string" },
7909   {   2, "octetString" },
7910   {   3, "oid" },
7911   {   4, "boolean" },
7912   {   5, "null" },
7913   {   6, "unit" },
7914   {   7, "valueAndUnit" },
7915   { 0, NULL }
7916 };
7917 
7918 static const ber_choice_t T_variant_triples_item_value_choice[] = {
7919   {   0, &hf_z3950_integer       , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_z3950_INTEGER },
7920   {   1, &hf_z3950_string        , BER_CLASS_UNI, BER_UNI_TAG_GeneralString, BER_FLAGS_NOOWNTAG, dissect_z3950_InternationalString },
7921   {   2, &hf_z3950_octetString   , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_z3950_OCTET_STRING },
7922   {   3, &hf_z3950_oid           , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
7923   {   4, &hf_z3950_boolean       , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_NOOWNTAG, dissect_z3950_BOOLEAN },
7924   {   5, &hf_z3950_null          , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_z3950_NULL },
7925   {   6, &hf_z3950_variant_triples_item_value_unit, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_Unit },
7926   {   7, &hf_z3950_valueAndUnit  , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
7927   { 0, NULL, 0, 0, 0, NULL }
7928 };
7929 
7930 static int
dissect_z3950_T_variant_triples_item_value(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7931 dissect_z3950_T_variant_triples_item_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7932   offset = dissect_ber_choice(actx, tree, tvb, offset,
7933                                  T_variant_triples_item_value_choice, hf_index, ett_z3950_T_variant_triples_item_value,
7934                                  NULL);
7935 
7936   return offset;
7937 }
7938 
7939 
7940 static const ber_sequence_t T_triples_item_sequence[] = {
7941   { &hf_z3950_variantSetId  , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
7942   { &hf_z3950_class         , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7943   { &hf_z3950_type          , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7944   { &hf_z3950_variant_triples_item_value, BER_CLASS_CON, 3, 0, dissect_z3950_T_variant_triples_item_value },
7945   { NULL, 0, 0, 0, NULL }
7946 };
7947 
7948 static int
dissect_z3950_T_triples_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7949 dissect_z3950_T_triples_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7950   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7951                                    T_triples_item_sequence, hf_index, ett_z3950_T_triples_item);
7952 
7953   return offset;
7954 }
7955 
7956 
7957 static const ber_sequence_t T_triples_sequence_of[1] = {
7958   { &hf_z3950_triples_item  , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_triples_item },
7959 };
7960 
7961 static int
dissect_z3950_T_triples(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7962 dissect_z3950_T_triples(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7963   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7964                                       T_triples_sequence_of, hf_index, ett_z3950_T_triples);
7965 
7966   return offset;
7967 }
7968 
7969 
7970 static const ber_sequence_t Variant_sequence[] = {
7971   { &hf_z3950_globalVariantSetId, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
7972   { &hf_z3950_triples       , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_triples },
7973   { NULL, 0, 0, 0, NULL }
7974 };
7975 
7976 static int
dissect_z3950_Variant(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7977 dissect_z3950_Variant(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7978   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7979                                    Variant_sequence, hf_index, ett_z3950_Variant);
7980 
7981   return offset;
7982 }
7983 
7984 
7985 static const ber_sequence_t SEQUENCE_OF_Variant_sequence_of[1] = {
7986   { &hf_z3950_supportedVariants_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Variant },
7987 };
7988 
7989 static int
dissect_z3950_SEQUENCE_OF_Variant(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)7990 dissect_z3950_SEQUENCE_OF_Variant(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7991   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7992                                       SEQUENCE_OF_Variant_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_Variant);
7993 
7994   return offset;
7995 }
7996 
7997 
7998 static const ber_sequence_t TagPath_item_sequence[] = {
7999   { &hf_z3950_tagType       , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
8000   { &hf_z3950_tagValue      , BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
8001   { &hf_z3950_tagOccurrence , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
8002   { NULL, 0, 0, 0, NULL }
8003 };
8004 
8005 static int
dissect_z3950_TagPath_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8006 dissect_z3950_TagPath_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8007   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8008                                    TagPath_item_sequence, hf_index, ett_z3950_TagPath_item);
8009 
8010   return offset;
8011 }
8012 
8013 
8014 static const ber_sequence_t TagPath_sequence_of[1] = {
8015   { &hf_z3950_TagPath_item  , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_TagPath_item },
8016 };
8017 
8018 static int
dissect_z3950_TagPath(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8019 dissect_z3950_TagPath(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8020   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
8021                                       TagPath_sequence_of, hf_index, ett_z3950_TagPath);
8022 
8023   return offset;
8024 }
8025 
8026 
8027 static const ber_sequence_t ElementMetaData_sequence[] = {
8028   { &hf_z3950_seriesOrder   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Order },
8029   { &hf_z3950_usageRight    , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Usage },
8030   { &hf_z3950_hits          , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_HitVector },
8031   { &hf_z3950_displayName   , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8032   { &hf_z3950_supportedVariants, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Variant },
8033   { &hf_z3950_message       , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8034   { &hf_z3950_elementDescriptor, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
8035   { &hf_z3950_surrogateFor  , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_TagPath },
8036   { &hf_z3950_surrogateElement, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_TagPath },
8037   { &hf_z3950_other         , BER_CLASS_CON, 99, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
8038   { NULL, 0, 0, 0, NULL }
8039 };
8040 
8041 static int
dissect_z3950_ElementMetaData(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8042 dissect_z3950_ElementMetaData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8043   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8044                                    ElementMetaData_sequence, hf_index, ett_z3950_ElementMetaData);
8045 
8046   return offset;
8047 }
8048 
8049 
8050 static const ber_sequence_t TaggedElement_sequence[] = {
8051   { &hf_z3950_tagType       , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
8052   { &hf_z3950_tagValue      , BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
8053   { &hf_z3950_tagOccurrence , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
8054   { &hf_z3950_taggedElement_content, BER_CLASS_CON, 4, BER_FLAGS_NOTCHKTAG, dissect_z3950_ElementData },
8055   { &hf_z3950_metaData      , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ElementMetaData },
8056   { &hf_z3950_appliedVariant, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Variant },
8057   { NULL, 0, 0, 0, NULL }
8058 };
8059 
8060 static int
dissect_z3950_TaggedElement(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8061 dissect_z3950_TaggedElement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8062   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8063                                    TaggedElement_sequence, hf_index, ett_z3950_TaggedElement);
8064 
8065   return offset;
8066 }
8067 
8068 
8069 static const ber_sequence_t GenericRecord_sequence_of[1] = {
8070   { &hf_z3950_GenericRecord_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_TaggedElement },
8071 };
8072 
8073 static int
dissect_z3950_GenericRecord(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8074 dissect_z3950_GenericRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8075   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
8076                                       GenericRecord_sequence_of, hf_index, ett_z3950_GenericRecord);
8077 
8078   return offset;
8079 }
8080 
8081 
8082 static const value_string z3950_T_taskStatus_vals[] = {
8083   {   0, "pending" },
8084   {   1, "active" },
8085   {   2, "complete" },
8086   {   3, "aborted" },
8087   { 0, NULL }
8088 };
8089 
8090 
8091 static int
dissect_z3950_T_taskStatus(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8092 dissect_z3950_T_taskStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8093   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
8094                                                 NULL);
8095 
8096   return offset;
8097 }
8098 
8099 
8100 static const ber_sequence_t TaskPackage_sequence[] = {
8101   { &hf_z3950_packageType   , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
8102   { &hf_z3950_packageName   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8103   { &hf_z3950_userId        , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8104   { &hf_z3950_retentionTime , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
8105   { &hf_z3950_permissions   , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Permissions },
8106   { &hf_z3950_taskPackage_description, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8107   { &hf_z3950_targetReference, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
8108   { &hf_z3950_creationDateTime, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_GeneralizedTime },
8109   { &hf_z3950_taskStatus    , BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_z3950_T_taskStatus },
8110   { &hf_z3950_packageDiagnostics, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DiagRec },
8111   { &hf_z3950_taskSpecificParameters, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
8112   { NULL, 0, 0, 0, NULL }
8113 };
8114 
8115 static int
dissect_z3950_TaskPackage(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8116 dissect_z3950_TaskPackage(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8117   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8118                                    TaskPackage_sequence, hf_index, ett_z3950_TaskPackage);
8119 
8120   return offset;
8121 }
8122 
8123 
8124 static const value_string z3950_T_promptId_enummeratedPrompt_type_vals[] = {
8125   {   0, "groupId" },
8126   {   1, "userId" },
8127   {   2, "password" },
8128   {   3, "newPassword" },
8129   {   4, "copyright" },
8130   {   5, "sessionId" },
8131   { 0, NULL }
8132 };
8133 
8134 
8135 static int
dissect_z3950_T_promptId_enummeratedPrompt_type(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8136 dissect_z3950_T_promptId_enummeratedPrompt_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8137   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
8138                                                 NULL);
8139 
8140   return offset;
8141 }
8142 
8143 
8144 static const ber_sequence_t T_enummeratedPrompt_sequence[] = {
8145   { &hf_z3950_promptId_enummeratedPrompt_type, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_promptId_enummeratedPrompt_type },
8146   { &hf_z3950_suggestedString, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8147   { NULL, 0, 0, 0, NULL }
8148 };
8149 
8150 static int
dissect_z3950_T_enummeratedPrompt(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8151 dissect_z3950_T_enummeratedPrompt(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8152   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8153                                    T_enummeratedPrompt_sequence, hf_index, ett_z3950_T_enummeratedPrompt);
8154 
8155   return offset;
8156 }
8157 
8158 
8159 static const value_string z3950_PromptId_vals[] = {
8160   {   1, "enummeratedPrompt" },
8161   {   2, "nonEnumeratedPrompt" },
8162   { 0, NULL }
8163 };
8164 
8165 static const ber_choice_t PromptId_choice[] = {
8166   {   1, &hf_z3950_enummeratedPrompt, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_enummeratedPrompt },
8167   {   2, &hf_z3950_nonEnumeratedPrompt, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8168   { 0, NULL, 0, 0, 0, NULL }
8169 };
8170 
8171 static int
dissect_z3950_PromptId(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8172 dissect_z3950_PromptId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8173   offset = dissect_ber_choice(actx, tree, tvb, offset,
8174                                  PromptId_choice, hf_index, ett_z3950_PromptId,
8175                                  NULL);
8176 
8177   return offset;
8178 }
8179 
8180 
8181 static const ber_sequence_t Encryption_sequence[] = {
8182   { &hf_z3950_cryptType     , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
8183   { &hf_z3950_credential    , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
8184   { &hf_z3950_data          , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
8185   { NULL, 0, 0, 0, NULL }
8186 };
8187 
8188 static int
dissect_z3950_Encryption(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8189 dissect_z3950_Encryption(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8190   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8191                                    Encryption_sequence, hf_index, ett_z3950_Encryption);
8192 
8193   return offset;
8194 }
8195 
8196 
8197 static const value_string z3950_T_promptInfo_vals[] = {
8198   {   1, "character" },
8199   {   2, "encrypted" },
8200   { 0, NULL }
8201 };
8202 
8203 static const ber_choice_t T_promptInfo_choice[] = {
8204   {   1, &hf_z3950_challenge_item_promptInfo_character, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8205   {   2, &hf_z3950_encrypted     , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_Encryption },
8206   { 0, NULL, 0, 0, 0, NULL }
8207 };
8208 
8209 static int
dissect_z3950_T_promptInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8210 dissect_z3950_T_promptInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8211   offset = dissect_ber_choice(actx, tree, tvb, offset,
8212                                  T_promptInfo_choice, hf_index, ett_z3950_T_promptInfo,
8213                                  NULL);
8214 
8215   return offset;
8216 }
8217 
8218 
8219 static const value_string z3950_T_challenge_item_dataType_vals[] = {
8220   {   1, "integer" },
8221   {   2, "date" },
8222   {   3, "float" },
8223   {   4, "alphaNumeric" },
8224   {   5, "url-urn" },
8225   {   6, "boolean" },
8226   { 0, NULL }
8227 };
8228 
8229 
8230 static int
dissect_z3950_T_challenge_item_dataType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8231 dissect_z3950_T_challenge_item_dataType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8232   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
8233                                                 NULL);
8234 
8235   return offset;
8236 }
8237 
8238 
8239 static const ber_sequence_t Challenge_item_sequence[] = {
8240   { &hf_z3950_promptId      , BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_z3950_PromptId },
8241   { &hf_z3950_defaultResponse, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8242   { &hf_z3950_promptInfo    , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_z3950_T_promptInfo },
8243   { &hf_z3950_regExpr       , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8244   { &hf_z3950_responseRequired, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
8245   { &hf_z3950_allowedValues , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
8246   { &hf_z3950_shouldSave    , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
8247   { &hf_z3950_challenge_item_dataType, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_challenge_item_dataType },
8248   { &hf_z3950_challenge_item_diagnostic, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
8249   { NULL, 0, 0, 0, NULL }
8250 };
8251 
8252 static int
dissect_z3950_Challenge_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8253 dissect_z3950_Challenge_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8254   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8255                                    Challenge_item_sequence, hf_index, ett_z3950_Challenge_item);
8256 
8257   return offset;
8258 }
8259 
8260 
8261 static const ber_sequence_t Challenge_sequence_of[1] = {
8262   { &hf_z3950_Challenge_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Challenge_item },
8263 };
8264 
8265 static int
dissect_z3950_Challenge(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8266 dissect_z3950_Challenge(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8267   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
8268                                       Challenge_sequence_of, hf_index, ett_z3950_Challenge);
8269 
8270   return offset;
8271 }
8272 
8273 
8274 static const value_string z3950_T_promptResponse_vals[] = {
8275   {   1, "string" },
8276   {   2, "accept" },
8277   {   3, "acknowledge" },
8278   {   4, "diagnostic" },
8279   {   5, "encrypted" },
8280   { 0, NULL }
8281 };
8282 
8283 static const ber_choice_t T_promptResponse_choice[] = {
8284   {   1, &hf_z3950_string        , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8285   {   2, &hf_z3950_accept        , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
8286   {   3, &hf_z3950_acknowledge   , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
8287   {   4, &hf_z3950_diagnostic    , BER_CLASS_CON, 4, 0, dissect_z3950_DiagRec },
8288   {   5, &hf_z3950_encrypted     , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_Encryption },
8289   { 0, NULL, 0, 0, 0, NULL }
8290 };
8291 
8292 static int
dissect_z3950_T_promptResponse(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8293 dissect_z3950_T_promptResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8294   offset = dissect_ber_choice(actx, tree, tvb, offset,
8295                                  T_promptResponse_choice, hf_index, ett_z3950_T_promptResponse,
8296                                  NULL);
8297 
8298   return offset;
8299 }
8300 
8301 
8302 static const ber_sequence_t Response_item_sequence[] = {
8303   { &hf_z3950_promptId      , BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_z3950_PromptId },
8304   { &hf_z3950_promptResponse, BER_CLASS_CON, 2, 0, dissect_z3950_T_promptResponse },
8305   { NULL, 0, 0, 0, NULL }
8306 };
8307 
8308 static int
dissect_z3950_Response_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8309 dissect_z3950_Response_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8310   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8311                                    Response_item_sequence, hf_index, ett_z3950_Response_item);
8312 
8313   return offset;
8314 }
8315 
8316 
8317 static const ber_sequence_t Response_sequence_of[1] = {
8318   { &hf_z3950_Response_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Response_item },
8319 };
8320 
8321 static int
dissect_z3950_Response(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8322 dissect_z3950_Response(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8323   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
8324                                       Response_sequence_of, hf_index, ett_z3950_Response);
8325 
8326   return offset;
8327 }
8328 
8329 
8330 static const value_string z3950_PromptObject_vals[] = {
8331   {   1, "challenge" },
8332   {   2, "response" },
8333   { 0, NULL }
8334 };
8335 
8336 static const ber_choice_t PromptObject_choice[] = {
8337   {   1, &hf_z3950_challenge     , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_Challenge },
8338   {   2, &hf_z3950_response      , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_Response },
8339   { 0, NULL, 0, 0, 0, NULL }
8340 };
8341 
8342 static int
dissect_z3950_PromptObject(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8343 dissect_z3950_PromptObject(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8344   offset = dissect_ber_choice(actx, tree, tvb, offset,
8345                                  PromptObject_choice, hf_index, ett_z3950_PromptObject,
8346                                  NULL);
8347 
8348   return offset;
8349 }
8350 
8351 
8352 static const ber_sequence_t DRNType_sequence[] = {
8353   { &hf_z3950_dRNType_userId, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
8354   { &hf_z3950_salt          , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
8355   { &hf_z3950_randomNumber  , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
8356   { NULL, 0, 0, 0, NULL }
8357 };
8358 
8359 static int
dissect_z3950_DRNType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8360 dissect_z3950_DRNType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8361   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8362                                    DRNType_sequence, hf_index, ett_z3950_DRNType);
8363 
8364   return offset;
8365 }
8366 
8367 
8368 static const value_string z3950_DES_RN_Object_vals[] = {
8369   {   1, "challenge" },
8370   {   2, "response" },
8371   { 0, NULL }
8372 };
8373 
8374 static const ber_choice_t DES_RN_Object_choice[] = {
8375   {   1, &hf_z3950_dES_RN_Object_challenge, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DRNType },
8376   {   2, &hf_z3950_rES_RN_Object_response, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_DRNType },
8377   { 0, NULL, 0, 0, 0, NULL }
8378 };
8379 
8380 static int
dissect_z3950_DES_RN_Object(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8381 dissect_z3950_DES_RN_Object(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8382   offset = dissect_ber_choice(actx, tree, tvb, offset,
8383                                  DES_RN_Object_choice, hf_index, ett_z3950_DES_RN_Object,
8384                                  NULL);
8385 
8386   return offset;
8387 }
8388 
8389 
8390 static const ber_sequence_t KRBRequest_sequence[] = {
8391   { &hf_z3950_service       , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8392   { &hf_z3950_instance      , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8393   { &hf_z3950_realm         , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8394   { NULL, 0, 0, 0, NULL }
8395 };
8396 
8397 static int
dissect_z3950_KRBRequest(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8398 dissect_z3950_KRBRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8399   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8400                                    KRBRequest_sequence, hf_index, ett_z3950_KRBRequest);
8401 
8402   return offset;
8403 }
8404 
8405 
8406 static const ber_sequence_t KRBResponse_sequence[] = {
8407   { &hf_z3950_userid        , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8408   { &hf_z3950_ticket        , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
8409   { NULL, 0, 0, 0, NULL }
8410 };
8411 
8412 static int
dissect_z3950_KRBResponse(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8413 dissect_z3950_KRBResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8414   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8415                                    KRBResponse_sequence, hf_index, ett_z3950_KRBResponse);
8416 
8417   return offset;
8418 }
8419 
8420 
8421 static const value_string z3950_KRBObject_vals[] = {
8422   {   1, "challenge" },
8423   {   2, "response" },
8424   { 0, NULL }
8425 };
8426 
8427 static const ber_choice_t KRBObject_choice[] = {
8428   {   1, &hf_z3950_kRBObject_challenge, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_KRBRequest },
8429   {   2, &hf_z3950_kRBObject_response, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_KRBResponse },
8430   { 0, NULL, 0, 0, 0, NULL }
8431 };
8432 
8433 static int
dissect_z3950_KRBObject(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8434 dissect_z3950_KRBObject(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8435   offset = dissect_ber_choice(actx, tree, tvb, offset,
8436                                  KRBObject_choice, hf_index, ett_z3950_KRBObject,
8437                                  NULL);
8438 
8439   return offset;
8440 }
8441 
8442 
8443 static const ber_sequence_t T_queryExpression_term_sequence[] = {
8444   { &hf_z3950_queryTerm     , BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_z3950_Term },
8445   { &hf_z3950_termComment   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8446   { NULL, 0, 0, 0, NULL }
8447 };
8448 
8449 static int
dissect_z3950_T_queryExpression_term(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8450 dissect_z3950_T_queryExpression_term(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8451   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8452                                    T_queryExpression_term_sequence, hf_index, ett_z3950_T_queryExpression_term);
8453 
8454   return offset;
8455 }
8456 
8457 
8458 static const value_string z3950_QueryExpression_vals[] = {
8459   {   1, "term" },
8460   {   2, "query" },
8461   { 0, NULL }
8462 };
8463 
8464 static const ber_choice_t QueryExpression_choice[] = {
8465   {   1, &hf_z3950_queryExpression_term, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_queryExpression_term },
8466   {   2, &hf_z3950_query         , BER_CLASS_CON, 2, 0, dissect_z3950_Query },
8467   { 0, NULL, 0, 0, 0, NULL }
8468 };
8469 
8470 static int
dissect_z3950_QueryExpression(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8471 dissect_z3950_QueryExpression(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8472   offset = dissect_ber_choice(actx, tree, tvb, offset,
8473                                  QueryExpression_choice, hf_index, ett_z3950_QueryExpression,
8474                                  NULL);
8475 
8476   return offset;
8477 }
8478 
8479 
8480 static const value_string z3950_T_databases_vals[] = {
8481   {   1, "all" },
8482   {   2, "list" },
8483   { 0, NULL }
8484 };
8485 
8486 static const ber_choice_t T_databases_choice[] = {
8487   {   1, &hf_z3950_all           , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
8488   {   2, &hf_z3950_list          , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DatabaseName },
8489   { 0, NULL, 0, 0, 0, NULL }
8490 };
8491 
8492 static int
dissect_z3950_T_databases(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8493 dissect_z3950_T_databases(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8494   offset = dissect_ber_choice(actx, tree, tvb, offset,
8495                                  T_databases_choice, hf_index, ett_z3950_T_databases,
8496                                  NULL);
8497 
8498   return offset;
8499 }
8500 
8501 
8502 static const ber_sequence_t ResultsByDB_item_sequence[] = {
8503   { &hf_z3950_databases     , BER_CLASS_CON, 1, 0, dissect_z3950_T_databases },
8504   { &hf_z3950_count         , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
8505   { &hf_z3950_resultSetName , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8506   { NULL, 0, 0, 0, NULL }
8507 };
8508 
8509 static int
dissect_z3950_ResultsByDB_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8510 dissect_z3950_ResultsByDB_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8511   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8512                                    ResultsByDB_item_sequence, hf_index, ett_z3950_ResultsByDB_item);
8513 
8514   return offset;
8515 }
8516 
8517 
8518 static const ber_sequence_t ResultsByDB_sequence_of[1] = {
8519   { &hf_z3950_ResultsByDB_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_ResultsByDB_item },
8520 };
8521 
8522 static int
dissect_z3950_ResultsByDB(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8523 dissect_z3950_ResultsByDB(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8524   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
8525                                       ResultsByDB_sequence_of, hf_index, ett_z3950_ResultsByDB);
8526 
8527   return offset;
8528 }
8529 
8530 
8531 static const ber_sequence_t SearchInfoReport_item_sequence[] = {
8532   { &hf_z3950_subqueryId    , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8533   { &hf_z3950_fullQuery     , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
8534   { &hf_z3950_subqueryExpression, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_QueryExpression },
8535   { &hf_z3950_subqueryInterpretation, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_QueryExpression },
8536   { &hf_z3950_subqueryRecommendation, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_QueryExpression },
8537   { &hf_z3950_subqueryCount , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
8538   { &hf_z3950_subqueryWeight, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
8539   { &hf_z3950_resultsByDB   , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ResultsByDB },
8540   { NULL, 0, 0, 0, NULL }
8541 };
8542 
8543 static int
dissect_z3950_SearchInfoReport_item(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8544 dissect_z3950_SearchInfoReport_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8545   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8546                                    SearchInfoReport_item_sequence, hf_index, ett_z3950_SearchInfoReport_item);
8547 
8548   return offset;
8549 }
8550 
8551 
8552 static const ber_sequence_t SearchInfoReport_sequence_of[1] = {
8553   { &hf_z3950_SearchInfoReport_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_SearchInfoReport_item },
8554 };
8555 
8556 static int
dissect_z3950_SearchInfoReport(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)8557 dissect_z3950_SearchInfoReport(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8558   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
8559                                       SearchInfoReport_sequence_of, hf_index, ett_z3950_SearchInfoReport);
8560 
8561   return offset;
8562 }
8563 
8564 /*--- PDUs ---*/
8565 
dissect_OCLC_UserInformation_PDU(tvbuff_t * tvb _U_,packet_info * pinfo _U_,proto_tree * tree _U_,void * data _U_)8566 static int dissect_OCLC_UserInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8567   int offset = 0;
8568   asn1_ctx_t asn1_ctx;
8569   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
8570   offset = dissect_z3950_OCLC_UserInformation(FALSE, tvb, offset, &asn1_ctx, tree, hf_z3950_OCLC_UserInformation_PDU);
8571   return offset;
8572 }
dissect_SutrsRecord_PDU(tvbuff_t * tvb _U_,packet_info * pinfo _U_,proto_tree * tree _U_,void * data _U_)8573 static int dissect_SutrsRecord_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8574   int offset = 0;
8575   asn1_ctx_t asn1_ctx;
8576   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
8577   offset = dissect_z3950_SutrsRecord(FALSE, tvb, offset, &asn1_ctx, tree, hf_z3950_SutrsRecord_PDU);
8578   return offset;
8579 }
dissect_OPACRecord_PDU(tvbuff_t * tvb _U_,packet_info * pinfo _U_,proto_tree * tree _U_,void * data _U_)8580 static int dissect_OPACRecord_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8581   int offset = 0;
8582   asn1_ctx_t asn1_ctx;
8583   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
8584   offset = dissect_z3950_OPACRecord(FALSE, tvb, offset, &asn1_ctx, tree, hf_z3950_OPACRecord_PDU);
8585   return offset;
8586 }
dissect_DiagnosticFormat_PDU(tvbuff_t * tvb _U_,packet_info * pinfo _U_,proto_tree * tree _U_,void * data _U_)8587 static int dissect_DiagnosticFormat_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8588   int offset = 0;
8589   asn1_ctx_t asn1_ctx;
8590   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
8591   offset = dissect_z3950_DiagnosticFormat(FALSE, tvb, offset, &asn1_ctx, tree, hf_z3950_DiagnosticFormat_PDU);
8592   return offset;
8593 }
dissect_Explain_Record_PDU(tvbuff_t * tvb _U_,packet_info * pinfo _U_,proto_tree * tree _U_,void * data _U_)8594 static int dissect_Explain_Record_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8595   int offset = 0;
8596   asn1_ctx_t asn1_ctx;
8597   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
8598   offset = dissect_z3950_Explain_Record(FALSE, tvb, offset, &asn1_ctx, tree, hf_z3950_Explain_Record_PDU);
8599   return offset;
8600 }
dissect_BriefBib_PDU(tvbuff_t * tvb _U_,packet_info * pinfo _U_,proto_tree * tree _U_,void * data _U_)8601 static int dissect_BriefBib_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8602   int offset = 0;
8603   asn1_ctx_t asn1_ctx;
8604   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
8605   offset = dissect_z3950_BriefBib(FALSE, tvb, offset, &asn1_ctx, tree, hf_z3950_BriefBib_PDU);
8606   return offset;
8607 }
dissect_GenericRecord_PDU(tvbuff_t * tvb _U_,packet_info * pinfo _U_,proto_tree * tree _U_,void * data _U_)8608 static int dissect_GenericRecord_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8609   int offset = 0;
8610   asn1_ctx_t asn1_ctx;
8611   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
8612   offset = dissect_z3950_GenericRecord(FALSE, tvb, offset, &asn1_ctx, tree, hf_z3950_GenericRecord_PDU);
8613   return offset;
8614 }
dissect_TaskPackage_PDU(tvbuff_t * tvb _U_,packet_info * pinfo _U_,proto_tree * tree _U_,void * data _U_)8615 static int dissect_TaskPackage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8616   int offset = 0;
8617   asn1_ctx_t asn1_ctx;
8618   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
8619   offset = dissect_z3950_TaskPackage(FALSE, tvb, offset, &asn1_ctx, tree, hf_z3950_TaskPackage_PDU);
8620   return offset;
8621 }
dissect_PromptObject_PDU(tvbuff_t * tvb _U_,packet_info * pinfo _U_,proto_tree * tree _U_,void * data _U_)8622 static int dissect_PromptObject_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8623   int offset = 0;
8624   asn1_ctx_t asn1_ctx;
8625   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
8626   offset = dissect_z3950_PromptObject(FALSE, tvb, offset, &asn1_ctx, tree, hf_z3950_PromptObject_PDU);
8627   return offset;
8628 }
dissect_DES_RN_Object_PDU(tvbuff_t * tvb _U_,packet_info * pinfo _U_,proto_tree * tree _U_,void * data _U_)8629 static int dissect_DES_RN_Object_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8630   int offset = 0;
8631   asn1_ctx_t asn1_ctx;
8632   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
8633   offset = dissect_z3950_DES_RN_Object(FALSE, tvb, offset, &asn1_ctx, tree, hf_z3950_DES_RN_Object_PDU);
8634   return offset;
8635 }
dissect_KRBObject_PDU(tvbuff_t * tvb _U_,packet_info * pinfo _U_,proto_tree * tree _U_,void * data _U_)8636 static int dissect_KRBObject_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8637   int offset = 0;
8638   asn1_ctx_t asn1_ctx;
8639   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
8640   offset = dissect_z3950_KRBObject(FALSE, tvb, offset, &asn1_ctx, tree, hf_z3950_KRBObject_PDU);
8641   return offset;
8642 }
dissect_SearchInfoReport_PDU(tvbuff_t * tvb _U_,packet_info * pinfo _U_,proto_tree * tree _U_,void * data _U_)8643 static int dissect_SearchInfoReport_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8644   int offset = 0;
8645   asn1_ctx_t asn1_ctx;
8646   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
8647   offset = dissect_z3950_SearchInfoReport(FALSE, tvb, offset, &asn1_ctx, tree, hf_z3950_SearchInfoReport_PDU);
8648   return offset;
8649 }
8650 
8651 
8652 /*--- End of included file: packet-z3950-fn.c ---*/
8653 #line 921 "./asn1/z3950/packet-z3950-template.c"
8654 
8655 static int
dissect_z3950(tvbuff_t * tvb,packet_info * pinfo,proto_tree * tree,void * data _U_)8656 dissect_z3950(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
8657 {
8658     proto_item      *z3950_item = NULL;
8659     proto_tree      *z3950_tree = NULL;
8660     int                     offset = 0;
8661     asn1_ctx_t asn1_ctx;
8662     asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
8663 
8664 
8665     /* make entry in the Protocol column on summary display */
8666     col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
8667 
8668     /* create the z3950 protocol tree */
8669     z3950_item = proto_tree_add_item(tree, proto_z3950, tvb, 0, -1, FALSE);
8670     z3950_tree = proto_item_add_subtree(z3950_item, ett_z3950);
8671 
8672     return dissect_z3950_PDU(FALSE, tvb, offset, &asn1_ctx, z3950_tree, -1);
8673 }
8674 
8675 static guint
get_z3950_pdu_len(packet_info * pinfo _U_,tvbuff_t * tvb,int offset,void * data _U_)8676 get_z3950_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset, void *data _U_)
8677 {
8678     guint plen;
8679     guint ber_offset;
8680     TRY {
8681         /* Skip past identifier */
8682         ber_offset = get_ber_identifier(tvb, offset, NULL, NULL, NULL);
8683 	ber_offset = get_ber_length(tvb, ber_offset, &plen, NULL);
8684         plen += (ber_offset - offset);
8685     }
8686     CATCH(ReportedBoundsError) {
8687 	plen = 0;
8688     }
8689     ENDTRY;
8690 
8691     return plen;
8692 }
8693 
8694 static int
dissect_z3950_segment(tvbuff_t * tvb,packet_info * pinfo,proto_tree * tree,void * data _U_)8695 dissect_z3950_segment(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void * data _U_)
8696 {
8697 
8698     /* Min length of 8 assumes 3 for identifer and 5 for length. */
8699     tcp_dissect_pdus(tvb, pinfo, tree, z3950_desegment, 8, get_z3950_pdu_len, dissect_z3950, data);
8700     return tvb_captured_length(tvb);
8701 }
8702 
8703 /*--- proto_register_z3950 -------------------------------------------*/
proto_register_z3950(void)8704 void proto_register_z3950(void) {
8705 
8706     /* List of fields */
8707     static hf_register_info hf[] = {
8708 
8709 
8710 /*--- Included file: packet-z3950-hfarr.c ---*/
8711 #line 1 "./asn1/z3950/packet-z3950-hfarr.c"
8712     { &hf_z3950_OCLC_UserInformation_PDU,
8713       { "OCLC-UserInformation", "z3950.OCLC_UserInformation_element",
8714         FT_NONE, BASE_NONE, NULL, 0,
8715         NULL, HFILL }},
8716     { &hf_z3950_SutrsRecord_PDU,
8717       { "SutrsRecord", "z3950.SutrsRecord",
8718         FT_STRING, BASE_NONE, NULL, 0,
8719         NULL, HFILL }},
8720     { &hf_z3950_OPACRecord_PDU,
8721       { "OPACRecord", "z3950.OPACRecord_element",
8722         FT_NONE, BASE_NONE, NULL, 0,
8723         NULL, HFILL }},
8724     { &hf_z3950_DiagnosticFormat_PDU,
8725       { "DiagnosticFormat", "z3950.DiagnosticFormat",
8726         FT_UINT32, BASE_DEC, NULL, 0,
8727         NULL, HFILL }},
8728     { &hf_z3950_Explain_Record_PDU,
8729       { "Explain-Record", "z3950.Explain_Record",
8730         FT_UINT32, BASE_DEC, VALS(z3950_Explain_Record_vals), 0,
8731         NULL, HFILL }},
8732     { &hf_z3950_BriefBib_PDU,
8733       { "BriefBib", "z3950.BriefBib_element",
8734         FT_NONE, BASE_NONE, NULL, 0,
8735         NULL, HFILL }},
8736     { &hf_z3950_GenericRecord_PDU,
8737       { "GenericRecord", "z3950.GenericRecord",
8738         FT_UINT32, BASE_DEC, NULL, 0,
8739         NULL, HFILL }},
8740     { &hf_z3950_TaskPackage_PDU,
8741       { "TaskPackage", "z3950.TaskPackage_element",
8742         FT_NONE, BASE_NONE, NULL, 0,
8743         NULL, HFILL }},
8744     { &hf_z3950_PromptObject_PDU,
8745       { "PromptObject", "z3950.PromptObject",
8746         FT_UINT32, BASE_DEC, VALS(z3950_PromptObject_vals), 0,
8747         NULL, HFILL }},
8748     { &hf_z3950_DES_RN_Object_PDU,
8749       { "DES-RN-Object", "z3950.DES_RN_Object",
8750         FT_UINT32, BASE_DEC, VALS(z3950_DES_RN_Object_vals), 0,
8751         NULL, HFILL }},
8752     { &hf_z3950_KRBObject_PDU,
8753       { "KRBObject", "z3950.KRBObject",
8754         FT_UINT32, BASE_DEC, VALS(z3950_KRBObject_vals), 0,
8755         NULL, HFILL }},
8756     { &hf_z3950_SearchInfoReport_PDU,
8757       { "SearchInfoReport", "z3950.SearchInfoReport",
8758         FT_UINT32, BASE_DEC, NULL, 0,
8759         NULL, HFILL }},
8760     { &hf_z3950_initRequest,
8761       { "initRequest", "z3950.initRequest_element",
8762         FT_NONE, BASE_NONE, NULL, 0,
8763         "InitializeRequest", HFILL }},
8764     { &hf_z3950_initResponse,
8765       { "initResponse", "z3950.initResponse_element",
8766         FT_NONE, BASE_NONE, NULL, 0,
8767         "InitializeResponse", HFILL }},
8768     { &hf_z3950_searchRequest,
8769       { "searchRequest", "z3950.searchRequest_element",
8770         FT_NONE, BASE_NONE, NULL, 0,
8771         NULL, HFILL }},
8772     { &hf_z3950_searchResponse,
8773       { "searchResponse", "z3950.searchResponse_element",
8774         FT_NONE, BASE_NONE, NULL, 0,
8775         NULL, HFILL }},
8776     { &hf_z3950_presentRequest,
8777       { "presentRequest", "z3950.presentRequest_element",
8778         FT_NONE, BASE_NONE, NULL, 0,
8779         NULL, HFILL }},
8780     { &hf_z3950_presentResponse,
8781       { "presentResponse", "z3950.presentResponse_element",
8782         FT_NONE, BASE_NONE, NULL, 0,
8783         NULL, HFILL }},
8784     { &hf_z3950_deleteResultSetRequest,
8785       { "deleteResultSetRequest", "z3950.deleteResultSetRequest_element",
8786         FT_NONE, BASE_NONE, NULL, 0,
8787         NULL, HFILL }},
8788     { &hf_z3950_deleteResultSetResponse,
8789       { "deleteResultSetResponse", "z3950.deleteResultSetResponse_element",
8790         FT_NONE, BASE_NONE, NULL, 0,
8791         NULL, HFILL }},
8792     { &hf_z3950_accessControlRequest,
8793       { "accessControlRequest", "z3950.accessControlRequest_element",
8794         FT_NONE, BASE_NONE, NULL, 0,
8795         NULL, HFILL }},
8796     { &hf_z3950_accessControlResponse,
8797       { "accessControlResponse", "z3950.accessControlResponse_element",
8798         FT_NONE, BASE_NONE, NULL, 0,
8799         NULL, HFILL }},
8800     { &hf_z3950_resourceControlRequest,
8801       { "resourceControlRequest", "z3950.resourceControlRequest_element",
8802         FT_NONE, BASE_NONE, NULL, 0,
8803         NULL, HFILL }},
8804     { &hf_z3950_resourceControlResponse,
8805       { "resourceControlResponse", "z3950.resourceControlResponse_element",
8806         FT_NONE, BASE_NONE, NULL, 0,
8807         NULL, HFILL }},
8808     { &hf_z3950_triggerResourceControlRequest,
8809       { "triggerResourceControlRequest", "z3950.triggerResourceControlRequest_element",
8810         FT_NONE, BASE_NONE, NULL, 0,
8811         NULL, HFILL }},
8812     { &hf_z3950_resourceReportRequest,
8813       { "resourceReportRequest", "z3950.resourceReportRequest_element",
8814         FT_NONE, BASE_NONE, NULL, 0,
8815         NULL, HFILL }},
8816     { &hf_z3950_resourceReportResponse,
8817       { "resourceReportResponse", "z3950.resourceReportResponse_element",
8818         FT_NONE, BASE_NONE, NULL, 0,
8819         NULL, HFILL }},
8820     { &hf_z3950_scanRequest,
8821       { "scanRequest", "z3950.scanRequest_element",
8822         FT_NONE, BASE_NONE, NULL, 0,
8823         NULL, HFILL }},
8824     { &hf_z3950_scanResponse,
8825       { "scanResponse", "z3950.scanResponse_element",
8826         FT_NONE, BASE_NONE, NULL, 0,
8827         NULL, HFILL }},
8828     { &hf_z3950_sortRequest,
8829       { "sortRequest", "z3950.sortRequest_element",
8830         FT_NONE, BASE_NONE, NULL, 0,
8831         NULL, HFILL }},
8832     { &hf_z3950_sortResponse,
8833       { "sortResponse", "z3950.sortResponse_element",
8834         FT_NONE, BASE_NONE, NULL, 0,
8835         NULL, HFILL }},
8836     { &hf_z3950_segmentRequest,
8837       { "segmentRequest", "z3950.segmentRequest_element",
8838         FT_NONE, BASE_NONE, NULL, 0,
8839         "Segment", HFILL }},
8840     { &hf_z3950_extendedServicesRequest,
8841       { "extendedServicesRequest", "z3950.extendedServicesRequest_element",
8842         FT_NONE, BASE_NONE, NULL, 0,
8843         NULL, HFILL }},
8844     { &hf_z3950_extendedServicesResponse,
8845       { "extendedServicesResponse", "z3950.extendedServicesResponse_element",
8846         FT_NONE, BASE_NONE, NULL, 0,
8847         NULL, HFILL }},
8848     { &hf_z3950_close,
8849       { "close", "z3950.close_element",
8850         FT_NONE, BASE_NONE, NULL, 0,
8851         NULL, HFILL }},
8852     { &hf_z3950_referenceId,
8853       { "referenceId", "z3950.referenceId",
8854         FT_BYTES, BASE_NONE, NULL, 0,
8855         NULL, HFILL }},
8856     { &hf_z3950_protocolVersion,
8857       { "protocolVersion", "z3950.protocolVersion",
8858         FT_BYTES, BASE_NONE, NULL, 0,
8859         NULL, HFILL }},
8860     { &hf_z3950_options,
8861       { "options", "z3950.options",
8862         FT_BYTES, BASE_NONE, NULL, 0,
8863         NULL, HFILL }},
8864     { &hf_z3950_preferredMessageSize,
8865       { "preferredMessageSize", "z3950.preferredMessageSize",
8866         FT_INT32, BASE_DEC, NULL, 0,
8867         "INTEGER", HFILL }},
8868     { &hf_z3950_exceptionalRecordSize,
8869       { "exceptionalRecordSize", "z3950.exceptionalRecordSize",
8870         FT_INT32, BASE_DEC, NULL, 0,
8871         "INTEGER", HFILL }},
8872     { &hf_z3950_idAuthentication,
8873       { "idAuthentication", "z3950.idAuthentication",
8874         FT_UINT32, BASE_DEC, VALS(z3950_T_idAuthentication_vals), 0,
8875         NULL, HFILL }},
8876     { &hf_z3950_open,
8877       { "open", "z3950.open",
8878         FT_STRING, BASE_NONE, NULL, 0,
8879         "VisibleString", HFILL }},
8880     { &hf_z3950_idPass,
8881       { "idPass", "z3950.idPass_element",
8882         FT_NONE, BASE_NONE, NULL, 0,
8883         NULL, HFILL }},
8884     { &hf_z3950_groupId,
8885       { "groupId", "z3950.groupId",
8886         FT_STRING, BASE_NONE, NULL, 0,
8887         "InternationalString", HFILL }},
8888     { &hf_z3950_userId,
8889       { "userId", "z3950.userId",
8890         FT_STRING, BASE_NONE, NULL, 0,
8891         "InternationalString", HFILL }},
8892     { &hf_z3950_password,
8893       { "password", "z3950.password",
8894         FT_STRING, BASE_NONE, NULL, 0,
8895         "InternationalString", HFILL }},
8896     { &hf_z3950_anonymous,
8897       { "anonymous", "z3950.anonymous_element",
8898         FT_NONE, BASE_NONE, NULL, 0,
8899         NULL, HFILL }},
8900     { &hf_z3950_other,
8901       { "other", "z3950.other_element",
8902         FT_NONE, BASE_NONE, NULL, 0,
8903         "EXTERNAL", HFILL }},
8904     { &hf_z3950_implementationId,
8905       { "implementationId", "z3950.implementationId",
8906         FT_STRING, BASE_NONE, NULL, 0,
8907         "InternationalString", HFILL }},
8908     { &hf_z3950_implementationName,
8909       { "implementationName", "z3950.implementationName",
8910         FT_STRING, BASE_NONE, NULL, 0,
8911         "InternationalString", HFILL }},
8912     { &hf_z3950_implementationVersion,
8913       { "implementationVersion", "z3950.implementationVersion",
8914         FT_STRING, BASE_NONE, NULL, 0,
8915         "InternationalString", HFILL }},
8916     { &hf_z3950_userInformationField,
8917       { "userInformationField", "z3950.userInformationField_element",
8918         FT_NONE, BASE_NONE, NULL, 0,
8919         "EXTERNAL", HFILL }},
8920     { &hf_z3950_otherInfo,
8921       { "otherInfo", "z3950.otherInfo",
8922         FT_UINT32, BASE_DEC, NULL, 0,
8923         "OtherInformation", HFILL }},
8924     { &hf_z3950_result,
8925       { "result", "z3950.result",
8926         FT_BOOLEAN, BASE_NONE, NULL, 0,
8927         "BOOLEAN", HFILL }},
8928     { &hf_z3950_smallSetUpperBound,
8929       { "smallSetUpperBound", "z3950.smallSetUpperBound",
8930         FT_INT32, BASE_DEC, NULL, 0,
8931         "INTEGER", HFILL }},
8932     { &hf_z3950_largeSetLowerBound,
8933       { "largeSetLowerBound", "z3950.largeSetLowerBound",
8934         FT_INT32, BASE_DEC, NULL, 0,
8935         "INTEGER", HFILL }},
8936     { &hf_z3950_mediumSetPresentNumber,
8937       { "mediumSetPresentNumber", "z3950.mediumSetPresentNumber",
8938         FT_INT32, BASE_DEC, NULL, 0,
8939         "INTEGER", HFILL }},
8940     { &hf_z3950_replaceIndicator,
8941       { "replaceIndicator", "z3950.replaceIndicator",
8942         FT_BOOLEAN, BASE_NONE, NULL, 0,
8943         "BOOLEAN", HFILL }},
8944     { &hf_z3950_resultSetName,
8945       { "resultSetName", "z3950.resultSetName",
8946         FT_STRING, BASE_NONE, NULL, 0,
8947         "InternationalString", HFILL }},
8948     { &hf_z3950_databaseNames,
8949       { "databaseNames", "z3950.databaseNames",
8950         FT_UINT32, BASE_DEC, NULL, 0,
8951         "SEQUENCE_OF_DatabaseName", HFILL }},
8952     { &hf_z3950_databaseNames_item,
8953       { "DatabaseName", "z3950.DatabaseName",
8954         FT_STRING, BASE_NONE, NULL, 0,
8955         NULL, HFILL }},
8956     { &hf_z3950_smallSetElementSetNames,
8957       { "smallSetElementSetNames", "z3950.smallSetElementSetNames",
8958         FT_UINT32, BASE_DEC, VALS(z3950_ElementSetNames_vals), 0,
8959         "ElementSetNames", HFILL }},
8960     { &hf_z3950_mediumSetElementSetNames,
8961       { "mediumSetElementSetNames", "z3950.mediumSetElementSetNames",
8962         FT_UINT32, BASE_DEC, VALS(z3950_ElementSetNames_vals), 0,
8963         "ElementSetNames", HFILL }},
8964     { &hf_z3950_preferredRecordSyntax,
8965       { "preferredRecordSyntax", "z3950.preferredRecordSyntax",
8966         FT_OID, BASE_NONE, NULL, 0,
8967         "OBJECT_IDENTIFIER", HFILL }},
8968     { &hf_z3950_query,
8969       { "query", "z3950.query",
8970         FT_UINT32, BASE_DEC, VALS(z3950_Query_vals), 0,
8971         NULL, HFILL }},
8972     { &hf_z3950_additionalSearchInfo,
8973       { "additionalSearchInfo", "z3950.additionalSearchInfo",
8974         FT_UINT32, BASE_DEC, NULL, 0,
8975         "OtherInformation", HFILL }},
8976     { &hf_z3950_type_0,
8977       { "type-0", "z3950.type_0_element",
8978         FT_NONE, BASE_NONE, NULL, 0,
8979         NULL, HFILL }},
8980     { &hf_z3950_type_1,
8981       { "type-1", "z3950.type_1_element",
8982         FT_NONE, BASE_NONE, NULL, 0,
8983         "RPNQuery", HFILL }},
8984     { &hf_z3950_type_2,
8985       { "type-2", "z3950.type_2",
8986         FT_BYTES, BASE_NONE, NULL, 0,
8987         "OCTET_STRING", HFILL }},
8988     { &hf_z3950_type_100,
8989       { "type-100", "z3950.type_100",
8990         FT_BYTES, BASE_NONE, NULL, 0,
8991         "OCTET_STRING", HFILL }},
8992     { &hf_z3950_type_101,
8993       { "type-101", "z3950.type_101_element",
8994         FT_NONE, BASE_NONE, NULL, 0,
8995         "RPNQuery", HFILL }},
8996     { &hf_z3950_type_102,
8997       { "type-102", "z3950.type_102",
8998         FT_BYTES, BASE_NONE, NULL, 0,
8999         "OCTET_STRING", HFILL }},
9000     { &hf_z3950_attributeSet,
9001       { "attributeSet", "z3950.attributeSet",
9002         FT_OID, BASE_NONE, NULL, 0,
9003         "AttributeSetId", HFILL }},
9004     { &hf_z3950_rpn,
9005       { "rpn", "z3950.rpn",
9006         FT_UINT32, BASE_DEC, VALS(z3950_RPNStructure_vals), 0,
9007         "RPNStructure", HFILL }},
9008     { &hf_z3950_operandRpnOp,
9009       { "op", "z3950.op",
9010         FT_UINT32, BASE_DEC, VALS(z3950_Operand_vals), 0,
9011         "Operand", HFILL }},
9012     { &hf_z3950_rpnRpnOp,
9013       { "rpnRpnOp", "z3950.rpnRpnOp_element",
9014         FT_NONE, BASE_NONE, NULL, 0,
9015         NULL, HFILL }},
9016     { &hf_z3950_rpn1,
9017       { "rpn1", "z3950.rpn1",
9018         FT_UINT32, BASE_DEC, VALS(z3950_RPNStructure_vals), 0,
9019         "RPNStructure", HFILL }},
9020     { &hf_z3950_rpn2,
9021       { "rpn2", "z3950.rpn2",
9022         FT_UINT32, BASE_DEC, VALS(z3950_RPNStructure_vals), 0,
9023         "RPNStructure", HFILL }},
9024     { &hf_z3950_operatorRpnOp,
9025       { "op", "z3950.op",
9026         FT_UINT32, BASE_DEC, VALS(z3950_Operator_U_vals), 0,
9027         "Operator", HFILL }},
9028     { &hf_z3950_attrTerm,
9029       { "attrTerm", "z3950.attrTerm_element",
9030         FT_NONE, BASE_NONE, NULL, 0,
9031         "AttributesPlusTerm", HFILL }},
9032     { &hf_z3950_resultSet,
9033       { "resultSet", "z3950.resultSet",
9034         FT_STRING, BASE_NONE, NULL, 0,
9035         "ResultSetId", HFILL }},
9036     { &hf_z3950_resultAttr,
9037       { "resultAttr", "z3950.resultAttr_element",
9038         FT_NONE, BASE_NONE, NULL, 0,
9039         "ResultSetPlusAttributes", HFILL }},
9040     { &hf_z3950_attributes,
9041       { "attributes", "z3950.attributes",
9042         FT_UINT32, BASE_DEC, NULL, 0,
9043         "AttributeList", HFILL }},
9044     { &hf_z3950_term,
9045       { "term", "z3950.term",
9046         FT_UINT32, BASE_DEC, VALS(z3950_Term_vals), 0,
9047         NULL, HFILL }},
9048     { &hf_z3950_attributeList_item,
9049       { "AttributeElement", "z3950.AttributeElement_element",
9050         FT_NONE, BASE_NONE, NULL, 0,
9051         NULL, HFILL }},
9052     { &hf_z3950_general,
9053       { "general", "z3950.general",
9054         FT_BYTES, BASE_NONE, NULL, 0,
9055         NULL, HFILL }},
9056     { &hf_z3950_numeric,
9057       { "numeric", "z3950.numeric",
9058         FT_INT32, BASE_DEC, NULL, 0,
9059         "INTEGER", HFILL }},
9060     { &hf_z3950_characterString,
9061       { "characterString", "z3950.characterString",
9062         FT_STRING, BASE_NONE, NULL, 0,
9063         "InternationalString", HFILL }},
9064     { &hf_z3950_oid,
9065       { "oid", "z3950.oid",
9066         FT_OID, BASE_NONE, NULL, 0,
9067         "OBJECT_IDENTIFIER", HFILL }},
9068     { &hf_z3950_dateTime,
9069       { "dateTime", "z3950.dateTime",
9070         FT_STRING, BASE_NONE, NULL, 0,
9071         "GeneralizedTime", HFILL }},
9072     { &hf_z3950_external,
9073       { "external", "z3950.external_element",
9074         FT_NONE, BASE_NONE, NULL, 0,
9075         NULL, HFILL }},
9076     { &hf_z3950_integerAndUnit,
9077       { "integerAndUnit", "z3950.integerAndUnit_element",
9078         FT_NONE, BASE_NONE, NULL, 0,
9079         "IntUnit", HFILL }},
9080     { &hf_z3950_null,
9081       { "null", "z3950.null_element",
9082         FT_NONE, BASE_NONE, NULL, 0,
9083         NULL, HFILL }},
9084     { &hf_z3950_and,
9085       { "and", "z3950.and_element",
9086         FT_NONE, BASE_NONE, NULL, 0,
9087         NULL, HFILL }},
9088     { &hf_z3950_or,
9089       { "or", "z3950.or_element",
9090         FT_NONE, BASE_NONE, NULL, 0,
9091         NULL, HFILL }},
9092     { &hf_z3950_and_not,
9093       { "and-not", "z3950.and_not_element",
9094         FT_NONE, BASE_NONE, NULL, 0,
9095         NULL, HFILL }},
9096     { &hf_z3950_prox,
9097       { "prox", "z3950.prox_element",
9098         FT_NONE, BASE_NONE, NULL, 0,
9099         "ProximityOperator", HFILL }},
9100     { &hf_z3950_attributeElement_attributeType,
9101       { "attributeType", "z3950.attributeType",
9102         FT_INT32, BASE_DEC, NULL, 0,
9103         "T_attributeElement_attributeType", HFILL }},
9104     { &hf_z3950_attributeValue,
9105       { "attributeValue", "z3950.attributeValue",
9106         FT_UINT32, BASE_DEC, VALS(z3950_T_attributeValue_vals), 0,
9107         NULL, HFILL }},
9108     { &hf_z3950_attributeValue_numeric,
9109       { "numeric", "z3950.numeric",
9110         FT_INT32, BASE_DEC, NULL, 0,
9111         "T_attributeValue_numeric", HFILL }},
9112     { &hf_z3950_attributeValue_complex,
9113       { "complex", "z3950.complex_element",
9114         FT_NONE, BASE_NONE, NULL, 0,
9115         "T_attributeValue_complex", HFILL }},
9116     { &hf_z3950_attributeValue_complex_list,
9117       { "list", "z3950.list",
9118         FT_UINT32, BASE_DEC, NULL, 0,
9119         "SEQUENCE_OF_StringOrNumeric", HFILL }},
9120     { &hf_z3950_attributeValue_complex_list_item,
9121       { "StringOrNumeric", "z3950.StringOrNumeric",
9122         FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
9123         NULL, HFILL }},
9124     { &hf_z3950_semanticAction,
9125       { "semanticAction", "z3950.semanticAction",
9126         FT_UINT32, BASE_DEC, NULL, 0,
9127         NULL, HFILL }},
9128     { &hf_z3950_semanticAction_item,
9129       { "semanticAction item", "z3950.semanticAction_item",
9130         FT_INT32, BASE_DEC, NULL, 0,
9131         "INTEGER", HFILL }},
9132     { &hf_z3950_exclusion,
9133       { "exclusion", "z3950.exclusion",
9134         FT_BOOLEAN, BASE_NONE, NULL, 0,
9135         "BOOLEAN", HFILL }},
9136     { &hf_z3950_distance,
9137       { "distance", "z3950.distance",
9138         FT_INT32, BASE_DEC, NULL, 0,
9139         "INTEGER", HFILL }},
9140     { &hf_z3950_ordered,
9141       { "ordered", "z3950.ordered",
9142         FT_BOOLEAN, BASE_NONE, NULL, 0,
9143         "BOOLEAN", HFILL }},
9144     { &hf_z3950_relationType,
9145       { "relationType", "z3950.relationType",
9146         FT_INT32, BASE_DEC, VALS(z3950_T_relationType_vals), 0,
9147         NULL, HFILL }},
9148     { &hf_z3950_proximityUnitCode,
9149       { "proximityUnitCode", "z3950.proximityUnitCode",
9150         FT_UINT32, BASE_DEC, VALS(z3950_T_proximityUnitCode_vals), 0,
9151         NULL, HFILL }},
9152     { &hf_z3950_known,
9153       { "known", "z3950.known",
9154         FT_INT32, BASE_DEC, VALS(z3950_KnownProximityUnit_vals), 0,
9155         "KnownProximityUnit", HFILL }},
9156     { &hf_z3950_private,
9157       { "private", "z3950.private",
9158         FT_INT32, BASE_DEC, NULL, 0,
9159         "INTEGER", HFILL }},
9160     { &hf_z3950_resultCount,
9161       { "resultCount", "z3950.resultCount",
9162         FT_INT32, BASE_DEC, NULL, 0,
9163         "INTEGER", HFILL }},
9164     { &hf_z3950_numberOfRecordsReturned,
9165       { "numberOfRecordsReturned", "z3950.numberOfRecordsReturned",
9166         FT_INT32, BASE_DEC, NULL, 0,
9167         "INTEGER", HFILL }},
9168     { &hf_z3950_nextResultSetPosition,
9169       { "nextResultSetPosition", "z3950.nextResultSetPosition",
9170         FT_INT32, BASE_DEC, NULL, 0,
9171         "INTEGER", HFILL }},
9172     { &hf_z3950_searchStatus,
9173       { "searchStatus", "z3950.searchStatus",
9174         FT_BOOLEAN, BASE_NONE, NULL, 0,
9175         "BOOLEAN", HFILL }},
9176     { &hf_z3950_search_resultSetStatus,
9177       { "resultSetStatus", "z3950.resultSetStatus",
9178         FT_INT32, BASE_DEC, VALS(z3950_T_search_resultSetStatus_vals), 0,
9179         "T_search_resultSetStatus", HFILL }},
9180     { &hf_z3950_presentStatus,
9181       { "presentStatus", "z3950.presentStatus",
9182         FT_INT32, BASE_DEC, VALS(z3950_PresentStatus_U_vals), 0,
9183         NULL, HFILL }},
9184     { &hf_z3950_records,
9185       { "records", "z3950.records",
9186         FT_UINT32, BASE_DEC, VALS(z3950_Records_vals), 0,
9187         NULL, HFILL }},
9188     { &hf_z3950_resultSetId,
9189       { "resultSetId", "z3950.resultSetId",
9190         FT_STRING, BASE_NONE, NULL, 0,
9191         NULL, HFILL }},
9192     { &hf_z3950_resultSetStartPoint,
9193       { "resultSetStartPoint", "z3950.resultSetStartPoint",
9194         FT_INT32, BASE_DEC, NULL, 0,
9195         "INTEGER", HFILL }},
9196     { &hf_z3950_numberOfRecordsRequested,
9197       { "numberOfRecordsRequested", "z3950.numberOfRecordsRequested",
9198         FT_INT32, BASE_DEC, NULL, 0,
9199         "INTEGER", HFILL }},
9200     { &hf_z3950_additionalRanges,
9201       { "additionalRanges", "z3950.additionalRanges",
9202         FT_UINT32, BASE_DEC, NULL, 0,
9203         "SEQUENCE_OF_Range", HFILL }},
9204     { &hf_z3950_additionalRanges_item,
9205       { "Range", "z3950.Range_element",
9206         FT_NONE, BASE_NONE, NULL, 0,
9207         NULL, HFILL }},
9208     { &hf_z3950_recordComposition,
9209       { "recordComposition", "z3950.recordComposition",
9210         FT_UINT32, BASE_DEC, VALS(z3950_T_recordComposition_vals), 0,
9211         NULL, HFILL }},
9212     { &hf_z3950_simple,
9213       { "simple", "z3950.simple",
9214         FT_UINT32, BASE_DEC, VALS(z3950_ElementSetNames_vals), 0,
9215         "ElementSetNames", HFILL }},
9216     { &hf_z3950_recordComposition_complex,
9217       { "complex", "z3950.complex_element",
9218         FT_NONE, BASE_NONE, NULL, 0,
9219         "CompSpec", HFILL }},
9220     { &hf_z3950_maxSegmentCount,
9221       { "maxSegmentCount", "z3950.maxSegmentCount",
9222         FT_INT32, BASE_DEC, NULL, 0,
9223         "INTEGER", HFILL }},
9224     { &hf_z3950_maxRecordSize,
9225       { "maxRecordSize", "z3950.maxRecordSize",
9226         FT_INT32, BASE_DEC, NULL, 0,
9227         "INTEGER", HFILL }},
9228     { &hf_z3950_maxSegmentSize,
9229       { "maxSegmentSize", "z3950.maxSegmentSize",
9230         FT_INT32, BASE_DEC, NULL, 0,
9231         "INTEGER", HFILL }},
9232     { &hf_z3950_segmentRecords,
9233       { "segmentRecords", "z3950.segmentRecords",
9234         FT_UINT32, BASE_DEC, NULL, 0,
9235         "SEQUENCE_OF_NamePlusRecord", HFILL }},
9236     { &hf_z3950_segmentRecords_item,
9237       { "NamePlusRecord", "z3950.NamePlusRecord_element",
9238         FT_NONE, BASE_NONE, NULL, 0,
9239         NULL, HFILL }},
9240     { &hf_z3950_responseRecords,
9241       { "responseRecords", "z3950.responseRecords",
9242         FT_UINT32, BASE_DEC, NULL, 0,
9243         "SEQUENCE_OF_NamePlusRecord", HFILL }},
9244     { &hf_z3950_responseRecords_item,
9245       { "NamePlusRecord", "z3950.NamePlusRecord_element",
9246         FT_NONE, BASE_NONE, NULL, 0,
9247         NULL, HFILL }},
9248     { &hf_z3950_nonSurrogateDiagnostic,
9249       { "nonSurrogateDiagnostic", "z3950.nonSurrogateDiagnostic_element",
9250         FT_NONE, BASE_NONE, NULL, 0,
9251         "DefaultDiagFormat", HFILL }},
9252     { &hf_z3950_multipleNonSurDiagnostics,
9253       { "multipleNonSurDiagnostics", "z3950.multipleNonSurDiagnostics",
9254         FT_UINT32, BASE_DEC, NULL, 0,
9255         "SEQUENCE_OF_DiagRec", HFILL }},
9256     { &hf_z3950_multipleNonSurDiagnostics_item,
9257       { "DiagRec", "z3950.DiagRec",
9258         FT_UINT32, BASE_DEC, VALS(z3950_DiagRec_vals), 0,
9259         NULL, HFILL }},
9260     { &hf_z3950_namePlusRecord_name,
9261       { "name", "z3950.name",
9262         FT_STRING, BASE_NONE, NULL, 0,
9263         "DatabaseName", HFILL }},
9264     { &hf_z3950_record,
9265       { "record", "z3950.record",
9266         FT_UINT32, BASE_DEC, VALS(z3950_T_record_vals), 0,
9267         NULL, HFILL }},
9268     { &hf_z3950_retrievalRecord,
9269       { "retrievalRecord", "z3950.retrievalRecord_element",
9270         FT_NONE, BASE_NONE, NULL, 0,
9271         "EXTERNAL", HFILL }},
9272     { &hf_z3950_surrogateDiagnostic,
9273       { "surrogateDiagnostic", "z3950.surrogateDiagnostic",
9274         FT_UINT32, BASE_DEC, VALS(z3950_DiagRec_vals), 0,
9275         "DiagRec", HFILL }},
9276     { &hf_z3950_startingFragment,
9277       { "startingFragment", "z3950.startingFragment",
9278         FT_UINT32, BASE_DEC, VALS(z3950_FragmentSyntax_vals), 0,
9279         "FragmentSyntax", HFILL }},
9280     { &hf_z3950_intermediateFragment,
9281       { "intermediateFragment", "z3950.intermediateFragment",
9282         FT_UINT32, BASE_DEC, VALS(z3950_FragmentSyntax_vals), 0,
9283         "FragmentSyntax", HFILL }},
9284     { &hf_z3950_finalFragment,
9285       { "finalFragment", "z3950.finalFragment",
9286         FT_UINT32, BASE_DEC, VALS(z3950_FragmentSyntax_vals), 0,
9287         "FragmentSyntax", HFILL }},
9288     { &hf_z3950_externallyTagged,
9289       { "externallyTagged", "z3950.externallyTagged_element",
9290         FT_NONE, BASE_NONE, NULL, 0,
9291         "EXTERNAL", HFILL }},
9292     { &hf_z3950_notExternallyTagged,
9293       { "notExternallyTagged", "z3950.notExternallyTagged",
9294         FT_BYTES, BASE_NONE, NULL, 0,
9295         "OCTET_STRING", HFILL }},
9296     { &hf_z3950_defaultFormat,
9297       { "defaultFormat", "z3950.defaultFormat_element",
9298         FT_NONE, BASE_NONE, NULL, 0,
9299         "DefaultDiagFormat", HFILL }},
9300     { &hf_z3950_externallyDefined,
9301       { "externallyDefined", "z3950.externallyDefined_element",
9302         FT_NONE, BASE_NONE, NULL, 0,
9303         "EXTERNAL", HFILL }},
9304     { &hf_z3950_diagnosticSetId,
9305       { "diagnosticSetId", "z3950.diagnosticSetId",
9306         FT_OID, BASE_NONE, NULL, 0,
9307         NULL, HFILL }},
9308     { &hf_z3950_condition,
9309       { "condition", "z3950.condition",
9310         FT_INT32, BASE_DEC, NULL, 0,
9311         NULL, HFILL }},
9312     { &hf_z3950_addinfo,
9313       { "addinfo", "z3950.addinfo",
9314         FT_UINT32, BASE_DEC, VALS(z3950_T_addinfo_vals), 0,
9315         NULL, HFILL }},
9316     { &hf_z3950_v2Addinfo,
9317       { "v2Addinfo", "z3950.v2Addinfo",
9318         FT_STRING, BASE_NONE, NULL, 0,
9319         "VisibleString", HFILL }},
9320     { &hf_z3950_v3Addinfo,
9321       { "v3Addinfo", "z3950.v3Addinfo",
9322         FT_STRING, BASE_NONE, NULL, 0,
9323         "InternationalString", HFILL }},
9324     { &hf_z3950_startingPosition,
9325       { "startingPosition", "z3950.startingPosition",
9326         FT_INT32, BASE_DEC, NULL, 0,
9327         "INTEGER", HFILL }},
9328     { &hf_z3950_numberOfRecords,
9329       { "numberOfRecords", "z3950.numberOfRecords",
9330         FT_INT32, BASE_DEC, NULL, 0,
9331         "INTEGER", HFILL }},
9332     { &hf_z3950_genericElementSetName,
9333       { "genericElementSetName", "z3950.genericElementSetName",
9334         FT_STRING, BASE_NONE, NULL, 0,
9335         "InternationalString", HFILL }},
9336     { &hf_z3950_databaseSpecific,
9337       { "databaseSpecific", "z3950.databaseSpecific",
9338         FT_UINT32, BASE_DEC, NULL, 0,
9339         NULL, HFILL }},
9340     { &hf_z3950_databaseSpecific_item,
9341       { "databaseSpecific item", "z3950.databaseSpecific_item_element",
9342         FT_NONE, BASE_NONE, NULL, 0,
9343         NULL, HFILL }},
9344     { &hf_z3950_dbName,
9345       { "dbName", "z3950.dbName",
9346         FT_STRING, BASE_NONE, NULL, 0,
9347         "DatabaseName", HFILL }},
9348     { &hf_z3950_esn,
9349       { "esn", "z3950.esn",
9350         FT_STRING, BASE_NONE, NULL, 0,
9351         "ElementSetName", HFILL }},
9352     { &hf_z3950_selectAlternativeSyntax,
9353       { "selectAlternativeSyntax", "z3950.selectAlternativeSyntax",
9354         FT_BOOLEAN, BASE_NONE, NULL, 0,
9355         "BOOLEAN", HFILL }},
9356     { &hf_z3950_compSpec_generic,
9357       { "generic", "z3950.generic_element",
9358         FT_NONE, BASE_NONE, NULL, 0,
9359         "Specification", HFILL }},
9360     { &hf_z3950_dbSpecific,
9361       { "dbSpecific", "z3950.dbSpecific",
9362         FT_UINT32, BASE_DEC, NULL, 0,
9363         NULL, HFILL }},
9364     { &hf_z3950_dbSpecific_item,
9365       { "dbSpecific item", "z3950.dbSpecific_item_element",
9366         FT_NONE, BASE_NONE, NULL, 0,
9367         NULL, HFILL }},
9368     { &hf_z3950_db,
9369       { "db", "z3950.db",
9370         FT_STRING, BASE_NONE, NULL, 0,
9371         "DatabaseName", HFILL }},
9372     { &hf_z3950_spec,
9373       { "spec", "z3950.spec_element",
9374         FT_NONE, BASE_NONE, NULL, 0,
9375         "Specification", HFILL }},
9376     { &hf_z3950_compSpec_recordSyntax,
9377       { "recordSyntax", "z3950.recordSyntax",
9378         FT_UINT32, BASE_DEC, NULL, 0,
9379         "T_compSpec_recordSyntax", HFILL }},
9380     { &hf_z3950_compSpec_recordSyntax_item,
9381       { "recordSyntax item", "z3950.recordSyntax_item",
9382         FT_OID, BASE_NONE, NULL, 0,
9383         "OBJECT_IDENTIFIER", HFILL }},
9384     { &hf_z3950_schema,
9385       { "schema", "z3950.schema",
9386         FT_OID, BASE_NONE, NULL, 0,
9387         "OBJECT_IDENTIFIER", HFILL }},
9388     { &hf_z3950_specification_elementSpec,
9389       { "elementSpec", "z3950.elementSpec",
9390         FT_UINT32, BASE_DEC, VALS(z3950_T_specification_elementSpec_vals), 0,
9391         "T_specification_elementSpec", HFILL }},
9392     { &hf_z3950_elementSetName,
9393       { "elementSetName", "z3950.elementSetName",
9394         FT_STRING, BASE_NONE, NULL, 0,
9395         "InternationalString", HFILL }},
9396     { &hf_z3950_externalEspec,
9397       { "externalEspec", "z3950.externalEspec_element",
9398         FT_NONE, BASE_NONE, NULL, 0,
9399         "EXTERNAL", HFILL }},
9400     { &hf_z3950_deleteFunction,
9401       { "deleteFunction", "z3950.deleteFunction",
9402         FT_INT32, BASE_DEC, VALS(z3950_T_deleteFunction_vals), 0,
9403         NULL, HFILL }},
9404     { &hf_z3950_resultSetList,
9405       { "resultSetList", "z3950.resultSetList",
9406         FT_UINT32, BASE_DEC, NULL, 0,
9407         "SEQUENCE_OF_ResultSetId", HFILL }},
9408     { &hf_z3950_resultSetList_item,
9409       { "ResultSetId", "z3950.ResultSetId",
9410         FT_STRING, BASE_NONE, NULL, 0,
9411         NULL, HFILL }},
9412     { &hf_z3950_deleteOperationStatus,
9413       { "deleteOperationStatus", "z3950.deleteOperationStatus",
9414         FT_INT32, BASE_DEC, VALS(z3950_DeleteSetStatus_U_vals), 0,
9415         "DeleteSetStatus", HFILL }},
9416     { &hf_z3950_deleteListStatuses,
9417       { "deleteListStatuses", "z3950.deleteListStatuses",
9418         FT_UINT32, BASE_DEC, NULL, 0,
9419         "ListStatuses", HFILL }},
9420     { &hf_z3950_numberNotDeleted,
9421       { "numberNotDeleted", "z3950.numberNotDeleted",
9422         FT_INT32, BASE_DEC, NULL, 0,
9423         "INTEGER", HFILL }},
9424     { &hf_z3950_bulkStatuses,
9425       { "bulkStatuses", "z3950.bulkStatuses",
9426         FT_UINT32, BASE_DEC, NULL, 0,
9427         "ListStatuses", HFILL }},
9428     { &hf_z3950_deleteMessage,
9429       { "deleteMessage", "z3950.deleteMessage",
9430         FT_STRING, BASE_NONE, NULL, 0,
9431         "InternationalString", HFILL }},
9432     { &hf_z3950_ListStatuses_item,
9433       { "ListStatuses item", "z3950.ListStatuses_item_element",
9434         FT_NONE, BASE_NONE, NULL, 0,
9435         NULL, HFILL }},
9436     { &hf_z3950_listStatuses_id,
9437       { "id", "z3950.id",
9438         FT_STRING, BASE_NONE, NULL, 0,
9439         "ResultSetId", HFILL }},
9440     { &hf_z3950_status,
9441       { "status", "z3950.status",
9442         FT_INT32, BASE_DEC, VALS(z3950_DeleteSetStatus_U_vals), 0,
9443         "DeleteSetStatus", HFILL }},
9444     { &hf_z3950_securityChallenge,
9445       { "securityChallenge", "z3950.securityChallenge",
9446         FT_UINT32, BASE_DEC, VALS(z3950_T_securityChallenge_vals), 0,
9447         NULL, HFILL }},
9448     { &hf_z3950_simpleForm,
9449       { "simpleForm", "z3950.simpleForm",
9450         FT_BYTES, BASE_NONE, NULL, 0,
9451         "OCTET_STRING", HFILL }},
9452     { &hf_z3950_securityChallengeResponse,
9453       { "securityChallengeResponse", "z3950.securityChallengeResponse",
9454         FT_UINT32, BASE_DEC, VALS(z3950_T_securityChallengeResponse_vals), 0,
9455         NULL, HFILL }},
9456     { &hf_z3950_diagnostic,
9457       { "diagnostic", "z3950.diagnostic",
9458         FT_UINT32, BASE_DEC, VALS(z3950_DiagRec_vals), 0,
9459         "DiagRec", HFILL }},
9460     { &hf_z3950_suspendedFlag,
9461       { "suspendedFlag", "z3950.suspendedFlag",
9462         FT_BOOLEAN, BASE_NONE, NULL, 0,
9463         "BOOLEAN", HFILL }},
9464     { &hf_z3950_resourceReport,
9465       { "resourceReport", "z3950.resourceReport_element",
9466         FT_NONE, BASE_NONE, NULL, 0,
9467         NULL, HFILL }},
9468     { &hf_z3950_partialResultsAvailable,
9469       { "partialResultsAvailable", "z3950.partialResultsAvailable",
9470         FT_INT32, BASE_DEC, VALS(z3950_T_partialResultsAvailable_vals), 0,
9471         NULL, HFILL }},
9472     { &hf_z3950_resourceControlRequest_responseRequired,
9473       { "responseRequired", "z3950.responseRequired",
9474         FT_BOOLEAN, BASE_NONE, NULL, 0,
9475         "BOOLEAN", HFILL }},
9476     { &hf_z3950_triggeredRequestFlag,
9477       { "triggeredRequestFlag", "z3950.triggeredRequestFlag",
9478         FT_BOOLEAN, BASE_NONE, NULL, 0,
9479         "BOOLEAN", HFILL }},
9480     { &hf_z3950_continueFlag,
9481       { "continueFlag", "z3950.continueFlag",
9482         FT_BOOLEAN, BASE_NONE, NULL, 0,
9483         "BOOLEAN", HFILL }},
9484     { &hf_z3950_resultSetWanted,
9485       { "resultSetWanted", "z3950.resultSetWanted",
9486         FT_BOOLEAN, BASE_NONE, NULL, 0,
9487         "BOOLEAN", HFILL }},
9488     { &hf_z3950_requestedAction,
9489       { "requestedAction", "z3950.requestedAction",
9490         FT_INT32, BASE_DEC, VALS(z3950_T_requestedAction_vals), 0,
9491         NULL, HFILL }},
9492     { &hf_z3950_prefResourceReportFormat,
9493       { "prefResourceReportFormat", "z3950.prefResourceReportFormat",
9494         FT_OID, BASE_NONE, NULL, 0,
9495         "ResourceReportId", HFILL }},
9496     { &hf_z3950_opId,
9497       { "opId", "z3950.opId",
9498         FT_BYTES, BASE_NONE, NULL, 0,
9499         "ReferenceId", HFILL }},
9500     { &hf_z3950_resourceReportStatus,
9501       { "resourceReportStatus", "z3950.resourceReportStatus",
9502         FT_INT32, BASE_DEC, VALS(z3950_T_resourceReportStatus_vals), 0,
9503         NULL, HFILL }},
9504     { &hf_z3950_termListAndStartPoint,
9505       { "termListAndStartPoint", "z3950.termListAndStartPoint_element",
9506         FT_NONE, BASE_NONE, NULL, 0,
9507         "AttributesPlusTerm", HFILL }},
9508     { &hf_z3950_stepSize,
9509       { "stepSize", "z3950.stepSize",
9510         FT_INT32, BASE_DEC, NULL, 0,
9511         "INTEGER", HFILL }},
9512     { &hf_z3950_numberOfTermsRequested,
9513       { "numberOfTermsRequested", "z3950.numberOfTermsRequested",
9514         FT_INT32, BASE_DEC, NULL, 0,
9515         "INTEGER", HFILL }},
9516     { &hf_z3950_preferredPositionInResponse,
9517       { "preferredPositionInResponse", "z3950.preferredPositionInResponse",
9518         FT_INT32, BASE_DEC, NULL, 0,
9519         "INTEGER", HFILL }},
9520     { &hf_z3950_scanStatus,
9521       { "scanStatus", "z3950.scanStatus",
9522         FT_INT32, BASE_DEC, VALS(z3950_T_scanStatus_vals), 0,
9523         NULL, HFILL }},
9524     { &hf_z3950_numberOfEntriesReturned,
9525       { "numberOfEntriesReturned", "z3950.numberOfEntriesReturned",
9526         FT_INT32, BASE_DEC, NULL, 0,
9527         "INTEGER", HFILL }},
9528     { &hf_z3950_positionOfTerm,
9529       { "positionOfTerm", "z3950.positionOfTerm",
9530         FT_INT32, BASE_DEC, NULL, 0,
9531         "INTEGER", HFILL }},
9532     { &hf_z3950_scanResponse_entries,
9533       { "entries", "z3950.entries_element",
9534         FT_NONE, BASE_NONE, NULL, 0,
9535         "ListEntries", HFILL }},
9536     { &hf_z3950_listEntries_entries,
9537       { "entries", "z3950.entries",
9538         FT_UINT32, BASE_DEC, NULL, 0,
9539         "SEQUENCE_OF_Entry", HFILL }},
9540     { &hf_z3950_listEntries_entries_item,
9541       { "Entry", "z3950.Entry",
9542         FT_UINT32, BASE_DEC, VALS(z3950_Entry_vals), 0,
9543         NULL, HFILL }},
9544     { &hf_z3950_nonsurrogateDiagnostics,
9545       { "nonsurrogateDiagnostics", "z3950.nonsurrogateDiagnostics",
9546         FT_UINT32, BASE_DEC, NULL, 0,
9547         "SEQUENCE_OF_DiagRec", HFILL }},
9548     { &hf_z3950_nonsurrogateDiagnostics_item,
9549       { "DiagRec", "z3950.DiagRec",
9550         FT_UINT32, BASE_DEC, VALS(z3950_DiagRec_vals), 0,
9551         NULL, HFILL }},
9552     { &hf_z3950_termInfo,
9553       { "termInfo", "z3950.termInfo_element",
9554         FT_NONE, BASE_NONE, NULL, 0,
9555         NULL, HFILL }},
9556     { &hf_z3950_displayTerm,
9557       { "displayTerm", "z3950.displayTerm",
9558         FT_STRING, BASE_NONE, NULL, 0,
9559         "InternationalString", HFILL }},
9560     { &hf_z3950_suggestedAttributes,
9561       { "suggestedAttributes", "z3950.suggestedAttributes",
9562         FT_UINT32, BASE_DEC, NULL, 0,
9563         "AttributeList", HFILL }},
9564     { &hf_z3950_alternativeTerm,
9565       { "alternativeTerm", "z3950.alternativeTerm",
9566         FT_UINT32, BASE_DEC, NULL, 0,
9567         "SEQUENCE_OF_AttributesPlusTerm", HFILL }},
9568     { &hf_z3950_alternativeTerm_item,
9569       { "AttributesPlusTerm", "z3950.AttributesPlusTerm_element",
9570         FT_NONE, BASE_NONE, NULL, 0,
9571         NULL, HFILL }},
9572     { &hf_z3950_globalOccurrences,
9573       { "globalOccurrences", "z3950.globalOccurrences",
9574         FT_INT32, BASE_DEC, NULL, 0,
9575         "INTEGER", HFILL }},
9576     { &hf_z3950_byAttributes,
9577       { "byAttributes", "z3950.byAttributes",
9578         FT_UINT32, BASE_DEC, NULL, 0,
9579         "OccurrenceByAttributes", HFILL }},
9580     { &hf_z3950_otherTermInfo,
9581       { "otherTermInfo", "z3950.otherTermInfo",
9582         FT_UINT32, BASE_DEC, NULL, 0,
9583         "OtherInformation", HFILL }},
9584     { &hf_z3950_OccurrenceByAttributes_item,
9585       { "OccurrenceByAttributes item", "z3950.OccurrenceByAttributes_item_element",
9586         FT_NONE, BASE_NONE, NULL, 0,
9587         NULL, HFILL }},
9588     { &hf_z3950_occurrences,
9589       { "occurrences", "z3950.occurrences",
9590         FT_UINT32, BASE_DEC, VALS(z3950_T_occurrences_vals), 0,
9591         NULL, HFILL }},
9592     { &hf_z3950_global,
9593       { "global", "z3950.global",
9594         FT_INT32, BASE_DEC, NULL, 0,
9595         "INTEGER", HFILL }},
9596     { &hf_z3950_byDatabase,
9597       { "byDatabase", "z3950.byDatabase",
9598         FT_UINT32, BASE_DEC, NULL, 0,
9599         NULL, HFILL }},
9600     { &hf_z3950_byDatabase_item,
9601       { "byDatabase item", "z3950.byDatabase_item_element",
9602         FT_NONE, BASE_NONE, NULL, 0,
9603         NULL, HFILL }},
9604     { &hf_z3950_num,
9605       { "num", "z3950.num",
9606         FT_INT32, BASE_DEC, NULL, 0,
9607         "INTEGER", HFILL }},
9608     { &hf_z3950_otherDbInfo,
9609       { "otherDbInfo", "z3950.otherDbInfo",
9610         FT_UINT32, BASE_DEC, NULL, 0,
9611         "OtherInformation", HFILL }},
9612     { &hf_z3950_otherOccurInfo,
9613       { "otherOccurInfo", "z3950.otherOccurInfo",
9614         FT_UINT32, BASE_DEC, NULL, 0,
9615         "OtherInformation", HFILL }},
9616     { &hf_z3950_inputResultSetNames,
9617       { "inputResultSetNames", "z3950.inputResultSetNames",
9618         FT_UINT32, BASE_DEC, NULL, 0,
9619         "SEQUENCE_OF_InternationalString", HFILL }},
9620     { &hf_z3950_inputResultSetNames_item,
9621       { "InternationalString", "z3950.InternationalString",
9622         FT_STRING, BASE_NONE, NULL, 0,
9623         NULL, HFILL }},
9624     { &hf_z3950_sortedResultSetName,
9625       { "sortedResultSetName", "z3950.sortedResultSetName",
9626         FT_STRING, BASE_NONE, NULL, 0,
9627         "InternationalString", HFILL }},
9628     { &hf_z3950_sortSequence,
9629       { "sortSequence", "z3950.sortSequence",
9630         FT_UINT32, BASE_DEC, NULL, 0,
9631         "SEQUENCE_OF_SortKeySpec", HFILL }},
9632     { &hf_z3950_sortSequence_item,
9633       { "SortKeySpec", "z3950.SortKeySpec_element",
9634         FT_NONE, BASE_NONE, NULL, 0,
9635         NULL, HFILL }},
9636     { &hf_z3950_sortStatus,
9637       { "sortStatus", "z3950.sortStatus",
9638         FT_INT32, BASE_DEC, VALS(z3950_T_sortStatus_vals), 0,
9639         NULL, HFILL }},
9640     { &hf_z3950_sort_resultSetStatus,
9641       { "resultSetStatus", "z3950.resultSetStatus",
9642         FT_INT32, BASE_DEC, VALS(z3950_T_sort_resultSetStatus_vals), 0,
9643         "T_sort_resultSetStatus", HFILL }},
9644     { &hf_z3950_diagnostics,
9645       { "diagnostics", "z3950.diagnostics",
9646         FT_UINT32, BASE_DEC, NULL, 0,
9647         "SEQUENCE_OF_DiagRec", HFILL }},
9648     { &hf_z3950_diagnostics_item,
9649       { "DiagRec", "z3950.DiagRec",
9650         FT_UINT32, BASE_DEC, VALS(z3950_DiagRec_vals), 0,
9651         NULL, HFILL }},
9652     { &hf_z3950_sortElement,
9653       { "sortElement", "z3950.sortElement",
9654         FT_UINT32, BASE_DEC, VALS(z3950_SortElement_vals), 0,
9655         NULL, HFILL }},
9656     { &hf_z3950_sortRelation,
9657       { "sortRelation", "z3950.sortRelation",
9658         FT_INT32, BASE_DEC, VALS(z3950_T_sortRelation_vals), 0,
9659         NULL, HFILL }},
9660     { &hf_z3950_caseSensitivity,
9661       { "caseSensitivity", "z3950.caseSensitivity",
9662         FT_INT32, BASE_DEC, VALS(z3950_T_caseSensitivity_vals), 0,
9663         NULL, HFILL }},
9664     { &hf_z3950_missingValueAction,
9665       { "missingValueAction", "z3950.missingValueAction",
9666         FT_UINT32, BASE_DEC, VALS(z3950_T_missingValueAction_vals), 0,
9667         NULL, HFILL }},
9668     { &hf_z3950_abort,
9669       { "abort", "z3950.abort_element",
9670         FT_NONE, BASE_NONE, NULL, 0,
9671         NULL, HFILL }},
9672     { &hf_z3950_missingValueData,
9673       { "missingValueData", "z3950.missingValueData",
9674         FT_BYTES, BASE_NONE, NULL, 0,
9675         "OCTET_STRING", HFILL }},
9676     { &hf_z3950_sortElement_generic,
9677       { "generic", "z3950.generic",
9678         FT_UINT32, BASE_DEC, VALS(z3950_SortKey_vals), 0,
9679         "SortKey", HFILL }},
9680     { &hf_z3950_datbaseSpecific,
9681       { "datbaseSpecific", "z3950.datbaseSpecific",
9682         FT_UINT32, BASE_DEC, NULL, 0,
9683         NULL, HFILL }},
9684     { &hf_z3950_datbaseSpecific_item,
9685       { "datbaseSpecific item", "z3950.datbaseSpecific_item_element",
9686         FT_NONE, BASE_NONE, NULL, 0,
9687         NULL, HFILL }},
9688     { &hf_z3950_databaseName,
9689       { "databaseName", "z3950.databaseName",
9690         FT_STRING, BASE_NONE, NULL, 0,
9691         NULL, HFILL }},
9692     { &hf_z3950_dbSort,
9693       { "dbSort", "z3950.dbSort",
9694         FT_UINT32, BASE_DEC, VALS(z3950_SortKey_vals), 0,
9695         "SortKey", HFILL }},
9696     { &hf_z3950_sortfield,
9697       { "sortfield", "z3950.sortfield",
9698         FT_STRING, BASE_NONE, NULL, 0,
9699         "InternationalString", HFILL }},
9700     { &hf_z3950_sortKey_elementSpec,
9701       { "elementSpec", "z3950.elementSpec_element",
9702         FT_NONE, BASE_NONE, NULL, 0,
9703         "Specification", HFILL }},
9704     { &hf_z3950_sortAttributes,
9705       { "sortAttributes", "z3950.sortAttributes_element",
9706         FT_NONE, BASE_NONE, NULL, 0,
9707         NULL, HFILL }},
9708     { &hf_z3950_sortAttributes_id,
9709       { "id", "z3950.id",
9710         FT_OID, BASE_NONE, NULL, 0,
9711         "AttributeSetId", HFILL }},
9712     { &hf_z3950_sortAttributes_list,
9713       { "list", "z3950.list",
9714         FT_UINT32, BASE_DEC, NULL, 0,
9715         "AttributeList", HFILL }},
9716     { &hf_z3950_function,
9717       { "function", "z3950.function",
9718         FT_INT32, BASE_DEC, VALS(z3950_T_function_vals), 0,
9719         NULL, HFILL }},
9720     { &hf_z3950_packageType,
9721       { "packageType", "z3950.packageType",
9722         FT_OID, BASE_NONE, NULL, 0,
9723         "OBJECT_IDENTIFIER", HFILL }},
9724     { &hf_z3950_packageName,
9725       { "packageName", "z3950.packageName",
9726         FT_STRING, BASE_NONE, NULL, 0,
9727         "InternationalString", HFILL }},
9728     { &hf_z3950_retentionTime,
9729       { "retentionTime", "z3950.retentionTime_element",
9730         FT_NONE, BASE_NONE, NULL, 0,
9731         "IntUnit", HFILL }},
9732     { &hf_z3950_permissions,
9733       { "permissions", "z3950.permissions",
9734         FT_UINT32, BASE_DEC, NULL, 0,
9735         NULL, HFILL }},
9736     { &hf_z3950_extendedServicesRequest_description,
9737       { "description", "z3950.description",
9738         FT_STRING, BASE_NONE, NULL, 0,
9739         "InternationalString", HFILL }},
9740     { &hf_z3950_taskSpecificParameters,
9741       { "taskSpecificParameters", "z3950.taskSpecificParameters_element",
9742         FT_NONE, BASE_NONE, NULL, 0,
9743         "EXTERNAL", HFILL }},
9744     { &hf_z3950_waitAction,
9745       { "waitAction", "z3950.waitAction",
9746         FT_INT32, BASE_DEC, VALS(z3950_T_waitAction_vals), 0,
9747         NULL, HFILL }},
9748     { &hf_z3950_elements,
9749       { "elements", "z3950.elements",
9750         FT_STRING, BASE_NONE, NULL, 0,
9751         "ElementSetName", HFILL }},
9752     { &hf_z3950_operationStatus,
9753       { "operationStatus", "z3950.operationStatus",
9754         FT_INT32, BASE_DEC, VALS(z3950_T_operationStatus_vals), 0,
9755         NULL, HFILL }},
9756     { &hf_z3950_taskPackage,
9757       { "taskPackage", "z3950.taskPackage_element",
9758         FT_NONE, BASE_NONE, NULL, 0,
9759         "EXTERNAL", HFILL }},
9760     { &hf_z3950_Permissions_item,
9761       { "Permissions item", "z3950.Permissions_item_element",
9762         FT_NONE, BASE_NONE, NULL, 0,
9763         NULL, HFILL }},
9764     { &hf_z3950_allowableFunctions,
9765       { "allowableFunctions", "z3950.allowableFunctions",
9766         FT_UINT32, BASE_DEC, NULL, 0,
9767         NULL, HFILL }},
9768     { &hf_z3950_allowableFunctions_item,
9769       { "allowableFunctions item", "z3950.allowableFunctions_item",
9770         FT_INT32, BASE_DEC, VALS(z3950_T_allowableFunctions_item_vals), 0,
9771         NULL, HFILL }},
9772     { &hf_z3950_closeReason,
9773       { "closeReason", "z3950.closeReason",
9774         FT_INT32, BASE_DEC, VALS(z3950_CloseReason_U_vals), 0,
9775         NULL, HFILL }},
9776     { &hf_z3950_diagnosticInformation,
9777       { "diagnosticInformation", "z3950.diagnosticInformation",
9778         FT_STRING, BASE_NONE, NULL, 0,
9779         "InternationalString", HFILL }},
9780     { &hf_z3950_resourceReportFormat,
9781       { "resourceReportFormat", "z3950.resourceReportFormat",
9782         FT_OID, BASE_NONE, NULL, 0,
9783         "ResourceReportId", HFILL }},
9784     { &hf_z3950_otherInformation_item,
9785       { "_untag item", "z3950._untag_item_element",
9786         FT_NONE, BASE_NONE, NULL, 0,
9787         NULL, HFILL }},
9788     { &hf_z3950_category,
9789       { "category", "z3950.category_element",
9790         FT_NONE, BASE_NONE, NULL, 0,
9791         "InfoCategory", HFILL }},
9792     { &hf_z3950_information,
9793       { "information", "z3950.information",
9794         FT_UINT32, BASE_DEC, VALS(z3950_T_information_vals), 0,
9795         NULL, HFILL }},
9796     { &hf_z3950_characterInfo,
9797       { "characterInfo", "z3950.characterInfo",
9798         FT_STRING, BASE_NONE, NULL, 0,
9799         "InternationalString", HFILL }},
9800     { &hf_z3950_binaryInfo,
9801       { "binaryInfo", "z3950.binaryInfo",
9802         FT_BYTES, BASE_NONE, NULL, 0,
9803         "OCTET_STRING", HFILL }},
9804     { &hf_z3950_externallyDefinedInfo,
9805       { "externallyDefinedInfo", "z3950.externallyDefinedInfo_element",
9806         FT_NONE, BASE_NONE, NULL, 0,
9807         "EXTERNAL", HFILL }},
9808     { &hf_z3950_categoryTypeId,
9809       { "categoryTypeId", "z3950.categoryTypeId",
9810         FT_OID, BASE_NONE, NULL, 0,
9811         "OBJECT_IDENTIFIER", HFILL }},
9812     { &hf_z3950_categoryValue,
9813       { "categoryValue", "z3950.categoryValue",
9814         FT_INT32, BASE_DEC, NULL, 0,
9815         "INTEGER", HFILL }},
9816     { &hf_z3950_value,
9817       { "value", "z3950.value",
9818         FT_INT32, BASE_DEC, NULL, 0,
9819         "INTEGER", HFILL }},
9820     { &hf_z3950_unitUsed,
9821       { "unitUsed", "z3950.unitUsed_element",
9822         FT_NONE, BASE_NONE, NULL, 0,
9823         "Unit", HFILL }},
9824     { &hf_z3950_unitSystem,
9825       { "unitSystem", "z3950.unitSystem",
9826         FT_STRING, BASE_NONE, NULL, 0,
9827         "InternationalString", HFILL }},
9828     { &hf_z3950_unitType,
9829       { "unitType", "z3950.unitType",
9830         FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
9831         "StringOrNumeric", HFILL }},
9832     { &hf_z3950_unit,
9833       { "unit", "z3950.unit",
9834         FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
9835         "StringOrNumeric", HFILL }},
9836     { &hf_z3950_scaleFactor,
9837       { "scaleFactor", "z3950.scaleFactor",
9838         FT_INT32, BASE_DEC, NULL, 0,
9839         "INTEGER", HFILL }},
9840     { &hf_z3950_string,
9841       { "string", "z3950.string",
9842         FT_STRING, BASE_NONE, NULL, 0,
9843         "InternationalString", HFILL }},
9844     { &hf_z3950_motd,
9845       { "motd", "z3950.motd",
9846         FT_STRING, BASE_NONE, NULL, 0,
9847         "VisibleString", HFILL }},
9848     { &hf_z3950_dblist,
9849       { "dblist", "z3950.dblist",
9850         FT_UINT32, BASE_DEC, NULL, 0,
9851         "SEQUENCE_OF_DBName", HFILL }},
9852     { &hf_z3950_dblist_item,
9853       { "DBName", "z3950.DBName",
9854         FT_STRING, BASE_NONE, NULL, 0,
9855         NULL, HFILL }},
9856     { &hf_z3950_failReason,
9857       { "failReason", "z3950.failReason",
9858         FT_BOOLEAN, BASE_NONE, NULL, 0,
9859         "BOOLEAN", HFILL }},
9860     { &hf_z3950_oCLC_UserInformation_text,
9861       { "text", "z3950.text",
9862         FT_STRING, BASE_NONE, NULL, 0,
9863         "VisibleString", HFILL }},
9864     { &hf_z3950_bibliographicRecord,
9865       { "bibliographicRecord", "z3950.bibliographicRecord_element",
9866         FT_NONE, BASE_NONE, NULL, 0,
9867         "EXTERNAL", HFILL }},
9868     { &hf_z3950_holdingsData,
9869       { "holdingsData", "z3950.holdingsData",
9870         FT_UINT32, BASE_DEC, NULL, 0,
9871         "SEQUENCE_OF_HoldingsRecord", HFILL }},
9872     { &hf_z3950_holdingsData_item,
9873       { "HoldingsRecord", "z3950.HoldingsRecord",
9874         FT_UINT32, BASE_DEC, VALS(z3950_HoldingsRecord_vals), 0,
9875         NULL, HFILL }},
9876     { &hf_z3950_marcHoldingsRecord,
9877       { "marcHoldingsRecord", "z3950.marcHoldingsRecord_element",
9878         FT_NONE, BASE_NONE, NULL, 0,
9879         "EXTERNAL", HFILL }},
9880     { &hf_z3950_holdingsAndCirc,
9881       { "holdingsAndCirc", "z3950.holdingsAndCirc_element",
9882         FT_NONE, BASE_NONE, NULL, 0,
9883         "HoldingsAndCircData", HFILL }},
9884     { &hf_z3950_typeOfRecord,
9885       { "typeOfRecord", "z3950.typeOfRecord",
9886         FT_STRING, BASE_NONE, NULL, 0,
9887         "InternationalString", HFILL }},
9888     { &hf_z3950_encodingLevel,
9889       { "encodingLevel", "z3950.encodingLevel",
9890         FT_STRING, BASE_NONE, NULL, 0,
9891         "InternationalString", HFILL }},
9892     { &hf_z3950_format,
9893       { "format", "z3950.format",
9894         FT_STRING, BASE_NONE, NULL, 0,
9895         "InternationalString", HFILL }},
9896     { &hf_z3950_receiptAcqStatus,
9897       { "receiptAcqStatus", "z3950.receiptAcqStatus",
9898         FT_STRING, BASE_NONE, NULL, 0,
9899         "InternationalString", HFILL }},
9900     { &hf_z3950_generalRetention,
9901       { "generalRetention", "z3950.generalRetention",
9902         FT_STRING, BASE_NONE, NULL, 0,
9903         "InternationalString", HFILL }},
9904     { &hf_z3950_completeness,
9905       { "completeness", "z3950.completeness",
9906         FT_STRING, BASE_NONE, NULL, 0,
9907         "InternationalString", HFILL }},
9908     { &hf_z3950_dateOfReport,
9909       { "dateOfReport", "z3950.dateOfReport",
9910         FT_STRING, BASE_NONE, NULL, 0,
9911         "InternationalString", HFILL }},
9912     { &hf_z3950_nucCode,
9913       { "nucCode", "z3950.nucCode",
9914         FT_STRING, BASE_NONE, NULL, 0,
9915         "InternationalString", HFILL }},
9916     { &hf_z3950_localLocation,
9917       { "localLocation", "z3950.localLocation",
9918         FT_STRING, BASE_NONE, NULL, 0,
9919         "InternationalString", HFILL }},
9920     { &hf_z3950_shelvingLocation,
9921       { "shelvingLocation", "z3950.shelvingLocation",
9922         FT_STRING, BASE_NONE, NULL, 0,
9923         "InternationalString", HFILL }},
9924     { &hf_z3950_callNumber,
9925       { "callNumber", "z3950.callNumber",
9926         FT_STRING, BASE_NONE, NULL, 0,
9927         "InternationalString", HFILL }},
9928     { &hf_z3950_shelvingData,
9929       { "shelvingData", "z3950.shelvingData",
9930         FT_STRING, BASE_NONE, NULL, 0,
9931         "InternationalString", HFILL }},
9932     { &hf_z3950_copyNumber,
9933       { "copyNumber", "z3950.copyNumber",
9934         FT_STRING, BASE_NONE, NULL, 0,
9935         "InternationalString", HFILL }},
9936     { &hf_z3950_publicNote,
9937       { "publicNote", "z3950.publicNote",
9938         FT_STRING, BASE_NONE, NULL, 0,
9939         "InternationalString", HFILL }},
9940     { &hf_z3950_reproductionNote,
9941       { "reproductionNote", "z3950.reproductionNote",
9942         FT_STRING, BASE_NONE, NULL, 0,
9943         "InternationalString", HFILL }},
9944     { &hf_z3950_termsUseRepro,
9945       { "termsUseRepro", "z3950.termsUseRepro",
9946         FT_STRING, BASE_NONE, NULL, 0,
9947         "InternationalString", HFILL }},
9948     { &hf_z3950_enumAndChron,
9949       { "enumAndChron", "z3950.enumAndChron",
9950         FT_STRING, BASE_NONE, NULL, 0,
9951         "InternationalString", HFILL }},
9952     { &hf_z3950_volumes,
9953       { "volumes", "z3950.volumes",
9954         FT_UINT32, BASE_DEC, NULL, 0,
9955         "SEQUENCE_OF_Volume", HFILL }},
9956     { &hf_z3950_volumes_item,
9957       { "Volume", "z3950.Volume_element",
9958         FT_NONE, BASE_NONE, NULL, 0,
9959         NULL, HFILL }},
9960     { &hf_z3950_circulationData,
9961       { "circulationData", "z3950.circulationData",
9962         FT_UINT32, BASE_DEC, NULL, 0,
9963         "SEQUENCE_OF_CircRecord", HFILL }},
9964     { &hf_z3950_circulationData_item,
9965       { "CircRecord", "z3950.CircRecord_element",
9966         FT_NONE, BASE_NONE, NULL, 0,
9967         NULL, HFILL }},
9968     { &hf_z3950_enumeration,
9969       { "enumeration", "z3950.enumeration",
9970         FT_STRING, BASE_NONE, NULL, 0,
9971         "InternationalString", HFILL }},
9972     { &hf_z3950_chronology,
9973       { "chronology", "z3950.chronology",
9974         FT_STRING, BASE_NONE, NULL, 0,
9975         "InternationalString", HFILL }},
9976     { &hf_z3950_availableNow,
9977       { "availableNow", "z3950.availableNow",
9978         FT_BOOLEAN, BASE_NONE, NULL, 0,
9979         "BOOLEAN", HFILL }},
9980     { &hf_z3950_availablityDate,
9981       { "availablityDate", "z3950.availablityDate",
9982         FT_STRING, BASE_NONE, NULL, 0,
9983         "InternationalString", HFILL }},
9984     { &hf_z3950_availableThru,
9985       { "availableThru", "z3950.availableThru",
9986         FT_STRING, BASE_NONE, NULL, 0,
9987         "InternationalString", HFILL }},
9988     { &hf_z3950_circRecord_restrictions,
9989       { "restrictions", "z3950.restrictions",
9990         FT_STRING, BASE_NONE, NULL, 0,
9991         "InternationalString", HFILL }},
9992     { &hf_z3950_itemId,
9993       { "itemId", "z3950.itemId",
9994         FT_STRING, BASE_NONE, NULL, 0,
9995         "InternationalString", HFILL }},
9996     { &hf_z3950_renewable,
9997       { "renewable", "z3950.renewable",
9998         FT_BOOLEAN, BASE_NONE, NULL, 0,
9999         "BOOLEAN", HFILL }},
10000     { &hf_z3950_onHold,
10001       { "onHold", "z3950.onHold",
10002         FT_BOOLEAN, BASE_NONE, NULL, 0,
10003         "BOOLEAN", HFILL }},
10004     { &hf_z3950_midspine,
10005       { "midspine", "z3950.midspine",
10006         FT_STRING, BASE_NONE, NULL, 0,
10007         "InternationalString", HFILL }},
10008     { &hf_z3950_temporaryLocation,
10009       { "temporaryLocation", "z3950.temporaryLocation",
10010         FT_STRING, BASE_NONE, NULL, 0,
10011         "InternationalString", HFILL }},
10012     { &hf_z3950_DiagnosticFormat_item,
10013       { "DiagnosticFormat item", "z3950.DiagnosticFormat_item_element",
10014         FT_NONE, BASE_NONE, NULL, 0,
10015         NULL, HFILL }},
10016     { &hf_z3950_diagnosticFormat_item_diagnostic,
10017       { "diagnostic", "z3950.diagnostic",
10018         FT_UINT32, BASE_DEC, VALS(z3950_T_diagnosticFormat_item_diagnostic_vals), 0,
10019         "T_diagnosticFormat_item_diagnostic", HFILL }},
10020     { &hf_z3950_defaultDiagRec,
10021       { "defaultDiagRec", "z3950.defaultDiagRec_element",
10022         FT_NONE, BASE_NONE, NULL, 0,
10023         "DefaultDiagFormat", HFILL }},
10024     { &hf_z3950_explicitDiagnostic,
10025       { "explicitDiagnostic", "z3950.explicitDiagnostic",
10026         FT_UINT32, BASE_DEC, VALS(z3950_DiagFormat_vals), 0,
10027         "DiagFormat", HFILL }},
10028     { &hf_z3950_message,
10029       { "message", "z3950.message",
10030         FT_STRING, BASE_NONE, NULL, 0,
10031         "InternationalString", HFILL }},
10032     { &hf_z3950_tooMany,
10033       { "tooMany", "z3950.tooMany_element",
10034         FT_NONE, BASE_NONE, NULL, 0,
10035         NULL, HFILL }},
10036     { &hf_z3950_tooManyWhat,
10037       { "tooManyWhat", "z3950.tooManyWhat",
10038         FT_INT32, BASE_DEC, VALS(z3950_T_tooManyWhat_vals), 0,
10039         NULL, HFILL }},
10040     { &hf_z3950_max,
10041       { "max", "z3950.max",
10042         FT_INT32, BASE_DEC, NULL, 0,
10043         "INTEGER", HFILL }},
10044     { &hf_z3950_badSpec,
10045       { "badSpec", "z3950.badSpec_element",
10046         FT_NONE, BASE_NONE, NULL, 0,
10047         NULL, HFILL }},
10048     { &hf_z3950_goodOnes,
10049       { "goodOnes", "z3950.goodOnes",
10050         FT_UINT32, BASE_DEC, NULL, 0,
10051         "SEQUENCE_OF_Specification", HFILL }},
10052     { &hf_z3950_goodOnes_item,
10053       { "Specification", "z3950.Specification_element",
10054         FT_NONE, BASE_NONE, NULL, 0,
10055         NULL, HFILL }},
10056     { &hf_z3950_dbUnavail,
10057       { "dbUnavail", "z3950.dbUnavail_element",
10058         FT_NONE, BASE_NONE, NULL, 0,
10059         NULL, HFILL }},
10060     { &hf_z3950_why,
10061       { "why", "z3950.why_element",
10062         FT_NONE, BASE_NONE, NULL, 0,
10063         NULL, HFILL }},
10064     { &hf_z3950_reasonCode,
10065       { "reasonCode", "z3950.reasonCode",
10066         FT_INT32, BASE_DEC, VALS(z3950_T_reasonCode_vals), 0,
10067         NULL, HFILL }},
10068     { &hf_z3950_unSupOp,
10069       { "unSupOp", "z3950.unSupOp",
10070         FT_INT32, BASE_DEC, VALS(z3950_T_unSupOp_vals), 0,
10071         NULL, HFILL }},
10072     { &hf_z3950_attribute,
10073       { "attribute", "z3950.attribute_element",
10074         FT_NONE, BASE_NONE, NULL, 0,
10075         NULL, HFILL }},
10076     { &hf_z3950_id,
10077       { "id", "z3950.id",
10078         FT_OID, BASE_NONE, NULL, 0,
10079         "OBJECT_IDENTIFIER", HFILL }},
10080     { &hf_z3950_type,
10081       { "type", "z3950.type",
10082         FT_INT32, BASE_DEC, NULL, 0,
10083         "INTEGER", HFILL }},
10084     { &hf_z3950_attCombo,
10085       { "attCombo", "z3950.attCombo_element",
10086         FT_NONE, BASE_NONE, NULL, 0,
10087         NULL, HFILL }},
10088     { &hf_z3950_unsupportedCombination,
10089       { "unsupportedCombination", "z3950.unsupportedCombination",
10090         FT_UINT32, BASE_DEC, NULL, 0,
10091         "AttributeList", HFILL }},
10092     { &hf_z3950_recommendedAlternatives,
10093       { "recommendedAlternatives", "z3950.recommendedAlternatives",
10094         FT_UINT32, BASE_DEC, NULL, 0,
10095         "SEQUENCE_OF_AttributeList", HFILL }},
10096     { &hf_z3950_recommendedAlternatives_item,
10097       { "AttributeList", "z3950.AttributeList",
10098         FT_UINT32, BASE_DEC, NULL, 0,
10099         NULL, HFILL }},
10100     { &hf_z3950_diagFormat_term,
10101       { "term", "z3950.term_element",
10102         FT_NONE, BASE_NONE, NULL, 0,
10103         "T_diagFormat_term", HFILL }},
10104     { &hf_z3950_problem,
10105       { "problem", "z3950.problem",
10106         FT_INT32, BASE_DEC, VALS(z3950_T_problem_vals), 0,
10107         NULL, HFILL }},
10108     { &hf_z3950_diagFormat_proximity,
10109       { "proximity", "z3950.proximity",
10110         FT_UINT32, BASE_DEC, VALS(z3950_T_diagFormat_proximity_vals), 0,
10111         "T_diagFormat_proximity", HFILL }},
10112     { &hf_z3950_resultSets,
10113       { "resultSets", "z3950.resultSets_element",
10114         FT_NONE, BASE_NONE, NULL, 0,
10115         NULL, HFILL }},
10116     { &hf_z3950_badSet,
10117       { "badSet", "z3950.badSet",
10118         FT_STRING, BASE_NONE, NULL, 0,
10119         "InternationalString", HFILL }},
10120     { &hf_z3950_relation,
10121       { "relation", "z3950.relation",
10122         FT_INT32, BASE_DEC, NULL, 0,
10123         "INTEGER", HFILL }},
10124     { &hf_z3950_diagFormat_proximity_unit,
10125       { "unit", "z3950.unit",
10126         FT_INT32, BASE_DEC, NULL, 0,
10127         "INTEGER", HFILL }},
10128     { &hf_z3950_diagFormat_proximity_ordered,
10129       { "ordered", "z3950.ordered_element",
10130         FT_NONE, BASE_NONE, NULL, 0,
10131         NULL, HFILL }},
10132     { &hf_z3950_diagFormat_proximity_exclusion,
10133       { "exclusion", "z3950.exclusion_element",
10134         FT_NONE, BASE_NONE, NULL, 0,
10135         NULL, HFILL }},
10136     { &hf_z3950_scan,
10137       { "scan", "z3950.scan",
10138         FT_UINT32, BASE_DEC, VALS(z3950_T_scan_vals), 0,
10139         NULL, HFILL }},
10140     { &hf_z3950_nonZeroStepSize,
10141       { "nonZeroStepSize", "z3950.nonZeroStepSize_element",
10142         FT_NONE, BASE_NONE, NULL, 0,
10143         NULL, HFILL }},
10144     { &hf_z3950_specifiedStepSize,
10145       { "specifiedStepSize", "z3950.specifiedStepSize_element",
10146         FT_NONE, BASE_NONE, NULL, 0,
10147         NULL, HFILL }},
10148     { &hf_z3950_termList1,
10149       { "termList1", "z3950.termList1_element",
10150         FT_NONE, BASE_NONE, NULL, 0,
10151         NULL, HFILL }},
10152     { &hf_z3950_termList2,
10153       { "termList2", "z3950.termList2",
10154         FT_UINT32, BASE_DEC, NULL, 0,
10155         "SEQUENCE_OF_AttributeList", HFILL }},
10156     { &hf_z3950_termList2_item,
10157       { "AttributeList", "z3950.AttributeList",
10158         FT_UINT32, BASE_DEC, NULL, 0,
10159         NULL, HFILL }},
10160     { &hf_z3950_posInResponse,
10161       { "posInResponse", "z3950.posInResponse",
10162         FT_INT32, BASE_DEC, VALS(z3950_T_posInResponse_vals), 0,
10163         NULL, HFILL }},
10164     { &hf_z3950_resources,
10165       { "resources", "z3950.resources_element",
10166         FT_NONE, BASE_NONE, NULL, 0,
10167         NULL, HFILL }},
10168     { &hf_z3950_endOfList,
10169       { "endOfList", "z3950.endOfList_element",
10170         FT_NONE, BASE_NONE, NULL, 0,
10171         NULL, HFILL }},
10172     { &hf_z3950_sort,
10173       { "sort", "z3950.sort",
10174         FT_UINT32, BASE_DEC, VALS(z3950_T_sort_vals), 0,
10175         NULL, HFILL }},
10176     { &hf_z3950_sequence,
10177       { "sequence", "z3950.sequence_element",
10178         FT_NONE, BASE_NONE, NULL, 0,
10179         NULL, HFILL }},
10180     { &hf_z3950_noRsName,
10181       { "noRsName", "z3950.noRsName_element",
10182         FT_NONE, BASE_NONE, NULL, 0,
10183         NULL, HFILL }},
10184     { &hf_z3950_diagFormat_sort_tooMany,
10185       { "tooMany", "z3950.tooMany",
10186         FT_INT32, BASE_DEC, NULL, 0,
10187         "INTEGER", HFILL }},
10188     { &hf_z3950_incompatible,
10189       { "incompatible", "z3950.incompatible_element",
10190         FT_NONE, BASE_NONE, NULL, 0,
10191         NULL, HFILL }},
10192     { &hf_z3950_generic,
10193       { "generic", "z3950.generic_element",
10194         FT_NONE, BASE_NONE, NULL, 0,
10195         NULL, HFILL }},
10196     { &hf_z3950_diagFormat_sort_dbSpecific,
10197       { "dbSpecific", "z3950.dbSpecific_element",
10198         FT_NONE, BASE_NONE, NULL, 0,
10199         NULL, HFILL }},
10200     { &hf_z3950_key,
10201       { "key", "z3950.key",
10202         FT_INT32, BASE_DEC, VALS(z3950_T_key_vals), 0,
10203         NULL, HFILL }},
10204     { &hf_z3950_action,
10205       { "action", "z3950.action_element",
10206         FT_NONE, BASE_NONE, NULL, 0,
10207         NULL, HFILL }},
10208     { &hf_z3950_illegal,
10209       { "illegal", "z3950.illegal",
10210         FT_INT32, BASE_DEC, VALS(z3950_T_illegal_vals), 0,
10211         NULL, HFILL }},
10212     { &hf_z3950_inputTooLarge,
10213       { "inputTooLarge", "z3950.inputTooLarge",
10214         FT_UINT32, BASE_DEC, NULL, 0,
10215         "SEQUENCE_OF_InternationalString", HFILL }},
10216     { &hf_z3950_inputTooLarge_item,
10217       { "InternationalString", "z3950.InternationalString",
10218         FT_STRING, BASE_NONE, NULL, 0,
10219         NULL, HFILL }},
10220     { &hf_z3950_aggregateTooLarge,
10221       { "aggregateTooLarge", "z3950.aggregateTooLarge_element",
10222         FT_NONE, BASE_NONE, NULL, 0,
10223         NULL, HFILL }},
10224     { &hf_z3950_segmentation,
10225       { "segmentation", "z3950.segmentation",
10226         FT_UINT32, BASE_DEC, VALS(z3950_T_segmentation_vals), 0,
10227         NULL, HFILL }},
10228     { &hf_z3950_segmentCount,
10229       { "segmentCount", "z3950.segmentCount_element",
10230         FT_NONE, BASE_NONE, NULL, 0,
10231         NULL, HFILL }},
10232     { &hf_z3950_segmentSize,
10233       { "segmentSize", "z3950.segmentSize",
10234         FT_INT32, BASE_DEC, NULL, 0,
10235         "INTEGER", HFILL }},
10236     { &hf_z3950_extServices,
10237       { "extServices", "z3950.extServices",
10238         FT_UINT32, BASE_DEC, VALS(z3950_T_extServices_vals), 0,
10239         NULL, HFILL }},
10240     { &hf_z3950_req,
10241       { "req", "z3950.req",
10242         FT_INT32, BASE_DEC, VALS(z3950_T_req_vals), 0,
10243         NULL, HFILL }},
10244     { &hf_z3950_permission,
10245       { "permission", "z3950.permission",
10246         FT_INT32, BASE_DEC, VALS(z3950_T_permission_vals), 0,
10247         NULL, HFILL }},
10248     { &hf_z3950_immediate,
10249       { "immediate", "z3950.immediate",
10250         FT_INT32, BASE_DEC, VALS(z3950_T_immediate_vals), 0,
10251         NULL, HFILL }},
10252     { &hf_z3950_accessCtrl,
10253       { "accessCtrl", "z3950.accessCtrl",
10254         FT_UINT32, BASE_DEC, VALS(z3950_T_accessCtrl_vals), 0,
10255         NULL, HFILL }},
10256     { &hf_z3950_noUser,
10257       { "noUser", "z3950.noUser_element",
10258         FT_NONE, BASE_NONE, NULL, 0,
10259         NULL, HFILL }},
10260     { &hf_z3950_refused,
10261       { "refused", "z3950.refused_element",
10262         FT_NONE, BASE_NONE, NULL, 0,
10263         NULL, HFILL }},
10264     { &hf_z3950_diagFormat_accessCtrl_simple,
10265       { "simple", "z3950.simple_element",
10266         FT_NONE, BASE_NONE, NULL, 0,
10267         NULL, HFILL }},
10268     { &hf_z3950_diagFormat_accessCtrl_oid,
10269       { "oid", "z3950.oid",
10270         FT_UINT32, BASE_DEC, NULL, 0,
10271         "T_diagFormat_accessCtrl_oid", HFILL }},
10272     { &hf_z3950_diagFormat_accessCtrl_oid_item,
10273       { "oid item", "z3950.oid_item",
10274         FT_OID, BASE_NONE, NULL, 0,
10275         "OBJECT_IDENTIFIER", HFILL }},
10276     { &hf_z3950_alternative,
10277       { "alternative", "z3950.alternative",
10278         FT_UINT32, BASE_DEC, NULL, 0,
10279         NULL, HFILL }},
10280     { &hf_z3950_alternative_item,
10281       { "alternative item", "z3950.alternative_item",
10282         FT_OID, BASE_NONE, NULL, 0,
10283         "OBJECT_IDENTIFIER", HFILL }},
10284     { &hf_z3950_pwdInv,
10285       { "pwdInv", "z3950.pwdInv_element",
10286         FT_NONE, BASE_NONE, NULL, 0,
10287         NULL, HFILL }},
10288     { &hf_z3950_pwdExp,
10289       { "pwdExp", "z3950.pwdExp_element",
10290         FT_NONE, BASE_NONE, NULL, 0,
10291         NULL, HFILL }},
10292     { &hf_z3950_diagFormat_recordSyntax,
10293       { "recordSyntax", "z3950.recordSyntax_element",
10294         FT_NONE, BASE_NONE, NULL, 0,
10295         "T_diagFormat_recordSyntax", HFILL }},
10296     { &hf_z3950_unsupportedSyntax,
10297       { "unsupportedSyntax", "z3950.unsupportedSyntax",
10298         FT_OID, BASE_NONE, NULL, 0,
10299         "OBJECT_IDENTIFIER", HFILL }},
10300     { &hf_z3950_suggestedAlternatives,
10301       { "suggestedAlternatives", "z3950.suggestedAlternatives",
10302         FT_UINT32, BASE_DEC, NULL, 0,
10303         NULL, HFILL }},
10304     { &hf_z3950_suggestedAlternatives_item,
10305       { "suggestedAlternatives item", "z3950.suggestedAlternatives_item",
10306         FT_OID, BASE_NONE, NULL, 0,
10307         "OBJECT_IDENTIFIER", HFILL }},
10308     { &hf_z3950_targetInfo,
10309       { "targetInfo", "z3950.targetInfo_element",
10310         FT_NONE, BASE_NONE, NULL, 0,
10311         NULL, HFILL }},
10312     { &hf_z3950_databaseInfo,
10313       { "databaseInfo", "z3950.databaseInfo_element",
10314         FT_NONE, BASE_NONE, NULL, 0,
10315         NULL, HFILL }},
10316     { &hf_z3950_schemaInfo,
10317       { "schemaInfo", "z3950.schemaInfo_element",
10318         FT_NONE, BASE_NONE, NULL, 0,
10319         NULL, HFILL }},
10320     { &hf_z3950_tagSetInfo,
10321       { "tagSetInfo", "z3950.tagSetInfo_element",
10322         FT_NONE, BASE_NONE, NULL, 0,
10323         NULL, HFILL }},
10324     { &hf_z3950_recordSyntaxInfo,
10325       { "recordSyntaxInfo", "z3950.recordSyntaxInfo_element",
10326         FT_NONE, BASE_NONE, NULL, 0,
10327         NULL, HFILL }},
10328     { &hf_z3950_attributeSetInfo,
10329       { "attributeSetInfo", "z3950.attributeSetInfo_element",
10330         FT_NONE, BASE_NONE, NULL, 0,
10331         NULL, HFILL }},
10332     { &hf_z3950_termListInfo,
10333       { "termListInfo", "z3950.termListInfo_element",
10334         FT_NONE, BASE_NONE, NULL, 0,
10335         NULL, HFILL }},
10336     { &hf_z3950_extendedServicesInfo,
10337       { "extendedServicesInfo", "z3950.extendedServicesInfo_element",
10338         FT_NONE, BASE_NONE, NULL, 0,
10339         NULL, HFILL }},
10340     { &hf_z3950_attributeDetails,
10341       { "attributeDetails", "z3950.attributeDetails_element",
10342         FT_NONE, BASE_NONE, NULL, 0,
10343         NULL, HFILL }},
10344     { &hf_z3950_termListDetails,
10345       { "termListDetails", "z3950.termListDetails_element",
10346         FT_NONE, BASE_NONE, NULL, 0,
10347         NULL, HFILL }},
10348     { &hf_z3950_elementSetDetails,
10349       { "elementSetDetails", "z3950.elementSetDetails_element",
10350         FT_NONE, BASE_NONE, NULL, 0,
10351         NULL, HFILL }},
10352     { &hf_z3950_retrievalRecordDetails,
10353       { "retrievalRecordDetails", "z3950.retrievalRecordDetails_element",
10354         FT_NONE, BASE_NONE, NULL, 0,
10355         NULL, HFILL }},
10356     { &hf_z3950_sortDetails,
10357       { "sortDetails", "z3950.sortDetails_element",
10358         FT_NONE, BASE_NONE, NULL, 0,
10359         NULL, HFILL }},
10360     { &hf_z3950_processing,
10361       { "processing", "z3950.processing_element",
10362         FT_NONE, BASE_NONE, NULL, 0,
10363         "ProcessingInformation", HFILL }},
10364     { &hf_z3950_variants,
10365       { "variants", "z3950.variants_element",
10366         FT_NONE, BASE_NONE, NULL, 0,
10367         "VariantSetInfo", HFILL }},
10368     { &hf_z3950_units,
10369       { "units", "z3950.units_element",
10370         FT_NONE, BASE_NONE, NULL, 0,
10371         "UnitInfo", HFILL }},
10372     { &hf_z3950_categoryList,
10373       { "categoryList", "z3950.categoryList_element",
10374         FT_NONE, BASE_NONE, NULL, 0,
10375         NULL, HFILL }},
10376     { &hf_z3950_commonInfo,
10377       { "commonInfo", "z3950.commonInfo_element",
10378         FT_NONE, BASE_NONE, NULL, 0,
10379         NULL, HFILL }},
10380     { &hf_z3950_name,
10381       { "name", "z3950.name",
10382         FT_STRING, BASE_NONE, NULL, 0,
10383         "InternationalString", HFILL }},
10384     { &hf_z3950_recent_news,
10385       { "recent-news", "z3950.recent_news",
10386         FT_UINT32, BASE_DEC, NULL, 0,
10387         "HumanString", HFILL }},
10388     { &hf_z3950_icon,
10389       { "icon", "z3950.icon",
10390         FT_UINT32, BASE_DEC, NULL, 0,
10391         "IconObject", HFILL }},
10392     { &hf_z3950_namedResultSets,
10393       { "namedResultSets", "z3950.namedResultSets",
10394         FT_BOOLEAN, BASE_NONE, NULL, 0,
10395         "BOOLEAN", HFILL }},
10396     { &hf_z3950_multipleDBsearch,
10397       { "multipleDBsearch", "z3950.multipleDBsearch",
10398         FT_BOOLEAN, BASE_NONE, NULL, 0,
10399         "BOOLEAN", HFILL }},
10400     { &hf_z3950_maxResultSets,
10401       { "maxResultSets", "z3950.maxResultSets",
10402         FT_INT32, BASE_DEC, NULL, 0,
10403         "INTEGER", HFILL }},
10404     { &hf_z3950_maxResultSize,
10405       { "maxResultSize", "z3950.maxResultSize",
10406         FT_INT32, BASE_DEC, NULL, 0,
10407         "INTEGER", HFILL }},
10408     { &hf_z3950_maxTerms,
10409       { "maxTerms", "z3950.maxTerms",
10410         FT_INT32, BASE_DEC, NULL, 0,
10411         "INTEGER", HFILL }},
10412     { &hf_z3950_timeoutInterval,
10413       { "timeoutInterval", "z3950.timeoutInterval_element",
10414         FT_NONE, BASE_NONE, NULL, 0,
10415         "IntUnit", HFILL }},
10416     { &hf_z3950_welcomeMessage,
10417       { "welcomeMessage", "z3950.welcomeMessage",
10418         FT_UINT32, BASE_DEC, NULL, 0,
10419         "HumanString", HFILL }},
10420     { &hf_z3950_contactInfo,
10421       { "contactInfo", "z3950.contactInfo_element",
10422         FT_NONE, BASE_NONE, NULL, 0,
10423         NULL, HFILL }},
10424     { &hf_z3950_description,
10425       { "description", "z3950.description",
10426         FT_UINT32, BASE_DEC, NULL, 0,
10427         "HumanString", HFILL }},
10428     { &hf_z3950_nicknames,
10429       { "nicknames", "z3950.nicknames",
10430         FT_UINT32, BASE_DEC, NULL, 0,
10431         "SEQUENCE_OF_InternationalString", HFILL }},
10432     { &hf_z3950_nicknames_item,
10433       { "InternationalString", "z3950.InternationalString",
10434         FT_STRING, BASE_NONE, NULL, 0,
10435         NULL, HFILL }},
10436     { &hf_z3950_usage_restrictions,
10437       { "usage-restrictions", "z3950.usage_restrictions",
10438         FT_UINT32, BASE_DEC, NULL, 0,
10439         "HumanString", HFILL }},
10440     { &hf_z3950_paymentAddr,
10441       { "paymentAddr", "z3950.paymentAddr",
10442         FT_UINT32, BASE_DEC, NULL, 0,
10443         "HumanString", HFILL }},
10444     { &hf_z3950_hours,
10445       { "hours", "z3950.hours",
10446         FT_UINT32, BASE_DEC, NULL, 0,
10447         "HumanString", HFILL }},
10448     { &hf_z3950_dbCombinations,
10449       { "dbCombinations", "z3950.dbCombinations",
10450         FT_UINT32, BASE_DEC, NULL, 0,
10451         "SEQUENCE_OF_DatabaseList", HFILL }},
10452     { &hf_z3950_dbCombinations_item,
10453       { "DatabaseList", "z3950.DatabaseList",
10454         FT_UINT32, BASE_DEC, NULL, 0,
10455         NULL, HFILL }},
10456     { &hf_z3950_addresses,
10457       { "addresses", "z3950.addresses",
10458         FT_UINT32, BASE_DEC, NULL, 0,
10459         "SEQUENCE_OF_NetworkAddress", HFILL }},
10460     { &hf_z3950_addresses_item,
10461       { "NetworkAddress", "z3950.NetworkAddress",
10462         FT_UINT32, BASE_DEC, VALS(z3950_NetworkAddress_vals), 0,
10463         NULL, HFILL }},
10464     { &hf_z3950_languages,
10465       { "languages", "z3950.languages",
10466         FT_UINT32, BASE_DEC, NULL, 0,
10467         "SEQUENCE_OF_InternationalString", HFILL }},
10468     { &hf_z3950_languages_item,
10469       { "InternationalString", "z3950.InternationalString",
10470         FT_STRING, BASE_NONE, NULL, 0,
10471         NULL, HFILL }},
10472     { &hf_z3950_commonAccessInfo,
10473       { "commonAccessInfo", "z3950.commonAccessInfo_element",
10474         FT_NONE, BASE_NONE, NULL, 0,
10475         "AccessInfo", HFILL }},
10476     { &hf_z3950_databaseInfo_name,
10477       { "name", "z3950.name",
10478         FT_STRING, BASE_NONE, NULL, 0,
10479         "DatabaseName", HFILL }},
10480     { &hf_z3950_explainDatabase,
10481       { "explainDatabase", "z3950.explainDatabase_element",
10482         FT_NONE, BASE_NONE, NULL, 0,
10483         NULL, HFILL }},
10484     { &hf_z3950_databaseInfo_nicknames,
10485       { "nicknames", "z3950.nicknames",
10486         FT_UINT32, BASE_DEC, NULL, 0,
10487         "SEQUENCE_OF_DatabaseName", HFILL }},
10488     { &hf_z3950_databaseInfo_nicknames_item,
10489       { "DatabaseName", "z3950.DatabaseName",
10490         FT_STRING, BASE_NONE, NULL, 0,
10491         NULL, HFILL }},
10492     { &hf_z3950_user_fee,
10493       { "user-fee", "z3950.user_fee",
10494         FT_BOOLEAN, BASE_NONE, NULL, 0,
10495         "BOOLEAN", HFILL }},
10496     { &hf_z3950_available,
10497       { "available", "z3950.available",
10498         FT_BOOLEAN, BASE_NONE, NULL, 0,
10499         "BOOLEAN", HFILL }},
10500     { &hf_z3950_titleString,
10501       { "titleString", "z3950.titleString",
10502         FT_UINT32, BASE_DEC, NULL, 0,
10503         "HumanString", HFILL }},
10504     { &hf_z3950_keywords,
10505       { "keywords", "z3950.keywords",
10506         FT_UINT32, BASE_DEC, NULL, 0,
10507         "SEQUENCE_OF_HumanString", HFILL }},
10508     { &hf_z3950_keywords_item,
10509       { "HumanString", "z3950.HumanString",
10510         FT_UINT32, BASE_DEC, NULL, 0,
10511         NULL, HFILL }},
10512     { &hf_z3950_associatedDbs,
10513       { "associatedDbs", "z3950.associatedDbs",
10514         FT_UINT32, BASE_DEC, NULL, 0,
10515         "DatabaseList", HFILL }},
10516     { &hf_z3950_subDbs,
10517       { "subDbs", "z3950.subDbs",
10518         FT_UINT32, BASE_DEC, NULL, 0,
10519         "DatabaseList", HFILL }},
10520     { &hf_z3950_disclaimers,
10521       { "disclaimers", "z3950.disclaimers",
10522         FT_UINT32, BASE_DEC, NULL, 0,
10523         "HumanString", HFILL }},
10524     { &hf_z3950_news,
10525       { "news", "z3950.news",
10526         FT_UINT32, BASE_DEC, NULL, 0,
10527         "HumanString", HFILL }},
10528     { &hf_z3950_recordCount,
10529       { "recordCount", "z3950.recordCount",
10530         FT_UINT32, BASE_DEC, VALS(z3950_T_recordCount_vals), 0,
10531         NULL, HFILL }},
10532     { &hf_z3950_actualNumber,
10533       { "actualNumber", "z3950.actualNumber",
10534         FT_INT32, BASE_DEC, NULL, 0,
10535         "INTEGER", HFILL }},
10536     { &hf_z3950_approxNumber,
10537       { "approxNumber", "z3950.approxNumber",
10538         FT_INT32, BASE_DEC, NULL, 0,
10539         "INTEGER", HFILL }},
10540     { &hf_z3950_defaultOrder,
10541       { "defaultOrder", "z3950.defaultOrder",
10542         FT_UINT32, BASE_DEC, NULL, 0,
10543         "HumanString", HFILL }},
10544     { &hf_z3950_avRecordSize,
10545       { "avRecordSize", "z3950.avRecordSize",
10546         FT_INT32, BASE_DEC, NULL, 0,
10547         "INTEGER", HFILL }},
10548     { &hf_z3950_bestTime,
10549       { "bestTime", "z3950.bestTime",
10550         FT_UINT32, BASE_DEC, NULL, 0,
10551         "HumanString", HFILL }},
10552     { &hf_z3950_lastUpdate,
10553       { "lastUpdate", "z3950.lastUpdate",
10554         FT_STRING, BASE_NONE, NULL, 0,
10555         "GeneralizedTime", HFILL }},
10556     { &hf_z3950_updateInterval,
10557       { "updateInterval", "z3950.updateInterval_element",
10558         FT_NONE, BASE_NONE, NULL, 0,
10559         "IntUnit", HFILL }},
10560     { &hf_z3950_coverage,
10561       { "coverage", "z3950.coverage",
10562         FT_UINT32, BASE_DEC, NULL, 0,
10563         "HumanString", HFILL }},
10564     { &hf_z3950_proprietary,
10565       { "proprietary", "z3950.proprietary",
10566         FT_BOOLEAN, BASE_NONE, NULL, 0,
10567         "BOOLEAN", HFILL }},
10568     { &hf_z3950_copyrightText,
10569       { "copyrightText", "z3950.copyrightText",
10570         FT_UINT32, BASE_DEC, NULL, 0,
10571         "HumanString", HFILL }},
10572     { &hf_z3950_copyrightNotice,
10573       { "copyrightNotice", "z3950.copyrightNotice",
10574         FT_UINT32, BASE_DEC, NULL, 0,
10575         "HumanString", HFILL }},
10576     { &hf_z3950_producerContactInfo,
10577       { "producerContactInfo", "z3950.producerContactInfo_element",
10578         FT_NONE, BASE_NONE, NULL, 0,
10579         "ContactInfo", HFILL }},
10580     { &hf_z3950_supplierContactInfo,
10581       { "supplierContactInfo", "z3950.supplierContactInfo_element",
10582         FT_NONE, BASE_NONE, NULL, 0,
10583         "ContactInfo", HFILL }},
10584     { &hf_z3950_submissionContactInfo,
10585       { "submissionContactInfo", "z3950.submissionContactInfo_element",
10586         FT_NONE, BASE_NONE, NULL, 0,
10587         "ContactInfo", HFILL }},
10588     { &hf_z3950_accessInfo,
10589       { "accessInfo", "z3950.accessInfo_element",
10590         FT_NONE, BASE_NONE, NULL, 0,
10591         NULL, HFILL }},
10592     { &hf_z3950_tagTypeMapping,
10593       { "tagTypeMapping", "z3950.tagTypeMapping",
10594         FT_UINT32, BASE_DEC, NULL, 0,
10595         NULL, HFILL }},
10596     { &hf_z3950_tagTypeMapping_item,
10597       { "tagTypeMapping item", "z3950.tagTypeMapping_item_element",
10598         FT_NONE, BASE_NONE, NULL, 0,
10599         NULL, HFILL }},
10600     { &hf_z3950_tagType,
10601       { "tagType", "z3950.tagType",
10602         FT_INT32, BASE_DEC, NULL, 0,
10603         "INTEGER", HFILL }},
10604     { &hf_z3950_tagSet,
10605       { "tagSet", "z3950.tagSet",
10606         FT_OID, BASE_NONE, NULL, 0,
10607         "OBJECT_IDENTIFIER", HFILL }},
10608     { &hf_z3950_defaultTagType,
10609       { "defaultTagType", "z3950.defaultTagType_element",
10610         FT_NONE, BASE_NONE, NULL, 0,
10611         NULL, HFILL }},
10612     { &hf_z3950_recordStructure,
10613       { "recordStructure", "z3950.recordStructure",
10614         FT_UINT32, BASE_DEC, NULL, 0,
10615         "SEQUENCE_OF_ElementInfo", HFILL }},
10616     { &hf_z3950_recordStructure_item,
10617       { "ElementInfo", "z3950.ElementInfo_element",
10618         FT_NONE, BASE_NONE, NULL, 0,
10619         NULL, HFILL }},
10620     { &hf_z3950_elementName,
10621       { "elementName", "z3950.elementName",
10622         FT_STRING, BASE_NONE, NULL, 0,
10623         "InternationalString", HFILL }},
10624     { &hf_z3950_elementTagPath,
10625       { "elementTagPath", "z3950.elementTagPath",
10626         FT_UINT32, BASE_DEC, NULL, 0,
10627         "Path", HFILL }},
10628     { &hf_z3950_elementInfo_dataType,
10629       { "dataType", "z3950.dataType",
10630         FT_UINT32, BASE_DEC, VALS(z3950_ElementDataType_vals), 0,
10631         "ElementDataType", HFILL }},
10632     { &hf_z3950_required,
10633       { "required", "z3950.required",
10634         FT_BOOLEAN, BASE_NONE, NULL, 0,
10635         "BOOLEAN", HFILL }},
10636     { &hf_z3950_repeatable,
10637       { "repeatable", "z3950.repeatable",
10638         FT_BOOLEAN, BASE_NONE, NULL, 0,
10639         "BOOLEAN", HFILL }},
10640     { &hf_z3950_Path_item,
10641       { "Path item", "z3950.Path_item_element",
10642         FT_NONE, BASE_NONE, NULL, 0,
10643         NULL, HFILL }},
10644     { &hf_z3950_tagValue,
10645       { "tagValue", "z3950.tagValue",
10646         FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10647         "StringOrNumeric", HFILL }},
10648     { &hf_z3950_primitive,
10649       { "primitive", "z3950.primitive",
10650         FT_INT32, BASE_DEC, VALS(z3950_PrimitiveDataType_vals), 0,
10651         "PrimitiveDataType", HFILL }},
10652     { &hf_z3950_structured,
10653       { "structured", "z3950.structured",
10654         FT_UINT32, BASE_DEC, NULL, 0,
10655         "SEQUENCE_OF_ElementInfo", HFILL }},
10656     { &hf_z3950_structured_item,
10657       { "ElementInfo", "z3950.ElementInfo_element",
10658         FT_NONE, BASE_NONE, NULL, 0,
10659         NULL, HFILL }},
10660     { &hf_z3950_tagSetInfo_elements,
10661       { "elements", "z3950.elements",
10662         FT_UINT32, BASE_DEC, NULL, 0,
10663         "T_tagSetInfo_elements", HFILL }},
10664     { &hf_z3950_tagSetInfo_elements_item,
10665       { "elements item", "z3950.elements_item_element",
10666         FT_NONE, BASE_NONE, NULL, 0,
10667         "T_tagSetInfo_elements_item", HFILL }},
10668     { &hf_z3950_elementname,
10669       { "elementname", "z3950.elementname",
10670         FT_STRING, BASE_NONE, NULL, 0,
10671         "InternationalString", HFILL }},
10672     { &hf_z3950_elementTag,
10673       { "elementTag", "z3950.elementTag",
10674         FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10675         "StringOrNumeric", HFILL }},
10676     { &hf_z3950_dataType,
10677       { "dataType", "z3950.dataType",
10678         FT_INT32, BASE_DEC, VALS(z3950_PrimitiveDataType_vals), 0,
10679         "PrimitiveDataType", HFILL }},
10680     { &hf_z3950_otherTagInfo,
10681       { "otherTagInfo", "z3950.otherTagInfo",
10682         FT_UINT32, BASE_DEC, NULL, 0,
10683         "OtherInformation", HFILL }},
10684     { &hf_z3950_recordSyntax,
10685       { "recordSyntax", "z3950.recordSyntax",
10686         FT_OID, BASE_NONE, NULL, 0,
10687         "OBJECT_IDENTIFIER", HFILL }},
10688     { &hf_z3950_transferSyntaxes,
10689       { "transferSyntaxes", "z3950.transferSyntaxes",
10690         FT_UINT32, BASE_DEC, NULL, 0,
10691         NULL, HFILL }},
10692     { &hf_z3950_transferSyntaxes_item,
10693       { "transferSyntaxes item", "z3950.transferSyntaxes_item",
10694         FT_OID, BASE_NONE, NULL, 0,
10695         "OBJECT_IDENTIFIER", HFILL }},
10696     { &hf_z3950_asn1Module,
10697       { "asn1Module", "z3950.asn1Module",
10698         FT_STRING, BASE_NONE, NULL, 0,
10699         "InternationalString", HFILL }},
10700     { &hf_z3950_abstractStructure,
10701       { "abstractStructure", "z3950.abstractStructure",
10702         FT_UINT32, BASE_DEC, NULL, 0,
10703         "SEQUENCE_OF_ElementInfo", HFILL }},
10704     { &hf_z3950_abstractStructure_item,
10705       { "ElementInfo", "z3950.ElementInfo_element",
10706         FT_NONE, BASE_NONE, NULL, 0,
10707         NULL, HFILL }},
10708     { &hf_z3950_attributeSetInfo_attributes,
10709       { "attributes", "z3950.attributes",
10710         FT_UINT32, BASE_DEC, NULL, 0,
10711         "SEQUENCE_OF_AttributeType", HFILL }},
10712     { &hf_z3950_attributeSetInfo_attributes_item,
10713       { "AttributeType", "z3950.AttributeType_element",
10714         FT_NONE, BASE_NONE, NULL, 0,
10715         NULL, HFILL }},
10716     { &hf_z3950_attributeType,
10717       { "attributeType", "z3950.attributeType",
10718         FT_INT32, BASE_DEC, NULL, 0,
10719         "INTEGER", HFILL }},
10720     { &hf_z3950_attributeValues,
10721       { "attributeValues", "z3950.attributeValues",
10722         FT_UINT32, BASE_DEC, NULL, 0,
10723         "SEQUENCE_OF_AttributeDescription", HFILL }},
10724     { &hf_z3950_attributeValues_item,
10725       { "AttributeDescription", "z3950.AttributeDescription_element",
10726         FT_NONE, BASE_NONE, NULL, 0,
10727         NULL, HFILL }},
10728     { &hf_z3950_attributeDescription_attributeValue,
10729       { "attributeValue", "z3950.attributeValue",
10730         FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10731         "StringOrNumeric", HFILL }},
10732     { &hf_z3950_equivalentAttributes,
10733       { "equivalentAttributes", "z3950.equivalentAttributes",
10734         FT_UINT32, BASE_DEC, NULL, 0,
10735         "SEQUENCE_OF_StringOrNumeric", HFILL }},
10736     { &hf_z3950_equivalentAttributes_item,
10737       { "StringOrNumeric", "z3950.StringOrNumeric",
10738         FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10739         NULL, HFILL }},
10740     { &hf_z3950_termLists,
10741       { "termLists", "z3950.termLists",
10742         FT_UINT32, BASE_DEC, NULL, 0,
10743         NULL, HFILL }},
10744     { &hf_z3950_termLists_item,
10745       { "termLists item", "z3950.termLists_item_element",
10746         FT_NONE, BASE_NONE, NULL, 0,
10747         NULL, HFILL }},
10748     { &hf_z3950_title,
10749       { "title", "z3950.title",
10750         FT_UINT32, BASE_DEC, NULL, 0,
10751         "HumanString", HFILL }},
10752     { &hf_z3950_searchCost,
10753       { "searchCost", "z3950.searchCost",
10754         FT_INT32, BASE_DEC, VALS(z3950_T_searchCost_vals), 0,
10755         NULL, HFILL }},
10756     { &hf_z3950_scanable,
10757       { "scanable", "z3950.scanable",
10758         FT_BOOLEAN, BASE_NONE, NULL, 0,
10759         "BOOLEAN", HFILL }},
10760     { &hf_z3950_broader,
10761       { "broader", "z3950.broader",
10762         FT_UINT32, BASE_DEC, NULL, 0,
10763         "SEQUENCE_OF_InternationalString", HFILL }},
10764     { &hf_z3950_broader_item,
10765       { "InternationalString", "z3950.InternationalString",
10766         FT_STRING, BASE_NONE, NULL, 0,
10767         NULL, HFILL }},
10768     { &hf_z3950_narrower,
10769       { "narrower", "z3950.narrower",
10770         FT_UINT32, BASE_DEC, NULL, 0,
10771         "SEQUENCE_OF_InternationalString", HFILL }},
10772     { &hf_z3950_narrower_item,
10773       { "InternationalString", "z3950.InternationalString",
10774         FT_STRING, BASE_NONE, NULL, 0,
10775         NULL, HFILL }},
10776     { &hf_z3950_extendedServicesInfo_type,
10777       { "type", "z3950.type",
10778         FT_OID, BASE_NONE, NULL, 0,
10779         "OBJECT_IDENTIFIER", HFILL }},
10780     { &hf_z3950_privateType,
10781       { "privateType", "z3950.privateType",
10782         FT_BOOLEAN, BASE_NONE, NULL, 0,
10783         "BOOLEAN", HFILL }},
10784     { &hf_z3950_restrictionsApply,
10785       { "restrictionsApply", "z3950.restrictionsApply",
10786         FT_BOOLEAN, BASE_NONE, NULL, 0,
10787         "BOOLEAN", HFILL }},
10788     { &hf_z3950_feeApply,
10789       { "feeApply", "z3950.feeApply",
10790         FT_BOOLEAN, BASE_NONE, NULL, 0,
10791         "BOOLEAN", HFILL }},
10792     { &hf_z3950_retentionSupported,
10793       { "retentionSupported", "z3950.retentionSupported",
10794         FT_BOOLEAN, BASE_NONE, NULL, 0,
10795         "BOOLEAN", HFILL }},
10796     { &hf_z3950_extendedServicesInfo_waitAction,
10797       { "waitAction", "z3950.waitAction",
10798         FT_INT32, BASE_DEC, VALS(z3950_T_extendedServicesInfo_waitAction_vals), 0,
10799         "T_extendedServicesInfo_waitAction", HFILL }},
10800     { &hf_z3950_specificExplain,
10801       { "specificExplain", "z3950.specificExplain_element",
10802         FT_NONE, BASE_NONE, NULL, 0,
10803         "EXTERNAL", HFILL }},
10804     { &hf_z3950_esASN,
10805       { "esASN", "z3950.esASN",
10806         FT_STRING, BASE_NONE, NULL, 0,
10807         "InternationalString", HFILL }},
10808     { &hf_z3950_attributesBySet,
10809       { "attributesBySet", "z3950.attributesBySet",
10810         FT_UINT32, BASE_DEC, NULL, 0,
10811         "SEQUENCE_OF_AttributeSetDetails", HFILL }},
10812     { &hf_z3950_attributesBySet_item,
10813       { "AttributeSetDetails", "z3950.AttributeSetDetails_element",
10814         FT_NONE, BASE_NONE, NULL, 0,
10815         NULL, HFILL }},
10816     { &hf_z3950_attributeCombinations,
10817       { "attributeCombinations", "z3950.attributeCombinations_element",
10818         FT_NONE, BASE_NONE, NULL, 0,
10819         NULL, HFILL }},
10820     { &hf_z3950_attributesByType,
10821       { "attributesByType", "z3950.attributesByType",
10822         FT_UINT32, BASE_DEC, NULL, 0,
10823         "SEQUENCE_OF_AttributeTypeDetails", HFILL }},
10824     { &hf_z3950_attributesByType_item,
10825       { "AttributeTypeDetails", "z3950.AttributeTypeDetails_element",
10826         FT_NONE, BASE_NONE, NULL, 0,
10827         NULL, HFILL }},
10828     { &hf_z3950_defaultIfOmitted,
10829       { "defaultIfOmitted", "z3950.defaultIfOmitted_element",
10830         FT_NONE, BASE_NONE, NULL, 0,
10831         "OmittedAttributeInterpretation", HFILL }},
10832     { &hf_z3950_attributeTypeDetails_attributeValues,
10833       { "attributeValues", "z3950.attributeValues",
10834         FT_UINT32, BASE_DEC, NULL, 0,
10835         "SEQUENCE_OF_AttributeValue", HFILL }},
10836     { &hf_z3950_attributeTypeDetails_attributeValues_item,
10837       { "AttributeValue", "z3950.AttributeValue_element",
10838         FT_NONE, BASE_NONE, NULL, 0,
10839         NULL, HFILL }},
10840     { &hf_z3950_defaultValue,
10841       { "defaultValue", "z3950.defaultValue",
10842         FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10843         "StringOrNumeric", HFILL }},
10844     { &hf_z3950_defaultDescription,
10845       { "defaultDescription", "z3950.defaultDescription",
10846         FT_UINT32, BASE_DEC, NULL, 0,
10847         "HumanString", HFILL }},
10848     { &hf_z3950_attributeValue_value,
10849       { "value", "z3950.value",
10850         FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10851         "StringOrNumeric", HFILL }},
10852     { &hf_z3950_subAttributes,
10853       { "subAttributes", "z3950.subAttributes",
10854         FT_UINT32, BASE_DEC, NULL, 0,
10855         "SEQUENCE_OF_StringOrNumeric", HFILL }},
10856     { &hf_z3950_subAttributes_item,
10857       { "StringOrNumeric", "z3950.StringOrNumeric",
10858         FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10859         NULL, HFILL }},
10860     { &hf_z3950_superAttributes,
10861       { "superAttributes", "z3950.superAttributes",
10862         FT_UINT32, BASE_DEC, NULL, 0,
10863         "SEQUENCE_OF_StringOrNumeric", HFILL }},
10864     { &hf_z3950_superAttributes_item,
10865       { "StringOrNumeric", "z3950.StringOrNumeric",
10866         FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10867         NULL, HFILL }},
10868     { &hf_z3950_partialSupport,
10869       { "partialSupport", "z3950.partialSupport_element",
10870         FT_NONE, BASE_NONE, NULL, 0,
10871         NULL, HFILL }},
10872     { &hf_z3950_termListName,
10873       { "termListName", "z3950.termListName",
10874         FT_STRING, BASE_NONE, NULL, 0,
10875         "InternationalString", HFILL }},
10876     { &hf_z3950_termListDetails_attributes,
10877       { "attributes", "z3950.attributes_element",
10878         FT_NONE, BASE_NONE, NULL, 0,
10879         "AttributeCombinations", HFILL }},
10880     { &hf_z3950_scanInfo,
10881       { "scanInfo", "z3950.scanInfo_element",
10882         FT_NONE, BASE_NONE, NULL, 0,
10883         NULL, HFILL }},
10884     { &hf_z3950_maxStepSize,
10885       { "maxStepSize", "z3950.maxStepSize",
10886         FT_INT32, BASE_DEC, NULL, 0,
10887         "INTEGER", HFILL }},
10888     { &hf_z3950_collatingSequence,
10889       { "collatingSequence", "z3950.collatingSequence",
10890         FT_UINT32, BASE_DEC, NULL, 0,
10891         "HumanString", HFILL }},
10892     { &hf_z3950_increasing,
10893       { "increasing", "z3950.increasing",
10894         FT_BOOLEAN, BASE_NONE, NULL, 0,
10895         "BOOLEAN", HFILL }},
10896     { &hf_z3950_estNumberTerms,
10897       { "estNumberTerms", "z3950.estNumberTerms",
10898         FT_INT32, BASE_DEC, NULL, 0,
10899         "INTEGER", HFILL }},
10900     { &hf_z3950_sampleTerms,
10901       { "sampleTerms", "z3950.sampleTerms",
10902         FT_UINT32, BASE_DEC, NULL, 0,
10903         "SEQUENCE_OF_Term", HFILL }},
10904     { &hf_z3950_sampleTerms_item,
10905       { "Term", "z3950.Term",
10906         FT_UINT32, BASE_DEC, VALS(z3950_Term_vals), 0,
10907         NULL, HFILL }},
10908     { &hf_z3950_elementSetDetails_elementSetName,
10909       { "elementSetName", "z3950.elementSetName",
10910         FT_STRING, BASE_NONE, NULL, 0,
10911         NULL, HFILL }},
10912     { &hf_z3950_detailsPerElement,
10913       { "detailsPerElement", "z3950.detailsPerElement",
10914         FT_UINT32, BASE_DEC, NULL, 0,
10915         "SEQUENCE_OF_PerElementDetails", HFILL }},
10916     { &hf_z3950_detailsPerElement_item,
10917       { "PerElementDetails", "z3950.PerElementDetails_element",
10918         FT_NONE, BASE_NONE, NULL, 0,
10919         NULL, HFILL }},
10920     { &hf_z3950_recordTag,
10921       { "recordTag", "z3950.recordTag_element",
10922         FT_NONE, BASE_NONE, NULL, 0,
10923         NULL, HFILL }},
10924     { &hf_z3950_schemaTags,
10925       { "schemaTags", "z3950.schemaTags",
10926         FT_UINT32, BASE_DEC, NULL, 0,
10927         "SEQUENCE_OF_Path", HFILL }},
10928     { &hf_z3950_schemaTags_item,
10929       { "Path", "z3950.Path",
10930         FT_UINT32, BASE_DEC, NULL, 0,
10931         NULL, HFILL }},
10932     { &hf_z3950_maxSize,
10933       { "maxSize", "z3950.maxSize",
10934         FT_INT32, BASE_DEC, NULL, 0,
10935         "INTEGER", HFILL }},
10936     { &hf_z3950_minSize,
10937       { "minSize", "z3950.minSize",
10938         FT_INT32, BASE_DEC, NULL, 0,
10939         "INTEGER", HFILL }},
10940     { &hf_z3950_avgSize,
10941       { "avgSize", "z3950.avgSize",
10942         FT_INT32, BASE_DEC, NULL, 0,
10943         "INTEGER", HFILL }},
10944     { &hf_z3950_fixedSize,
10945       { "fixedSize", "z3950.fixedSize",
10946         FT_INT32, BASE_DEC, NULL, 0,
10947         "INTEGER", HFILL }},
10948     { &hf_z3950_contents,
10949       { "contents", "z3950.contents",
10950         FT_UINT32, BASE_DEC, NULL, 0,
10951         "HumanString", HFILL }},
10952     { &hf_z3950_billingInfo,
10953       { "billingInfo", "z3950.billingInfo",
10954         FT_UINT32, BASE_DEC, NULL, 0,
10955         "HumanString", HFILL }},
10956     { &hf_z3950_restrictions,
10957       { "restrictions", "z3950.restrictions",
10958         FT_UINT32, BASE_DEC, NULL, 0,
10959         "HumanString", HFILL }},
10960     { &hf_z3950_alternateNames,
10961       { "alternateNames", "z3950.alternateNames",
10962         FT_UINT32, BASE_DEC, NULL, 0,
10963         "SEQUENCE_OF_InternationalString", HFILL }},
10964     { &hf_z3950_alternateNames_item,
10965       { "InternationalString", "z3950.InternationalString",
10966         FT_STRING, BASE_NONE, NULL, 0,
10967         NULL, HFILL }},
10968     { &hf_z3950_genericNames,
10969       { "genericNames", "z3950.genericNames",
10970         FT_UINT32, BASE_DEC, NULL, 0,
10971         "SEQUENCE_OF_InternationalString", HFILL }},
10972     { &hf_z3950_genericNames_item,
10973       { "InternationalString", "z3950.InternationalString",
10974         FT_STRING, BASE_NONE, NULL, 0,
10975         NULL, HFILL }},
10976     { &hf_z3950_searchAccess,
10977       { "searchAccess", "z3950.searchAccess_element",
10978         FT_NONE, BASE_NONE, NULL, 0,
10979         "AttributeCombinations", HFILL }},
10980     { &hf_z3950_qualifier,
10981       { "qualifier", "z3950.qualifier",
10982         FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10983         "StringOrNumeric", HFILL }},
10984     { &hf_z3950_sortKeys,
10985       { "sortKeys", "z3950.sortKeys",
10986         FT_UINT32, BASE_DEC, NULL, 0,
10987         "SEQUENCE_OF_SortKeyDetails", HFILL }},
10988     { &hf_z3950_sortKeys_item,
10989       { "SortKeyDetails", "z3950.SortKeyDetails_element",
10990         FT_NONE, BASE_NONE, NULL, 0,
10991         NULL, HFILL }},
10992     { &hf_z3950_elementSpecifications,
10993       { "elementSpecifications", "z3950.elementSpecifications",
10994         FT_UINT32, BASE_DEC, NULL, 0,
10995         "SEQUENCE_OF_Specification", HFILL }},
10996     { &hf_z3950_elementSpecifications_item,
10997       { "Specification", "z3950.Specification_element",
10998         FT_NONE, BASE_NONE, NULL, 0,
10999         NULL, HFILL }},
11000     { &hf_z3950_attributeSpecifications,
11001       { "attributeSpecifications", "z3950.attributeSpecifications_element",
11002         FT_NONE, BASE_NONE, NULL, 0,
11003         "AttributeCombinations", HFILL }},
11004     { &hf_z3950_sortType,
11005       { "sortType", "z3950.sortType",
11006         FT_UINT32, BASE_DEC, VALS(z3950_T_sortType_vals), 0,
11007         NULL, HFILL }},
11008     { &hf_z3950_character,
11009       { "character", "z3950.character_element",
11010         FT_NONE, BASE_NONE, NULL, 0,
11011         NULL, HFILL }},
11012     { &hf_z3950_sortKeyDetails_sortType_numeric,
11013       { "numeric", "z3950.numeric_element",
11014         FT_NONE, BASE_NONE, NULL, 0,
11015         NULL, HFILL }},
11016     { &hf_z3950_sortKeyDetails_sortType_structured,
11017       { "structured", "z3950.structured",
11018         FT_UINT32, BASE_DEC, NULL, 0,
11019         "HumanString", HFILL }},
11020     { &hf_z3950_sortKeyDetails_caseSensitivity,
11021       { "caseSensitivity", "z3950.caseSensitivity",
11022         FT_INT32, BASE_DEC, VALS(z3950_T_sortKeyDetails_caseSensitivity_vals), 0,
11023         "T_sortKeyDetails_caseSensitivity", HFILL }},
11024     { &hf_z3950_processingContext,
11025       { "processingContext", "z3950.processingContext",
11026         FT_INT32, BASE_DEC, VALS(z3950_T_processingContext_vals), 0,
11027         NULL, HFILL }},
11028     { &hf_z3950_instructions,
11029       { "instructions", "z3950.instructions_element",
11030         FT_NONE, BASE_NONE, NULL, 0,
11031         "EXTERNAL", HFILL }},
11032     { &hf_z3950_variantSet,
11033       { "variantSet", "z3950.variantSet",
11034         FT_OID, BASE_NONE, NULL, 0,
11035         "OBJECT_IDENTIFIER", HFILL }},
11036     { &hf_z3950_variantSetInfo_variants,
11037       { "variants", "z3950.variants",
11038         FT_UINT32, BASE_DEC, NULL, 0,
11039         "SEQUENCE_OF_VariantClass", HFILL }},
11040     { &hf_z3950_variantSetInfo_variants_item,
11041       { "VariantClass", "z3950.VariantClass_element",
11042         FT_NONE, BASE_NONE, NULL, 0,
11043         NULL, HFILL }},
11044     { &hf_z3950_variantClass,
11045       { "variantClass", "z3950.variantClass",
11046         FT_INT32, BASE_DEC, NULL, 0,
11047         "INTEGER", HFILL }},
11048     { &hf_z3950_variantTypes,
11049       { "variantTypes", "z3950.variantTypes",
11050         FT_UINT32, BASE_DEC, NULL, 0,
11051         "SEQUENCE_OF_VariantType", HFILL }},
11052     { &hf_z3950_variantTypes_item,
11053       { "VariantType", "z3950.VariantType_element",
11054         FT_NONE, BASE_NONE, NULL, 0,
11055         NULL, HFILL }},
11056     { &hf_z3950_variantType,
11057       { "variantType", "z3950.variantType",
11058         FT_INT32, BASE_DEC, NULL, 0,
11059         "INTEGER", HFILL }},
11060     { &hf_z3950_variantValue,
11061       { "variantValue", "z3950.variantValue_element",
11062         FT_NONE, BASE_NONE, NULL, 0,
11063         NULL, HFILL }},
11064     { &hf_z3950_values,
11065       { "values", "z3950.values",
11066         FT_UINT32, BASE_DEC, VALS(z3950_ValueSet_vals), 0,
11067         "ValueSet", HFILL }},
11068     { &hf_z3950_range,
11069       { "range", "z3950.range_element",
11070         FT_NONE, BASE_NONE, NULL, 0,
11071         "ValueRange", HFILL }},
11072     { &hf_z3950_enumerated,
11073       { "enumerated", "z3950.enumerated",
11074         FT_UINT32, BASE_DEC, NULL, 0,
11075         "SEQUENCE_OF_ValueDescription", HFILL }},
11076     { &hf_z3950_enumerated_item,
11077       { "ValueDescription", "z3950.ValueDescription",
11078         FT_UINT32, BASE_DEC, VALS(z3950_ValueDescription_vals), 0,
11079         NULL, HFILL }},
11080     { &hf_z3950_lower,
11081       { "lower", "z3950.lower",
11082         FT_UINT32, BASE_DEC, VALS(z3950_ValueDescription_vals), 0,
11083         "ValueDescription", HFILL }},
11084     { &hf_z3950_upper,
11085       { "upper", "z3950.upper",
11086         FT_UINT32, BASE_DEC, VALS(z3950_ValueDescription_vals), 0,
11087         "ValueDescription", HFILL }},
11088     { &hf_z3950_integer,
11089       { "integer", "z3950.integer",
11090         FT_INT32, BASE_DEC, NULL, 0,
11091         NULL, HFILL }},
11092     { &hf_z3950_octets,
11093       { "octets", "z3950.octets",
11094         FT_BYTES, BASE_NONE, NULL, 0,
11095         "OCTET_STRING", HFILL }},
11096     { &hf_z3950_valueDescription_unit,
11097       { "unit", "z3950.unit_element",
11098         FT_NONE, BASE_NONE, NULL, 0,
11099         NULL, HFILL }},
11100     { &hf_z3950_valueAndUnit,
11101       { "valueAndUnit", "z3950.valueAndUnit_element",
11102         FT_NONE, BASE_NONE, NULL, 0,
11103         "IntUnit", HFILL }},
11104     { &hf_z3950_unitInfo_units,
11105       { "units", "z3950.units",
11106         FT_UINT32, BASE_DEC, NULL, 0,
11107         "SEQUENCE_OF_UnitType", HFILL }},
11108     { &hf_z3950_unitInfo_units_item,
11109       { "UnitType", "z3950.UnitType_element",
11110         FT_NONE, BASE_NONE, NULL, 0,
11111         NULL, HFILL }},
11112     { &hf_z3950_unitType_units,
11113       { "units", "z3950.units",
11114         FT_UINT32, BASE_DEC, NULL, 0,
11115         "SEQUENCE_OF_Units", HFILL }},
11116     { &hf_z3950_unitType_units_item,
11117       { "Units", "z3950.Units_element",
11118         FT_NONE, BASE_NONE, NULL, 0,
11119         NULL, HFILL }},
11120     { &hf_z3950_categories,
11121       { "categories", "z3950.categories",
11122         FT_UINT32, BASE_DEC, NULL, 0,
11123         "SEQUENCE_OF_CategoryInfo", HFILL }},
11124     { &hf_z3950_categories_item,
11125       { "CategoryInfo", "z3950.CategoryInfo_element",
11126         FT_NONE, BASE_NONE, NULL, 0,
11127         NULL, HFILL }},
11128     { &hf_z3950_categoryInfo_category,
11129       { "category", "z3950.category",
11130         FT_STRING, BASE_NONE, NULL, 0,
11131         "InternationalString", HFILL }},
11132     { &hf_z3950_originalCategory,
11133       { "originalCategory", "z3950.originalCategory",
11134         FT_STRING, BASE_NONE, NULL, 0,
11135         "InternationalString", HFILL }},
11136     { &hf_z3950_dateAdded,
11137       { "dateAdded", "z3950.dateAdded",
11138         FT_STRING, BASE_NONE, NULL, 0,
11139         "GeneralizedTime", HFILL }},
11140     { &hf_z3950_dateChanged,
11141       { "dateChanged", "z3950.dateChanged",
11142         FT_STRING, BASE_NONE, NULL, 0,
11143         "GeneralizedTime", HFILL }},
11144     { &hf_z3950_expiry,
11145       { "expiry", "z3950.expiry",
11146         FT_STRING, BASE_NONE, NULL, 0,
11147         "GeneralizedTime", HFILL }},
11148     { &hf_z3950_humanString_Language,
11149       { "humanString-Language", "z3950.humanString_Language",
11150         FT_STRING, BASE_NONE, NULL, 0,
11151         "LanguageCode", HFILL }},
11152     { &hf_z3950_HumanString_item,
11153       { "HumanString item", "z3950.HumanString_item_element",
11154         FT_NONE, BASE_NONE, NULL, 0,
11155         NULL, HFILL }},
11156     { &hf_z3950_language,
11157       { "language", "z3950.language",
11158         FT_STRING, BASE_NONE, NULL, 0,
11159         "LanguageCode", HFILL }},
11160     { &hf_z3950_text,
11161       { "text", "z3950.text",
11162         FT_STRING, BASE_NONE, NULL, 0,
11163         "InternationalString", HFILL }},
11164     { &hf_z3950_IconObject_item,
11165       { "IconObject item", "z3950.IconObject_item_element",
11166         FT_NONE, BASE_NONE, NULL, 0,
11167         NULL, HFILL }},
11168     { &hf_z3950_bodyType,
11169       { "bodyType", "z3950.bodyType",
11170         FT_UINT32, BASE_DEC, VALS(z3950_T_bodyType_vals), 0,
11171         NULL, HFILL }},
11172     { &hf_z3950_ianaType,
11173       { "ianaType", "z3950.ianaType",
11174         FT_STRING, BASE_NONE, NULL, 0,
11175         "InternationalString", HFILL }},
11176     { &hf_z3950_z3950type,
11177       { "z3950type", "z3950.z3950type",
11178         FT_STRING, BASE_NONE, NULL, 0,
11179         "InternationalString", HFILL }},
11180     { &hf_z3950_otherType,
11181       { "otherType", "z3950.otherType",
11182         FT_STRING, BASE_NONE, NULL, 0,
11183         "InternationalString", HFILL }},
11184     { &hf_z3950_content,
11185       { "content", "z3950.content",
11186         FT_BYTES, BASE_NONE, NULL, 0,
11187         "OCTET_STRING", HFILL }},
11188     { &hf_z3950_address,
11189       { "address", "z3950.address",
11190         FT_UINT32, BASE_DEC, NULL, 0,
11191         "HumanString", HFILL }},
11192     { &hf_z3950_email,
11193       { "email", "z3950.email",
11194         FT_STRING, BASE_NONE, NULL, 0,
11195         "InternationalString", HFILL }},
11196     { &hf_z3950_phone,
11197       { "phone", "z3950.phone",
11198         FT_STRING, BASE_NONE, NULL, 0,
11199         "InternationalString", HFILL }},
11200     { &hf_z3950_internetAddress,
11201       { "internetAddress", "z3950.internetAddress_element",
11202         FT_NONE, BASE_NONE, NULL, 0,
11203         NULL, HFILL }},
11204     { &hf_z3950_hostAddress,
11205       { "hostAddress", "z3950.hostAddress",
11206         FT_STRING, BASE_NONE, NULL, 0,
11207         "InternationalString", HFILL }},
11208     { &hf_z3950_port,
11209       { "port", "z3950.port",
11210         FT_INT32, BASE_DEC, NULL, 0,
11211         "INTEGER", HFILL }},
11212     { &hf_z3950_osiPresentationAddress,
11213       { "osiPresentationAddress", "z3950.osiPresentationAddress_element",
11214         FT_NONE, BASE_NONE, NULL, 0,
11215         NULL, HFILL }},
11216     { &hf_z3950_pSel,
11217       { "pSel", "z3950.pSel",
11218         FT_STRING, BASE_NONE, NULL, 0,
11219         "InternationalString", HFILL }},
11220     { &hf_z3950_sSel,
11221       { "sSel", "z3950.sSel",
11222         FT_STRING, BASE_NONE, NULL, 0,
11223         "InternationalString", HFILL }},
11224     { &hf_z3950_tSel,
11225       { "tSel", "z3950.tSel",
11226         FT_STRING, BASE_NONE, NULL, 0,
11227         "InternationalString", HFILL }},
11228     { &hf_z3950_nSap,
11229       { "nSap", "z3950.nSap",
11230         FT_STRING, BASE_NONE, NULL, 0,
11231         "InternationalString", HFILL }},
11232     { &hf_z3950_networkAddress_other,
11233       { "other", "z3950.other_element",
11234         FT_NONE, BASE_NONE, NULL, 0,
11235         "T_networkAddress_other", HFILL }},
11236     { &hf_z3950_networkAddress_other_type,
11237       { "type", "z3950.type",
11238         FT_STRING, BASE_NONE, NULL, 0,
11239         "InternationalString", HFILL }},
11240     { &hf_z3950_networkAddress_other_address,
11241       { "address", "z3950.address",
11242         FT_STRING, BASE_NONE, NULL, 0,
11243         "InternationalString", HFILL }},
11244     { &hf_z3950_queryTypesSupported,
11245       { "queryTypesSupported", "z3950.queryTypesSupported",
11246         FT_UINT32, BASE_DEC, NULL, 0,
11247         "SEQUENCE_OF_QueryTypeDetails", HFILL }},
11248     { &hf_z3950_queryTypesSupported_item,
11249       { "QueryTypeDetails", "z3950.QueryTypeDetails",
11250         FT_UINT32, BASE_DEC, VALS(z3950_QueryTypeDetails_vals), 0,
11251         NULL, HFILL }},
11252     { &hf_z3950_diagnosticsSets,
11253       { "diagnosticsSets", "z3950.diagnosticsSets",
11254         FT_UINT32, BASE_DEC, NULL, 0,
11255         NULL, HFILL }},
11256     { &hf_z3950_diagnosticsSets_item,
11257       { "diagnosticsSets item", "z3950.diagnosticsSets_item",
11258         FT_OID, BASE_NONE, NULL, 0,
11259         "OBJECT_IDENTIFIER", HFILL }},
11260     { &hf_z3950_attributeSetIds,
11261       { "attributeSetIds", "z3950.attributeSetIds",
11262         FT_UINT32, BASE_DEC, NULL, 0,
11263         "SEQUENCE_OF_AttributeSetId", HFILL }},
11264     { &hf_z3950_attributeSetIds_item,
11265       { "AttributeSetId", "z3950.AttributeSetId",
11266         FT_OID, BASE_NONE, NULL, 0,
11267         NULL, HFILL }},
11268     { &hf_z3950_schemas,
11269       { "schemas", "z3950.schemas",
11270         FT_UINT32, BASE_DEC, NULL, 0,
11271         NULL, HFILL }},
11272     { &hf_z3950_schemas_item,
11273       { "schemas item", "z3950.schemas_item",
11274         FT_OID, BASE_NONE, NULL, 0,
11275         "OBJECT_IDENTIFIER", HFILL }},
11276     { &hf_z3950_recordSyntaxes,
11277       { "recordSyntaxes", "z3950.recordSyntaxes",
11278         FT_UINT32, BASE_DEC, NULL, 0,
11279         NULL, HFILL }},
11280     { &hf_z3950_recordSyntaxes_item,
11281       { "recordSyntaxes item", "z3950.recordSyntaxes_item",
11282         FT_OID, BASE_NONE, NULL, 0,
11283         "OBJECT_IDENTIFIER", HFILL }},
11284     { &hf_z3950_resourceChallenges,
11285       { "resourceChallenges", "z3950.resourceChallenges",
11286         FT_UINT32, BASE_DEC, NULL, 0,
11287         NULL, HFILL }},
11288     { &hf_z3950_resourceChallenges_item,
11289       { "resourceChallenges item", "z3950.resourceChallenges_item",
11290         FT_OID, BASE_NONE, NULL, 0,
11291         "OBJECT_IDENTIFIER", HFILL }},
11292     { &hf_z3950_restrictedAccess,
11293       { "restrictedAccess", "z3950.restrictedAccess",
11294         FT_UINT32, BASE_DEC, NULL, 0,
11295         "AccessRestrictions", HFILL }},
11296     { &hf_z3950_costInfo,
11297       { "costInfo", "z3950.costInfo_element",
11298         FT_NONE, BASE_NONE, NULL, 0,
11299         "Costs", HFILL }},
11300     { &hf_z3950_variantSets,
11301       { "variantSets", "z3950.variantSets",
11302         FT_UINT32, BASE_DEC, NULL, 0,
11303         NULL, HFILL }},
11304     { &hf_z3950_variantSets_item,
11305       { "variantSets item", "z3950.variantSets_item",
11306         FT_OID, BASE_NONE, NULL, 0,
11307         "OBJECT_IDENTIFIER", HFILL }},
11308     { &hf_z3950_elementSetNames,
11309       { "elementSetNames", "z3950.elementSetNames",
11310         FT_UINT32, BASE_DEC, NULL, 0,
11311         "SEQUENCE_OF_ElementSetName", HFILL }},
11312     { &hf_z3950_elementSetNames_item,
11313       { "ElementSetName", "z3950.ElementSetName",
11314         FT_STRING, BASE_NONE, NULL, 0,
11315         NULL, HFILL }},
11316     { &hf_z3950_unitSystems,
11317       { "unitSystems", "z3950.unitSystems",
11318         FT_UINT32, BASE_DEC, NULL, 0,
11319         "SEQUENCE_OF_InternationalString", HFILL }},
11320     { &hf_z3950_unitSystems_item,
11321       { "InternationalString", "z3950.InternationalString",
11322         FT_STRING, BASE_NONE, NULL, 0,
11323         NULL, HFILL }},
11324     { &hf_z3950_queryTypeDetails_private,
11325       { "private", "z3950.private_element",
11326         FT_NONE, BASE_NONE, NULL, 0,
11327         "PrivateCapabilities", HFILL }},
11328     { &hf_z3950_queryTypeDetails_rpn,
11329       { "rpn", "z3950.rpn_element",
11330         FT_NONE, BASE_NONE, NULL, 0,
11331         "RpnCapabilities", HFILL }},
11332     { &hf_z3950_iso8777,
11333       { "iso8777", "z3950.iso8777_element",
11334         FT_NONE, BASE_NONE, NULL, 0,
11335         "Iso8777Capabilities", HFILL }},
11336     { &hf_z3950_z39_58,
11337       { "z39-58", "z3950.z39_58",
11338         FT_UINT32, BASE_DEC, NULL, 0,
11339         "HumanString", HFILL }},
11340     { &hf_z3950_erpn,
11341       { "erpn", "z3950.erpn_element",
11342         FT_NONE, BASE_NONE, NULL, 0,
11343         "RpnCapabilities", HFILL }},
11344     { &hf_z3950_rankedList,
11345       { "rankedList", "z3950.rankedList",
11346         FT_UINT32, BASE_DEC, NULL, 0,
11347         "HumanString", HFILL }},
11348     { &hf_z3950_privateCapabilities_operators,
11349       { "operators", "z3950.operators",
11350         FT_UINT32, BASE_DEC, NULL, 0,
11351         "T_privateCapabilities_operators", HFILL }},
11352     { &hf_z3950_privateCapabilities_operators_item,
11353       { "operators item", "z3950.operators_item_element",
11354         FT_NONE, BASE_NONE, NULL, 0,
11355         "T_privateCapabilities_operators_item", HFILL }},
11356     { &hf_z3950_operator,
11357       { "operator", "z3950.operator",
11358         FT_STRING, BASE_NONE, NULL, 0,
11359         "InternationalString", HFILL }},
11360     { &hf_z3950_searchKeys,
11361       { "searchKeys", "z3950.searchKeys",
11362         FT_UINT32, BASE_DEC, NULL, 0,
11363         "SEQUENCE_OF_SearchKey", HFILL }},
11364     { &hf_z3950_searchKeys_item,
11365       { "SearchKey", "z3950.SearchKey_element",
11366         FT_NONE, BASE_NONE, NULL, 0,
11367         NULL, HFILL }},
11368     { &hf_z3950_privateCapabilities_description,
11369       { "description", "z3950.description",
11370         FT_UINT32, BASE_DEC, NULL, 0,
11371         "SEQUENCE_OF_HumanString", HFILL }},
11372     { &hf_z3950_privateCapabilities_description_item,
11373       { "HumanString", "z3950.HumanString",
11374         FT_UINT32, BASE_DEC, NULL, 0,
11375         NULL, HFILL }},
11376     { &hf_z3950_operators,
11377       { "operators", "z3950.operators",
11378         FT_UINT32, BASE_DEC, NULL, 0,
11379         NULL, HFILL }},
11380     { &hf_z3950_operators_item,
11381       { "operators item", "z3950.operators_item",
11382         FT_INT32, BASE_DEC, NULL, 0,
11383         "INTEGER", HFILL }},
11384     { &hf_z3950_resultSetAsOperandSupported,
11385       { "resultSetAsOperandSupported", "z3950.resultSetAsOperandSupported",
11386         FT_BOOLEAN, BASE_NONE, NULL, 0,
11387         "BOOLEAN", HFILL }},
11388     { &hf_z3950_restrictionOperandSupported,
11389       { "restrictionOperandSupported", "z3950.restrictionOperandSupported",
11390         FT_BOOLEAN, BASE_NONE, NULL, 0,
11391         "BOOLEAN", HFILL }},
11392     { &hf_z3950_proximity,
11393       { "proximity", "z3950.proximity_element",
11394         FT_NONE, BASE_NONE, NULL, 0,
11395         "ProximitySupport", HFILL }},
11396     { &hf_z3950_anySupport,
11397       { "anySupport", "z3950.anySupport",
11398         FT_BOOLEAN, BASE_NONE, NULL, 0,
11399         "BOOLEAN", HFILL }},
11400     { &hf_z3950_unitsSupported,
11401       { "unitsSupported", "z3950.unitsSupported",
11402         FT_UINT32, BASE_DEC, NULL, 0,
11403         NULL, HFILL }},
11404     { &hf_z3950_unitsSupported_item,
11405       { "unitsSupported item", "z3950.unitsSupported_item",
11406         FT_UINT32, BASE_DEC, VALS(z3950_T_unitsSupported_item_vals), 0,
11407         NULL, HFILL }},
11408     { &hf_z3950_proximitySupport_unitsSupported_item_known,
11409       { "known", "z3950.known",
11410         FT_INT32, BASE_DEC, NULL, 0,
11411         "INTEGER", HFILL }},
11412     { &hf_z3950_proximitySupport_unitsSupported_item_private,
11413       { "private", "z3950.private_element",
11414         FT_NONE, BASE_NONE, NULL, 0,
11415         "T_proximitySupport_unitsSupported_item_private", HFILL }},
11416     { &hf_z3950_proximitySupport_unitsSupported_item_private_unit,
11417       { "unit", "z3950.unit",
11418         FT_INT32, BASE_DEC, NULL, 0,
11419         "INTEGER", HFILL }},
11420     { &hf_z3950_searchKey,
11421       { "searchKey", "z3950.searchKey",
11422         FT_STRING, BASE_NONE, NULL, 0,
11423         "InternationalString", HFILL }},
11424     { &hf_z3950_AccessRestrictions_item,
11425       { "AccessRestrictions item", "z3950.AccessRestrictions_item_element",
11426         FT_NONE, BASE_NONE, NULL, 0,
11427         NULL, HFILL }},
11428     { &hf_z3950_accessType,
11429       { "accessType", "z3950.accessType",
11430         FT_INT32, BASE_DEC, VALS(z3950_T_accessType_vals), 0,
11431         NULL, HFILL }},
11432     { &hf_z3950_accessText,
11433       { "accessText", "z3950.accessText",
11434         FT_UINT32, BASE_DEC, NULL, 0,
11435         "HumanString", HFILL }},
11436     { &hf_z3950_accessChallenges,
11437       { "accessChallenges", "z3950.accessChallenges",
11438         FT_UINT32, BASE_DEC, NULL, 0,
11439         NULL, HFILL }},
11440     { &hf_z3950_accessChallenges_item,
11441       { "accessChallenges item", "z3950.accessChallenges_item",
11442         FT_OID, BASE_NONE, NULL, 0,
11443         "OBJECT_IDENTIFIER", HFILL }},
11444     { &hf_z3950_connectCharge,
11445       { "connectCharge", "z3950.connectCharge_element",
11446         FT_NONE, BASE_NONE, NULL, 0,
11447         "Charge", HFILL }},
11448     { &hf_z3950_connectTime,
11449       { "connectTime", "z3950.connectTime_element",
11450         FT_NONE, BASE_NONE, NULL, 0,
11451         "Charge", HFILL }},
11452     { &hf_z3950_displayCharge,
11453       { "displayCharge", "z3950.displayCharge_element",
11454         FT_NONE, BASE_NONE, NULL, 0,
11455         "Charge", HFILL }},
11456     { &hf_z3950_searchCharge,
11457       { "searchCharge", "z3950.searchCharge_element",
11458         FT_NONE, BASE_NONE, NULL, 0,
11459         "Charge", HFILL }},
11460     { &hf_z3950_subscriptCharge,
11461       { "subscriptCharge", "z3950.subscriptCharge_element",
11462         FT_NONE, BASE_NONE, NULL, 0,
11463         "Charge", HFILL }},
11464     { &hf_z3950_otherCharges,
11465       { "otherCharges", "z3950.otherCharges",
11466         FT_UINT32, BASE_DEC, NULL, 0,
11467         NULL, HFILL }},
11468     { &hf_z3950_otherCharges_item,
11469       { "otherCharges item", "z3950.otherCharges_item_element",
11470         FT_NONE, BASE_NONE, NULL, 0,
11471         NULL, HFILL }},
11472     { &hf_z3950_forWhat,
11473       { "forWhat", "z3950.forWhat",
11474         FT_UINT32, BASE_DEC, NULL, 0,
11475         "HumanString", HFILL }},
11476     { &hf_z3950_charge,
11477       { "charge", "z3950.charge_element",
11478         FT_NONE, BASE_NONE, NULL, 0,
11479         NULL, HFILL }},
11480     { &hf_z3950_cost,
11481       { "cost", "z3950.cost_element",
11482         FT_NONE, BASE_NONE, NULL, 0,
11483         "IntUnit", HFILL }},
11484     { &hf_z3950_perWhat,
11485       { "perWhat", "z3950.perWhat_element",
11486         FT_NONE, BASE_NONE, NULL, 0,
11487         "Unit", HFILL }},
11488     { &hf_z3950_charge_text,
11489       { "text", "z3950.text",
11490         FT_UINT32, BASE_DEC, NULL, 0,
11491         "HumanString", HFILL }},
11492     { &hf_z3950_DatabaseList_item,
11493       { "DatabaseName", "z3950.DatabaseName",
11494         FT_STRING, BASE_NONE, NULL, 0,
11495         NULL, HFILL }},
11496     { &hf_z3950_defaultAttributeSet,
11497       { "defaultAttributeSet", "z3950.defaultAttributeSet",
11498         FT_OID, BASE_NONE, NULL, 0,
11499         "AttributeSetId", HFILL }},
11500     { &hf_z3950_legalCombinations,
11501       { "legalCombinations", "z3950.legalCombinations",
11502         FT_UINT32, BASE_DEC, NULL, 0,
11503         "SEQUENCE_OF_AttributeCombination", HFILL }},
11504     { &hf_z3950_legalCombinations_item,
11505       { "AttributeCombination", "z3950.AttributeCombination",
11506         FT_UINT32, BASE_DEC, NULL, 0,
11507         NULL, HFILL }},
11508     { &hf_z3950_AttributeCombination_item,
11509       { "AttributeOccurrence", "z3950.AttributeOccurrence_element",
11510         FT_NONE, BASE_NONE, NULL, 0,
11511         NULL, HFILL }},
11512     { &hf_z3950_mustBeSupplied,
11513       { "mustBeSupplied", "z3950.mustBeSupplied_element",
11514         FT_NONE, BASE_NONE, NULL, 0,
11515         NULL, HFILL }},
11516     { &hf_z3950_attributeOccurrence_attributeValues,
11517       { "attributeValues", "z3950.attributeValues",
11518         FT_UINT32, BASE_DEC, VALS(z3950_T_attributeOccurrence_attributeValues_vals), 0,
11519         "T_attributeOccurrence_attributeValues", HFILL }},
11520     { &hf_z3950_any_or_none,
11521       { "any-or-none", "z3950.any_or_none_element",
11522         FT_NONE, BASE_NONE, NULL, 0,
11523         NULL, HFILL }},
11524     { &hf_z3950_specific,
11525       { "specific", "z3950.specific",
11526         FT_UINT32, BASE_DEC, NULL, 0,
11527         "SEQUENCE_OF_StringOrNumeric", HFILL }},
11528     { &hf_z3950_specific_item,
11529       { "StringOrNumeric", "z3950.StringOrNumeric",
11530         FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
11531         NULL, HFILL }},
11532     { &hf_z3950_briefBib_title,
11533       { "title", "z3950.title",
11534         FT_STRING, BASE_NONE, NULL, 0,
11535         "InternationalString", HFILL }},
11536     { &hf_z3950_author,
11537       { "author", "z3950.author",
11538         FT_STRING, BASE_NONE, NULL, 0,
11539         "InternationalString", HFILL }},
11540     { &hf_z3950_recordType,
11541       { "recordType", "z3950.recordType",
11542         FT_STRING, BASE_NONE, NULL, 0,
11543         "InternationalString", HFILL }},
11544     { &hf_z3950_bibliographicLevel,
11545       { "bibliographicLevel", "z3950.bibliographicLevel",
11546         FT_STRING, BASE_NONE, NULL, 0,
11547         "InternationalString", HFILL }},
11548     { &hf_z3950_briefBib_format,
11549       { "format", "z3950.format",
11550         FT_UINT32, BASE_DEC, NULL, 0,
11551         "SEQUENCE_OF_FormatSpec", HFILL }},
11552     { &hf_z3950_briefBib_format_item,
11553       { "FormatSpec", "z3950.FormatSpec_element",
11554         FT_NONE, BASE_NONE, NULL, 0,
11555         NULL, HFILL }},
11556     { &hf_z3950_publicationPlace,
11557       { "publicationPlace", "z3950.publicationPlace",
11558         FT_STRING, BASE_NONE, NULL, 0,
11559         "InternationalString", HFILL }},
11560     { &hf_z3950_publicationDate,
11561       { "publicationDate", "z3950.publicationDate",
11562         FT_STRING, BASE_NONE, NULL, 0,
11563         "InternationalString", HFILL }},
11564     { &hf_z3950_targetSystemKey,
11565       { "targetSystemKey", "z3950.targetSystemKey",
11566         FT_STRING, BASE_NONE, NULL, 0,
11567         "InternationalString", HFILL }},
11568     { &hf_z3950_satisfyingElement,
11569       { "satisfyingElement", "z3950.satisfyingElement",
11570         FT_STRING, BASE_NONE, NULL, 0,
11571         "InternationalString", HFILL }},
11572     { &hf_z3950_rank,
11573       { "rank", "z3950.rank",
11574         FT_INT32, BASE_DEC, NULL, 0,
11575         "INTEGER", HFILL }},
11576     { &hf_z3950_documentId,
11577       { "documentId", "z3950.documentId",
11578         FT_STRING, BASE_NONE, NULL, 0,
11579         "InternationalString", HFILL }},
11580     { &hf_z3950_abstract,
11581       { "abstract", "z3950.abstract",
11582         FT_STRING, BASE_NONE, NULL, 0,
11583         "InternationalString", HFILL }},
11584     { &hf_z3950_formatSpec_type,
11585       { "type", "z3950.type",
11586         FT_STRING, BASE_NONE, NULL, 0,
11587         "InternationalString", HFILL }},
11588     { &hf_z3950_size,
11589       { "size", "z3950.size",
11590         FT_INT32, BASE_DEC, NULL, 0,
11591         "INTEGER", HFILL }},
11592     { &hf_z3950_bestPosn,
11593       { "bestPosn", "z3950.bestPosn",
11594         FT_INT32, BASE_DEC, NULL, 0,
11595         "INTEGER", HFILL }},
11596     { &hf_z3950_GenericRecord_item,
11597       { "TaggedElement", "z3950.TaggedElement_element",
11598         FT_NONE, BASE_NONE, NULL, 0,
11599         NULL, HFILL }},
11600     { &hf_z3950_tagOccurrence,
11601       { "tagOccurrence", "z3950.tagOccurrence",
11602         FT_INT32, BASE_DEC, NULL, 0,
11603         "INTEGER", HFILL }},
11604     { &hf_z3950_taggedElement_content,
11605       { "content", "z3950.content",
11606         FT_UINT32, BASE_DEC, VALS(z3950_ElementData_vals), 0,
11607         "ElementData", HFILL }},
11608     { &hf_z3950_metaData,
11609       { "metaData", "z3950.metaData_element",
11610         FT_NONE, BASE_NONE, NULL, 0,
11611         "ElementMetaData", HFILL }},
11612     { &hf_z3950_appliedVariant,
11613       { "appliedVariant", "z3950.appliedVariant_element",
11614         FT_NONE, BASE_NONE, NULL, 0,
11615         "Variant", HFILL }},
11616     { &hf_z3950_date,
11617       { "date", "z3950.date",
11618         FT_STRING, BASE_NONE, NULL, 0,
11619         "GeneralizedTime", HFILL }},
11620     { &hf_z3950_ext,
11621       { "ext", "z3950.ext_element",
11622         FT_NONE, BASE_NONE, NULL, 0,
11623         "EXTERNAL", HFILL }},
11624     { &hf_z3950_trueOrFalse,
11625       { "trueOrFalse", "z3950.trueOrFalse",
11626         FT_BOOLEAN, BASE_NONE, NULL, 0,
11627         "BOOLEAN", HFILL }},
11628     { &hf_z3950_intUnit,
11629       { "intUnit", "z3950.intUnit_element",
11630         FT_NONE, BASE_NONE, NULL, 0,
11631         NULL, HFILL }},
11632     { &hf_z3950_elementNotThere,
11633       { "elementNotThere", "z3950.elementNotThere_element",
11634         FT_NONE, BASE_NONE, NULL, 0,
11635         NULL, HFILL }},
11636     { &hf_z3950_elementEmpty,
11637       { "elementEmpty", "z3950.elementEmpty_element",
11638         FT_NONE, BASE_NONE, NULL, 0,
11639         NULL, HFILL }},
11640     { &hf_z3950_noDataRequested,
11641       { "noDataRequested", "z3950.noDataRequested_element",
11642         FT_NONE, BASE_NONE, NULL, 0,
11643         NULL, HFILL }},
11644     { &hf_z3950_elementData_diagnostic,
11645       { "diagnostic", "z3950.diagnostic_element",
11646         FT_NONE, BASE_NONE, NULL, 0,
11647         "EXTERNAL", HFILL }},
11648     { &hf_z3950_subtree,
11649       { "subtree", "z3950.subtree",
11650         FT_UINT32, BASE_DEC, NULL, 0,
11651         "SEQUENCE_OF_TaggedElement", HFILL }},
11652     { &hf_z3950_subtree_item,
11653       { "TaggedElement", "z3950.TaggedElement_element",
11654         FT_NONE, BASE_NONE, NULL, 0,
11655         NULL, HFILL }},
11656     { &hf_z3950_seriesOrder,
11657       { "seriesOrder", "z3950.seriesOrder_element",
11658         FT_NONE, BASE_NONE, NULL, 0,
11659         "Order", HFILL }},
11660     { &hf_z3950_usageRight,
11661       { "usageRight", "z3950.usageRight_element",
11662         FT_NONE, BASE_NONE, NULL, 0,
11663         "Usage", HFILL }},
11664     { &hf_z3950_hits,
11665       { "hits", "z3950.hits",
11666         FT_UINT32, BASE_DEC, NULL, 0,
11667         "SEQUENCE_OF_HitVector", HFILL }},
11668     { &hf_z3950_hits_item,
11669       { "HitVector", "z3950.HitVector_element",
11670         FT_NONE, BASE_NONE, NULL, 0,
11671         NULL, HFILL }},
11672     { &hf_z3950_displayName,
11673       { "displayName", "z3950.displayName",
11674         FT_STRING, BASE_NONE, NULL, 0,
11675         "InternationalString", HFILL }},
11676     { &hf_z3950_supportedVariants,
11677       { "supportedVariants", "z3950.supportedVariants",
11678         FT_UINT32, BASE_DEC, NULL, 0,
11679         "SEQUENCE_OF_Variant", HFILL }},
11680     { &hf_z3950_supportedVariants_item,
11681       { "Variant", "z3950.Variant_element",
11682         FT_NONE, BASE_NONE, NULL, 0,
11683         NULL, HFILL }},
11684     { &hf_z3950_elementDescriptor,
11685       { "elementDescriptor", "z3950.elementDescriptor",
11686         FT_BYTES, BASE_NONE, NULL, 0,
11687         "OCTET_STRING", HFILL }},
11688     { &hf_z3950_surrogateFor,
11689       { "surrogateFor", "z3950.surrogateFor",
11690         FT_UINT32, BASE_DEC, NULL, 0,
11691         "TagPath", HFILL }},
11692     { &hf_z3950_surrogateElement,
11693       { "surrogateElement", "z3950.surrogateElement",
11694         FT_UINT32, BASE_DEC, NULL, 0,
11695         "TagPath", HFILL }},
11696     { &hf_z3950_TagPath_item,
11697       { "TagPath item", "z3950.TagPath_item_element",
11698         FT_NONE, BASE_NONE, NULL, 0,
11699         NULL, HFILL }},
11700     { &hf_z3950_ascending,
11701       { "ascending", "z3950.ascending",
11702         FT_BOOLEAN, BASE_NONE, NULL, 0,
11703         "BOOLEAN", HFILL }},
11704     { &hf_z3950_order,
11705       { "order", "z3950.order",
11706         FT_INT32, BASE_DEC, NULL, 0,
11707         "INTEGER", HFILL }},
11708     { &hf_z3950_usage_type,
11709       { "type", "z3950.type",
11710         FT_INT32, BASE_DEC, VALS(z3950_T_usage_type_vals), 0,
11711         "T_usage_type", HFILL }},
11712     { &hf_z3950_restriction,
11713       { "restriction", "z3950.restriction",
11714         FT_STRING, BASE_NONE, NULL, 0,
11715         "InternationalString", HFILL }},
11716     { &hf_z3950_satisfier,
11717       { "satisfier", "z3950.satisfier",
11718         FT_UINT32, BASE_DEC, VALS(z3950_Term_vals), 0,
11719         "Term", HFILL }},
11720     { &hf_z3950_offsetIntoElement,
11721       { "offsetIntoElement", "z3950.offsetIntoElement_element",
11722         FT_NONE, BASE_NONE, NULL, 0,
11723         "IntUnit", HFILL }},
11724     { &hf_z3950_length,
11725       { "length", "z3950.length_element",
11726         FT_NONE, BASE_NONE, NULL, 0,
11727         "IntUnit", HFILL }},
11728     { &hf_z3950_hitRank,
11729       { "hitRank", "z3950.hitRank",
11730         FT_INT32, BASE_DEC, NULL, 0,
11731         "INTEGER", HFILL }},
11732     { &hf_z3950_targetToken,
11733       { "targetToken", "z3950.targetToken",
11734         FT_BYTES, BASE_NONE, NULL, 0,
11735         "OCTET_STRING", HFILL }},
11736     { &hf_z3950_globalVariantSetId,
11737       { "globalVariantSetId", "z3950.globalVariantSetId",
11738         FT_OID, BASE_NONE, NULL, 0,
11739         "OBJECT_IDENTIFIER", HFILL }},
11740     { &hf_z3950_triples,
11741       { "triples", "z3950.triples",
11742         FT_UINT32, BASE_DEC, NULL, 0,
11743         NULL, HFILL }},
11744     { &hf_z3950_triples_item,
11745       { "triples item", "z3950.triples_item_element",
11746         FT_NONE, BASE_NONE, NULL, 0,
11747         NULL, HFILL }},
11748     { &hf_z3950_variantSetId,
11749       { "variantSetId", "z3950.variantSetId",
11750         FT_OID, BASE_NONE, NULL, 0,
11751         "OBJECT_IDENTIFIER", HFILL }},
11752     { &hf_z3950_class,
11753       { "class", "z3950.class",
11754         FT_INT32, BASE_DEC, NULL, 0,
11755         "INTEGER", HFILL }},
11756     { &hf_z3950_variant_triples_item_value,
11757       { "value", "z3950.value",
11758         FT_UINT32, BASE_DEC, VALS(z3950_T_variant_triples_item_value_vals), 0,
11759         "T_variant_triples_item_value", HFILL }},
11760     { &hf_z3950_octetString,
11761       { "octetString", "z3950.octetString",
11762         FT_BYTES, BASE_NONE, NULL, 0,
11763         "OCTET_STRING", HFILL }},
11764     { &hf_z3950_boolean,
11765       { "boolean", "z3950.boolean",
11766         FT_BOOLEAN, BASE_NONE, NULL, 0,
11767         NULL, HFILL }},
11768     { &hf_z3950_variant_triples_item_value_unit,
11769       { "unit", "z3950.unit_element",
11770         FT_NONE, BASE_NONE, NULL, 0,
11771         NULL, HFILL }},
11772     { &hf_z3950_taskPackage_description,
11773       { "description", "z3950.description",
11774         FT_STRING, BASE_NONE, NULL, 0,
11775         "InternationalString", HFILL }},
11776     { &hf_z3950_targetReference,
11777       { "targetReference", "z3950.targetReference",
11778         FT_BYTES, BASE_NONE, NULL, 0,
11779         "OCTET_STRING", HFILL }},
11780     { &hf_z3950_creationDateTime,
11781       { "creationDateTime", "z3950.creationDateTime",
11782         FT_STRING, BASE_NONE, NULL, 0,
11783         "GeneralizedTime", HFILL }},
11784     { &hf_z3950_taskStatus,
11785       { "taskStatus", "z3950.taskStatus",
11786         FT_INT32, BASE_DEC, VALS(z3950_T_taskStatus_vals), 0,
11787         NULL, HFILL }},
11788     { &hf_z3950_packageDiagnostics,
11789       { "packageDiagnostics", "z3950.packageDiagnostics",
11790         FT_UINT32, BASE_DEC, NULL, 0,
11791         "SEQUENCE_OF_DiagRec", HFILL }},
11792     { &hf_z3950_packageDiagnostics_item,
11793       { "DiagRec", "z3950.DiagRec",
11794         FT_UINT32, BASE_DEC, VALS(z3950_DiagRec_vals), 0,
11795         NULL, HFILL }},
11796     { &hf_z3950_challenge,
11797       { "challenge", "z3950.challenge",
11798         FT_UINT32, BASE_DEC, NULL, 0,
11799         NULL, HFILL }},
11800     { &hf_z3950_response,
11801       { "response", "z3950.response",
11802         FT_UINT32, BASE_DEC, NULL, 0,
11803         NULL, HFILL }},
11804     { &hf_z3950_Challenge_item,
11805       { "Challenge item", "z3950.Challenge_item_element",
11806         FT_NONE, BASE_NONE, NULL, 0,
11807         NULL, HFILL }},
11808     { &hf_z3950_promptId,
11809       { "promptId", "z3950.promptId",
11810         FT_UINT32, BASE_DEC, VALS(z3950_PromptId_vals), 0,
11811         NULL, HFILL }},
11812     { &hf_z3950_defaultResponse,
11813       { "defaultResponse", "z3950.defaultResponse",
11814         FT_STRING, BASE_NONE, NULL, 0,
11815         "InternationalString", HFILL }},
11816     { &hf_z3950_promptInfo,
11817       { "promptInfo", "z3950.promptInfo",
11818         FT_UINT32, BASE_DEC, VALS(z3950_T_promptInfo_vals), 0,
11819         NULL, HFILL }},
11820     { &hf_z3950_challenge_item_promptInfo_character,
11821       { "character", "z3950.character",
11822         FT_STRING, BASE_NONE, NULL, 0,
11823         "InternationalString", HFILL }},
11824     { &hf_z3950_encrypted,
11825       { "encrypted", "z3950.encrypted_element",
11826         FT_NONE, BASE_NONE, NULL, 0,
11827         "Encryption", HFILL }},
11828     { &hf_z3950_regExpr,
11829       { "regExpr", "z3950.regExpr",
11830         FT_STRING, BASE_NONE, NULL, 0,
11831         "InternationalString", HFILL }},
11832     { &hf_z3950_responseRequired,
11833       { "responseRequired", "z3950.responseRequired_element",
11834         FT_NONE, BASE_NONE, NULL, 0,
11835         NULL, HFILL }},
11836     { &hf_z3950_allowedValues,
11837       { "allowedValues", "z3950.allowedValues",
11838         FT_UINT32, BASE_DEC, NULL, 0,
11839         "SEQUENCE_OF_InternationalString", HFILL }},
11840     { &hf_z3950_allowedValues_item,
11841       { "InternationalString", "z3950.InternationalString",
11842         FT_STRING, BASE_NONE, NULL, 0,
11843         NULL, HFILL }},
11844     { &hf_z3950_shouldSave,
11845       { "shouldSave", "z3950.shouldSave_element",
11846         FT_NONE, BASE_NONE, NULL, 0,
11847         NULL, HFILL }},
11848     { &hf_z3950_challenge_item_dataType,
11849       { "dataType", "z3950.dataType",
11850         FT_INT32, BASE_DEC, VALS(z3950_T_challenge_item_dataType_vals), 0,
11851         "T_challenge_item_dataType", HFILL }},
11852     { &hf_z3950_challenge_item_diagnostic,
11853       { "diagnostic", "z3950.diagnostic_element",
11854         FT_NONE, BASE_NONE, NULL, 0,
11855         "EXTERNAL", HFILL }},
11856     { &hf_z3950_Response_item,
11857       { "Response item", "z3950.Response_item_element",
11858         FT_NONE, BASE_NONE, NULL, 0,
11859         NULL, HFILL }},
11860     { &hf_z3950_promptResponse,
11861       { "promptResponse", "z3950.promptResponse",
11862         FT_UINT32, BASE_DEC, VALS(z3950_T_promptResponse_vals), 0,
11863         NULL, HFILL }},
11864     { &hf_z3950_accept,
11865       { "accept", "z3950.accept",
11866         FT_BOOLEAN, BASE_NONE, NULL, 0,
11867         "BOOLEAN", HFILL }},
11868     { &hf_z3950_acknowledge,
11869       { "acknowledge", "z3950.acknowledge_element",
11870         FT_NONE, BASE_NONE, NULL, 0,
11871         NULL, HFILL }},
11872     { &hf_z3950_enummeratedPrompt,
11873       { "enummeratedPrompt", "z3950.enummeratedPrompt_element",
11874         FT_NONE, BASE_NONE, NULL, 0,
11875         NULL, HFILL }},
11876     { &hf_z3950_promptId_enummeratedPrompt_type,
11877       { "type", "z3950.type",
11878         FT_INT32, BASE_DEC, VALS(z3950_T_promptId_enummeratedPrompt_type_vals), 0,
11879         "T_promptId_enummeratedPrompt_type", HFILL }},
11880     { &hf_z3950_suggestedString,
11881       { "suggestedString", "z3950.suggestedString",
11882         FT_STRING, BASE_NONE, NULL, 0,
11883         "InternationalString", HFILL }},
11884     { &hf_z3950_nonEnumeratedPrompt,
11885       { "nonEnumeratedPrompt", "z3950.nonEnumeratedPrompt",
11886         FT_STRING, BASE_NONE, NULL, 0,
11887         "InternationalString", HFILL }},
11888     { &hf_z3950_cryptType,
11889       { "cryptType", "z3950.cryptType",
11890         FT_BYTES, BASE_NONE, NULL, 0,
11891         "OCTET_STRING", HFILL }},
11892     { &hf_z3950_credential,
11893       { "credential", "z3950.credential",
11894         FT_BYTES, BASE_NONE, NULL, 0,
11895         "OCTET_STRING", HFILL }},
11896     { &hf_z3950_data,
11897       { "data", "z3950.data",
11898         FT_BYTES, BASE_NONE, NULL, 0,
11899         "OCTET_STRING", HFILL }},
11900     { &hf_z3950_dES_RN_Object_challenge,
11901       { "challenge", "z3950.challenge_element",
11902         FT_NONE, BASE_NONE, NULL, 0,
11903         "DRNType", HFILL }},
11904     { &hf_z3950_rES_RN_Object_response,
11905       { "response", "z3950.response_element",
11906         FT_NONE, BASE_NONE, NULL, 0,
11907         "DRNType", HFILL }},
11908     { &hf_z3950_dRNType_userId,
11909       { "userId", "z3950.userId",
11910         FT_BYTES, BASE_NONE, NULL, 0,
11911         "OCTET_STRING", HFILL }},
11912     { &hf_z3950_salt,
11913       { "salt", "z3950.salt",
11914         FT_BYTES, BASE_NONE, NULL, 0,
11915         "OCTET_STRING", HFILL }},
11916     { &hf_z3950_randomNumber,
11917       { "randomNumber", "z3950.randomNumber",
11918         FT_BYTES, BASE_NONE, NULL, 0,
11919         "OCTET_STRING", HFILL }},
11920     { &hf_z3950_kRBObject_challenge,
11921       { "challenge", "z3950.challenge_element",
11922         FT_NONE, BASE_NONE, NULL, 0,
11923         "KRBRequest", HFILL }},
11924     { &hf_z3950_kRBObject_response,
11925       { "response", "z3950.response_element",
11926         FT_NONE, BASE_NONE, NULL, 0,
11927         "KRBResponse", HFILL }},
11928     { &hf_z3950_service,
11929       { "service", "z3950.service",
11930         FT_STRING, BASE_NONE, NULL, 0,
11931         "InternationalString", HFILL }},
11932     { &hf_z3950_instance,
11933       { "instance", "z3950.instance",
11934         FT_STRING, BASE_NONE, NULL, 0,
11935         "InternationalString", HFILL }},
11936     { &hf_z3950_realm,
11937       { "realm", "z3950.realm",
11938         FT_STRING, BASE_NONE, NULL, 0,
11939         "InternationalString", HFILL }},
11940     { &hf_z3950_userid,
11941       { "userid", "z3950.userid",
11942         FT_STRING, BASE_NONE, NULL, 0,
11943         "InternationalString", HFILL }},
11944     { &hf_z3950_ticket,
11945       { "ticket", "z3950.ticket",
11946         FT_BYTES, BASE_NONE, NULL, 0,
11947         "OCTET_STRING", HFILL }},
11948     { &hf_z3950_SearchInfoReport_item,
11949       { "SearchInfoReport item", "z3950.SearchInfoReport_item_element",
11950         FT_NONE, BASE_NONE, NULL, 0,
11951         NULL, HFILL }},
11952     { &hf_z3950_subqueryId,
11953       { "subqueryId", "z3950.subqueryId",
11954         FT_STRING, BASE_NONE, NULL, 0,
11955         "InternationalString", HFILL }},
11956     { &hf_z3950_fullQuery,
11957       { "fullQuery", "z3950.fullQuery",
11958         FT_BOOLEAN, BASE_NONE, NULL, 0,
11959         "BOOLEAN", HFILL }},
11960     { &hf_z3950_subqueryExpression,
11961       { "subqueryExpression", "z3950.subqueryExpression",
11962         FT_UINT32, BASE_DEC, VALS(z3950_QueryExpression_vals), 0,
11963         "QueryExpression", HFILL }},
11964     { &hf_z3950_subqueryInterpretation,
11965       { "subqueryInterpretation", "z3950.subqueryInterpretation",
11966         FT_UINT32, BASE_DEC, VALS(z3950_QueryExpression_vals), 0,
11967         "QueryExpression", HFILL }},
11968     { &hf_z3950_subqueryRecommendation,
11969       { "subqueryRecommendation", "z3950.subqueryRecommendation",
11970         FT_UINT32, BASE_DEC, VALS(z3950_QueryExpression_vals), 0,
11971         "QueryExpression", HFILL }},
11972     { &hf_z3950_subqueryCount,
11973       { "subqueryCount", "z3950.subqueryCount",
11974         FT_INT32, BASE_DEC, NULL, 0,
11975         "INTEGER", HFILL }},
11976     { &hf_z3950_subqueryWeight,
11977       { "subqueryWeight", "z3950.subqueryWeight_element",
11978         FT_NONE, BASE_NONE, NULL, 0,
11979         "IntUnit", HFILL }},
11980     { &hf_z3950_resultsByDB,
11981       { "resultsByDB", "z3950.resultsByDB",
11982         FT_UINT32, BASE_DEC, NULL, 0,
11983         NULL, HFILL }},
11984     { &hf_z3950_ResultsByDB_item,
11985       { "ResultsByDB item", "z3950.ResultsByDB_item_element",
11986         FT_NONE, BASE_NONE, NULL, 0,
11987         NULL, HFILL }},
11988     { &hf_z3950_databases,
11989       { "databases", "z3950.databases",
11990         FT_UINT32, BASE_DEC, VALS(z3950_T_databases_vals), 0,
11991         NULL, HFILL }},
11992     { &hf_z3950_all,
11993       { "all", "z3950.all_element",
11994         FT_NONE, BASE_NONE, NULL, 0,
11995         NULL, HFILL }},
11996     { &hf_z3950_list,
11997       { "list", "z3950.list",
11998         FT_UINT32, BASE_DEC, NULL, 0,
11999         "SEQUENCE_OF_DatabaseName", HFILL }},
12000     { &hf_z3950_list_item,
12001       { "DatabaseName", "z3950.DatabaseName",
12002         FT_STRING, BASE_NONE, NULL, 0,
12003         NULL, HFILL }},
12004     { &hf_z3950_count,
12005       { "count", "z3950.count",
12006         FT_INT32, BASE_DEC, NULL, 0,
12007         "INTEGER", HFILL }},
12008     { &hf_z3950_queryExpression_term,
12009       { "term", "z3950.term_element",
12010         FT_NONE, BASE_NONE, NULL, 0,
12011         "T_queryExpression_term", HFILL }},
12012     { &hf_z3950_queryTerm,
12013       { "queryTerm", "z3950.queryTerm",
12014         FT_UINT32, BASE_DEC, VALS(z3950_Term_vals), 0,
12015         "Term", HFILL }},
12016     { &hf_z3950_termComment,
12017       { "termComment", "z3950.termComment",
12018         FT_STRING, BASE_NONE, NULL, 0,
12019         "InternationalString", HFILL }},
12020     { &hf_z3950_ProtocolVersion_U_version_1,
12021       { "version-1", "z3950.ProtocolVersion.U.version.1",
12022         FT_BOOLEAN, 8, NULL, 0x80,
12023         NULL, HFILL }},
12024     { &hf_z3950_ProtocolVersion_U_version_2,
12025       { "version-2", "z3950.ProtocolVersion.U.version.2",
12026         FT_BOOLEAN, 8, NULL, 0x40,
12027         NULL, HFILL }},
12028     { &hf_z3950_ProtocolVersion_U_version_3,
12029       { "version-3", "z3950.ProtocolVersion.U.version.3",
12030         FT_BOOLEAN, 8, NULL, 0x20,
12031         NULL, HFILL }},
12032     { &hf_z3950_Options_U_search,
12033       { "search", "z3950.Options.U.search",
12034         FT_BOOLEAN, 8, NULL, 0x80,
12035         NULL, HFILL }},
12036     { &hf_z3950_Options_U_present,
12037       { "present", "z3950.Options.U.present",
12038         FT_BOOLEAN, 8, NULL, 0x40,
12039         NULL, HFILL }},
12040     { &hf_z3950_Options_U_delSet,
12041       { "delSet", "z3950.Options.U.delSet",
12042         FT_BOOLEAN, 8, NULL, 0x20,
12043         NULL, HFILL }},
12044     { &hf_z3950_Options_U_resourceReport,
12045       { "resourceReport", "z3950.Options.U.resourceReport",
12046         FT_BOOLEAN, 8, NULL, 0x10,
12047         NULL, HFILL }},
12048     { &hf_z3950_Options_U_triggerResourceCtrl,
12049       { "triggerResourceCtrl", "z3950.Options.U.triggerResourceCtrl",
12050         FT_BOOLEAN, 8, NULL, 0x08,
12051         NULL, HFILL }},
12052     { &hf_z3950_Options_U_resourceCtrl,
12053       { "resourceCtrl", "z3950.Options.U.resourceCtrl",
12054         FT_BOOLEAN, 8, NULL, 0x04,
12055         NULL, HFILL }},
12056     { &hf_z3950_Options_U_accessCtrl,
12057       { "accessCtrl", "z3950.Options.U.accessCtrl",
12058         FT_BOOLEAN, 8, NULL, 0x02,
12059         NULL, HFILL }},
12060     { &hf_z3950_Options_U_scan,
12061       { "scan", "z3950.Options.U.scan",
12062         FT_BOOLEAN, 8, NULL, 0x01,
12063         NULL, HFILL }},
12064     { &hf_z3950_Options_U_sort,
12065       { "sort", "z3950.Options.U.sort",
12066         FT_BOOLEAN, 8, NULL, 0x80,
12067         NULL, HFILL }},
12068     { &hf_z3950_Options_U_spare_bit9,
12069       { "spare_bit9", "z3950.Options.U.spare.bit9",
12070         FT_BOOLEAN, 8, NULL, 0x40,
12071         NULL, HFILL }},
12072     { &hf_z3950_Options_U_extendedServices,
12073       { "extendedServices", "z3950.Options.U.extendedServices",
12074         FT_BOOLEAN, 8, NULL, 0x20,
12075         NULL, HFILL }},
12076     { &hf_z3950_Options_U_level_1Segmentation,
12077       { "level-1Segmentation", "z3950.Options.U.level.1Segmentation",
12078         FT_BOOLEAN, 8, NULL, 0x10,
12079         NULL, HFILL }},
12080     { &hf_z3950_Options_U_level_2Segmentation,
12081       { "level-2Segmentation", "z3950.Options.U.level.2Segmentation",
12082         FT_BOOLEAN, 8, NULL, 0x08,
12083         NULL, HFILL }},
12084     { &hf_z3950_Options_U_concurrentOperations,
12085       { "concurrentOperations", "z3950.Options.U.concurrentOperations",
12086         FT_BOOLEAN, 8, NULL, 0x04,
12087         NULL, HFILL }},
12088     { &hf_z3950_Options_U_namedResultSets,
12089       { "namedResultSets", "z3950.Options.U.namedResultSets",
12090         FT_BOOLEAN, 8, NULL, 0x02,
12091         NULL, HFILL }},
12092 
12093 /*--- End of included file: packet-z3950-hfarr.c ---*/
12094 #line 977 "./asn1/z3950/packet-z3950-template.c"
12095 
12096     { &hf_z3950_referenceId_printable,
12097         { "referenceId", "z3950.referenceId.printable",
12098         FT_STRING, BASE_NONE, NULL, 0,
12099         NULL, HFILL }},
12100     { &hf_z3950_general_printable,
12101         { "general", "z3950.general.printable",
12102         FT_STRING, BASE_NONE, NULL, 0,
12103         NULL, HFILL }},
12104 
12105 /* MARC hf definitions */
12106     { &hf_marc_record,
12107         { "MARC record", "marc",
12108         FT_NONE, BASE_NONE, NULL, 0,
12109         NULL, HFILL }},
12110     { &hf_marc_record_terminator,
12111         { "MARC record terminator", "marc.terminator",
12112         FT_CHAR, BASE_HEX, NULL, 0,
12113         NULL, HFILL }},
12114     { &hf_marc_leader,
12115         { "MARC leader", "marc.leader",
12116         FT_NONE, BASE_NONE, NULL, 0,
12117         NULL, HFILL }},
12118     { &hf_marc_leader_length,
12119         { "MARC leader length", "marc.leader.length",
12120         FT_STRING, BASE_NONE, NULL, 0,
12121         NULL, HFILL }},
12122     { &hf_marc_leader_status,
12123         { "MARC leader status", "marc.leader.status",
12124         FT_CHAR, BASE_HEX, NULL, 0,
12125         NULL, HFILL }},
12126     { &hf_marc_leader_type,
12127         { "MARC leader type", "marc.leader.type",
12128         FT_CHAR, BASE_HEX, NULL, 0,
12129         NULL, HFILL }},
12130     { &hf_marc_leader_biblevel,
12131         { "MARC leader biblevel", "marc.leader.biblevel",
12132         FT_CHAR, BASE_HEX, NULL, 0,
12133         NULL, HFILL }},
12134     { &hf_marc_leader_control,
12135         { "MARC leader control", "marc.leader.control",
12136         FT_CHAR, BASE_HEX, NULL, 0,
12137         NULL, HFILL }},
12138     { &hf_marc_leader_encoding,
12139         { "MARC leader encoding", "marc.leader.encoding",
12140         FT_CHAR, BASE_HEX, NULL, 0,
12141         NULL, HFILL }},
12142     { &hf_marc_leader_indicator_count,
12143         { "MARC leader indicator count", "marc.leader.indicator_count",
12144         FT_CHAR, BASE_HEX, NULL, 0,
12145         NULL, HFILL }},
12146     { &hf_marc_leader_subfield_count,
12147         { "MARC leader subfield count", "marc.leader.subfield_count",
12148         FT_CHAR, BASE_HEX, NULL, 0,
12149         NULL, HFILL }},
12150     { &hf_marc_leader_data_offset,
12151         { "MARC leader data offset", "marc.leader.data_offset",
12152         FT_STRING, BASE_NONE, NULL, 0,
12153         NULL, HFILL }},
12154     { &hf_marc_leader_encoding_level,
12155         { "MARC leader encoding level", "marc.leader.encoding_level",
12156         FT_CHAR, BASE_HEX, NULL, 0,
12157         NULL, HFILL }},
12158     { &hf_marc_leader_descriptive_cataloging,
12159         { "MARC leader descriptive cataloging", "marc.leader.descriptive_cataloging",
12160         FT_CHAR, BASE_HEX, NULL, 0,
12161         NULL, HFILL }},
12162     { &hf_marc_leader_multipart_level,
12163         { "MARC leader multipart level", "marc.leader.multipart_level",
12164         FT_CHAR, BASE_HEX, NULL, 0,
12165         NULL, HFILL }},
12166     { &hf_marc_leader_length_of_field_length,
12167         { "MARC leader length-of-field length", "marc.leader.length_of_field_length",
12168         FT_CHAR, BASE_HEX, NULL, 0,
12169         NULL, HFILL }},
12170     { &hf_marc_leader_starting_character_position_length,
12171         { "MARC leader starting-character-position length", "marc.leader.starting_character_position_length",
12172         FT_CHAR, BASE_HEX, NULL, 0,
12173         NULL, HFILL }},
12174     { &hf_marc_leader_implementation_defined_length,
12175         { "MARC leader implementation-defined length", "marc.leader.implementation_defined_length",
12176         FT_CHAR, BASE_HEX, NULL, 0,
12177         NULL, HFILL }},
12178     { &hf_marc_directory,
12179         { "MARC directory", "marc.directory",
12180         FT_NONE, BASE_NONE, NULL, 0,
12181         NULL, HFILL }},
12182     { &hf_marc_directory_entry,
12183         { "MARC directory entry", "marc.directory.entry",
12184         FT_NONE, BASE_NONE, NULL, 0,
12185         NULL, HFILL }},
12186     { &hf_marc_directory_entry_tag,
12187         { "tag", "marc.directory.entry.tag",
12188         FT_STRING, BASE_NONE, NULL, 0,
12189         NULL, HFILL }},
12190     { &hf_marc_directory_entry_length,
12191         { "length", "marc.directory.entry.length",
12192         FT_STRING, BASE_NONE, NULL, 0,
12193         NULL, HFILL }},
12194     { &hf_marc_directory_entry_starting_position,
12195         { "starting position", "marc.directory.entry.starting_position",
12196         FT_STRING, BASE_NONE, NULL, 0,
12197         NULL, HFILL }},
12198     { &hf_marc_directory_terminator,
12199         { "MARC directory terminator", "marc.directory.terminator",
12200         FT_CHAR, BASE_HEX, NULL, 0,
12201         NULL, HFILL }},
12202     { &hf_marc_fields,
12203         { "MARC data fields", "marc.fields",
12204         FT_NONE, BASE_NONE, NULL, 0,
12205         NULL, HFILL }},
12206     { &hf_marc_field,
12207         { "MARC field", "marc.field",
12208         FT_NONE, BASE_NONE, NULL, 0,
12209         NULL, HFILL }},
12210     { &hf_marc_field_control,
12211         { "Control field", "marc.field.control",
12212         FT_STRING, BASE_NONE, NULL, 0,
12213         NULL, HFILL }},
12214     { &hf_marc_field_terminator,
12215         { "MARC field terminator", "marc.field.terminator",
12216         FT_CHAR, BASE_HEX, NULL, 0,
12217         NULL, HFILL }},
12218     { &hf_marc_field_indicator1,
12219         { "MARC field indicator1", "marc.field.indicator1",
12220         FT_CHAR, BASE_HEX, NULL, 0,
12221         NULL, HFILL }},
12222     { &hf_marc_field_indicator2,
12223         { "MARC field indicator2", "marc.field.indicator2",
12224         FT_CHAR, BASE_HEX, NULL, 0,
12225         NULL, HFILL }},
12226     { &hf_marc_field_subfield_indicator,
12227         { "MARC field subfield indicator", "marc.field.subfield.indicator",
12228         FT_CHAR, BASE_HEX, NULL, 0,
12229         NULL, HFILL }},
12230     { &hf_marc_field_subfield_tag,
12231         { "MARC field subfield tag", "marc.field.subfield.tag",
12232         FT_CHAR, BASE_HEX, NULL, 0,
12233         NULL, HFILL }},
12234     { &hf_marc_field_subfield,
12235         { "MARC Subfield", "marc.field.subfield",
12236         FT_STRING, BASE_NONE, NULL, 0,
12237         NULL, HFILL }},
12238 
12239     };
12240 
12241     /* List of subtrees */
12242     static gint *ett[] = {
12243 		  &ett_z3950,
12244 /* MARC etts */
12245                   &ett_marc_record,
12246                   &ett_marc_leader,
12247                   &ett_marc_directory,
12248                   &ett_marc_directory_entry,
12249                   &ett_marc_fields,
12250                   &ett_marc_field,
12251 
12252 /*--- Included file: packet-z3950-ettarr.c ---*/
12253 #line 1 "./asn1/z3950/packet-z3950-ettarr.c"
12254     &ett_z3950_PDU,
12255     &ett_z3950_InitializeRequest,
12256     &ett_z3950_T_idAuthentication,
12257     &ett_z3950_T_idPass,
12258     &ett_z3950_InitializeResponse,
12259     &ett_z3950_ProtocolVersion_U,
12260     &ett_z3950_Options_U,
12261     &ett_z3950_SearchRequest,
12262     &ett_z3950_SEQUENCE_OF_DatabaseName,
12263     &ett_z3950_Query,
12264     &ett_z3950_RPNQuery,
12265     &ett_z3950_RPNStructure,
12266     &ett_z3950_T_rpnRpnOp,
12267     &ett_z3950_Operand,
12268     &ett_z3950_AttributesPlusTerm_U,
12269     &ett_z3950_ResultSetPlusAttributes_U,
12270     &ett_z3950_SEQUENCE_OF_AttributeElement,
12271     &ett_z3950_Term,
12272     &ett_z3950_Operator_U,
12273     &ett_z3950_AttributeElement,
12274     &ett_z3950_T_attributeValue,
12275     &ett_z3950_T_attributeValue_complex,
12276     &ett_z3950_SEQUENCE_OF_StringOrNumeric,
12277     &ett_z3950_T_semanticAction,
12278     &ett_z3950_ProximityOperator,
12279     &ett_z3950_T_proximityUnitCode,
12280     &ett_z3950_SearchResponse,
12281     &ett_z3950_PresentRequest,
12282     &ett_z3950_SEQUENCE_OF_Range,
12283     &ett_z3950_T_recordComposition,
12284     &ett_z3950_Segment,
12285     &ett_z3950_SEQUENCE_OF_NamePlusRecord,
12286     &ett_z3950_PresentResponse,
12287     &ett_z3950_Records,
12288     &ett_z3950_SEQUENCE_OF_DiagRec,
12289     &ett_z3950_NamePlusRecord,
12290     &ett_z3950_T_record,
12291     &ett_z3950_FragmentSyntax,
12292     &ett_z3950_DiagRec,
12293     &ett_z3950_DefaultDiagFormat,
12294     &ett_z3950_T_addinfo,
12295     &ett_z3950_Range,
12296     &ett_z3950_ElementSetNames,
12297     &ett_z3950_T_databaseSpecific,
12298     &ett_z3950_T_databaseSpecific_item,
12299     &ett_z3950_CompSpec,
12300     &ett_z3950_T_dbSpecific,
12301     &ett_z3950_T_dbSpecific_item,
12302     &ett_z3950_T_compSpec_recordSyntax,
12303     &ett_z3950_Specification,
12304     &ett_z3950_T_specification_elementSpec,
12305     &ett_z3950_DeleteResultSetRequest,
12306     &ett_z3950_SEQUENCE_OF_ResultSetId,
12307     &ett_z3950_DeleteResultSetResponse,
12308     &ett_z3950_ListStatuses,
12309     &ett_z3950_ListStatuses_item,
12310     &ett_z3950_AccessControlRequest,
12311     &ett_z3950_T_securityChallenge,
12312     &ett_z3950_AccessControlResponse,
12313     &ett_z3950_T_securityChallengeResponse,
12314     &ett_z3950_ResourceControlRequest,
12315     &ett_z3950_ResourceControlResponse,
12316     &ett_z3950_TriggerResourceControlRequest,
12317     &ett_z3950_ResourceReportRequest,
12318     &ett_z3950_ResourceReportResponse,
12319     &ett_z3950_ScanRequest,
12320     &ett_z3950_ScanResponse,
12321     &ett_z3950_ListEntries,
12322     &ett_z3950_SEQUENCE_OF_Entry,
12323     &ett_z3950_Entry,
12324     &ett_z3950_TermInfo,
12325     &ett_z3950_SEQUENCE_OF_AttributesPlusTerm,
12326     &ett_z3950_OccurrenceByAttributes,
12327     &ett_z3950_OccurrenceByAttributes_item,
12328     &ett_z3950_T_occurrences,
12329     &ett_z3950_T_byDatabase,
12330     &ett_z3950_T_byDatabase_item,
12331     &ett_z3950_SortRequest,
12332     &ett_z3950_SEQUENCE_OF_InternationalString,
12333     &ett_z3950_SEQUENCE_OF_SortKeySpec,
12334     &ett_z3950_SortResponse,
12335     &ett_z3950_SortKeySpec,
12336     &ett_z3950_T_missingValueAction,
12337     &ett_z3950_SortElement,
12338     &ett_z3950_T_datbaseSpecific,
12339     &ett_z3950_T_datbaseSpecific_item,
12340     &ett_z3950_SortKey,
12341     &ett_z3950_T_sortAttributes,
12342     &ett_z3950_ExtendedServicesRequest,
12343     &ett_z3950_ExtendedServicesResponse,
12344     &ett_z3950_Permissions,
12345     &ett_z3950_Permissions_item,
12346     &ett_z3950_T_allowableFunctions,
12347     &ett_z3950_Close,
12348     &ett_z3950_OtherInformation_U,
12349     &ett_z3950_T__untag_item,
12350     &ett_z3950_T_information,
12351     &ett_z3950_InfoCategory,
12352     &ett_z3950_IntUnit,
12353     &ett_z3950_Unit,
12354     &ett_z3950_StringOrNumeric,
12355     &ett_z3950_OCLC_UserInformation,
12356     &ett_z3950_SEQUENCE_OF_DBName,
12357     &ett_z3950_OPACRecord,
12358     &ett_z3950_SEQUENCE_OF_HoldingsRecord,
12359     &ett_z3950_HoldingsRecord,
12360     &ett_z3950_HoldingsAndCircData,
12361     &ett_z3950_SEQUENCE_OF_Volume,
12362     &ett_z3950_SEQUENCE_OF_CircRecord,
12363     &ett_z3950_Volume,
12364     &ett_z3950_CircRecord,
12365     &ett_z3950_DiagnosticFormat,
12366     &ett_z3950_DiagnosticFormat_item,
12367     &ett_z3950_T_diagnosticFormat_item_diagnostic,
12368     &ett_z3950_DiagFormat,
12369     &ett_z3950_T_tooMany,
12370     &ett_z3950_T_badSpec,
12371     &ett_z3950_SEQUENCE_OF_Specification,
12372     &ett_z3950_T_dbUnavail,
12373     &ett_z3950_T_why,
12374     &ett_z3950_T_attribute,
12375     &ett_z3950_T_attCombo,
12376     &ett_z3950_SEQUENCE_OF_AttributeList,
12377     &ett_z3950_T_diagFormat_term,
12378     &ett_z3950_T_diagFormat_proximity,
12379     &ett_z3950_T_scan,
12380     &ett_z3950_T_sort,
12381     &ett_z3950_T_segmentation,
12382     &ett_z3950_T_extServices,
12383     &ett_z3950_T_accessCtrl,
12384     &ett_z3950_T_diagFormat_accessCtrl_oid,
12385     &ett_z3950_T_alternative,
12386     &ett_z3950_T_diagFormat_recordSyntax,
12387     &ett_z3950_T_suggestedAlternatives,
12388     &ett_z3950_Explain_Record,
12389     &ett_z3950_TargetInfo,
12390     &ett_z3950_SEQUENCE_OF_DatabaseList,
12391     &ett_z3950_SEQUENCE_OF_NetworkAddress,
12392     &ett_z3950_DatabaseInfo,
12393     &ett_z3950_SEQUENCE_OF_HumanString,
12394     &ett_z3950_T_recordCount,
12395     &ett_z3950_SchemaInfo,
12396     &ett_z3950_T_tagTypeMapping,
12397     &ett_z3950_T_tagTypeMapping_item,
12398     &ett_z3950_SEQUENCE_OF_ElementInfo,
12399     &ett_z3950_ElementInfo,
12400     &ett_z3950_Path,
12401     &ett_z3950_Path_item,
12402     &ett_z3950_ElementDataType,
12403     &ett_z3950_TagSetInfo,
12404     &ett_z3950_T_tagSetInfo_elements,
12405     &ett_z3950_T_tagSetInfo_elements_item,
12406     &ett_z3950_RecordSyntaxInfo,
12407     &ett_z3950_T_transferSyntaxes,
12408     &ett_z3950_AttributeSetInfo,
12409     &ett_z3950_SEQUENCE_OF_AttributeType,
12410     &ett_z3950_AttributeType,
12411     &ett_z3950_SEQUENCE_OF_AttributeDescription,
12412     &ett_z3950_AttributeDescription,
12413     &ett_z3950_TermListInfo,
12414     &ett_z3950_T_termLists,
12415     &ett_z3950_T_termLists_item,
12416     &ett_z3950_ExtendedServicesInfo,
12417     &ett_z3950_AttributeDetails,
12418     &ett_z3950_SEQUENCE_OF_AttributeSetDetails,
12419     &ett_z3950_AttributeSetDetails,
12420     &ett_z3950_SEQUENCE_OF_AttributeTypeDetails,
12421     &ett_z3950_AttributeTypeDetails,
12422     &ett_z3950_SEQUENCE_OF_AttributeValue,
12423     &ett_z3950_OmittedAttributeInterpretation,
12424     &ett_z3950_AttributeValue,
12425     &ett_z3950_TermListDetails,
12426     &ett_z3950_T_scanInfo,
12427     &ett_z3950_SEQUENCE_OF_Term,
12428     &ett_z3950_ElementSetDetails,
12429     &ett_z3950_SEQUENCE_OF_PerElementDetails,
12430     &ett_z3950_RetrievalRecordDetails,
12431     &ett_z3950_PerElementDetails,
12432     &ett_z3950_SEQUENCE_OF_Path,
12433     &ett_z3950_RecordTag,
12434     &ett_z3950_SortDetails,
12435     &ett_z3950_SEQUENCE_OF_SortKeyDetails,
12436     &ett_z3950_SortKeyDetails,
12437     &ett_z3950_T_sortType,
12438     &ett_z3950_ProcessingInformation,
12439     &ett_z3950_VariantSetInfo,
12440     &ett_z3950_SEQUENCE_OF_VariantClass,
12441     &ett_z3950_VariantClass,
12442     &ett_z3950_SEQUENCE_OF_VariantType,
12443     &ett_z3950_VariantType,
12444     &ett_z3950_VariantValue,
12445     &ett_z3950_ValueSet,
12446     &ett_z3950_SEQUENCE_OF_ValueDescription,
12447     &ett_z3950_ValueRange,
12448     &ett_z3950_ValueDescription,
12449     &ett_z3950_UnitInfo,
12450     &ett_z3950_SEQUENCE_OF_UnitType,
12451     &ett_z3950_UnitType,
12452     &ett_z3950_SEQUENCE_OF_Units,
12453     &ett_z3950_Units,
12454     &ett_z3950_CategoryList,
12455     &ett_z3950_SEQUENCE_OF_CategoryInfo,
12456     &ett_z3950_CategoryInfo,
12457     &ett_z3950_CommonInfo,
12458     &ett_z3950_HumanString,
12459     &ett_z3950_HumanString_item,
12460     &ett_z3950_IconObject,
12461     &ett_z3950_IconObject_item,
12462     &ett_z3950_T_bodyType,
12463     &ett_z3950_ContactInfo,
12464     &ett_z3950_NetworkAddress,
12465     &ett_z3950_T_internetAddress,
12466     &ett_z3950_T_osiPresentationAddress,
12467     &ett_z3950_T_networkAddress_other,
12468     &ett_z3950_AccessInfo,
12469     &ett_z3950_SEQUENCE_OF_QueryTypeDetails,
12470     &ett_z3950_T_diagnosticsSets,
12471     &ett_z3950_SEQUENCE_OF_AttributeSetId,
12472     &ett_z3950_T_schemas,
12473     &ett_z3950_T_recordSyntaxes,
12474     &ett_z3950_T_resourceChallenges,
12475     &ett_z3950_T_variantSets,
12476     &ett_z3950_SEQUENCE_OF_ElementSetName,
12477     &ett_z3950_QueryTypeDetails,
12478     &ett_z3950_PrivateCapabilities,
12479     &ett_z3950_T_privateCapabilities_operators,
12480     &ett_z3950_T_privateCapabilities_operators_item,
12481     &ett_z3950_SEQUENCE_OF_SearchKey,
12482     &ett_z3950_RpnCapabilities,
12483     &ett_z3950_T_operators,
12484     &ett_z3950_Iso8777Capabilities,
12485     &ett_z3950_ProximitySupport,
12486     &ett_z3950_T_unitsSupported,
12487     &ett_z3950_T_unitsSupported_item,
12488     &ett_z3950_T_proximitySupport_unitsSupported_item_private,
12489     &ett_z3950_SearchKey,
12490     &ett_z3950_AccessRestrictions,
12491     &ett_z3950_AccessRestrictions_item,
12492     &ett_z3950_T_accessChallenges,
12493     &ett_z3950_Costs,
12494     &ett_z3950_T_otherCharges,
12495     &ett_z3950_T_otherCharges_item,
12496     &ett_z3950_Charge,
12497     &ett_z3950_DatabaseList,
12498     &ett_z3950_AttributeCombinations,
12499     &ett_z3950_SEQUENCE_OF_AttributeCombination,
12500     &ett_z3950_AttributeCombination,
12501     &ett_z3950_AttributeOccurrence,
12502     &ett_z3950_T_attributeOccurrence_attributeValues,
12503     &ett_z3950_BriefBib,
12504     &ett_z3950_SEQUENCE_OF_FormatSpec,
12505     &ett_z3950_FormatSpec,
12506     &ett_z3950_GenericRecord,
12507     &ett_z3950_TaggedElement,
12508     &ett_z3950_ElementData,
12509     &ett_z3950_SEQUENCE_OF_TaggedElement,
12510     &ett_z3950_ElementMetaData,
12511     &ett_z3950_SEQUENCE_OF_HitVector,
12512     &ett_z3950_SEQUENCE_OF_Variant,
12513     &ett_z3950_TagPath,
12514     &ett_z3950_TagPath_item,
12515     &ett_z3950_Order,
12516     &ett_z3950_Usage,
12517     &ett_z3950_HitVector,
12518     &ett_z3950_Variant,
12519     &ett_z3950_T_triples,
12520     &ett_z3950_T_triples_item,
12521     &ett_z3950_T_variant_triples_item_value,
12522     &ett_z3950_TaskPackage,
12523     &ett_z3950_PromptObject,
12524     &ett_z3950_Challenge,
12525     &ett_z3950_Challenge_item,
12526     &ett_z3950_T_promptInfo,
12527     &ett_z3950_Response,
12528     &ett_z3950_Response_item,
12529     &ett_z3950_T_promptResponse,
12530     &ett_z3950_PromptId,
12531     &ett_z3950_T_enummeratedPrompt,
12532     &ett_z3950_Encryption,
12533     &ett_z3950_DES_RN_Object,
12534     &ett_z3950_DRNType,
12535     &ett_z3950_KRBObject,
12536     &ett_z3950_KRBRequest,
12537     &ett_z3950_KRBResponse,
12538     &ett_z3950_SearchInfoReport,
12539     &ett_z3950_SearchInfoReport_item,
12540     &ett_z3950_ResultsByDB,
12541     &ett_z3950_ResultsByDB_item,
12542     &ett_z3950_T_databases,
12543     &ett_z3950_QueryExpression,
12544     &ett_z3950_T_queryExpression_term,
12545 
12546 /*--- End of included file: packet-z3950-ettarr.c ---*/
12547 #line 1134 "./asn1/z3950/packet-z3950-template.c"
12548     };
12549 
12550     module_t *z3950_module;
12551 
12552 /* Expert info */
12553     static ei_register_info ei[] = {
12554 /* Z39.50 expert info */
12555 
12556 /* MARC expert info */
12557         { &ei_marc_invalid_length, { "marc.invalid_length", PI_MALFORMED, PI_ERROR,
12558                                      "MARC record too short", EXPFILL }},
12559         { &ei_marc_invalid_value, { "marc.invalid_value", PI_MALFORMED, PI_ERROR,
12560                                      "MARC field has invalid value", EXPFILL }},
12561         { &ei_marc_invalid_record_length, { "marc.invalid_record_length", PI_MALFORMED, PI_ERROR,
12562                                      "MARC length field has invalid value", EXPFILL }},
12563     };
12564 
12565     expert_module_t* expert_z3950;
12566 
12567 
12568     /* Register protocol */
12569     proto_z3950 = proto_register_protocol(PNAME, PSNAME, PFNAME);
12570     /* Register fields and subtrees */
12571     proto_register_field_array(proto_z3950, hf, array_length(hf));
12572     proto_register_subtree_array(ett, array_length(ett));
12573     expert_z3950 = expert_register_protocol(proto_z3950);
12574     expert_register_field_array(expert_z3950, ei, array_length(ei));
12575 
12576     /* Register preferences */
12577     z3950_module = prefs_register_protocol(proto_z3950, NULL);
12578     prefs_register_bool_preference(z3950_module, "desegment_buffers",
12579                                    "Reassemble Z39.50 buffers spanning multiple TCP segments",
12580                                    "Whether the Z39.50 dissector should reassemble TDS buffers spanning multiple TCP segments. "
12581                                    "To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
12582                                    &z3950_desegment);
12583 
12584     /* Allow dissector to be found by name. */
12585     z3950_handle = register_dissector(PSNAME, dissect_z3950_segment,
12586 					      proto_z3950);
12587 
12588 }
12589 
12590 /*--- proto_reg_handoff_z3950 ---------------------------------------*/
12591 void
proto_reg_handoff_z3950(void)12592 proto_reg_handoff_z3950(void)
12593 {
12594 
12595     dissector_add_uint_with_preference("tcp.port",
12596 	global_z3950_port, z3950_handle);
12597 
12598 
12599 /*--- Included file: packet-z3950-dis-tab.c ---*/
12600 #line 1 "./asn1/z3950/packet-z3950-dis-tab.c"
12601   register_ber_oid_dissector("1.2.840.10003.5.100", dissect_Explain_Record_PDU, proto_z3950, "Explain-record");
12602   register_ber_oid_dissector("1.2.840.10003.5.101", dissect_SutrsRecord_PDU, proto_z3950, "Sutrs-record");
12603   register_ber_oid_dissector("1.2.840.10003.5.102", dissect_OPACRecord_PDU, proto_z3950, "OPAC-record");
12604   register_ber_oid_dissector("1.2.840.10003.5.103", dissect_BriefBib_PDU, proto_z3950, "Summary-record");
12605   register_ber_oid_dissector("1.2.840.10003.5.105", dissect_GenericRecord_PDU, proto_z3950, "GRS-1-record");
12606   register_ber_oid_dissector("1.2.840.10003.5.106", dissect_TaskPackage_PDU, proto_z3950, "ESTaskPackage");
12607   register_ber_oid_dissector("1.2.840.10003.4.2", dissect_DiagnosticFormat_PDU, proto_z3950, "diag-1");
12608   register_ber_oid_dissector("1.2.840.10003.8.1", dissect_PromptObject_PDU, proto_z3950, "Prompt-1");
12609   register_ber_oid_dissector("1.2.840.10003.8.2", dissect_DES_RN_Object_PDU, proto_z3950, "DES-1");
12610   register_ber_oid_dissector("1.2.840.10003.8.3", dissect_KRBObject_PDU, proto_z3950, "KRB-1");
12611   register_ber_oid_dissector("1.2.840.10003.10.1", dissect_SearchInfoReport_PDU, proto_z3950, "SearchResult-1");
12612   register_ber_oid_dissector("1.2.840.10003.10.1000.17.1", dissect_OCLC_UserInformation_PDU, proto_z3950, "OCLC-UserInfo-1");
12613 
12614 
12615 /*--- End of included file: packet-z3950-dis-tab.c ---*/
12616 #line 1185 "./asn1/z3950/packet-z3950-template.c"
12617 
12618     register_ber_oid_dissector(Z3950_RECORDSYNTAX_MARC21_OID, dissect_marc_record, proto_z3950, "MARC21");
12619 
12620     oid_add_from_string("Z39.50", "1.2.840.10003");
12621     oid_add_from_string("Z39.50-APDU", "1.2.840.10003.2");
12622     oid_add_from_string("Z39.50-attributeSet", "1.2.840.10003.3");
12623     oid_add_from_string("Z39.50-diagnostic", "1.2.840.10003.4");
12624     oid_add_from_string("Z39.50-recordSyntax", "1.2.840.10003.5");
12625     oid_add_from_string("Z39.50-resourceReport", "1.2.840.10003.7");
12626     oid_add_from_string("Z39.50-accessControl", "1.2.840.10003.8");
12627     oid_add_from_string("Z39.50-extendedService", "1.2.840.10003.9");
12628     oid_add_from_string("Z39.50-userinfoFormat", "1.2.840.10003.10");
12629     oid_add_from_string("Z39.50-elementSpec", "1.2.840.10003.11");
12630     oid_add_from_string("Z39.50-variantSet", "1.2.840.10003.12");
12631     oid_add_from_string("Z39.50-schema", "1.2.840.10003.13");
12632     oid_add_from_string("Z39.50-tagSet", "1.2.840.10003.14");
12633     oid_add_from_string("Z39.50-negotiation", "1.2.840.10003.15");
12634     oid_add_from_string("Z39.50-query", "1.2.840.10003.16");
12635     /* MARC Record Syntaxes */
12636     oid_add_from_string("UNIMARC","1.2.840.10003.5.1");
12637     oid_add_from_string("INTERMARC","1.2.840.10003.5.2");
12638     oid_add_from_string("CCF","1.2.840.10003.5.3");
12639     oid_add_from_string("MARC21 (formerly USMARC)",Z3950_RECORDSYNTAX_MARC21_OID);
12640     oid_add_from_string("UKMARC","1.2.840.10003.5.11");
12641     oid_add_from_string("NORMARC","1.2.840.10003.5.12");
12642     oid_add_from_string("Librismarc","1.2.840.10003.5.13");
12643     oid_add_from_string("danMARC2","1.2.840.10003.5.14");
12644     oid_add_from_string("Finmarc","1.2.840.10003.5.15");
12645     oid_add_from_string("MAB","1.2.840.10003.5.16");
12646     oid_add_from_string("Canmarc","1.2.840.10003.5.17");
12647     oid_add_from_string("SBN","1.2.840.10003.5.18");
12648     oid_add_from_string("Picamarc","1.2.840.10003.5.19");
12649     oid_add_from_string("Ausmarc","1.2.840.10003.5.20");
12650     oid_add_from_string("Ibermarc","1.2.840.10003.5.21");
12651     oid_add_from_string("Catmarc","1.2.840.10003.5.22");
12652     oid_add_from_string("Malmarc","1.2.840.10003.5.23");
12653     oid_add_from_string("JPmarc","1.2.840.10003.5.24");
12654     oid_add_from_string("SWEMarc","1.2.840.10003.5.25");
12655     oid_add_from_string("SIGLEmarc","1.2.840.10003.5.26");
12656     oid_add_from_string("ISDS/ISSNmarc","1.2.840.10003.5.27");
12657     oid_add_from_string("RUSMarc","1.2.840.10003.5.28");
12658     oid_add_from_string("Hunmarc","1.2.840.10003.5.29");
12659     oid_add_from_string("NACSIS-CATP","1.2.840.10003.5.30");
12660     oid_add_from_string("FINMARC2000","1.2.840.10003.5.31");
12661     oid_add_from_string("MARC21-fin","1.2.840.10003.5.32");
12662     oid_add_from_string("COMARC","1.2.840.10003.5.33");
12663     /* Non-MARC record syntaxes */
12664     oid_add_from_string("Explain","1.2.840.10003.5.100");
12665     oid_add_from_string("Explain with ZSQL","1.2.840.10003.5.100.1");
12666     oid_add_from_string("SUTRS","1.2.840.10003.5.101");
12667     oid_add_from_string("OPAC","1.2.840.10003.5.102");
12668     oid_add_from_string("Summary","1.2.840.10003.5.103");
12669     oid_add_from_string("GRS-0","1.2.840.10003.5.104");
12670     oid_add_from_string("GRS-1","1.2.840.10003.5.105");
12671     oid_add_from_string("ESTaskPackage","1.2.840.10003.5.106");
12672     oid_add_from_string("fragment","1.2.840.10003.5.108");
12673     /* Attribute sets */
12674     oid_add_from_string("bib-1",Z3950_ATSET_BIB1_OID);
12675     oid_add_from_string("exp-1","1.2.840.10003.3.2");
12676     oid_add_from_string("ext-1","1.2.840.10003.3.3");
12677     oid_add_from_string("ccl-1","1.2.840.10003.3.4");
12678     oid_add_from_string("gils","1.2.840.10003.3.5");
12679     oid_add_from_string("stas","1.2.840.10003.3.6");
12680     oid_add_from_string("collections-1","1.2.840.10003.3.7");
12681     oid_add_from_string("cimi-1","1.2.840.10003.3.8");
12682     oid_add_from_string("geo-1","1.2.840.10003.3.9");
12683     oid_add_from_string("ZBIG","1.2.840.10003.3.10");
12684     oid_add_from_string("util","1.2.840.10003.3.11");
12685     oid_add_from_string("xd-1","1.2.840.10003.3.12");
12686     oid_add_from_string("Zthes","1.2.840.10003.3.13");
12687     oid_add_from_string("Fin-1","1.2.840.10003.3.14");
12688     oid_add_from_string("Dan-1","1.2.840.10003.3.15");
12689     oid_add_from_string("Holdings","1.2.840.10003.3.16");
12690     oid_add_from_string("MARC","1.2.840.10003.3.17");
12691     oid_add_from_string("bib-2","1.2.840.10003.3.18");
12692     oid_add_from_string("ZeeRex","1.2.840.10003.3.19");
12693     /* Diagnostic sets */
12694     oid_add_from_string("bib-1-diagnostics",Z3950_DIAGSET_BIB1_OID);
12695 
12696 }
12697 
12698 /* MARC routines */
12699 
12700 static int
dissect_marc_record(tvbuff_t * tvb,packet_info * pinfo,proto_tree * tree,void * data _U_)12701 dissect_marc_record(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void * data _U_)
12702 {
12703     proto_item *record_item, *leader_item,
12704                *directory_item,
12705                *fields_item,
12706                *item;
12707     proto_tree *marc_tree, *leader_tree,
12708                *directory_tree,
12709                *fields_tree;
12710     marc_directory_entry *marc_directory;
12711     guint len = tvb_reported_length(tvb);
12712     const guint8 *marc_value_str;
12713     guint record_length = 0,
12714           data_offset = 0,
12715           length_of_field_size,
12716           starting_character_position_size,
12717           directory_entry_len,
12718           directory_entry_count,
12719           dir_index,
12720           offset = 0;
12721     guint32 marc_value_char;
12722 
12723     record_item = proto_tree_add_item(tree, hf_marc_record,
12724                            tvb, 0, len, ENC_NA);
12725     marc_tree =  proto_item_add_subtree(record_item, ett_marc_record);
12726     if (len < MARC_LEADER_LENGTH) {
12727         expert_add_info_format(pinfo, record_item,
12728             &ei_marc_invalid_record_length,
12729             "MARC record length %d is shorter than leader", len);
12730     }
12731     leader_item = proto_tree_add_item(marc_tree, hf_marc_leader, tvb, 0,
12732                            MARC_LEADER_LENGTH, ENC_NA);
12733     leader_tree = proto_item_add_subtree(leader_item, ett_marc_leader);
12734 
12735     marc_value_str = NULL;
12736     item = proto_tree_add_item_ret_string(leader_tree,
12737                       hf_marc_leader_length, tvb, offset, 5, ENC_ASCII|ENC_NA,
12738                       pinfo->pool,&marc_value_str);
12739     offset += 5;
12740 
12741     if (marc_value_str) {
12742         if (isdigit_string(marc_value_str)) {
12743             record_length = (guint)strtoul(marc_value_str, NULL, 10);
12744         }
12745         else {
12746             expert_add_info_format(pinfo, item,
12747                 &ei_marc_invalid_value,
12748                 "MARC length field '%s' contains invalid characters",
12749                 marc_value_str );
12750         }
12751         if (record_length != len) {
12752             expert_add_info_format(pinfo, item,
12753                 &ei_marc_invalid_length,
12754                 "MARC length field value %d does not match reported length %d",
12755                 record_length, len);
12756         }
12757     }
12758 
12759     proto_tree_add_item(leader_tree, hf_marc_leader_status, tvb, offset, 1, ENC_ASCII);
12760     offset += 1;
12761     proto_tree_add_item(leader_tree, hf_marc_leader_type, tvb, offset, 1, ENC_ASCII);
12762     offset += 1;
12763     proto_tree_add_item(leader_tree, hf_marc_leader_biblevel, tvb, offset, 1, ENC_ASCII);
12764     offset += 1;
12765     proto_tree_add_item(leader_tree, hf_marc_leader_control, tvb, offset, 1, ENC_ASCII);
12766     offset += 1;
12767     proto_tree_add_item(leader_tree, hf_marc_leader_encoding, tvb, offset, 1, ENC_ASCII);
12768     offset += 1;
12769     marc_value_char = MARC_CHAR_UNINITIALIZED;
12770     item = proto_tree_add_item_ret_uint(leader_tree, hf_marc_leader_indicator_count,
12771                tvb, offset, 1, ENC_ASCII, &marc_value_char);
12772     offset += 1;
12773     if (marc_value_char != MARC_CHAR_UNINITIALIZED) {
12774         if (!marc_isdigit(marc_value_char)) {
12775             expert_add_info_format(pinfo, item, &ei_marc_invalid_value,
12776                 "Indicator count '%c' is invalid", marc_value_char);
12777         }
12778         else {
12779             if (marc_char_to_int(marc_value_char) != 2) {
12780                 expert_add_info_format(pinfo, item, &ei_marc_invalid_length,
12781                     "MARC21 requires indicator count equal 2, not %d",
12782                     marc_char_to_int(marc_value_char));
12783             }
12784         }
12785     }
12786 
12787     marc_value_char = MARC_CHAR_UNINITIALIZED;
12788     item = proto_tree_add_item_ret_uint(leader_tree, hf_marc_leader_subfield_count,
12789             tvb, offset, 1, ENC_ASCII, &marc_value_char);
12790     offset += 1;
12791     if (marc_value_char != MARC_CHAR_UNINITIALIZED) {
12792         if (!marc_isdigit(marc_value_char)) {
12793             expert_add_info_format(pinfo, item, &ei_marc_invalid_value,
12794                 "Subfield count '%c' is invalid", marc_value_char);
12795         }
12796         else {
12797             if (marc_char_to_int(marc_value_char) != 2) {
12798                 expert_add_info_format(pinfo, item, &ei_marc_invalid_length,
12799                     "MARC21 requires subfield count equal 2, not %d",
12800                     marc_char_to_int(marc_value_char));
12801             }
12802         }
12803     }
12804 
12805     item = proto_tree_add_item_ret_string(leader_tree, hf_marc_leader_data_offset,
12806                tvb, offset, 5, ENC_ASCII|ENC_NA,
12807                pinfo->pool,&marc_value_str);
12808     offset += 5;
12809     if (marc_value_str) {
12810         if (isdigit_string(marc_value_str)) {
12811             data_offset = (guint)strtoul(marc_value_str, NULL, 10);
12812         }
12813         else {
12814             expert_add_info_format(pinfo, item,
12815                 &ei_marc_invalid_value,
12816                 "MARC data offset field '%s' contains invalid characters",
12817                 marc_value_str );
12818         }
12819         if (data_offset < MARC_LEADER_LENGTH ||
12820             data_offset > record_length) {
12821             expert_add_info_format(pinfo, item,
12822                 &ei_marc_invalid_length,
12823                 "MARC data offset %d does not lie within record (length %d)",
12824                 data_offset, len);
12825         }
12826     }
12827     proto_tree_add_item(leader_tree, hf_marc_leader_encoding_level, tvb, offset, 1, ENC_ASCII);
12828     offset += 1;
12829     proto_tree_add_item(leader_tree, hf_marc_leader_descriptive_cataloging, tvb, offset, 1, ENC_ASCII);
12830     offset += 1;
12831     proto_tree_add_item(leader_tree, hf_marc_leader_multipart_level, tvb, offset, 1, ENC_ASCII);
12832     offset += 1;
12833     marc_value_char = MARC_CHAR_UNINITIALIZED;
12834     item = proto_tree_add_item_ret_uint(leader_tree, hf_marc_leader_length_of_field_length,
12835             tvb, offset, 1, ENC_ASCII, &marc_value_char);
12836     offset += 1;
12837     length_of_field_size = 4;
12838     if (marc_value_char != MARC_CHAR_UNINITIALIZED) {
12839         if (!marc_isdigit(marc_value_char)) {
12840             expert_add_info_format(pinfo, item, &ei_marc_invalid_value,
12841                 "Length-of field-length '%c' is invalid", marc_value_char);
12842         }
12843         else {
12844             if (marc_char_to_int(marc_value_char) != 4) {
12845                 expert_add_info_format(pinfo, item, &ei_marc_invalid_length,
12846                     "MARC21 requires length-of-field equal 4, not %d",
12847                     marc_char_to_int(marc_value_char));
12848             }
12849         }
12850     }
12851 
12852     marc_value_char = MARC_CHAR_UNINITIALIZED;
12853     item = proto_tree_add_item_ret_uint(leader_tree, hf_marc_leader_starting_character_position_length,
12854             tvb, offset, 1, ENC_ASCII, &marc_value_char);
12855     offset += 1;
12856     starting_character_position_size = 5;
12857     if (marc_value_char != MARC_CHAR_UNINITIALIZED) {
12858         if (!marc_isdigit(marc_value_char)) {
12859             expert_add_info_format(pinfo, item, &ei_marc_invalid_value,
12860                 "Starting-character-position length '%c' is invalid", marc_value_char);
12861         }
12862         else {
12863             if (marc_char_to_int(marc_value_char) != 5) {
12864                 expert_add_info_format(pinfo, item, &ei_marc_invalid_length,
12865                     "MARC21 requires starting-character-position equal 5, not %d",
12866                     marc_char_to_int(marc_value_char));
12867             }
12868         }
12869     }
12870 
12871     proto_tree_add_item(leader_tree, hf_marc_leader_implementation_defined_length, tvb, offset, 1, ENC_ASCII);
12872     offset += 1;
12873 
12874     /* One position is defined as unused-must-be-zero.
12875      * Don't bother displaying or checking it. */
12876     offset += 1;
12877 
12878     /* Process the directory */
12879 
12880     directory_entry_len = 3 + length_of_field_size
12881                             + starting_character_position_size;
12882     directory_entry_count = ((data_offset - 1) - MARC_LEADER_LENGTH) / directory_entry_len;
12883 
12884     marc_directory = (marc_directory_entry *)wmem_alloc0(pinfo->pool,
12885                                  directory_entry_count * sizeof(marc_directory_entry));
12886 
12887     directory_item = proto_tree_add_item(marc_tree, hf_marc_directory,
12888                          tvb, offset, data_offset - offset, ENC_NA);
12889     directory_tree = proto_item_add_subtree(directory_item, ett_marc_directory);
12890 
12891     dir_index = 0;
12892     /* Minus one for the terminator character */
12893     while (offset < (data_offset - 1)) {
12894         guint32 tag_value = 0,
12895                 length_value = 0,
12896                 starting_char_value = 0;
12897         proto_item *length_item;
12898         proto_item *directory_entry_item;
12899         proto_tree *directory_entry_tree;
12900 
12901         directory_entry_item = proto_tree_add_item(directory_tree, hf_marc_directory_entry,
12902                                    tvb, offset, directory_entry_len, ENC_NA);
12903         directory_entry_tree = proto_item_add_subtree(directory_entry_item, ett_marc_directory_entry);
12904 
12905         marc_value_str = NULL;
12906         item = proto_tree_add_item_ret_string(directory_entry_tree, hf_marc_directory_entry_tag,
12907                    tvb, offset, 3, ENC_ASCII,
12908                    pinfo->pool, &marc_value_str);
12909         offset += 3;
12910         if (marc_value_str) {
12911             if (isdigit_string(marc_value_str)) {
12912                 tag_value = (guint)strtoul(marc_value_str, NULL, 10);
12913             }
12914             else {
12915                 expert_add_info_format(pinfo, item,
12916                     &ei_marc_invalid_value,
12917                     "MARC directory tag value %d ('%s') contains invalid characters",
12918                     dir_index, marc_value_str );
12919             }
12920         }
12921         marc_value_str = NULL;
12922         length_item = proto_tree_add_item_ret_string(directory_entry_tree,
12923             hf_marc_directory_entry_length,
12924             tvb, offset, length_of_field_size, ENC_ASCII,
12925             pinfo->pool, &marc_value_str);
12926         offset += length_of_field_size;
12927         if (marc_value_str) {
12928             if (isdigit_string(marc_value_str)) {
12929                 length_value = (guint)strtoul(marc_value_str, NULL, 10);
12930             }
12931             else {
12932                 expert_add_info_format(pinfo, length_item,
12933                     &ei_marc_invalid_value,
12934                     "MARC directory length value %d ('%s') contains invalid characters",
12935                     dir_index, marc_value_str );
12936             }
12937         }
12938         marc_value_str = NULL;
12939         item = proto_tree_add_item_ret_string(directory_entry_tree, hf_marc_directory_entry_starting_position,
12940             tvb, offset, starting_character_position_size, ENC_ASCII,
12941             pinfo->pool, &marc_value_str);
12942         offset += starting_character_position_size;
12943         if (marc_value_str) {
12944             if (isdigit_string(marc_value_str)) {
12945                 starting_char_value = (guint)strtoul(marc_value_str, NULL, 10);
12946             }
12947             else {
12948                 expert_add_info_format(pinfo, item,
12949                     &ei_marc_invalid_value,
12950                     "MARC directory entry %d starting char value '%s' contains invalid characters",
12951                     dir_index, marc_value_str );
12952             }
12953         }
12954 
12955         if (starting_char_value >= (record_length - data_offset)) {
12956             expert_add_info_format(pinfo, item,
12957                 &ei_marc_invalid_value,
12958                 "MARC directory entry %d starting char value %d is outside record size %d",
12959                 dir_index, starting_char_value, (record_length - data_offset));
12960         }
12961         if ((starting_char_value + length_value) >= (record_length - data_offset)) {
12962             expert_add_info_format(pinfo, length_item,
12963                 &ei_marc_invalid_value,
12964                 "MARC directory entry %d length value %d goes outside record size %d",
12965                 dir_index, length_value, (record_length - data_offset));
12966         }
12967         marc_directory[dir_index].tag = tag_value;
12968         marc_directory[dir_index].length = length_value;
12969         marc_directory[dir_index].starting_character = starting_char_value;
12970         dir_index++;
12971     }
12972     proto_tree_add_item(directory_tree, hf_marc_directory_terminator,
12973         tvb, offset, 1, ENC_ASCII);
12974     offset += 1;
12975 
12976     fields_item = proto_tree_add_item(marc_tree, hf_marc_fields,
12977                          tvb, offset, record_length - offset, ENC_NA);
12978     fields_tree = proto_item_add_subtree(fields_item, ett_marc_fields);
12979 
12980     for (dir_index = 0; dir_index < directory_entry_count; dir_index++) {
12981         const gchar *tag_str;
12982         proto_item *field_item;
12983         proto_tree *field_tree;
12984 
12985         field_item = proto_tree_add_item(fields_tree, hf_marc_field,
12986                          tvb, offset, marc_directory[dir_index].length, ENC_NA);
12987         field_tree = proto_item_add_subtree(field_item, ett_marc_field);
12988 
12989         tag_str = try_val_to_str(marc_directory[dir_index].tag, marc_tag_names);
12990         if (tag_str) {
12991             proto_item_append_text(field_item," Tag %03d (%s)",
12992                 marc_directory[dir_index].tag, tag_str);
12993         }
12994         else {
12995             proto_item_append_text(field_item," Tag %03d",
12996                 marc_directory[dir_index].tag);
12997         }
12998 
12999         if (marc_directory[dir_index].tag < 10) {
13000             proto_tree_add_item(field_tree, hf_marc_field_control,
13001                     tvb, offset, marc_directory[dir_index].length - 1, ENC_ASCII|ENC_NA);
13002             offset += marc_directory[dir_index].length - 1;
13003             proto_tree_add_item(field_tree, hf_marc_field_terminator,
13004                     tvb, offset, 1, ENC_ASCII);
13005             offset += 1;
13006         }
13007         else {
13008             guint next_offset = offset + marc_directory[dir_index].length - 1;
13009             proto_tree_add_item(field_tree, hf_marc_field_indicator1,
13010                     tvb, offset, 1, ENC_ASCII);
13011             offset += 1;
13012             proto_tree_add_item(field_tree, hf_marc_field_indicator2,
13013                     tvb, offset, 1, ENC_ASCII);
13014             offset += 1;
13015             do {
13016                 gint next_subfield;
13017                 proto_tree_add_item(field_tree, hf_marc_field_subfield_indicator,
13018                         tvb, offset, 1, ENC_ASCII);
13019                 offset += 1;
13020                 proto_tree_add_item(field_tree, hf_marc_field_subfield_tag,
13021                         tvb, offset, 1, ENC_ASCII);
13022                 offset += 1;
13023                 next_subfield = tvb_find_guint8(tvb, offset, next_offset - offset,
13024                                                 MARC_SUBFIELD_INDICATOR);
13025                 if (next_subfield >= 0) {
13026                     proto_tree_add_item(field_tree, hf_marc_field_subfield,
13027                             tvb, offset, next_subfield - offset, ENC_ASCII|ENC_NA);
13028                     offset += (next_subfield - offset);
13029                 }
13030                 else {
13031                     proto_tree_add_item(field_tree, hf_marc_field_subfield,
13032                             tvb, offset, next_offset - offset, ENC_ASCII|ENC_NA);
13033                     offset = next_offset;
13034                 }
13035             } while (offset < next_offset);
13036             proto_tree_add_item(field_tree, hf_marc_field_terminator,
13037                     tvb, offset, 1, ENC_ASCII);
13038             offset += 1;
13039         }
13040 
13041     }
13042     proto_tree_add_item(marc_tree, hf_marc_record_terminator,
13043             tvb, offset, 1, ENC_ASCII);
13044     offset += 1;
13045 
13046     if (offset != len) {
13047         expert_add_info_format(pinfo, record_item,
13048             &ei_marc_invalid_record_length,
13049             "MARC record component length %d does not match record length %d",
13050             offset, len);
13051     }
13052 
13053     return len;
13054 }
13055 
13056 /*
13057  * Editor modelines
13058  *
13059  * Local Variables:
13060  * c-basic-offset: 4
13061  * tab-width: 8
13062  * indent-tabs-mode: nil
13063  * End:
13064  *
13065  * ex: set shiftwidth=4 tabstop=8 expandtab:
13066  * :indentSize=4:tabSize=8:noTabs=true:
13067  */
13068