Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-z3950.c
blob118860b5446049d56644a2fd5b7f075bf20ce057
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 -q -L -p z3950 -c ./z3950.cnf -s ./packet-z3950-template -D . -O ../.. z3950.asn z3950-oclc.asn z3950-externals.asn */
6 /* packet-z3950.c
7 * Routines for dissection of the NISO Z39.50 Information Retrieval protocol
8 * Also contains a dissector for the MARC Machine Readable Cataloging file
9 * format. The general format is specified by ISO 2709 and the specific
10 * instance is MARC21.
12 * Copyright 2018, Craig Jackson <cejackson51@gmail.com>
14 * Wireshark - Network traffic analyzer
15 * By Gerald Combs <gerald@wireshark.org>
16 * Copyright 1998 Gerald Combs
18 * SPDX-License-Identifier: GPL-2.0-or-later
20 * References:
21 * ISO 2709: https://www.iso.org/standard/41319.html
22 * MARC21: https://www.loc.gov/marc/bibliographic/
23 * Z39.50 Maintenance Agency: https://www.loc.gov/z3950/agency/
24 * Z39.50 2003 standard: https://www.loc.gov/z3950/agency/Z39-50-2003.pdf
25 * Z39.50 1995 ASN.1: https://www.loc.gov/z3950/agency/asn1.html
26 * Registered Z39.50 Object Identifiers:
27 * https://www.loc.gov/z3950/agency/defns/oids.html
28 * Bib-1 Attribute Set: https://www.loc.gov/z3950/agency/defns/bib1.html
29 * Bib-1 Diagnostics: https://www.loc.gov/z3950/agency/defns/bib1diag.html
30 * RFC for Z39.50 over TCP/IP: https://tools.ietf.org/html/rfc1729
34 #include "config.h"
36 #include <epan/packet.h>
37 #include <epan/conversation.h>
38 #include <epan/exceptions.h>
39 #include <epan/expert.h>
40 #include <epan/oids.h>
41 #include <epan/proto_data.h>
42 #include <wsutil/str_util.h>
45 #include <string.h>
47 #include "packet-ber.h"
48 #include "packet-tcp.h"
50 typedef struct z3950_atinfo_t {
51 int atsetidx;
52 int attype;
53 } z3950_atinfo_t;
55 typedef struct z3950_diaginfo_t {
56 int diagsetidx;
57 int diagcondition;
58 } z3950_diaginfo_t;
60 #define PNAME "Z39.50 Protocol"
61 #define PSNAME "Z39.50"
62 #define PFNAME "z3950"
63 #define Z3950_PORT 210 /* UDP port */
65 /* Known attribute set ids */
66 #define Z3950_ATSET_BIB1_OID "1.2.840.10003.3.1"
68 /* Known diagnostic set ids */
69 #define Z3950_DIAGSET_BIB1_OID "1.2.840.10003.4.1"
71 /* Known record syntax ids */
72 #define Z3950_RECORDSYNTAX_MARC21_OID "1.2.840.10003.5.10"
74 /* Indexes of known attribute set ids */
75 #define Z3950_ATSET_UNKNOWN 0
76 #define Z3950_ATSET_BIB1 1
78 /* bib-1 Attribute Types */
79 #define Z3950_BIB1_AT_USE 1
80 #define Z3950_BIB1_AT_RELATION 2
81 #define Z3950_BIB1_AT_POSITION 3
82 #define Z3950_BIB1_AT_STRUCTURE 4
83 #define Z3950_BIB1_AT_TRUNCATION 5
84 #define Z3950_BIB1_AT_COMPLETENESS 6
86 /* Indexes of known diagnostic set ids */
87 #define Z3950_DIAGSET_UNKNOWN 0
88 #define Z3950_DIAGSET_BIB1 1
90 /* Per-packet data keys */
91 #define Z3950_ATINFO_KEY 1
92 #define Z3950_DIAGSET_KEY 2
94 /* MARC defines */
95 #define MARC_SUBFIELD_INDICATOR '\x1f'
96 #define MARC_LEADER_LENGTH 24
97 #define MARC_CHAR_UNINITIALIZED 256
99 #define marc_isdigit(x) (((x) >='0') && ((x) <= '9'))
100 #define marc_char_to_int(x) ((x) - '0')
102 typedef struct marc_directory_entry {
103 uint32_t tag;
104 uint32_t length;
105 uint32_t starting_character;
106 } marc_directory_entry;
108 static dissector_handle_t z3950_handle;
110 void proto_reg_handoff_z3950(void);
111 void proto_register_z3950(void);
113 /* Initialize the protocol and registered fields */
114 static int proto_z3950;
115 static int global_z3950_port = Z3950_PORT;
116 static bool z3950_desegment = true;
118 static const value_string z3950_bib1_att_types[] = {
119 { Z3950_BIB1_AT_USE, "Use" },
120 { Z3950_BIB1_AT_RELATION, "Relation" },
121 { Z3950_BIB1_AT_POSITION, "Position" },
122 { Z3950_BIB1_AT_STRUCTURE, "Structure" },
123 { Z3950_BIB1_AT_TRUNCATION, "Truncation" },
124 { Z3950_BIB1_AT_COMPLETENESS, "Completeness"},
125 { 0, NULL}
128 static const value_string z3950_bib1_at_use[] = {
129 { 1, "Personal name" },
130 { 2, "Corporate name" },
131 { 3, "Conference name" },
132 { 4, "Title" },
133 { 5, "Title series" },
134 { 6, "Title uniform" },
135 { 7, "ISBN" },
136 { 8, "ISSN" },
137 { 9, "LC card number" },
138 { 10, "BNB card number" },
139 { 11, "BGF card number" },
140 { 12, "Local number" },
141 { 13, "Dewey classification" },
142 { 14, "UDC classification" },
143 { 15, "Bliss classification" },
144 { 16, "LC call number" },
145 { 17, "NLM call number" },
146 { 18, "NAL call number" },
147 { 19, "MOS call number" },
148 { 20, "Local classification" },
149 { 21, "Subject heading" },
150 { 22, "Subject Rameau" },
151 { 23, "BDI index subject" },
152 { 24, "INSPEC subject" },
153 { 25, "MESH subject" },
154 { 26, "PA subject" },
155 { 27, "LC subject heading" },
156 { 28, "RVM subject heading" },
157 { 29, "Local subject index" },
158 { 30, "Date" },
159 { 31, "Date of publication" },
160 { 32, "Date of acquisition" },
161 { 33, "Title key" },
162 { 34, "Title collective" },
163 { 35, "Title parallel" },
164 { 36, "Title cover" },
165 { 37, "Title added title pagw" },
166 { 38, "Title caption" },
167 { 39, "Title running" },
168 { 40, "Title spine" },
169 { 41, "Title other variant" },
170 { 42, "Title former" },
171 { 43, "Title abbreviated" },
172 { 44, "Title expanded" },
173 { 45, "Subject precis" },
174 { 46, "Subject rswk" },
175 { 47, "Subject subdivision" },
176 { 48, "No. nat'l biblio." },
177 { 49, "No. legal deposit" },
178 { 50, "No. govt pub." },
179 { 51, "No. music publisher" },
180 { 52, "Number db" },
181 { 53, "Number local call" },
182 { 54, "Code-language" },
183 { 55, "Code-geographic area" },
184 { 56, "Code-institution" },
185 { 57, "Name and title *" },
186 { 58, "Name geographic" },
187 { 59, "Place publication" },
188 { 60, "CODEN" },
189 { 61, "Microform generation" },
190 { 62, "Abstract" },
191 { 63, "Note" },
192 { 1000, "Author-title" },
193 { 1001, "Record type" },
194 { 1002, "Name" },
195 { 1003, "Author" },
196 { 1004, "Author-name personal" },
197 { 1005, "Author-name corporate" },
198 { 1006, "Author-name conference" },
199 { 1007, "Identifier-standard" },
200 { 1008, "Subject-LC children's" },
201 { 1009, "Subject name-personal" },
202 { 1010, "Body of text" },
203 { 1011, "Date/time added to db" },
204 { 1012, "Date/time last modified" },
205 { 1013, "Authority/format id" },
206 { 1014, "Concept-text" },
207 { 1015, "Concept-reference" },
208 { 1016, "Any" },
209 { 1017, "Server-choice" },
210 { 1018, "Publisher" },
211 { 1019, "Record-source" },
212 { 1020, "Editor" },
213 { 1021, "Bib-level" },
214 { 1022, "Geographic class" },
215 { 1023, "Indexed-by" },
216 { 1024, "Map-scale" },
217 { 1025, "Music-key" },
218 { 1026, "Related-periodical" },
219 { 1027, "Report-number" },
220 { 1028, "Stock-number" },
221 { 1030, "Thematic-number" },
222 { 1031, "Material-type" },
223 { 1032, "Doc-id" },
224 { 1033, "Host-item" },
225 { 1034, "Content-type" },
226 { 1035, "Anywhere" },
227 { 1036, "Author-Title-Subject" },
228 { 1037, "Serial Item and Contribution Identifier (SICI)" },
229 { 1038, "Abstract-language" },
230 { 1039, "Application-kind" },
231 { 1040, "Classification" },
232 { 1041, "Classification-basic" },
233 { 1042, "Classification-local-record" },
234 { 1043, "Enzyme" },
235 { 1044, "Possessing-institution" },
236 { 1045, "Record-linking" },
237 { 1046, "Record-status" },
238 { 1047, "Treatment" },
239 { 1048, "Control-number-GKD" },
240 { 1049, "Control-number-linking" },
241 { 1050, "Control-number-PND" },
242 { 1051, "Control-number-SWD" },
243 { 1052, "Control-number-ZDB" },
244 { 1053, "Country-publication" },
245 { 1054, "Date-conference" },
246 { 1055, "Date-record-status" },
247 { 1056, "Dissertation-information" },
248 { 1057, "Meeting-organizer" },
249 { 1058, "Note-availability" },
250 { 1059, "Number-CAS-registry" },
251 { 1060, "Number-document" },
252 { 1061, "Number-local-accounting" },
253 { 1062, "Number-local-acquisition" },
254 { 1063, "Number-local-call-copy-specific" },
255 { 1064, "Number-of-reference" },
256 { 1065, "Number-norm" },
257 { 1066, "Number-volume" },
258 { 1067, "Place-conference (meeting location)" },
259 { 1068, "Reference (references and footnotes)" },
260 { 1069, "Referenced-journal" },
261 { 1070, "Section-code" },
262 { 1071, "Section-heading" },
263 { 1072, "Subject-GOO" },
264 { 1073, "Subject-name-conference" },
265 { 1074, "Subject-name-corporate" },
266 { 1075, "Subject-genre/form" },
267 { 1076, "Subject-name-geographical" },
268 { 1077, "Subject-chronological" },
269 { 1078, "Subject-title" },
270 { 1079, "Subject-topical" },
271 { 1080, "Subject-uncontrolled" },
272 { 1081, "Terminology-chemical" },
273 { 1082, "Title-translated" },
274 { 1083, "Year-of-beginning" },
275 { 1084, "Year-of-ending" },
276 { 1085, "Subject-AGROVOC" },
277 { 1086, "Subject-COMPASS" },
278 { 1087, "Subject-EPT" },
279 { 1088, "Subject-NAL" },
280 { 1089, "Classification-BCM" },
281 { 1090, "Classification-DB" },
282 { 1091, "Identifier-ISRC" },
283 { 1092, "Identifier-ISMN" },
284 { 1093, "Identifier-ISRN" },
285 { 1094, "Identifier-DOI" },
286 { 1095, "Code-language-original" },
287 { 1096, "Title-later" },
288 { 1097, "DC-Title" },
289 { 1098, "DC-Creator" },
290 { 1099, "DC-Subject" },
291 { 1100, "DC-Description" },
292 { 1101, "DC-Publisher" },
293 { 1102, "DC-Date" },
294 { 1103, "DC-ResourceType" },
295 { 1104, "DC-ResourceIdentifier" },
296 { 1105, "DC-Language" },
297 { 1106, "DC-OtherContributor" },
298 { 1107, "DC-Format" },
299 { 1108, "DC-Source" },
300 { 1109, "DC-Relation" },
301 { 1110, "DC-Coverage" },
302 { 1111, "DC-RightsManagement" },
303 { 1112, "GILS Controlled Subject Index" },
304 { 1113, "GILS Subject Thesaurus" },
305 { 1114, "GILS Index Terms -- Controlled" },
306 { 1115, "GILS Controlled Term" },
307 { 1116, "GILS Spacial Domain" },
308 { 1117, "GILS Bounding Coordinates" },
309 { 1118, "GILS West Bounding Coordinate" },
310 { 1119, "GILS East Bounding Coordinate" },
311 { 1120, "GILS North Bounding Coordinate" },
312 { 1121, "GILS South Bounding Coordinate" },
313 { 1122, "GILS Place" },
314 { 1123, "GILS Place Keyword Thesaurus" },
315 { 1124, "GILS Place Keyword" },
316 { 1125, "GILS Time Period" },
317 { 1126, "GILS Time Period Textual" },
318 { 1127, "GILS Time Period Structured" },
319 { 1128, "GILS Beginning Date" },
320 { 1129, "GILS Ending Date" },
321 { 1130, "GILS Availability" },
322 { 1131, "GILS Distributor" },
323 { 1132, "GILS Distributor Name" },
324 { 1133, "GILS Distributor Organization" },
325 { 1134, "GILS Distributor Street Address" },
326 { 1135, "GILS Distributor City" },
327 { 1136, "GILS Distributor State or Province" },
328 { 1137, "GILS Distributor Zip or Postal Code" },
329 { 1138, "GILS Distributor Country" },
330 { 1139, "GILS Distributor Network Address" },
331 { 1140, "GILS Distributor Hours of Service" },
332 { 1141, "GILS Distributor Telephone" },
333 { 1142, "GILS Distributor Fax" },
334 { 1143, "GILS Resource Description" },
335 { 1144, "GILS Order Process" },
336 { 1145, "GILS Order Information" },
337 { 1146, "GILS Cost" },
338 { 1147, "GILS Cost Information" },
339 { 1148, "GILS Technical Prerequisites" },
340 { 1149, "GILS Available Time Period" },
341 { 1150, "GILS Available Time Textual" },
342 { 1151, "GILS Available Time Structured" },
343 { 1152, "GILS Available Linkage" },
344 { 1153, "GILS Linkage Type" },
345 { 1154, "GILS Linkage" },
346 { 1155, "GILS Sources of Data" },
347 { 1156, "GILS Methodology" },
348 { 1157, "GILS Access Constraints" },
349 { 1158, "GILS General Access Constraints" },
350 { 1159, "GILS Originator Dissemination Control" },
351 { 1160, "GILS Security Classification Control" },
352 { 1161, "GILS Use Constraints" },
353 { 1162, "GILS Point of Contact" },
354 { 1163, "GILS Contact Name" },
355 { 1164, "GILS Contact Organization" },
356 { 1165, "GILS Contact Street Address" },
357 { 1166, "GILS Contact City" },
358 { 1167, "GILS Contact State or Province" },
359 { 1168, "GILS Contact Zip or Postal Code" },
360 { 1169, "GILS Contact Country" },
361 { 1170, "GILS Contact Network Address" },
362 { 1171, "GILS Contact Hours of Service" },
363 { 1172, "GILS Contact Telephone" },
364 { 1173, "GILS Contact Fax" },
365 { 1174, "GILS Supplemental Information" },
366 { 1175, "GILS Purpose" },
367 { 1176, "GILS Agency Program" },
368 { 1177, "GILS Cross Reference" },
369 { 1178, "GILS Cross Reference Title" },
370 { 1179, "GILS Cross Reference Relationship" },
371 { 1180, "GILS Cross Reference Linkage" },
372 { 1181, "GILS Schedule Number" },
373 { 1182, "GILS Original Control Identifier" },
374 { 1183, "GILS Language of Record" },
375 { 1184, "GILS Record Review Date" },
376 { 1185, "Performer" },
377 { 1186, "Performer-Individual" },
378 { 1187, "Performer-Group" },
379 { 1188, "Instrumentation" },
380 { 1189, "Instrumentation-Original" },
381 { 1190, "Instrumentation-Current" },
382 { 1191, "Arrangement" },
383 { 1192, "Arrangement-Original" },
384 { 1193, "Arrangement-Current" },
385 { 1194, "Musical Key-Original" },
386 { 1195, "Musical Key-Current" },
387 { 1196, "Date-Composition" },
388 { 1197, "Date-Recording" },
389 { 1198, "Place-Recording" },
390 { 1199, "Country-Recording" },
391 { 1200, "Number-ISWC" },
392 { 1201, "Number-Matrix" },
393 { 1202, "Number-Plate" },
394 { 1203, "Classification-McColvin" },
395 { 1204, "Duration" },
396 { 1205, "Number-Copies" },
397 { 1206, "Musical Theme" },
398 { 1207, "Instruments - total number" },
399 { 1208, "Instruments - distinct number" },
400 { 1209, "Identifier - URN" },
401 { 1210, "Sears Subject Heading" },
402 { 1211, "OCLC Number" },
403 { 1212, "NORZIG Composition" },
404 { 1213, "NORZIG Intellectual level" },
405 { 1214, "NORZIG EAN" },
406 { 1215, "NORZIG NLC" },
407 { 1216, "NORZIG CRCS" },
408 { 1217, "NORZIG Nationality" },
409 { 1218, "NORZIG Equinox" },
410 { 1219, "NORZIG Compression" },
411 { 1220, "NORZIG Format" },
412 { 1221, "NORZIG Subject - occupation" },
413 { 1222, "NORZIG Subject - function" },
414 { 1223, "NORZIG Edition" },
415 { 1224, "GPO Item Number" },
416 { 1225, "Provider" },
417 { 0, NULL}
420 static const value_string z3950_bib1_at_relation[] = {
421 { 1, "Less than" },
422 { 2, "Less than or equal" },
423 { 3, "Equal" },
424 { 4, "Greater than or equal" },
425 { 5, "Greater than" },
426 { 6, "Not equal" },
427 { 100, "Phonetic" },
428 { 101, "Stem" },
429 { 102, "Relevance" },
430 { 103, "Always Matches" },
431 { 0, NULL}
434 static const value_string z3950_bib1_at_position[] = {
435 { 1, "First in field" },
436 { 2, "First in subfield" },
437 { 3, "Any position in field" },
438 { 0, NULL}
441 static const value_string z3950_bib1_at_structure[] = {
442 { 1, "Phrase" },
443 { 2, "Word" },
444 { 3, "Key" },
445 { 4, "Year" },
446 { 5, "Date (normalized)" },
447 { 6, "Word list" },
448 { 100, "Date (un-normalized)" },
449 { 101, "Name (normalized)" },
450 { 102, "Name (un-normalized)" },
451 { 103, "Structure" },
452 { 104, "Urx" },
453 { 105, "Free-form-text" },
454 { 106, "Document-text" },
455 { 107, "Local" },
456 { 108, "String" },
457 { 109, "Numeric" },
458 { 0, NULL}
461 static const value_string z3950_bib1_at_truncation[] = {
462 { 1, "Right truncation" },
463 { 2, "Left truncation" },
464 { 3, "Left and right truncation" },
465 { 100, "Do not truncate" },
466 { 101, "Process # in search term" },
467 { 102, "regExpr-1" },
468 { 103, "regExpr-2" },
469 { 104, "Z39.58-1992 Character masking" },
470 { 0, NULL}
473 static const value_string z3950_bib1_at_completeness[] = {
474 { 1, "Incomplete subfield" },
475 { 2, "Complete subfield" },
476 { 3, "Complete field" },
477 { 0, NULL}
480 static const value_string z3950_bib1_diagconditions[] = {
481 { 1, "Permanent system error" },
482 { 2, "Temporary system error" },
483 { 3, "Unsupported search" },
484 { 4, "Terms only exclusion (stop) words" },
485 { 5, "Too many argument words" },
486 { 6, "Too many boolean operators" },
487 { 7, "Too many truncated words" },
488 { 8, "Too many incomplete subfields" },
489 { 9, "Truncated words too short" },
490 { 10, "Invalid format for record number (search term)" },
491 { 11, "Too many characters in search statement" },
492 { 12, "Too many records retrieved" },
493 { 13, "Present request out of range" },
494 { 14, "System error in presenting records" },
495 { 15, "Record no authorized to be sent intersystem" },
496 { 16, "Record exceeds Preferred-message-size" },
497 { 17, "Record exceeds Maximum-record-size" },
498 { 18, "Result set not supported as a search term" },
499 { 19, "Only single result set as search term supported" },
500 { 20, "Only ANDing of a single result set as search term supported" },
501 { 21, "Result set exists and replace indicator off" },
502 { 22, "Result set naming not supported" },
503 { 23, "Combination of specified databases not supported" },
504 { 24, "Element set names not supported" },
505 { 25, "Specified element set name not valid for specified database" },
506 { 26, "Only a single element set name supported" },
507 { 27, "Result set no longer exists - unilaterally deleted by target" },
508 { 28, "Result set is in use" },
509 { 29, "One of the specified databases is locked" },
510 { 30, "Specified result set does not exist" },
511 { 31, "Resources exhausted - no results available" },
512 { 32, "Resources exhausted - unpredictable partial results available" },
513 { 33, "Resources exhausted - valid subset of results available" },
514 { 100, "Unspecified error" },
515 { 101, "Access-control failure" },
516 { 102, "Security challenge required but could not be issued - request terminated" },
517 { 103, "Security challenge required but could not be issued - record not included" },
518 { 104, "Security challenge failed - record not included" },
519 { 105, "Terminated by negative continue response" },
520 { 106, "No abstract syntaxes agreed to for this record" },
521 { 107, "Query type not supported" },
522 { 108, "Malformed query" },
523 { 109, "Database unavailable" },
524 { 110, "Operator unsupported" },
525 { 111, "Too many databases specified" },
526 { 112, "Too many result sets created" },
527 { 113, "Unsupported attribute type" },
528 { 114, "Unsupported Use attribute" },
529 { 115, "Unsupported value for Use attribute" },
530 { 116, "Use attribute required but not supplied" },
531 { 117, "Unsupported Relation attribute" },
532 { 118, "Unsupported Structure attribute" },
533 { 119, "Unsupported Position attribute" },
534 { 120, "Unsupported Truncation attribute" },
535 { 121, "Unsupported Attribute Set" },
536 { 122, "Unsupported Completeness attribute" },
537 { 123, "Unsupported attribute combination" },
538 { 124, "Unsupported coded value for term" },
539 { 125, "Malformed search term" },
540 { 126, "Illegal term value for attribute" },
541 { 127, "Unparsable format for un-normalized value" },
542 { 128, "Illegal result set name" },
543 { 129, "Proximity search of sets not supported" },
544 { 130, "Illegal result set in proximity search" },
545 { 131, "Unsupported proximity relation" },
546 { 132, "Unsupported proximity unit code" },
547 { 201, "Proximity not supported with this attribute combination" },
548 { 202, "Unsupported distance for proximity" },
549 { 203, "Ordered flag not supported for proximity" },
550 { 205, "Only zero step size supported for Scan" },
551 { 206, "Specified step size not supported for Scan" },
552 { 207, "Cannot sort according to sequence" },
553 { 208, "No result set name supplied on Sort" },
554 { 209, "Generic sort not supported (database-specific sort only supported)" },
555 { 210, "Database specific sort not supported" },
556 { 211, "Too many sort keys" },
557 { 212, "Duplicate sort keys" },
558 { 213, "Unsupported missing data action" },
559 { 214, "Illegal sort relation" },
560 { 215, "Illegal case value" },
561 { 216, "Illegal missing data action" },
562 { 217, "Segmentation: Cannot guarantee records will fit in specified segments" },
563 { 218, "ES: Package name already in use" },
564 { 219, "ES: no such package, on modify/delete" },
565 { 220, "ES: quota exceeded" },
566 { 221, "ES: extended service type not supported" },
567 { 222, "ES: permission denied on ES - id not authorized" },
568 { 223, "ES: permission denied on ES - cannot modify or delete" },
569 { 224, "ES: immediate execution failed" },
570 { 225, "ES: immediate execution not supported for this service" },
571 { 226, "ES: immediate execution not supported for these parameters" },
572 { 227, "No data available in requested record syntax" },
573 { 228, "Scan: malformed scan" },
574 { 229, "Term type not supported" },
575 { 230, "Sort: too many input results" },
576 { 231, "Sort: incompatible record formats" },
577 { 232, "Scan: term list not supported" },
578 { 233, "Scan: unsupported value of position-in-response" },
579 { 234, "Too many index terms processed" },
580 { 235, "Database does not exist" },
581 { 236, "Access to specified database denied" },
582 { 237, "Sort: illegal sort" },
583 { 238, "Record not available in requested syntax" },
584 { 239, "Record syntax not supported" },
585 { 240, "Scan: Resources exhausted looking for satisfying terms" },
586 { 241, "Scan: Beginning or end of term list" },
587 { 242, "Segmentation: max-segment-size too small to segment record" },
588 { 243, "Present: additional-ranges parameter not supported" },
589 { 244, "Present: comp-spec parameter not supported" },
590 { 245, "Type-1 query: restriction ('resultAttr') operand not supported" },
591 { 246, "Type-1 query: 'complex' attributeValue not supported" },
592 { 247, "Type-1 query: 'attributeSet' as part of AttributeElement not supported" },
593 { 1001, "Malformed APDU" },
594 { 1002, "ES: EXTERNAL form of Item Order request not supported" },
595 { 1003, "ES: Result set item form of Item Order request not supported" },
596 { 1004, "ES: Extended services not supported unless access control is in effect" },
597 { 1005, "Response records in Search response not supported" },
598 { 1006, "Response records in Search response not possible for specified database (or database combination)" },
599 { 1007, "No Explain server. Addinfo: pointers to servers that have a surrogate Explain database for this server" },
600 { 1008, "ES: missing mandatory parameter for specified function. Addinfo: parameter" },
601 { 1009, "ES: Item Order, unsupported OID in itemRequest. Addinfo: OID" },
602 { 1010, "Init/AC: Bad Userid" },
603 { 1011, "Init/AC: Bad Userid and/or Password" },
604 { 1012, "Init/AC: No searches remaining (pre-purchased searches exhausted)" },
605 { 1013, "Init/AC: Incorrect interface type (specified id valid only when used with a particular access method or client)" },
606 { 1014, "Init/AC: Authentication System error" },
607 { 1015, "Init/AC: Maximum number of simultaneous sessions for Userid" },
608 { 1016, "Init/AC: Blocked network address" },
609 { 1017, "Init/AC: No databases available for specified userId" },
610 { 1018, "Init/AC: System temporarily out of resources" },
611 { 1019, "Init/AC: System not available due to maintenance" },
612 { 1020, "Init/AC: System temporarily unavailable (Addinfo: when it's expected back up)" },
613 { 1021, "Init/AC: Account has expired" },
614 { 1022, "Init/AC: Password has expired so a new one must be supplied" },
615 { 1023, "Init/AC: Password has been changed by an administrator so a new one must be supplied" },
616 { 1024, "Unsupported Attribute" },
617 { 1025, "Service not supported for this database" },
618 { 1026, "Record cannot be opened because it is locked" },
619 { 1027, "SQL error" },
620 { 1028, "Record deleted" },
621 { 1029, "Scan: too many terms requested. Addinfo: max terms supported" },
622 { 1040, "ES: Invalid function" },
623 { 1041, "ES: Error in retention time" },
624 { 1042, "ES: Permissions data not understood" },
625 { 1043, "ES: Invalid OID for task specific parameters" },
626 { 1044, "ES: Invalid action" },
627 { 1045, "ES: Unknown schema" },
628 { 1046, "ES: Too many records in package" },
629 { 1047, "ES: Invalid wait action" },
630 { 1048, "ES: Cannot create task package -- exceeds maximum permissible size" },
631 { 1049, "ES: Cannot return task package -- exceeds maximum permissible size" },
632 { 1050, "ES: Extended services request too large" },
633 { 1051, "Scan: Attribute set id required -- not supplied" },
634 { 1052, "ES: Cannot process task package record -- exceeds maximum permissible record size for ES" },
635 { 1053, "ES: Cannot return task package record -- exceeds maximum permissible record size for ES response" },
636 { 1054, "Init: Required negotiation record not included" },
637 { 1055, "Init: negotiation option required" },
638 { 1056, "Attribute not supported for database" },
639 { 1057, "ES: Unsupported value of task package parameter" },
640 { 1058, "Duplicate Detection: Cannot dedup on requested record portion" },
641 { 1059, "Duplicate Detection: Requested detection criterion not supported" },
642 { 1060, "Duplicate Detection: Requested level of match not supported" },
643 { 1061, "Duplicate Detection: Requested regular expression not supported" },
644 { 1062, "Duplicate Detection: Cannot do clustering" },
645 { 1063, "Duplicate Detection: Retention criterion not supported" },
646 { 1064, "Duplicate Detection: Requested number (or percentage) of entries for retention too large" },
647 { 1065, "Duplicate Detection: Requested sort criterion not supported" },
648 { 1066, "CompSpec: Unknown schema, or schema not supported." },
649 { 1067, "Encapsulation: Encapsulated sequence of PDUs not supported" },
650 { 1068, "Encapsulation: Base operation (and encapsulated PDUs) not executed based on pre-screening analysis" },
651 { 1069, "No syntaxes available for this request" },
652 { 1070, "User not authorized to receive record(s) in requested syntax" },
653 { 1071, "preferredRecordSyntax not supplied" },
654 { 1072, "Query term includes characters that do not translate into the target character set" },
655 { 1073, "Database records do not contain data associated with access point" },
656 { 1074, "Proxy failure" },
657 { 0, NULL}
660 static int hf_z3950_OCLC_UserInformation_PDU; /* OCLC_UserInformation */
661 static int hf_z3950_SutrsRecord_PDU; /* SutrsRecord */
662 static int hf_z3950_OPACRecord_PDU; /* OPACRecord */
663 static int hf_z3950_DiagnosticFormat_PDU; /* DiagnosticFormat */
664 static int hf_z3950_Explain_Record_PDU; /* Explain_Record */
665 static int hf_z3950_BriefBib_PDU; /* BriefBib */
666 static int hf_z3950_GenericRecord_PDU; /* GenericRecord */
667 static int hf_z3950_TaskPackage_PDU; /* TaskPackage */
668 static int hf_z3950_PromptObject_PDU; /* PromptObject */
669 static int hf_z3950_DES_RN_Object_PDU; /* DES_RN_Object */
670 static int hf_z3950_KRBObject_PDU; /* KRBObject */
671 static int hf_z3950_SearchInfoReport_PDU; /* SearchInfoReport */
672 static int hf_z3950_initRequest; /* InitializeRequest */
673 static int hf_z3950_initResponse; /* InitializeResponse */
674 static int hf_z3950_searchRequest; /* SearchRequest */
675 static int hf_z3950_searchResponse; /* SearchResponse */
676 static int hf_z3950_presentRequest; /* PresentRequest */
677 static int hf_z3950_presentResponse; /* PresentResponse */
678 static int hf_z3950_deleteResultSetRequest; /* DeleteResultSetRequest */
679 static int hf_z3950_deleteResultSetResponse; /* DeleteResultSetResponse */
680 static int hf_z3950_accessControlRequest; /* AccessControlRequest */
681 static int hf_z3950_accessControlResponse; /* AccessControlResponse */
682 static int hf_z3950_resourceControlRequest; /* ResourceControlRequest */
683 static int hf_z3950_resourceControlResponse; /* ResourceControlResponse */
684 static int hf_z3950_triggerResourceControlRequest; /* TriggerResourceControlRequest */
685 static int hf_z3950_resourceReportRequest; /* ResourceReportRequest */
686 static int hf_z3950_resourceReportResponse; /* ResourceReportResponse */
687 static int hf_z3950_scanRequest; /* ScanRequest */
688 static int hf_z3950_scanResponse; /* ScanResponse */
689 static int hf_z3950_sortRequest; /* SortRequest */
690 static int hf_z3950_sortResponse; /* SortResponse */
691 static int hf_z3950_segmentRequest; /* Segment */
692 static int hf_z3950_extendedServicesRequest; /* ExtendedServicesRequest */
693 static int hf_z3950_extendedServicesResponse; /* ExtendedServicesResponse */
694 static int hf_z3950_close; /* Close */
695 static int hf_z3950_referenceId; /* ReferenceId */
696 static int hf_z3950_protocolVersion; /* ProtocolVersion */
697 static int hf_z3950_options; /* Options */
698 static int hf_z3950_preferredMessageSize; /* INTEGER */
699 static int hf_z3950_exceptionalRecordSize; /* INTEGER */
700 static int hf_z3950_idAuthentication; /* T_idAuthentication */
701 static int hf_z3950_open; /* VisibleString */
702 static int hf_z3950_idPass; /* T_idPass */
703 static int hf_z3950_groupId; /* InternationalString */
704 static int hf_z3950_userId; /* InternationalString */
705 static int hf_z3950_password; /* InternationalString */
706 static int hf_z3950_anonymous; /* NULL */
707 static int hf_z3950_other; /* EXTERNAL */
708 static int hf_z3950_implementationId; /* InternationalString */
709 static int hf_z3950_implementationName; /* InternationalString */
710 static int hf_z3950_implementationVersion; /* InternationalString */
711 static int hf_z3950_userInformationField; /* EXTERNAL */
712 static int hf_z3950_otherInfo; /* OtherInformation */
713 static int hf_z3950_result; /* BOOLEAN */
714 static int hf_z3950_smallSetUpperBound; /* INTEGER */
715 static int hf_z3950_largeSetLowerBound; /* INTEGER */
716 static int hf_z3950_mediumSetPresentNumber; /* INTEGER */
717 static int hf_z3950_replaceIndicator; /* BOOLEAN */
718 static int hf_z3950_resultSetName; /* InternationalString */
719 static int hf_z3950_databaseNames; /* SEQUENCE_OF_DatabaseName */
720 static int hf_z3950_databaseNames_item; /* DatabaseName */
721 static int hf_z3950_smallSetElementSetNames; /* ElementSetNames */
722 static int hf_z3950_mediumSetElementSetNames; /* ElementSetNames */
723 static int hf_z3950_preferredRecordSyntax; /* OBJECT_IDENTIFIER */
724 static int hf_z3950_query; /* Query */
725 static int hf_z3950_additionalSearchInfo; /* OtherInformation */
726 static int hf_z3950_type_0; /* T_type_0 */
727 static int hf_z3950_type_1; /* RPNQuery */
728 static int hf_z3950_type_2; /* OCTET_STRING */
729 static int hf_z3950_type_100; /* OCTET_STRING */
730 static int hf_z3950_type_101; /* RPNQuery */
731 static int hf_z3950_type_102; /* OCTET_STRING */
732 static int hf_z3950_attributeSet; /* AttributeSetId */
733 static int hf_z3950_rpn; /* RPNStructure */
734 static int hf_z3950_operandRpnOp; /* Operand */
735 static int hf_z3950_rpnRpnOp; /* T_rpnRpnOp */
736 static int hf_z3950_rpn1; /* RPNStructure */
737 static int hf_z3950_rpn2; /* RPNStructure */
738 static int hf_z3950_operatorRpnOp; /* Operator */
739 static int hf_z3950_attrTerm; /* AttributesPlusTerm */
740 static int hf_z3950_resultSet; /* ResultSetId */
741 static int hf_z3950_resultAttr; /* ResultSetPlusAttributes */
742 static int hf_z3950_attributes; /* AttributeList */
743 static int hf_z3950_term; /* Term */
744 static int hf_z3950_attributeList_item; /* AttributeElement */
745 static int hf_z3950_general; /* T_general */
746 static int hf_z3950_numeric; /* INTEGER */
747 static int hf_z3950_characterString; /* InternationalString */
748 static int hf_z3950_oid; /* OBJECT_IDENTIFIER */
749 static int hf_z3950_dateTime; /* GeneralizedTime */
750 static int hf_z3950_external; /* EXTERNAL */
751 static int hf_z3950_integerAndUnit; /* IntUnit */
752 static int hf_z3950_null; /* NULL */
753 static int hf_z3950_and; /* NULL */
754 static int hf_z3950_or; /* NULL */
755 static int hf_z3950_and_not; /* NULL */
756 static int hf_z3950_prox; /* ProximityOperator */
757 static int hf_z3950_attributeElement_attributeType; /* T_attributeElement_attributeType */
758 static int hf_z3950_attributeValue; /* T_attributeValue */
759 static int hf_z3950_attributeValue_numeric; /* T_attributeValue_numeric */
760 static int hf_z3950_attributeValue_complex; /* T_attributeValue_complex */
761 static int hf_z3950_attributeValue_complex_list; /* SEQUENCE_OF_StringOrNumeric */
762 static int hf_z3950_attributeValue_complex_list_item; /* StringOrNumeric */
763 static int hf_z3950_semanticAction; /* T_semanticAction */
764 static int hf_z3950_semanticAction_item; /* INTEGER */
765 static int hf_z3950_exclusion; /* BOOLEAN */
766 static int hf_z3950_distance; /* INTEGER */
767 static int hf_z3950_ordered; /* BOOLEAN */
768 static int hf_z3950_relationType; /* T_relationType */
769 static int hf_z3950_proximityUnitCode; /* T_proximityUnitCode */
770 static int hf_z3950_known; /* KnownProximityUnit */
771 static int hf_z3950_private; /* INTEGER */
772 static int hf_z3950_resultCount; /* INTEGER */
773 static int hf_z3950_numberOfRecordsReturned; /* INTEGER */
774 static int hf_z3950_nextResultSetPosition; /* INTEGER */
775 static int hf_z3950_searchStatus; /* BOOLEAN */
776 static int hf_z3950_search_resultSetStatus; /* T_search_resultSetStatus */
777 static int hf_z3950_presentStatus; /* PresentStatus */
778 static int hf_z3950_records; /* Records */
779 static int hf_z3950_resultSetId; /* ResultSetId */
780 static int hf_z3950_resultSetStartPoint; /* INTEGER */
781 static int hf_z3950_numberOfRecordsRequested; /* INTEGER */
782 static int hf_z3950_additionalRanges; /* SEQUENCE_OF_Range */
783 static int hf_z3950_additionalRanges_item; /* Range */
784 static int hf_z3950_recordComposition; /* T_recordComposition */
785 static int hf_z3950_simple; /* ElementSetNames */
786 static int hf_z3950_recordComposition_complex; /* CompSpec */
787 static int hf_z3950_maxSegmentCount; /* INTEGER */
788 static int hf_z3950_maxRecordSize; /* INTEGER */
789 static int hf_z3950_maxSegmentSize; /* INTEGER */
790 static int hf_z3950_segmentRecords; /* SEQUENCE_OF_NamePlusRecord */
791 static int hf_z3950_segmentRecords_item; /* NamePlusRecord */
792 static int hf_z3950_responseRecords; /* SEQUENCE_OF_NamePlusRecord */
793 static int hf_z3950_responseRecords_item; /* NamePlusRecord */
794 static int hf_z3950_nonSurrogateDiagnostic; /* DefaultDiagFormat */
795 static int hf_z3950_multipleNonSurDiagnostics; /* SEQUENCE_OF_DiagRec */
796 static int hf_z3950_multipleNonSurDiagnostics_item; /* DiagRec */
797 static int hf_z3950_namePlusRecord_name; /* DatabaseName */
798 static int hf_z3950_record; /* T_record */
799 static int hf_z3950_retrievalRecord; /* EXTERNAL */
800 static int hf_z3950_surrogateDiagnostic; /* DiagRec */
801 static int hf_z3950_startingFragment; /* FragmentSyntax */
802 static int hf_z3950_intermediateFragment; /* FragmentSyntax */
803 static int hf_z3950_finalFragment; /* FragmentSyntax */
804 static int hf_z3950_externallyTagged; /* EXTERNAL */
805 static int hf_z3950_notExternallyTagged; /* OCTET_STRING */
806 static int hf_z3950_defaultFormat; /* DefaultDiagFormat */
807 static int hf_z3950_externallyDefined; /* EXTERNAL */
808 static int hf_z3950_diagnosticSetId; /* T_diagnosticSetId */
809 static int hf_z3950_condition; /* T_condition */
810 static int hf_z3950_addinfo; /* T_addinfo */
811 static int hf_z3950_v2Addinfo; /* VisibleString */
812 static int hf_z3950_v3Addinfo; /* InternationalString */
813 static int hf_z3950_startingPosition; /* INTEGER */
814 static int hf_z3950_numberOfRecords; /* INTEGER */
815 static int hf_z3950_genericElementSetName; /* InternationalString */
816 static int hf_z3950_databaseSpecific; /* T_databaseSpecific */
817 static int hf_z3950_databaseSpecific_item; /* T_databaseSpecific_item */
818 static int hf_z3950_dbName; /* DatabaseName */
819 static int hf_z3950_esn; /* ElementSetName */
820 static int hf_z3950_selectAlternativeSyntax; /* BOOLEAN */
821 static int hf_z3950_compSpec_generic; /* Specification */
822 static int hf_z3950_dbSpecific; /* T_dbSpecific */
823 static int hf_z3950_dbSpecific_item; /* T_dbSpecific_item */
824 static int hf_z3950_db; /* DatabaseName */
825 static int hf_z3950_spec; /* Specification */
826 static int hf_z3950_compSpec_recordSyntax; /* T_compSpec_recordSyntax */
827 static int hf_z3950_compSpec_recordSyntax_item; /* OBJECT_IDENTIFIER */
828 static int hf_z3950_schema; /* OBJECT_IDENTIFIER */
829 static int hf_z3950_specification_elementSpec; /* T_specification_elementSpec */
830 static int hf_z3950_elementSetName; /* InternationalString */
831 static int hf_z3950_externalEspec; /* EXTERNAL */
832 static int hf_z3950_deleteFunction; /* T_deleteFunction */
833 static int hf_z3950_resultSetList; /* SEQUENCE_OF_ResultSetId */
834 static int hf_z3950_resultSetList_item; /* ResultSetId */
835 static int hf_z3950_deleteOperationStatus; /* DeleteSetStatus */
836 static int hf_z3950_deleteListStatuses; /* ListStatuses */
837 static int hf_z3950_numberNotDeleted; /* INTEGER */
838 static int hf_z3950_bulkStatuses; /* ListStatuses */
839 static int hf_z3950_deleteMessage; /* InternationalString */
840 static int hf_z3950_ListStatuses_item; /* ListStatuses_item */
841 static int hf_z3950_listStatuses_id; /* ResultSetId */
842 static int hf_z3950_status; /* DeleteSetStatus */
843 static int hf_z3950_securityChallenge; /* T_securityChallenge */
844 static int hf_z3950_simpleForm; /* OCTET_STRING */
845 static int hf_z3950_securityChallengeResponse; /* T_securityChallengeResponse */
846 static int hf_z3950_diagnostic; /* DiagRec */
847 static int hf_z3950_suspendedFlag; /* BOOLEAN */
848 static int hf_z3950_resourceReport; /* ResourceReport */
849 static int hf_z3950_partialResultsAvailable; /* T_partialResultsAvailable */
850 static int hf_z3950_resourceControlRequest_responseRequired; /* BOOLEAN */
851 static int hf_z3950_triggeredRequestFlag; /* BOOLEAN */
852 static int hf_z3950_continueFlag; /* BOOLEAN */
853 static int hf_z3950_resultSetWanted; /* BOOLEAN */
854 static int hf_z3950_requestedAction; /* T_requestedAction */
855 static int hf_z3950_prefResourceReportFormat; /* ResourceReportId */
856 static int hf_z3950_opId; /* ReferenceId */
857 static int hf_z3950_resourceReportStatus; /* T_resourceReportStatus */
858 static int hf_z3950_termListAndStartPoint; /* AttributesPlusTerm */
859 static int hf_z3950_stepSize; /* INTEGER */
860 static int hf_z3950_numberOfTermsRequested; /* INTEGER */
861 static int hf_z3950_preferredPositionInResponse; /* INTEGER */
862 static int hf_z3950_scanStatus; /* T_scanStatus */
863 static int hf_z3950_numberOfEntriesReturned; /* INTEGER */
864 static int hf_z3950_positionOfTerm; /* INTEGER */
865 static int hf_z3950_scanResponse_entries; /* ListEntries */
866 static int hf_z3950_listEntries_entries; /* SEQUENCE_OF_Entry */
867 static int hf_z3950_listEntries_entries_item; /* Entry */
868 static int hf_z3950_nonsurrogateDiagnostics; /* SEQUENCE_OF_DiagRec */
869 static int hf_z3950_nonsurrogateDiagnostics_item; /* DiagRec */
870 static int hf_z3950_termInfo; /* TermInfo */
871 static int hf_z3950_displayTerm; /* InternationalString */
872 static int hf_z3950_suggestedAttributes; /* AttributeList */
873 static int hf_z3950_alternativeTerm; /* SEQUENCE_OF_AttributesPlusTerm */
874 static int hf_z3950_alternativeTerm_item; /* AttributesPlusTerm */
875 static int hf_z3950_globalOccurrences; /* INTEGER */
876 static int hf_z3950_byAttributes; /* OccurrenceByAttributes */
877 static int hf_z3950_otherTermInfo; /* OtherInformation */
878 static int hf_z3950_OccurrenceByAttributes_item; /* OccurrenceByAttributes_item */
879 static int hf_z3950_occurrences; /* T_occurrences */
880 static int hf_z3950_global; /* INTEGER */
881 static int hf_z3950_byDatabase; /* T_byDatabase */
882 static int hf_z3950_byDatabase_item; /* T_byDatabase_item */
883 static int hf_z3950_num; /* INTEGER */
884 static int hf_z3950_otherDbInfo; /* OtherInformation */
885 static int hf_z3950_otherOccurInfo; /* OtherInformation */
886 static int hf_z3950_inputResultSetNames; /* SEQUENCE_OF_InternationalString */
887 static int hf_z3950_inputResultSetNames_item; /* InternationalString */
888 static int hf_z3950_sortedResultSetName; /* InternationalString */
889 static int hf_z3950_sortSequence; /* SEQUENCE_OF_SortKeySpec */
890 static int hf_z3950_sortSequence_item; /* SortKeySpec */
891 static int hf_z3950_sortStatus; /* T_sortStatus */
892 static int hf_z3950_sort_resultSetStatus; /* T_sort_resultSetStatus */
893 static int hf_z3950_diagnostics; /* SEQUENCE_OF_DiagRec */
894 static int hf_z3950_diagnostics_item; /* DiagRec */
895 static int hf_z3950_sortElement; /* SortElement */
896 static int hf_z3950_sortRelation; /* T_sortRelation */
897 static int hf_z3950_caseSensitivity; /* T_caseSensitivity */
898 static int hf_z3950_missingValueAction; /* T_missingValueAction */
899 static int hf_z3950_abort; /* NULL */
900 static int hf_z3950_missingValueData; /* OCTET_STRING */
901 static int hf_z3950_sortElement_generic; /* SortKey */
902 static int hf_z3950_datbaseSpecific; /* T_datbaseSpecific */
903 static int hf_z3950_datbaseSpecific_item; /* T_datbaseSpecific_item */
904 static int hf_z3950_databaseName; /* DatabaseName */
905 static int hf_z3950_dbSort; /* SortKey */
906 static int hf_z3950_sortfield; /* InternationalString */
907 static int hf_z3950_sortKey_elementSpec; /* Specification */
908 static int hf_z3950_sortAttributes; /* T_sortAttributes */
909 static int hf_z3950_sortAttributes_id; /* AttributeSetId */
910 static int hf_z3950_sortAttributes_list; /* AttributeList */
911 static int hf_z3950_function; /* T_function */
912 static int hf_z3950_packageType; /* OBJECT_IDENTIFIER */
913 static int hf_z3950_packageName; /* InternationalString */
914 static int hf_z3950_retentionTime; /* IntUnit */
915 static int hf_z3950_permissions; /* Permissions */
916 static int hf_z3950_extendedServicesRequest_description; /* InternationalString */
917 static int hf_z3950_taskSpecificParameters; /* EXTERNAL */
918 static int hf_z3950_waitAction; /* T_waitAction */
919 static int hf_z3950_elements; /* ElementSetName */
920 static int hf_z3950_operationStatus; /* T_operationStatus */
921 static int hf_z3950_taskPackage; /* EXTERNAL */
922 static int hf_z3950_Permissions_item; /* Permissions_item */
923 static int hf_z3950_allowableFunctions; /* T_allowableFunctions */
924 static int hf_z3950_allowableFunctions_item; /* T_allowableFunctions_item */
925 static int hf_z3950_closeReason; /* CloseReason */
926 static int hf_z3950_diagnosticInformation; /* InternationalString */
927 static int hf_z3950_resourceReportFormat; /* ResourceReportId */
928 static int hf_z3950_otherInformation_item; /* T__untag_item */
929 static int hf_z3950_category; /* InfoCategory */
930 static int hf_z3950_information; /* T_information */
931 static int hf_z3950_characterInfo; /* InternationalString */
932 static int hf_z3950_binaryInfo; /* OCTET_STRING */
933 static int hf_z3950_externallyDefinedInfo; /* EXTERNAL */
934 static int hf_z3950_categoryTypeId; /* OBJECT_IDENTIFIER */
935 static int hf_z3950_categoryValue; /* INTEGER */
936 static int hf_z3950_value; /* INTEGER */
937 static int hf_z3950_unitUsed; /* Unit */
938 static int hf_z3950_unitSystem; /* InternationalString */
939 static int hf_z3950_unitType; /* StringOrNumeric */
940 static int hf_z3950_unit; /* StringOrNumeric */
941 static int hf_z3950_scaleFactor; /* INTEGER */
942 static int hf_z3950_string; /* InternationalString */
943 static int hf_z3950_motd; /* VisibleString */
944 static int hf_z3950_dblist; /* SEQUENCE_OF_DBName */
945 static int hf_z3950_dblist_item; /* DBName */
946 static int hf_z3950_failReason; /* BOOLEAN */
947 static int hf_z3950_oCLC_UserInformation_text; /* VisibleString */
948 static int hf_z3950_bibliographicRecord; /* EXTERNAL */
949 static int hf_z3950_holdingsData; /* SEQUENCE_OF_HoldingsRecord */
950 static int hf_z3950_holdingsData_item; /* HoldingsRecord */
951 static int hf_z3950_marcHoldingsRecord; /* EXTERNAL */
952 static int hf_z3950_holdingsAndCirc; /* HoldingsAndCircData */
953 static int hf_z3950_typeOfRecord; /* InternationalString */
954 static int hf_z3950_encodingLevel; /* InternationalString */
955 static int hf_z3950_format; /* InternationalString */
956 static int hf_z3950_receiptAcqStatus; /* InternationalString */
957 static int hf_z3950_generalRetention; /* InternationalString */
958 static int hf_z3950_completeness; /* InternationalString */
959 static int hf_z3950_dateOfReport; /* InternationalString */
960 static int hf_z3950_nucCode; /* InternationalString */
961 static int hf_z3950_localLocation; /* InternationalString */
962 static int hf_z3950_shelvingLocation; /* InternationalString */
963 static int hf_z3950_callNumber; /* InternationalString */
964 static int hf_z3950_shelvingData; /* InternationalString */
965 static int hf_z3950_copyNumber; /* InternationalString */
966 static int hf_z3950_publicNote; /* InternationalString */
967 static int hf_z3950_reproductionNote; /* InternationalString */
968 static int hf_z3950_termsUseRepro; /* InternationalString */
969 static int hf_z3950_enumAndChron; /* InternationalString */
970 static int hf_z3950_volumes; /* SEQUENCE_OF_Volume */
971 static int hf_z3950_volumes_item; /* Volume */
972 static int hf_z3950_circulationData; /* SEQUENCE_OF_CircRecord */
973 static int hf_z3950_circulationData_item; /* CircRecord */
974 static int hf_z3950_enumeration; /* InternationalString */
975 static int hf_z3950_chronology; /* InternationalString */
976 static int hf_z3950_availableNow; /* BOOLEAN */
977 static int hf_z3950_availablityDate; /* InternationalString */
978 static int hf_z3950_availableThru; /* InternationalString */
979 static int hf_z3950_circRecord_restrictions; /* InternationalString */
980 static int hf_z3950_itemId; /* InternationalString */
981 static int hf_z3950_renewable; /* BOOLEAN */
982 static int hf_z3950_onHold; /* BOOLEAN */
983 static int hf_z3950_midspine; /* InternationalString */
984 static int hf_z3950_temporaryLocation; /* InternationalString */
985 static int hf_z3950_DiagnosticFormat_item; /* DiagnosticFormat_item */
986 static int hf_z3950_diagnosticFormat_item_diagnostic; /* T_diagnosticFormat_item_diagnostic */
987 static int hf_z3950_defaultDiagRec; /* DefaultDiagFormat */
988 static int hf_z3950_explicitDiagnostic; /* DiagFormat */
989 static int hf_z3950_message; /* InternationalString */
990 static int hf_z3950_tooMany; /* T_tooMany */
991 static int hf_z3950_tooManyWhat; /* T_tooManyWhat */
992 static int hf_z3950_max; /* INTEGER */
993 static int hf_z3950_badSpec; /* T_badSpec */
994 static int hf_z3950_goodOnes; /* SEQUENCE_OF_Specification */
995 static int hf_z3950_goodOnes_item; /* Specification */
996 static int hf_z3950_dbUnavail; /* T_dbUnavail */
997 static int hf_z3950_why; /* T_why */
998 static int hf_z3950_reasonCode; /* T_reasonCode */
999 static int hf_z3950_unSupOp; /* T_unSupOp */
1000 static int hf_z3950_attribute; /* T_attribute */
1001 static int hf_z3950_id; /* OBJECT_IDENTIFIER */
1002 static int hf_z3950_type; /* INTEGER */
1003 static int hf_z3950_attCombo; /* T_attCombo */
1004 static int hf_z3950_unsupportedCombination; /* AttributeList */
1005 static int hf_z3950_recommendedAlternatives; /* SEQUENCE_OF_AttributeList */
1006 static int hf_z3950_recommendedAlternatives_item; /* AttributeList */
1007 static int hf_z3950_diagFormat_term; /* T_diagFormat_term */
1008 static int hf_z3950_problem; /* T_problem */
1009 static int hf_z3950_diagFormat_proximity; /* T_diagFormat_proximity */
1010 static int hf_z3950_resultSets; /* NULL */
1011 static int hf_z3950_badSet; /* InternationalString */
1012 static int hf_z3950_relation; /* INTEGER */
1013 static int hf_z3950_diagFormat_proximity_unit; /* INTEGER */
1014 static int hf_z3950_diagFormat_proximity_ordered; /* NULL */
1015 static int hf_z3950_diagFormat_proximity_exclusion; /* NULL */
1016 static int hf_z3950_scan; /* T_scan */
1017 static int hf_z3950_nonZeroStepSize; /* NULL */
1018 static int hf_z3950_specifiedStepSize; /* NULL */
1019 static int hf_z3950_termList1; /* NULL */
1020 static int hf_z3950_termList2; /* SEQUENCE_OF_AttributeList */
1021 static int hf_z3950_termList2_item; /* AttributeList */
1022 static int hf_z3950_posInResponse; /* T_posInResponse */
1023 static int hf_z3950_resources; /* NULL */
1024 static int hf_z3950_endOfList; /* NULL */
1025 static int hf_z3950_sort; /* T_sort */
1026 static int hf_z3950_sequence; /* NULL */
1027 static int hf_z3950_noRsName; /* NULL */
1028 static int hf_z3950_diagFormat_sort_tooMany; /* INTEGER */
1029 static int hf_z3950_incompatible; /* NULL */
1030 static int hf_z3950_generic; /* NULL */
1031 static int hf_z3950_diagFormat_sort_dbSpecific; /* NULL */
1032 static int hf_z3950_key; /* T_key */
1033 static int hf_z3950_action; /* NULL */
1034 static int hf_z3950_illegal; /* T_illegal */
1035 static int hf_z3950_inputTooLarge; /* SEQUENCE_OF_InternationalString */
1036 static int hf_z3950_inputTooLarge_item; /* InternationalString */
1037 static int hf_z3950_aggregateTooLarge; /* NULL */
1038 static int hf_z3950_segmentation; /* T_segmentation */
1039 static int hf_z3950_segmentCount; /* NULL */
1040 static int hf_z3950_segmentSize; /* INTEGER */
1041 static int hf_z3950_extServices; /* T_extServices */
1042 static int hf_z3950_req; /* T_req */
1043 static int hf_z3950_permission; /* T_permission */
1044 static int hf_z3950_immediate; /* T_immediate */
1045 static int hf_z3950_accessCtrl; /* T_accessCtrl */
1046 static int hf_z3950_noUser; /* NULL */
1047 static int hf_z3950_refused; /* NULL */
1048 static int hf_z3950_diagFormat_accessCtrl_simple; /* NULL */
1049 static int hf_z3950_diagFormat_accessCtrl_oid; /* T_diagFormat_accessCtrl_oid */
1050 static int hf_z3950_diagFormat_accessCtrl_oid_item; /* OBJECT_IDENTIFIER */
1051 static int hf_z3950_alternative; /* T_alternative */
1052 static int hf_z3950_alternative_item; /* OBJECT_IDENTIFIER */
1053 static int hf_z3950_pwdInv; /* NULL */
1054 static int hf_z3950_pwdExp; /* NULL */
1055 static int hf_z3950_diagFormat_recordSyntax; /* T_diagFormat_recordSyntax */
1056 static int hf_z3950_unsupportedSyntax; /* OBJECT_IDENTIFIER */
1057 static int hf_z3950_suggestedAlternatives; /* T_suggestedAlternatives */
1058 static int hf_z3950_suggestedAlternatives_item; /* OBJECT_IDENTIFIER */
1059 static int hf_z3950_targetInfo; /* TargetInfo */
1060 static int hf_z3950_databaseInfo; /* DatabaseInfo */
1061 static int hf_z3950_schemaInfo; /* SchemaInfo */
1062 static int hf_z3950_tagSetInfo; /* TagSetInfo */
1063 static int hf_z3950_recordSyntaxInfo; /* RecordSyntaxInfo */
1064 static int hf_z3950_attributeSetInfo; /* AttributeSetInfo */
1065 static int hf_z3950_termListInfo; /* TermListInfo */
1066 static int hf_z3950_extendedServicesInfo; /* ExtendedServicesInfo */
1067 static int hf_z3950_attributeDetails; /* AttributeDetails */
1068 static int hf_z3950_termListDetails; /* TermListDetails */
1069 static int hf_z3950_elementSetDetails; /* ElementSetDetails */
1070 static int hf_z3950_retrievalRecordDetails; /* RetrievalRecordDetails */
1071 static int hf_z3950_sortDetails; /* SortDetails */
1072 static int hf_z3950_processing; /* ProcessingInformation */
1073 static int hf_z3950_variants; /* VariantSetInfo */
1074 static int hf_z3950_units; /* UnitInfo */
1075 static int hf_z3950_categoryList; /* CategoryList */
1076 static int hf_z3950_commonInfo; /* CommonInfo */
1077 static int hf_z3950_name; /* InternationalString */
1078 static int hf_z3950_recent_news; /* HumanString */
1079 static int hf_z3950_icon; /* IconObject */
1080 static int hf_z3950_namedResultSets; /* BOOLEAN */
1081 static int hf_z3950_multipleDBsearch; /* BOOLEAN */
1082 static int hf_z3950_maxResultSets; /* INTEGER */
1083 static int hf_z3950_maxResultSize; /* INTEGER */
1084 static int hf_z3950_maxTerms; /* INTEGER */
1085 static int hf_z3950_timeoutInterval; /* IntUnit */
1086 static int hf_z3950_welcomeMessage; /* HumanString */
1087 static int hf_z3950_contactInfo; /* ContactInfo */
1088 static int hf_z3950_description; /* HumanString */
1089 static int hf_z3950_nicknames; /* SEQUENCE_OF_InternationalString */
1090 static int hf_z3950_nicknames_item; /* InternationalString */
1091 static int hf_z3950_usage_restrictions; /* HumanString */
1092 static int hf_z3950_paymentAddr; /* HumanString */
1093 static int hf_z3950_hours; /* HumanString */
1094 static int hf_z3950_dbCombinations; /* SEQUENCE_OF_DatabaseList */
1095 static int hf_z3950_dbCombinations_item; /* DatabaseList */
1096 static int hf_z3950_addresses; /* SEQUENCE_OF_NetworkAddress */
1097 static int hf_z3950_addresses_item; /* NetworkAddress */
1098 static int hf_z3950_languages; /* SEQUENCE_OF_InternationalString */
1099 static int hf_z3950_languages_item; /* InternationalString */
1100 static int hf_z3950_commonAccessInfo; /* AccessInfo */
1101 static int hf_z3950_databaseInfo_name; /* DatabaseName */
1102 static int hf_z3950_explainDatabase; /* NULL */
1103 static int hf_z3950_databaseInfo_nicknames; /* SEQUENCE_OF_DatabaseName */
1104 static int hf_z3950_databaseInfo_nicknames_item; /* DatabaseName */
1105 static int hf_z3950_user_fee; /* BOOLEAN */
1106 static int hf_z3950_available; /* BOOLEAN */
1107 static int hf_z3950_titleString; /* HumanString */
1108 static int hf_z3950_keywords; /* SEQUENCE_OF_HumanString */
1109 static int hf_z3950_keywords_item; /* HumanString */
1110 static int hf_z3950_associatedDbs; /* DatabaseList */
1111 static int hf_z3950_subDbs; /* DatabaseList */
1112 static int hf_z3950_disclaimers; /* HumanString */
1113 static int hf_z3950_news; /* HumanString */
1114 static int hf_z3950_recordCount; /* T_recordCount */
1115 static int hf_z3950_actualNumber; /* INTEGER */
1116 static int hf_z3950_approxNumber; /* INTEGER */
1117 static int hf_z3950_defaultOrder; /* HumanString */
1118 static int hf_z3950_avRecordSize; /* INTEGER */
1119 static int hf_z3950_bestTime; /* HumanString */
1120 static int hf_z3950_lastUpdate; /* GeneralizedTime */
1121 static int hf_z3950_updateInterval; /* IntUnit */
1122 static int hf_z3950_coverage; /* HumanString */
1123 static int hf_z3950_proprietary; /* BOOLEAN */
1124 static int hf_z3950_copyrightText; /* HumanString */
1125 static int hf_z3950_copyrightNotice; /* HumanString */
1126 static int hf_z3950_producerContactInfo; /* ContactInfo */
1127 static int hf_z3950_supplierContactInfo; /* ContactInfo */
1128 static int hf_z3950_submissionContactInfo; /* ContactInfo */
1129 static int hf_z3950_accessInfo; /* AccessInfo */
1130 static int hf_z3950_tagTypeMapping; /* T_tagTypeMapping */
1131 static int hf_z3950_tagTypeMapping_item; /* T_tagTypeMapping_item */
1132 static int hf_z3950_tagType; /* INTEGER */
1133 static int hf_z3950_tagSet; /* OBJECT_IDENTIFIER */
1134 static int hf_z3950_defaultTagType; /* NULL */
1135 static int hf_z3950_recordStructure; /* SEQUENCE_OF_ElementInfo */
1136 static int hf_z3950_recordStructure_item; /* ElementInfo */
1137 static int hf_z3950_elementName; /* InternationalString */
1138 static int hf_z3950_elementTagPath; /* Path */
1139 static int hf_z3950_elementInfo_dataType; /* ElementDataType */
1140 static int hf_z3950_required; /* BOOLEAN */
1141 static int hf_z3950_repeatable; /* BOOLEAN */
1142 static int hf_z3950_Path_item; /* Path_item */
1143 static int hf_z3950_tagValue; /* StringOrNumeric */
1144 static int hf_z3950_primitive; /* PrimitiveDataType */
1145 static int hf_z3950_structured; /* SEQUENCE_OF_ElementInfo */
1146 static int hf_z3950_structured_item; /* ElementInfo */
1147 static int hf_z3950_tagSetInfo_elements; /* T_tagSetInfo_elements */
1148 static int hf_z3950_tagSetInfo_elements_item; /* T_tagSetInfo_elements_item */
1149 static int hf_z3950_elementname; /* InternationalString */
1150 static int hf_z3950_elementTag; /* StringOrNumeric */
1151 static int hf_z3950_dataType; /* PrimitiveDataType */
1152 static int hf_z3950_otherTagInfo; /* OtherInformation */
1153 static int hf_z3950_recordSyntax; /* OBJECT_IDENTIFIER */
1154 static int hf_z3950_transferSyntaxes; /* T_transferSyntaxes */
1155 static int hf_z3950_transferSyntaxes_item; /* OBJECT_IDENTIFIER */
1156 static int hf_z3950_asn1Module; /* InternationalString */
1157 static int hf_z3950_abstractStructure; /* SEQUENCE_OF_ElementInfo */
1158 static int hf_z3950_abstractStructure_item; /* ElementInfo */
1159 static int hf_z3950_attributeSetInfo_attributes; /* SEQUENCE_OF_AttributeType */
1160 static int hf_z3950_attributeSetInfo_attributes_item; /* AttributeType */
1161 static int hf_z3950_attributeType; /* INTEGER */
1162 static int hf_z3950_attributeValues; /* SEQUENCE_OF_AttributeDescription */
1163 static int hf_z3950_attributeValues_item; /* AttributeDescription */
1164 static int hf_z3950_attributeDescription_attributeValue; /* StringOrNumeric */
1165 static int hf_z3950_equivalentAttributes; /* SEQUENCE_OF_StringOrNumeric */
1166 static int hf_z3950_equivalentAttributes_item; /* StringOrNumeric */
1167 static int hf_z3950_termLists; /* T_termLists */
1168 static int hf_z3950_termLists_item; /* T_termLists_item */
1169 static int hf_z3950_title; /* HumanString */
1170 static int hf_z3950_searchCost; /* T_searchCost */
1171 static int hf_z3950_scanable; /* BOOLEAN */
1172 static int hf_z3950_broader; /* SEQUENCE_OF_InternationalString */
1173 static int hf_z3950_broader_item; /* InternationalString */
1174 static int hf_z3950_narrower; /* SEQUENCE_OF_InternationalString */
1175 static int hf_z3950_narrower_item; /* InternationalString */
1176 static int hf_z3950_extendedServicesInfo_type; /* OBJECT_IDENTIFIER */
1177 static int hf_z3950_privateType; /* BOOLEAN */
1178 static int hf_z3950_restrictionsApply; /* BOOLEAN */
1179 static int hf_z3950_feeApply; /* BOOLEAN */
1180 static int hf_z3950_retentionSupported; /* BOOLEAN */
1181 static int hf_z3950_extendedServicesInfo_waitAction; /* T_extendedServicesInfo_waitAction */
1182 static int hf_z3950_specificExplain; /* EXTERNAL */
1183 static int hf_z3950_esASN; /* InternationalString */
1184 static int hf_z3950_attributesBySet; /* SEQUENCE_OF_AttributeSetDetails */
1185 static int hf_z3950_attributesBySet_item; /* AttributeSetDetails */
1186 static int hf_z3950_attributeCombinations; /* AttributeCombinations */
1187 static int hf_z3950_attributesByType; /* SEQUENCE_OF_AttributeTypeDetails */
1188 static int hf_z3950_attributesByType_item; /* AttributeTypeDetails */
1189 static int hf_z3950_defaultIfOmitted; /* OmittedAttributeInterpretation */
1190 static int hf_z3950_attributeTypeDetails_attributeValues; /* SEQUENCE_OF_AttributeValue */
1191 static int hf_z3950_attributeTypeDetails_attributeValues_item; /* AttributeValue */
1192 static int hf_z3950_defaultValue; /* StringOrNumeric */
1193 static int hf_z3950_defaultDescription; /* HumanString */
1194 static int hf_z3950_attributeValue_value; /* StringOrNumeric */
1195 static int hf_z3950_subAttributes; /* SEQUENCE_OF_StringOrNumeric */
1196 static int hf_z3950_subAttributes_item; /* StringOrNumeric */
1197 static int hf_z3950_superAttributes; /* SEQUENCE_OF_StringOrNumeric */
1198 static int hf_z3950_superAttributes_item; /* StringOrNumeric */
1199 static int hf_z3950_partialSupport; /* NULL */
1200 static int hf_z3950_termListName; /* InternationalString */
1201 static int hf_z3950_termListDetails_attributes; /* AttributeCombinations */
1202 static int hf_z3950_scanInfo; /* T_scanInfo */
1203 static int hf_z3950_maxStepSize; /* INTEGER */
1204 static int hf_z3950_collatingSequence; /* HumanString */
1205 static int hf_z3950_increasing; /* BOOLEAN */
1206 static int hf_z3950_estNumberTerms; /* INTEGER */
1207 static int hf_z3950_sampleTerms; /* SEQUENCE_OF_Term */
1208 static int hf_z3950_sampleTerms_item; /* Term */
1209 static int hf_z3950_elementSetDetails_elementSetName; /* ElementSetName */
1210 static int hf_z3950_detailsPerElement; /* SEQUENCE_OF_PerElementDetails */
1211 static int hf_z3950_detailsPerElement_item; /* PerElementDetails */
1212 static int hf_z3950_recordTag; /* RecordTag */
1213 static int hf_z3950_schemaTags; /* SEQUENCE_OF_Path */
1214 static int hf_z3950_schemaTags_item; /* Path */
1215 static int hf_z3950_maxSize; /* INTEGER */
1216 static int hf_z3950_minSize; /* INTEGER */
1217 static int hf_z3950_avgSize; /* INTEGER */
1218 static int hf_z3950_fixedSize; /* INTEGER */
1219 static int hf_z3950_contents; /* HumanString */
1220 static int hf_z3950_billingInfo; /* HumanString */
1221 static int hf_z3950_restrictions; /* HumanString */
1222 static int hf_z3950_alternateNames; /* SEQUENCE_OF_InternationalString */
1223 static int hf_z3950_alternateNames_item; /* InternationalString */
1224 static int hf_z3950_genericNames; /* SEQUENCE_OF_InternationalString */
1225 static int hf_z3950_genericNames_item; /* InternationalString */
1226 static int hf_z3950_searchAccess; /* AttributeCombinations */
1227 static int hf_z3950_qualifier; /* StringOrNumeric */
1228 static int hf_z3950_sortKeys; /* SEQUENCE_OF_SortKeyDetails */
1229 static int hf_z3950_sortKeys_item; /* SortKeyDetails */
1230 static int hf_z3950_elementSpecifications; /* SEQUENCE_OF_Specification */
1231 static int hf_z3950_elementSpecifications_item; /* Specification */
1232 static int hf_z3950_attributeSpecifications; /* AttributeCombinations */
1233 static int hf_z3950_sortType; /* T_sortType */
1234 static int hf_z3950_character; /* NULL */
1235 static int hf_z3950_sortKeyDetails_sortType_numeric; /* NULL */
1236 static int hf_z3950_sortKeyDetails_sortType_structured; /* HumanString */
1237 static int hf_z3950_sortKeyDetails_caseSensitivity; /* T_sortKeyDetails_caseSensitivity */
1238 static int hf_z3950_processingContext; /* T_processingContext */
1239 static int hf_z3950_instructions; /* EXTERNAL */
1240 static int hf_z3950_variantSet; /* OBJECT_IDENTIFIER */
1241 static int hf_z3950_variantSetInfo_variants; /* SEQUENCE_OF_VariantClass */
1242 static int hf_z3950_variantSetInfo_variants_item; /* VariantClass */
1243 static int hf_z3950_variantClass; /* INTEGER */
1244 static int hf_z3950_variantTypes; /* SEQUENCE_OF_VariantType */
1245 static int hf_z3950_variantTypes_item; /* VariantType */
1246 static int hf_z3950_variantType; /* INTEGER */
1247 static int hf_z3950_variantValue; /* VariantValue */
1248 static int hf_z3950_values; /* ValueSet */
1249 static int hf_z3950_range; /* ValueRange */
1250 static int hf_z3950_enumerated; /* SEQUENCE_OF_ValueDescription */
1251 static int hf_z3950_enumerated_item; /* ValueDescription */
1252 static int hf_z3950_lower; /* ValueDescription */
1253 static int hf_z3950_upper; /* ValueDescription */
1254 static int hf_z3950_integer; /* INTEGER */
1255 static int hf_z3950_octets; /* OCTET_STRING */
1256 static int hf_z3950_valueDescription_unit; /* Unit */
1257 static int hf_z3950_valueAndUnit; /* IntUnit */
1258 static int hf_z3950_unitInfo_units; /* SEQUENCE_OF_UnitType */
1259 static int hf_z3950_unitInfo_units_item; /* UnitType */
1260 static int hf_z3950_unitType_units; /* SEQUENCE_OF_Units */
1261 static int hf_z3950_unitType_units_item; /* Units */
1262 static int hf_z3950_categories; /* SEQUENCE_OF_CategoryInfo */
1263 static int hf_z3950_categories_item; /* CategoryInfo */
1264 static int hf_z3950_categoryInfo_category; /* InternationalString */
1265 static int hf_z3950_originalCategory; /* InternationalString */
1266 static int hf_z3950_dateAdded; /* GeneralizedTime */
1267 static int hf_z3950_dateChanged; /* GeneralizedTime */
1268 static int hf_z3950_expiry; /* GeneralizedTime */
1269 static int hf_z3950_humanString_Language; /* LanguageCode */
1270 static int hf_z3950_HumanString_item; /* HumanString_item */
1271 static int hf_z3950_language; /* LanguageCode */
1272 static int hf_z3950_text; /* InternationalString */
1273 static int hf_z3950_IconObject_item; /* IconObject_item */
1274 static int hf_z3950_bodyType; /* T_bodyType */
1275 static int hf_z3950_ianaType; /* InternationalString */
1276 static int hf_z3950_z3950type; /* InternationalString */
1277 static int hf_z3950_otherType; /* InternationalString */
1278 static int hf_z3950_content; /* OCTET_STRING */
1279 static int hf_z3950_address; /* HumanString */
1280 static int hf_z3950_email; /* InternationalString */
1281 static int hf_z3950_phone; /* InternationalString */
1282 static int hf_z3950_internetAddress; /* T_internetAddress */
1283 static int hf_z3950_hostAddress; /* InternationalString */
1284 static int hf_z3950_port; /* INTEGER */
1285 static int hf_z3950_osiPresentationAddress; /* T_osiPresentationAddress */
1286 static int hf_z3950_pSel; /* InternationalString */
1287 static int hf_z3950_sSel; /* InternationalString */
1288 static int hf_z3950_tSel; /* InternationalString */
1289 static int hf_z3950_nSap; /* InternationalString */
1290 static int hf_z3950_networkAddress_other; /* T_networkAddress_other */
1291 static int hf_z3950_networkAddress_other_type; /* InternationalString */
1292 static int hf_z3950_networkAddress_other_address; /* InternationalString */
1293 static int hf_z3950_queryTypesSupported; /* SEQUENCE_OF_QueryTypeDetails */
1294 static int hf_z3950_queryTypesSupported_item; /* QueryTypeDetails */
1295 static int hf_z3950_diagnosticsSets; /* T_diagnosticsSets */
1296 static int hf_z3950_diagnosticsSets_item; /* OBJECT_IDENTIFIER */
1297 static int hf_z3950_attributeSetIds; /* SEQUENCE_OF_AttributeSetId */
1298 static int hf_z3950_attributeSetIds_item; /* AttributeSetId */
1299 static int hf_z3950_schemas; /* T_schemas */
1300 static int hf_z3950_schemas_item; /* OBJECT_IDENTIFIER */
1301 static int hf_z3950_recordSyntaxes; /* T_recordSyntaxes */
1302 static int hf_z3950_recordSyntaxes_item; /* OBJECT_IDENTIFIER */
1303 static int hf_z3950_resourceChallenges; /* T_resourceChallenges */
1304 static int hf_z3950_resourceChallenges_item; /* OBJECT_IDENTIFIER */
1305 static int hf_z3950_restrictedAccess; /* AccessRestrictions */
1306 static int hf_z3950_costInfo; /* Costs */
1307 static int hf_z3950_variantSets; /* T_variantSets */
1308 static int hf_z3950_variantSets_item; /* OBJECT_IDENTIFIER */
1309 static int hf_z3950_elementSetNames; /* SEQUENCE_OF_ElementSetName */
1310 static int hf_z3950_elementSetNames_item; /* ElementSetName */
1311 static int hf_z3950_unitSystems; /* SEQUENCE_OF_InternationalString */
1312 static int hf_z3950_unitSystems_item; /* InternationalString */
1313 static int hf_z3950_queryTypeDetails_private; /* PrivateCapabilities */
1314 static int hf_z3950_queryTypeDetails_rpn; /* RpnCapabilities */
1315 static int hf_z3950_iso8777; /* Iso8777Capabilities */
1316 static int hf_z3950_z39_58; /* HumanString */
1317 static int hf_z3950_erpn; /* RpnCapabilities */
1318 static int hf_z3950_rankedList; /* HumanString */
1319 static int hf_z3950_privateCapabilities_operators; /* T_privateCapabilities_operators */
1320 static int hf_z3950_privateCapabilities_operators_item; /* T_privateCapabilities_operators_item */
1321 static int hf_z3950_operator; /* InternationalString */
1322 static int hf_z3950_searchKeys; /* SEQUENCE_OF_SearchKey */
1323 static int hf_z3950_searchKeys_item; /* SearchKey */
1324 static int hf_z3950_privateCapabilities_description; /* SEQUENCE_OF_HumanString */
1325 static int hf_z3950_privateCapabilities_description_item; /* HumanString */
1326 static int hf_z3950_operators; /* T_operators */
1327 static int hf_z3950_operators_item; /* INTEGER */
1328 static int hf_z3950_resultSetAsOperandSupported; /* BOOLEAN */
1329 static int hf_z3950_restrictionOperandSupported; /* BOOLEAN */
1330 static int hf_z3950_proximity; /* ProximitySupport */
1331 static int hf_z3950_anySupport; /* BOOLEAN */
1332 static int hf_z3950_unitsSupported; /* T_unitsSupported */
1333 static int hf_z3950_unitsSupported_item; /* T_unitsSupported_item */
1334 static int hf_z3950_proximitySupport_unitsSupported_item_known; /* INTEGER */
1335 static int hf_z3950_proximitySupport_unitsSupported_item_private; /* T_proximitySupport_unitsSupported_item_private */
1336 static int hf_z3950_proximitySupport_unitsSupported_item_private_unit; /* INTEGER */
1337 static int hf_z3950_searchKey; /* InternationalString */
1338 static int hf_z3950_AccessRestrictions_item; /* AccessRestrictions_item */
1339 static int hf_z3950_accessType; /* T_accessType */
1340 static int hf_z3950_accessText; /* HumanString */
1341 static int hf_z3950_accessChallenges; /* T_accessChallenges */
1342 static int hf_z3950_accessChallenges_item; /* OBJECT_IDENTIFIER */
1343 static int hf_z3950_connectCharge; /* Charge */
1344 static int hf_z3950_connectTime; /* Charge */
1345 static int hf_z3950_displayCharge; /* Charge */
1346 static int hf_z3950_searchCharge; /* Charge */
1347 static int hf_z3950_subscriptCharge; /* Charge */
1348 static int hf_z3950_otherCharges; /* T_otherCharges */
1349 static int hf_z3950_otherCharges_item; /* T_otherCharges_item */
1350 static int hf_z3950_forWhat; /* HumanString */
1351 static int hf_z3950_charge; /* Charge */
1352 static int hf_z3950_cost; /* IntUnit */
1353 static int hf_z3950_perWhat; /* Unit */
1354 static int hf_z3950_charge_text; /* HumanString */
1355 static int hf_z3950_DatabaseList_item; /* DatabaseName */
1356 static int hf_z3950_defaultAttributeSet; /* AttributeSetId */
1357 static int hf_z3950_legalCombinations; /* SEQUENCE_OF_AttributeCombination */
1358 static int hf_z3950_legalCombinations_item; /* AttributeCombination */
1359 static int hf_z3950_AttributeCombination_item; /* AttributeOccurrence */
1360 static int hf_z3950_mustBeSupplied; /* NULL */
1361 static int hf_z3950_attributeOccurrence_attributeValues; /* T_attributeOccurrence_attributeValues */
1362 static int hf_z3950_any_or_none; /* NULL */
1363 static int hf_z3950_specific; /* SEQUENCE_OF_StringOrNumeric */
1364 static int hf_z3950_specific_item; /* StringOrNumeric */
1365 static int hf_z3950_briefBib_title; /* InternationalString */
1366 static int hf_z3950_author; /* InternationalString */
1367 static int hf_z3950_recordType; /* InternationalString */
1368 static int hf_z3950_bibliographicLevel; /* InternationalString */
1369 static int hf_z3950_briefBib_format; /* SEQUENCE_OF_FormatSpec */
1370 static int hf_z3950_briefBib_format_item; /* FormatSpec */
1371 static int hf_z3950_publicationPlace; /* InternationalString */
1372 static int hf_z3950_publicationDate; /* InternationalString */
1373 static int hf_z3950_targetSystemKey; /* InternationalString */
1374 static int hf_z3950_satisfyingElement; /* InternationalString */
1375 static int hf_z3950_rank; /* INTEGER */
1376 static int hf_z3950_documentId; /* InternationalString */
1377 static int hf_z3950_abstract; /* InternationalString */
1378 static int hf_z3950_formatSpec_type; /* InternationalString */
1379 static int hf_z3950_size; /* INTEGER */
1380 static int hf_z3950_bestPosn; /* INTEGER */
1381 static int hf_z3950_GenericRecord_item; /* TaggedElement */
1382 static int hf_z3950_tagOccurrence; /* INTEGER */
1383 static int hf_z3950_taggedElement_content; /* ElementData */
1384 static int hf_z3950_metaData; /* ElementMetaData */
1385 static int hf_z3950_appliedVariant; /* Variant */
1386 static int hf_z3950_date; /* GeneralizedTime */
1387 static int hf_z3950_ext; /* EXTERNAL */
1388 static int hf_z3950_trueOrFalse; /* BOOLEAN */
1389 static int hf_z3950_intUnit; /* IntUnit */
1390 static int hf_z3950_elementNotThere; /* NULL */
1391 static int hf_z3950_elementEmpty; /* NULL */
1392 static int hf_z3950_noDataRequested; /* NULL */
1393 static int hf_z3950_elementData_diagnostic; /* EXTERNAL */
1394 static int hf_z3950_subtree; /* SEQUENCE_OF_TaggedElement */
1395 static int hf_z3950_subtree_item; /* TaggedElement */
1396 static int hf_z3950_seriesOrder; /* Order */
1397 static int hf_z3950_usageRight; /* Usage */
1398 static int hf_z3950_hits; /* SEQUENCE_OF_HitVector */
1399 static int hf_z3950_hits_item; /* HitVector */
1400 static int hf_z3950_displayName; /* InternationalString */
1401 static int hf_z3950_supportedVariants; /* SEQUENCE_OF_Variant */
1402 static int hf_z3950_supportedVariants_item; /* Variant */
1403 static int hf_z3950_elementDescriptor; /* OCTET_STRING */
1404 static int hf_z3950_surrogateFor; /* TagPath */
1405 static int hf_z3950_surrogateElement; /* TagPath */
1406 static int hf_z3950_TagPath_item; /* TagPath_item */
1407 static int hf_z3950_ascending; /* BOOLEAN */
1408 static int hf_z3950_order; /* INTEGER */
1409 static int hf_z3950_usage_type; /* T_usage_type */
1410 static int hf_z3950_restriction; /* InternationalString */
1411 static int hf_z3950_satisfier; /* Term */
1412 static int hf_z3950_offsetIntoElement; /* IntUnit */
1413 static int hf_z3950_length; /* IntUnit */
1414 static int hf_z3950_hitRank; /* INTEGER */
1415 static int hf_z3950_targetToken; /* OCTET_STRING */
1416 static int hf_z3950_globalVariantSetId; /* OBJECT_IDENTIFIER */
1417 static int hf_z3950_triples; /* T_triples */
1418 static int hf_z3950_triples_item; /* T_triples_item */
1419 static int hf_z3950_variantSetId; /* OBJECT_IDENTIFIER */
1420 static int hf_z3950_class; /* INTEGER */
1421 static int hf_z3950_variant_triples_item_value; /* T_variant_triples_item_value */
1422 static int hf_z3950_octetString; /* OCTET_STRING */
1423 static int hf_z3950_boolean; /* BOOLEAN */
1424 static int hf_z3950_variant_triples_item_value_unit; /* Unit */
1425 static int hf_z3950_taskPackage_description; /* InternationalString */
1426 static int hf_z3950_targetReference; /* OCTET_STRING */
1427 static int hf_z3950_creationDateTime; /* GeneralizedTime */
1428 static int hf_z3950_taskStatus; /* T_taskStatus */
1429 static int hf_z3950_packageDiagnostics; /* SEQUENCE_OF_DiagRec */
1430 static int hf_z3950_packageDiagnostics_item; /* DiagRec */
1431 static int hf_z3950_challenge; /* Challenge */
1432 static int hf_z3950_response; /* Response */
1433 static int hf_z3950_Challenge_item; /* Challenge_item */
1434 static int hf_z3950_promptId; /* PromptId */
1435 static int hf_z3950_defaultResponse; /* InternationalString */
1436 static int hf_z3950_promptInfo; /* T_promptInfo */
1437 static int hf_z3950_challenge_item_promptInfo_character; /* InternationalString */
1438 static int hf_z3950_encrypted; /* Encryption */
1439 static int hf_z3950_regExpr; /* InternationalString */
1440 static int hf_z3950_responseRequired; /* NULL */
1441 static int hf_z3950_allowedValues; /* SEQUENCE_OF_InternationalString */
1442 static int hf_z3950_allowedValues_item; /* InternationalString */
1443 static int hf_z3950_shouldSave; /* NULL */
1444 static int hf_z3950_challenge_item_dataType; /* T_challenge_item_dataType */
1445 static int hf_z3950_challenge_item_diagnostic; /* EXTERNAL */
1446 static int hf_z3950_Response_item; /* Response_item */
1447 static int hf_z3950_promptResponse; /* T_promptResponse */
1448 static int hf_z3950_accept; /* BOOLEAN */
1449 static int hf_z3950_acknowledge; /* NULL */
1450 static int hf_z3950_enummeratedPrompt; /* T_enummeratedPrompt */
1451 static int hf_z3950_promptId_enummeratedPrompt_type; /* T_promptId_enummeratedPrompt_type */
1452 static int hf_z3950_suggestedString; /* InternationalString */
1453 static int hf_z3950_nonEnumeratedPrompt; /* InternationalString */
1454 static int hf_z3950_cryptType; /* OCTET_STRING */
1455 static int hf_z3950_credential; /* OCTET_STRING */
1456 static int hf_z3950_data; /* OCTET_STRING */
1457 static int hf_z3950_dES_RN_Object_challenge; /* DRNType */
1458 static int hf_z3950_rES_RN_Object_response; /* DRNType */
1459 static int hf_z3950_dRNType_userId; /* OCTET_STRING */
1460 static int hf_z3950_salt; /* OCTET_STRING */
1461 static int hf_z3950_randomNumber; /* OCTET_STRING */
1462 static int hf_z3950_kRBObject_challenge; /* KRBRequest */
1463 static int hf_z3950_kRBObject_response; /* KRBResponse */
1464 static int hf_z3950_service; /* InternationalString */
1465 static int hf_z3950_instance; /* InternationalString */
1466 static int hf_z3950_realm; /* InternationalString */
1467 static int hf_z3950_userid; /* InternationalString */
1468 static int hf_z3950_ticket; /* OCTET_STRING */
1469 static int hf_z3950_SearchInfoReport_item; /* SearchInfoReport_item */
1470 static int hf_z3950_subqueryId; /* InternationalString */
1471 static int hf_z3950_fullQuery; /* BOOLEAN */
1472 static int hf_z3950_subqueryExpression; /* QueryExpression */
1473 static int hf_z3950_subqueryInterpretation; /* QueryExpression */
1474 static int hf_z3950_subqueryRecommendation; /* QueryExpression */
1475 static int hf_z3950_subqueryCount; /* INTEGER */
1476 static int hf_z3950_subqueryWeight; /* IntUnit */
1477 static int hf_z3950_resultsByDB; /* ResultsByDB */
1478 static int hf_z3950_ResultsByDB_item; /* ResultsByDB_item */
1479 static int hf_z3950_databases; /* T_databases */
1480 static int hf_z3950_all; /* NULL */
1481 static int hf_z3950_list; /* SEQUENCE_OF_DatabaseName */
1482 static int hf_z3950_list_item; /* DatabaseName */
1483 static int hf_z3950_count; /* INTEGER */
1484 static int hf_z3950_queryExpression_term; /* T_queryExpression_term */
1485 static int hf_z3950_queryTerm; /* Term */
1486 static int hf_z3950_termComment; /* InternationalString */
1487 /* named bits */
1488 static int hf_z3950_ProtocolVersion_U_version_1;
1489 static int hf_z3950_ProtocolVersion_U_version_2;
1490 static int hf_z3950_ProtocolVersion_U_version_3;
1491 static int hf_z3950_Options_U_search;
1492 static int hf_z3950_Options_U_present;
1493 static int hf_z3950_Options_U_delSet;
1494 static int hf_z3950_Options_U_resourceReport;
1495 static int hf_z3950_Options_U_triggerResourceCtrl;
1496 static int hf_z3950_Options_U_resourceCtrl;
1497 static int hf_z3950_Options_U_accessCtrl;
1498 static int hf_z3950_Options_U_scan;
1499 static int hf_z3950_Options_U_sort;
1500 static int hf_z3950_Options_U_spare_bit9;
1501 static int hf_z3950_Options_U_extendedServices;
1502 static int hf_z3950_Options_U_level_1Segmentation;
1503 static int hf_z3950_Options_U_level_2Segmentation;
1504 static int hf_z3950_Options_U_concurrentOperations;
1505 static int hf_z3950_Options_U_namedResultSets;
1507 static int hf_z3950_referenceId_printable;
1508 static int hf_z3950_general_printable;
1510 /* Initialize the subtree pointers */
1511 static int ett_z3950;
1513 static int ett_z3950_PDU;
1514 static int ett_z3950_InitializeRequest;
1515 static int ett_z3950_T_idAuthentication;
1516 static int ett_z3950_T_idPass;
1517 static int ett_z3950_InitializeResponse;
1518 static int ett_z3950_ProtocolVersion_U;
1519 static int ett_z3950_Options_U;
1520 static int ett_z3950_SearchRequest;
1521 static int ett_z3950_SEQUENCE_OF_DatabaseName;
1522 static int ett_z3950_Query;
1523 static int ett_z3950_RPNQuery;
1524 static int ett_z3950_RPNStructure;
1525 static int ett_z3950_T_rpnRpnOp;
1526 static int ett_z3950_Operand;
1527 static int ett_z3950_AttributesPlusTerm_U;
1528 static int ett_z3950_ResultSetPlusAttributes_U;
1529 static int ett_z3950_SEQUENCE_OF_AttributeElement;
1530 static int ett_z3950_Term;
1531 static int ett_z3950_Operator_U;
1532 static int ett_z3950_AttributeElement;
1533 static int ett_z3950_T_attributeValue;
1534 static int ett_z3950_T_attributeValue_complex;
1535 static int ett_z3950_SEQUENCE_OF_StringOrNumeric;
1536 static int ett_z3950_T_semanticAction;
1537 static int ett_z3950_ProximityOperator;
1538 static int ett_z3950_T_proximityUnitCode;
1539 static int ett_z3950_SearchResponse;
1540 static int ett_z3950_PresentRequest;
1541 static int ett_z3950_SEQUENCE_OF_Range;
1542 static int ett_z3950_T_recordComposition;
1543 static int ett_z3950_Segment;
1544 static int ett_z3950_SEQUENCE_OF_NamePlusRecord;
1545 static int ett_z3950_PresentResponse;
1546 static int ett_z3950_Records;
1547 static int ett_z3950_SEQUENCE_OF_DiagRec;
1548 static int ett_z3950_NamePlusRecord;
1549 static int ett_z3950_T_record;
1550 static int ett_z3950_FragmentSyntax;
1551 static int ett_z3950_DiagRec;
1552 static int ett_z3950_DefaultDiagFormat;
1553 static int ett_z3950_T_addinfo;
1554 static int ett_z3950_Range;
1555 static int ett_z3950_ElementSetNames;
1556 static int ett_z3950_T_databaseSpecific;
1557 static int ett_z3950_T_databaseSpecific_item;
1558 static int ett_z3950_CompSpec;
1559 static int ett_z3950_T_dbSpecific;
1560 static int ett_z3950_T_dbSpecific_item;
1561 static int ett_z3950_T_compSpec_recordSyntax;
1562 static int ett_z3950_Specification;
1563 static int ett_z3950_T_specification_elementSpec;
1564 static int ett_z3950_DeleteResultSetRequest;
1565 static int ett_z3950_SEQUENCE_OF_ResultSetId;
1566 static int ett_z3950_DeleteResultSetResponse;
1567 static int ett_z3950_ListStatuses;
1568 static int ett_z3950_ListStatuses_item;
1569 static int ett_z3950_AccessControlRequest;
1570 static int ett_z3950_T_securityChallenge;
1571 static int ett_z3950_AccessControlResponse;
1572 static int ett_z3950_T_securityChallengeResponse;
1573 static int ett_z3950_ResourceControlRequest;
1574 static int ett_z3950_ResourceControlResponse;
1575 static int ett_z3950_TriggerResourceControlRequest;
1576 static int ett_z3950_ResourceReportRequest;
1577 static int ett_z3950_ResourceReportResponse;
1578 static int ett_z3950_ScanRequest;
1579 static int ett_z3950_ScanResponse;
1580 static int ett_z3950_ListEntries;
1581 static int ett_z3950_SEQUENCE_OF_Entry;
1582 static int ett_z3950_Entry;
1583 static int ett_z3950_TermInfo;
1584 static int ett_z3950_SEQUENCE_OF_AttributesPlusTerm;
1585 static int ett_z3950_OccurrenceByAttributes;
1586 static int ett_z3950_OccurrenceByAttributes_item;
1587 static int ett_z3950_T_occurrences;
1588 static int ett_z3950_T_byDatabase;
1589 static int ett_z3950_T_byDatabase_item;
1590 static int ett_z3950_SortRequest;
1591 static int ett_z3950_SEQUENCE_OF_InternationalString;
1592 static int ett_z3950_SEQUENCE_OF_SortKeySpec;
1593 static int ett_z3950_SortResponse;
1594 static int ett_z3950_SortKeySpec;
1595 static int ett_z3950_T_missingValueAction;
1596 static int ett_z3950_SortElement;
1597 static int ett_z3950_T_datbaseSpecific;
1598 static int ett_z3950_T_datbaseSpecific_item;
1599 static int ett_z3950_SortKey;
1600 static int ett_z3950_T_sortAttributes;
1601 static int ett_z3950_ExtendedServicesRequest;
1602 static int ett_z3950_ExtendedServicesResponse;
1603 static int ett_z3950_Permissions;
1604 static int ett_z3950_Permissions_item;
1605 static int ett_z3950_T_allowableFunctions;
1606 static int ett_z3950_Close;
1607 static int ett_z3950_OtherInformation_U;
1608 static int ett_z3950_T__untag_item;
1609 static int ett_z3950_T_information;
1610 static int ett_z3950_InfoCategory;
1611 static int ett_z3950_IntUnit;
1612 static int ett_z3950_Unit;
1613 static int ett_z3950_StringOrNumeric;
1614 static int ett_z3950_OCLC_UserInformation;
1615 static int ett_z3950_SEQUENCE_OF_DBName;
1616 static int ett_z3950_OPACRecord;
1617 static int ett_z3950_SEQUENCE_OF_HoldingsRecord;
1618 static int ett_z3950_HoldingsRecord;
1619 static int ett_z3950_HoldingsAndCircData;
1620 static int ett_z3950_SEQUENCE_OF_Volume;
1621 static int ett_z3950_SEQUENCE_OF_CircRecord;
1622 static int ett_z3950_Volume;
1623 static int ett_z3950_CircRecord;
1624 static int ett_z3950_DiagnosticFormat;
1625 static int ett_z3950_DiagnosticFormat_item;
1626 static int ett_z3950_T_diagnosticFormat_item_diagnostic;
1627 static int ett_z3950_DiagFormat;
1628 static int ett_z3950_T_tooMany;
1629 static int ett_z3950_T_badSpec;
1630 static int ett_z3950_SEQUENCE_OF_Specification;
1631 static int ett_z3950_T_dbUnavail;
1632 static int ett_z3950_T_why;
1633 static int ett_z3950_T_attribute;
1634 static int ett_z3950_T_attCombo;
1635 static int ett_z3950_SEQUENCE_OF_AttributeList;
1636 static int ett_z3950_T_diagFormat_term;
1637 static int ett_z3950_T_diagFormat_proximity;
1638 static int ett_z3950_T_scan;
1639 static int ett_z3950_T_sort;
1640 static int ett_z3950_T_segmentation;
1641 static int ett_z3950_T_extServices;
1642 static int ett_z3950_T_accessCtrl;
1643 static int ett_z3950_T_diagFormat_accessCtrl_oid;
1644 static int ett_z3950_T_alternative;
1645 static int ett_z3950_T_diagFormat_recordSyntax;
1646 static int ett_z3950_T_suggestedAlternatives;
1647 static int ett_z3950_Explain_Record;
1648 static int ett_z3950_TargetInfo;
1649 static int ett_z3950_SEQUENCE_OF_DatabaseList;
1650 static int ett_z3950_SEQUENCE_OF_NetworkAddress;
1651 static int ett_z3950_DatabaseInfo;
1652 static int ett_z3950_SEQUENCE_OF_HumanString;
1653 static int ett_z3950_T_recordCount;
1654 static int ett_z3950_SchemaInfo;
1655 static int ett_z3950_T_tagTypeMapping;
1656 static int ett_z3950_T_tagTypeMapping_item;
1657 static int ett_z3950_SEQUENCE_OF_ElementInfo;
1658 static int ett_z3950_ElementInfo;
1659 static int ett_z3950_Path;
1660 static int ett_z3950_Path_item;
1661 static int ett_z3950_ElementDataType;
1662 static int ett_z3950_TagSetInfo;
1663 static int ett_z3950_T_tagSetInfo_elements;
1664 static int ett_z3950_T_tagSetInfo_elements_item;
1665 static int ett_z3950_RecordSyntaxInfo;
1666 static int ett_z3950_T_transferSyntaxes;
1667 static int ett_z3950_AttributeSetInfo;
1668 static int ett_z3950_SEQUENCE_OF_AttributeType;
1669 static int ett_z3950_AttributeType;
1670 static int ett_z3950_SEQUENCE_OF_AttributeDescription;
1671 static int ett_z3950_AttributeDescription;
1672 static int ett_z3950_TermListInfo;
1673 static int ett_z3950_T_termLists;
1674 static int ett_z3950_T_termLists_item;
1675 static int ett_z3950_ExtendedServicesInfo;
1676 static int ett_z3950_AttributeDetails;
1677 static int ett_z3950_SEQUENCE_OF_AttributeSetDetails;
1678 static int ett_z3950_AttributeSetDetails;
1679 static int ett_z3950_SEQUENCE_OF_AttributeTypeDetails;
1680 static int ett_z3950_AttributeTypeDetails;
1681 static int ett_z3950_SEQUENCE_OF_AttributeValue;
1682 static int ett_z3950_OmittedAttributeInterpretation;
1683 static int ett_z3950_AttributeValue;
1684 static int ett_z3950_TermListDetails;
1685 static int ett_z3950_T_scanInfo;
1686 static int ett_z3950_SEQUENCE_OF_Term;
1687 static int ett_z3950_ElementSetDetails;
1688 static int ett_z3950_SEQUENCE_OF_PerElementDetails;
1689 static int ett_z3950_RetrievalRecordDetails;
1690 static int ett_z3950_PerElementDetails;
1691 static int ett_z3950_SEQUENCE_OF_Path;
1692 static int ett_z3950_RecordTag;
1693 static int ett_z3950_SortDetails;
1694 static int ett_z3950_SEQUENCE_OF_SortKeyDetails;
1695 static int ett_z3950_SortKeyDetails;
1696 static int ett_z3950_T_sortType;
1697 static int ett_z3950_ProcessingInformation;
1698 static int ett_z3950_VariantSetInfo;
1699 static int ett_z3950_SEQUENCE_OF_VariantClass;
1700 static int ett_z3950_VariantClass;
1701 static int ett_z3950_SEQUENCE_OF_VariantType;
1702 static int ett_z3950_VariantType;
1703 static int ett_z3950_VariantValue;
1704 static int ett_z3950_ValueSet;
1705 static int ett_z3950_SEQUENCE_OF_ValueDescription;
1706 static int ett_z3950_ValueRange;
1707 static int ett_z3950_ValueDescription;
1708 static int ett_z3950_UnitInfo;
1709 static int ett_z3950_SEQUENCE_OF_UnitType;
1710 static int ett_z3950_UnitType;
1711 static int ett_z3950_SEQUENCE_OF_Units;
1712 static int ett_z3950_Units;
1713 static int ett_z3950_CategoryList;
1714 static int ett_z3950_SEQUENCE_OF_CategoryInfo;
1715 static int ett_z3950_CategoryInfo;
1716 static int ett_z3950_CommonInfo;
1717 static int ett_z3950_HumanString;
1718 static int ett_z3950_HumanString_item;
1719 static int ett_z3950_IconObject;
1720 static int ett_z3950_IconObject_item;
1721 static int ett_z3950_T_bodyType;
1722 static int ett_z3950_ContactInfo;
1723 static int ett_z3950_NetworkAddress;
1724 static int ett_z3950_T_internetAddress;
1725 static int ett_z3950_T_osiPresentationAddress;
1726 static int ett_z3950_T_networkAddress_other;
1727 static int ett_z3950_AccessInfo;
1728 static int ett_z3950_SEQUENCE_OF_QueryTypeDetails;
1729 static int ett_z3950_T_diagnosticsSets;
1730 static int ett_z3950_SEQUENCE_OF_AttributeSetId;
1731 static int ett_z3950_T_schemas;
1732 static int ett_z3950_T_recordSyntaxes;
1733 static int ett_z3950_T_resourceChallenges;
1734 static int ett_z3950_T_variantSets;
1735 static int ett_z3950_SEQUENCE_OF_ElementSetName;
1736 static int ett_z3950_QueryTypeDetails;
1737 static int ett_z3950_PrivateCapabilities;
1738 static int ett_z3950_T_privateCapabilities_operators;
1739 static int ett_z3950_T_privateCapabilities_operators_item;
1740 static int ett_z3950_SEQUENCE_OF_SearchKey;
1741 static int ett_z3950_RpnCapabilities;
1742 static int ett_z3950_T_operators;
1743 static int ett_z3950_Iso8777Capabilities;
1744 static int ett_z3950_ProximitySupport;
1745 static int ett_z3950_T_unitsSupported;
1746 static int ett_z3950_T_unitsSupported_item;
1747 static int ett_z3950_T_proximitySupport_unitsSupported_item_private;
1748 static int ett_z3950_SearchKey;
1749 static int ett_z3950_AccessRestrictions;
1750 static int ett_z3950_AccessRestrictions_item;
1751 static int ett_z3950_T_accessChallenges;
1752 static int ett_z3950_Costs;
1753 static int ett_z3950_T_otherCharges;
1754 static int ett_z3950_T_otherCharges_item;
1755 static int ett_z3950_Charge;
1756 static int ett_z3950_DatabaseList;
1757 static int ett_z3950_AttributeCombinations;
1758 static int ett_z3950_SEQUENCE_OF_AttributeCombination;
1759 static int ett_z3950_AttributeCombination;
1760 static int ett_z3950_AttributeOccurrence;
1761 static int ett_z3950_T_attributeOccurrence_attributeValues;
1762 static int ett_z3950_BriefBib;
1763 static int ett_z3950_SEQUENCE_OF_FormatSpec;
1764 static int ett_z3950_FormatSpec;
1765 static int ett_z3950_GenericRecord;
1766 static int ett_z3950_TaggedElement;
1767 static int ett_z3950_ElementData;
1768 static int ett_z3950_SEQUENCE_OF_TaggedElement;
1769 static int ett_z3950_ElementMetaData;
1770 static int ett_z3950_SEQUENCE_OF_HitVector;
1771 static int ett_z3950_SEQUENCE_OF_Variant;
1772 static int ett_z3950_TagPath;
1773 static int ett_z3950_TagPath_item;
1774 static int ett_z3950_Order;
1775 static int ett_z3950_Usage;
1776 static int ett_z3950_HitVector;
1777 static int ett_z3950_Variant;
1778 static int ett_z3950_T_triples;
1779 static int ett_z3950_T_triples_item;
1780 static int ett_z3950_T_variant_triples_item_value;
1781 static int ett_z3950_TaskPackage;
1782 static int ett_z3950_PromptObject;
1783 static int ett_z3950_Challenge;
1784 static int ett_z3950_Challenge_item;
1785 static int ett_z3950_T_promptInfo;
1786 static int ett_z3950_Response;
1787 static int ett_z3950_Response_item;
1788 static int ett_z3950_T_promptResponse;
1789 static int ett_z3950_PromptId;
1790 static int ett_z3950_T_enummeratedPrompt;
1791 static int ett_z3950_Encryption;
1792 static int ett_z3950_DES_RN_Object;
1793 static int ett_z3950_DRNType;
1794 static int ett_z3950_KRBObject;
1795 static int ett_z3950_KRBRequest;
1796 static int ett_z3950_KRBResponse;
1797 static int ett_z3950_SearchInfoReport;
1798 static int ett_z3950_SearchInfoReport_item;
1799 static int ett_z3950_ResultsByDB;
1800 static int ett_z3950_ResultsByDB_item;
1801 static int ett_z3950_T_databases;
1802 static int ett_z3950_QueryExpression;
1803 static int ett_z3950_T_queryExpression_term;
1805 /* MARC variables and forwards */
1807 static int dissect_marc_record(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void * data _U_);
1809 /* MARC fields */
1810 static int hf_marc_record;
1811 static int hf_marc_record_terminator;
1812 static int hf_marc_leader;
1813 static int hf_marc_leader_length;
1814 static int hf_marc_leader_status;
1815 static int hf_marc_leader_type;
1816 static int hf_marc_leader_biblevel;
1817 static int hf_marc_leader_control;
1818 static int hf_marc_leader_encoding;
1819 static int hf_marc_leader_indicator_count;
1820 static int hf_marc_leader_subfield_count;
1821 static int hf_marc_leader_data_offset;
1822 static int hf_marc_leader_encoding_level;
1823 static int hf_marc_leader_descriptive_cataloging;
1824 static int hf_marc_leader_multipart_level;
1825 static int hf_marc_leader_length_of_field_length;
1826 static int hf_marc_leader_starting_character_position_length;
1827 static int hf_marc_leader_implementation_defined_length;
1828 static int hf_marc_directory;
1829 static int hf_marc_directory_entry;
1830 static int hf_marc_directory_entry_tag;
1831 static int hf_marc_directory_entry_length;
1832 static int hf_marc_directory_entry_starting_position;
1833 static int hf_marc_directory_terminator;
1834 static int hf_marc_fields;
1835 static int hf_marc_field;
1836 static int hf_marc_field_control;
1837 static int hf_marc_field_terminator;
1838 static int hf_marc_field_indicator1;
1839 static int hf_marc_field_indicator2;
1840 static int hf_marc_field_subfield_indicator;
1841 static int hf_marc_field_subfield_tag;
1842 static int hf_marc_field_subfield;
1844 /* MARC subtree pointers */
1845 static int ett_marc_record;
1846 static int ett_marc_leader;
1847 static int ett_marc_directory;
1848 static int ett_marc_directory_entry;
1849 static int ett_marc_fields;
1850 static int ett_marc_field;
1852 /* MARC expert fields */
1853 static expert_field ei_marc_invalid_length;
1854 static expert_field ei_marc_invalid_value;
1855 static expert_field ei_marc_invalid_record_length;
1857 /* MARC value strings */
1859 static const value_string marc_tag_names[] = {
1860 { 1, "Control Number" },
1861 { 3, "Control Number Identifier" },
1862 { 5, "Date and Time of Latest Transaction" },
1863 { 6, "Fixed-length Data Elements - Additional Material Characteristics" },
1864 { 8, "Fixed-length Data Elements" },
1865 { 7, "Physical Description Fixed Field" },
1866 { 10, "Library of Congress Control Number" },
1867 { 15, "National Bibliography Number" },
1868 { 16, "National Bibliographic Agency Control Number" },
1869 { 17, "Copyright or Legal Deposit Number" },
1870 { 20, "International Standard Book Number (ISBN)" },
1871 { 22, "International Standard Serial Number (ISSN)" },
1872 { 24, "Other Standard Identifier" },
1873 { 25, "Overseas Acquisition Number" },
1874 { 26, "Fingerprint Identifier" },
1875 { 27, "Standard Technical Report Number" },
1876 { 28, "Publisher or Distributor Number" },
1877 { 30, "CODEN Designation" },
1878 { 32, "Postal Registration Number" },
1879 { 33, "Date/Time and Place of an Event" },
1880 { 35, "System Control Number" },
1881 { 37, "Source of Acquisition" },
1882 { 38, "Record Content Licensor" },
1883 { 40, "Cataloging Source" },
1884 { 41, "Language Code" },
1885 { 42, "Authentication Code" },
1886 { 43, "Geographic Area Code" },
1887 { 44, "Country of Publishing/Producing Entity Code" },
1888 { 45, "Time Period of Content" },
1889 { 47, "Form of Musical Composition Code" },
1890 { 50, "Library of Congress Call Number" },
1891 { 51, "Library of Congress Copy, Issue, Offprint Statement" },
1892 { 60, "National Library of Medicine Call Number" },
1893 { 66, "Character Sets Present" },
1894 { 80, "Universal Decimal Classification Number" },
1895 { 82, "Dewey Decimal Classification Number" },
1896 { 83, "Additional Dewey Decimal Classification Number" },
1897 { 84, "Other Classification Number" },
1898 { 100, "Main Entry - Personal Name" },
1899 { 110, "Main Entry - Corporate Name" },
1900 { 111, "Main Entry - Meeting Name" },
1901 { 130, "Main Entry - Uniform Title" },
1902 { 210, "Abbreviated Title" },
1903 { 222, "Key Title" },
1904 { 240, "Uniform Title" },
1905 { 242, "Translation of Title by Cataloging Agency" },
1906 { 243, "Collective Uniform Title" },
1907 { 245, "Title Statement" },
1908 { 246, "Varying Form of Title" },
1909 { 247, "Former Title" },
1910 { 249, "Local LoC Varying Form of Title" },
1911 { 250, "Edition Statement" },
1912 { 260, "Publication, Distribution, etc. (Imprint)" },
1913 { 264, "Production, Publication, Distribution, Manufacture, and Copyright Notice" },
1914 { 300, "Physical Description" },
1915 { 310, "Current Publication Frequency" },
1916 { 321, "former Publication Frequency" },
1917 { 336, "Content Type" },
1918 { 337, "Media Type" },
1919 { 338, "Carrier Type" },
1920 { 340, "Physical Medium" },
1921 { 362, "Dates of Publication and/or Sequential Designation" },
1922 { 400, "Series Statement/Added Entry-Personal Name" },
1923 { 410, "Series Statement/Added Entry-Corporate Name" },
1924 { 411, "Series Statement/Added Entry-Meeting Name" },
1925 { 440, "Series Statement/Added Entry-Title" },
1926 { 490, "Series Statement" },
1927 { 500, "General Note" },
1928 { 504, "Bibliography, etc. Note" },
1929 { 505, "Formatted Contents Note" },
1930 { 506, "Restrictions on Access Note" },
1931 { 508, "Creation/Production Credits Note" },
1932 { 510, "Citation/References Note" },
1933 { 511, "Participant or Performer Note" },
1934 { 515, "Numbering Peculiarities Note" },
1935 { 518, "Date/Time and Place of an Event Note" },
1936 { 520, "Summary, etc." },
1937 { 521, "Target Audience Note" },
1938 { 522, "Geographic Coverage Note" },
1939 { 524, "Preferred Citation of Described Materials Note" },
1940 { 525, "Supplement Note" },
1941 { 530, "Additional Physical Form available Note" },
1942 { 532, "Accessibility Note" },
1943 { 533, "Reproduction Note" },
1944 { 534, "Original Version Note" },
1945 { 538, "System Details Note" },
1946 { 540, "Terms Governing Use and Reproduction Note" },
1947 { 541, "Immediate Source of Acquisition Note" },
1948 { 542, "Information Relating to Copyright Status" },
1949 { 546, "Language Note" },
1950 { 550, "Issuing Body Note" },
1951 { 555, "Cumulative Index/Finding Aids Note" },
1952 { 583, "Action Note" },
1953 { 588, "Source of Description, Etc. Note" },
1954 { 590, "Local LoC Note" },
1955 { 591, "Local LoC \"With\" Note" },
1956 { 592, "Local LoC Acquisition Note" },
1957 { 600, "Subject Added Entry - Personal Name" },
1958 { 610, "Subject Added Entry - Corporate Name" },
1959 { 611, "Subject Added Entry - Meeting Name" },
1960 { 630, "Subject Added Entry - Uniform Title" },
1961 { 647, "Subject Added Entry - Named Event" },
1962 { 648, "Subject Added Entry - Chronological Term" },
1963 { 650, "Subject Added Entry - Topical Term" },
1964 { 651, "Subject Added Entry - Geographic Name" },
1965 { 653, "Index Term - Uncontrolled" },
1966 { 654, "Subject Added Entry - Faceted Topical Terms" },
1967 { 655, "Index Term - Genre/Form" },
1968 { 656, "Index Term - Occupation" },
1969 { 657, "Index Term - Function" },
1970 { 658, "Index Term - Curriculum Objective" },
1971 { 662, "Subject Added Entry - Hierarchical Place Name" },
1972 { 700, "Added Entry - Personal Name" },
1973 { 710, "Added Entry - Corporate Name" },
1974 { 711, "Added Entry - Meeting Name" },
1975 { 720, "Added Entry - Uncontrolled Name" },
1976 { 730, "Added Entry - Uniform Title" },
1977 { 740, "Added Entry - Uncontrolled Related/Analytical Title" },
1978 { 751, "Added Entry - Geographic Name" },
1979 { 752, "Added Entry - Hierarchical Place Name" },
1980 { 753, "System Details Access to Computer Files" },
1981 { 754, "Added Entry - Taxonomic Identification" },
1982 { 758, "Resource Identifier" },
1983 { 760, "Main Series Entry" },
1984 { 762, "Subseries Entry" },
1985 { 765, "Original Language Entry" },
1986 { 767, "Translation Entry" },
1987 { 770, "Supplement/Special Issue Entry" },
1988 { 772, "Supplement Parent Entry" },
1989 { 773, "Host Item Entry" },
1990 { 774, "Constituent Unit Entry" },
1991 { 775, "Other Edition Entry" },
1992 { 776, "Additional Physical Form Entry" },
1993 { 777, "Issued With Entry" },
1994 { 780, "Preceding Entry" },
1995 { 785, "Succeeding Entry" },
1996 { 786, "Data Source Entry" },
1997 { 787, "Other Relationship Entry" },
1998 { 800, "Series Added Entry - Personal Name" },
1999 { 810, "Series Added Entry - Corporate Name" },
2000 { 811, "Series Added Entry - Meeting Name" },
2001 { 830, "Series Added Entry - Uniform Title" },
2002 { 850, "Holding Institution" },
2003 { 852, "Location" },
2004 { 853, "Captions and Pattern - Basic Bibliographic Unit" },
2005 { 856, "Electronic Location and Access" },
2006 { 859, "Local LoC Electronic Location and Access" },
2007 { 863, "Enumeration and Chronology - Basic Bibliographic Unit" },
2008 { 880, "Alternate Graphic Representation" },
2009 { 890, "Local LoC Visible File Entry" },
2010 { 906, "Local LoC Processing Data" },
2011 { 920, "Local LoC Selection Decision" },
2012 { 922, "Local LoC Book Source" },
2013 { 923, "Local LoC Supplier Invoice or Shipment Id" },
2014 { 925, "Local LoC Selection Decision" },
2015 { 952, "Local LoC Cataloger's Permanent Note" },
2016 { 955, "Local LoC Functional Identifying Information" },
2017 { 984, "Local LoC Shelflist Compare Status" },
2018 { 985, "Local LoC Record History" },
2019 { 987, "Local LoC Conversation History" },
2020 { 991, "Local LoC Location Information" },
2021 { 992, "Local LoC Location Information" },
2022 { 0, NULL}
2025 static int
2026 dissect_z3950_printable_OCTET_STRING(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2027 tvbuff_t *next_tvb = NULL;
2028 int hf_alternate = 0;
2029 unsigned old_offset = offset;
2031 if (hf_index == hf_z3950_referenceId) {
2032 hf_alternate = hf_z3950_referenceId_printable;
2034 else if ( hf_index == hf_z3950_general) {
2035 hf_alternate = hf_z3950_general_printable;
2038 if (hf_alternate > 0) {
2039 /* extract the value of the octet string so we can look at it. */
2040 /* This does not display anything because tree is NULL. */
2041 offset = dissect_ber_octet_string(implicit_tag, actx, NULL, tvb, offset, hf_index, &next_tvb);
2043 if (next_tvb &&
2044 tvb_ascii_isprint(next_tvb, 0, tvb_reported_length(next_tvb))) {
2045 proto_tree_add_item(tree, hf_alternate, next_tvb,
2046 0, tvb_reported_length(next_tvb), ENC_ASCII|ENC_NA);
2048 else {
2049 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb,
2050 old_offset, hf_index, NULL);
2053 else {
2054 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb,
2055 old_offset, hf_index, NULL);
2058 return offset;
2061 /*--- Cyclic dependencies ---*/
2063 /* RPNStructure -> RPNStructure/rpnRpnOp -> RPNStructure */
2064 /* RPNStructure -> RPNStructure/rpnRpnOp -> RPNStructure */
2065 static int dissect_z3950_RPNStructure(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
2067 /* ElementInfo -> ElementDataType -> ElementDataType/structured -> ElementInfo */
2068 static int dissect_z3950_ElementInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
2070 /* TaggedElement -> ElementData -> ElementData/subtree -> TaggedElement */
2071 static int dissect_z3950_TaggedElement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
2076 static int
2077 dissect_z3950_OCTET_STRING(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2078 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
2079 NULL);
2081 return offset;
2086 static int
2087 dissect_z3950_ReferenceId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2088 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2089 hf_index, BER_CLASS_CON, 2, true,
2090 dissect_z3950_printable_OCTET_STRING);
2093 return offset;
2097 static int * const ProtocolVersion_U_bits[] = {
2098 &hf_z3950_ProtocolVersion_U_version_1,
2099 &hf_z3950_ProtocolVersion_U_version_2,
2100 &hf_z3950_ProtocolVersion_U_version_3,
2101 NULL
2104 static int
2105 dissect_z3950_ProtocolVersion_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2106 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
2107 ProtocolVersion_U_bits, 3, hf_index, ett_z3950_ProtocolVersion_U,
2108 NULL);
2110 return offset;
2115 static int
2116 dissect_z3950_ProtocolVersion(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2117 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2118 hf_index, BER_CLASS_CON, 3, true, dissect_z3950_ProtocolVersion_U);
2120 return offset;
2124 static int * const Options_U_bits[] = {
2125 &hf_z3950_Options_U_search,
2126 &hf_z3950_Options_U_present,
2127 &hf_z3950_Options_U_delSet,
2128 &hf_z3950_Options_U_resourceReport,
2129 &hf_z3950_Options_U_triggerResourceCtrl,
2130 &hf_z3950_Options_U_resourceCtrl,
2131 &hf_z3950_Options_U_accessCtrl,
2132 &hf_z3950_Options_U_scan,
2133 &hf_z3950_Options_U_sort,
2134 &hf_z3950_Options_U_spare_bit9,
2135 &hf_z3950_Options_U_extendedServices,
2136 &hf_z3950_Options_U_level_1Segmentation,
2137 &hf_z3950_Options_U_level_2Segmentation,
2138 &hf_z3950_Options_U_concurrentOperations,
2139 &hf_z3950_Options_U_namedResultSets,
2140 NULL
2143 static int
2144 dissect_z3950_Options_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2145 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
2146 Options_U_bits, 15, hf_index, ett_z3950_Options_U,
2147 NULL);
2149 return offset;
2154 static int
2155 dissect_z3950_Options(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2156 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2157 hf_index, BER_CLASS_CON, 4, true, dissect_z3950_Options_U);
2159 return offset;
2164 static int
2165 dissect_z3950_INTEGER(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2166 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2167 NULL);
2169 return offset;
2174 static int
2175 dissect_z3950_VisibleString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2176 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_VisibleString,
2177 actx, tree, tvb, offset, hf_index,
2178 NULL);
2180 return offset;
2185 static int
2186 dissect_z3950_InternationalString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2187 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GeneralString,
2188 actx, tree, tvb, offset, hf_index,
2189 NULL);
2191 return offset;
2195 static const ber_sequence_t T_idPass_sequence[] = {
2196 { &hf_z3950_groupId , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2197 { &hf_z3950_userId , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2198 { &hf_z3950_password , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2199 { NULL, 0, 0, 0, NULL }
2202 static int
2203 dissect_z3950_T_idPass(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2204 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2205 T_idPass_sequence, hf_index, ett_z3950_T_idPass);
2207 return offset;
2212 static int
2213 dissect_z3950_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2214 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
2216 return offset;
2221 static int
2222 dissect_z3950_EXTERNAL(bool 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_external_type(implicit_tag, tree, tvb, offset, actx, hf_index, NULL);
2225 return offset;
2229 static const value_string z3950_T_idAuthentication_vals[] = {
2230 { 0, "open" },
2231 { 1, "idPass" },
2232 { 2, "anonymous" },
2233 { 3, "other" },
2234 { 0, NULL }
2237 static const ber_choice_t T_idAuthentication_choice[] = {
2238 { 0, &hf_z3950_open , BER_CLASS_UNI, BER_UNI_TAG_VisibleString, BER_FLAGS_NOOWNTAG, dissect_z3950_VisibleString },
2239 { 1, &hf_z3950_idPass , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_idPass },
2240 { 2, &hf_z3950_anonymous , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_z3950_NULL },
2241 { 3, &hf_z3950_other , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_z3950_EXTERNAL },
2242 { 0, NULL, 0, 0, 0, NULL }
2245 static int
2246 dissect_z3950_T_idAuthentication(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2247 offset = dissect_ber_choice(actx, tree, tvb, offset,
2248 T_idAuthentication_choice, hf_index, ett_z3950_T_idAuthentication,
2249 NULL);
2251 return offset;
2256 static int
2257 dissect_z3950_OBJECT_IDENTIFIER(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2258 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2260 return offset;
2264 static const ber_sequence_t InfoCategory_sequence[] = {
2265 { &hf_z3950_categoryTypeId, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
2266 { &hf_z3950_categoryValue , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2267 { NULL, 0, 0, 0, NULL }
2270 static int
2271 dissect_z3950_InfoCategory(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2272 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2273 InfoCategory_sequence, hf_index, ett_z3950_InfoCategory);
2275 return offset;
2279 static const value_string z3950_T_information_vals[] = {
2280 { 2, "characterInfo" },
2281 { 3, "binaryInfo" },
2282 { 4, "externallyDefinedInfo" },
2283 { 5, "oid" },
2284 { 0, NULL }
2287 static const ber_choice_t T_information_choice[] = {
2288 { 2, &hf_z3950_characterInfo , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2289 { 3, &hf_z3950_binaryInfo , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
2290 { 4, &hf_z3950_externallyDefinedInfo, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
2291 { 5, &hf_z3950_oid , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
2292 { 0, NULL, 0, 0, 0, NULL }
2295 static int
2296 dissect_z3950_T_information(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2297 offset = dissect_ber_choice(actx, tree, tvb, offset,
2298 T_information_choice, hf_index, ett_z3950_T_information,
2299 NULL);
2301 return offset;
2305 static const ber_sequence_t T__untag_item_sequence[] = {
2306 { &hf_z3950_category , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InfoCategory },
2307 { &hf_z3950_information , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_information },
2308 { NULL, 0, 0, 0, NULL }
2311 static int
2312 dissect_z3950_T__untag_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2313 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2314 T__untag_item_sequence, hf_index, ett_z3950_T__untag_item);
2316 return offset;
2320 static const ber_sequence_t OtherInformation_U_sequence_of[1] = {
2321 { &hf_z3950_otherInformation_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T__untag_item },
2324 static int
2325 dissect_z3950_OtherInformation_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2326 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2327 OtherInformation_U_sequence_of, hf_index, ett_z3950_OtherInformation_U);
2329 return offset;
2334 static int
2335 dissect_z3950_OtherInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2336 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2337 hf_index, BER_CLASS_CON, 201, true, dissect_z3950_OtherInformation_U);
2339 return offset;
2343 static const ber_sequence_t InitializeRequest_sequence[] = {
2344 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
2345 { &hf_z3950_protocolVersion, BER_CLASS_CON, 3, BER_FLAGS_NOOWNTAG, dissect_z3950_ProtocolVersion },
2346 { &hf_z3950_options , BER_CLASS_CON, 4, BER_FLAGS_NOOWNTAG, dissect_z3950_Options },
2347 { &hf_z3950_preferredMessageSize, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2348 { &hf_z3950_exceptionalRecordSize, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2349 { &hf_z3950_idAuthentication, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_z3950_T_idAuthentication },
2350 { &hf_z3950_implementationId, BER_CLASS_CON, 110, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2351 { &hf_z3950_implementationName, BER_CLASS_CON, 111, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2352 { &hf_z3950_implementationVersion, BER_CLASS_CON, 112, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2353 { &hf_z3950_userInformationField, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_z3950_EXTERNAL },
2354 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
2355 { NULL, 0, 0, 0, NULL }
2358 static int
2359 dissect_z3950_InitializeRequest(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2360 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2361 InitializeRequest_sequence, hf_index, ett_z3950_InitializeRequest);
2363 return offset;
2368 static int
2369 dissect_z3950_BOOLEAN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2370 offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2372 return offset;
2376 static const ber_sequence_t InitializeResponse_sequence[] = {
2377 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
2378 { &hf_z3950_protocolVersion, BER_CLASS_CON, 3, BER_FLAGS_NOOWNTAG, dissect_z3950_ProtocolVersion },
2379 { &hf_z3950_options , BER_CLASS_CON, 4, BER_FLAGS_NOOWNTAG, dissect_z3950_Options },
2380 { &hf_z3950_preferredMessageSize, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2381 { &hf_z3950_exceptionalRecordSize, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2382 { &hf_z3950_result , BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
2383 { &hf_z3950_implementationId, BER_CLASS_CON, 110, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2384 { &hf_z3950_implementationName, BER_CLASS_CON, 111, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2385 { &hf_z3950_implementationVersion, BER_CLASS_CON, 112, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2386 { &hf_z3950_userInformationField, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL, dissect_z3950_EXTERNAL },
2387 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
2388 { NULL, 0, 0, 0, NULL }
2391 static int
2392 dissect_z3950_InitializeResponse(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2393 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2394 InitializeResponse_sequence, hf_index, ett_z3950_InitializeResponse);
2396 return offset;
2401 static int
2402 dissect_z3950_DatabaseName(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2403 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2404 hf_index, BER_CLASS_CON, 105, true, dissect_z3950_InternationalString);
2406 return offset;
2410 static const ber_sequence_t SEQUENCE_OF_DatabaseName_sequence_of[1] = {
2411 { &hf_z3950_databaseNames_item, BER_CLASS_CON, 105, BER_FLAGS_NOOWNTAG, dissect_z3950_DatabaseName },
2414 static int
2415 dissect_z3950_SEQUENCE_OF_DatabaseName(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2416 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2417 SEQUENCE_OF_DatabaseName_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_DatabaseName);
2419 return offset;
2424 static int
2425 dissect_z3950_ElementSetName(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2426 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2427 hf_index, BER_CLASS_CON, 103, true, dissect_z3950_InternationalString);
2429 return offset;
2433 static const ber_sequence_t T_databaseSpecific_item_sequence[] = {
2434 { &hf_z3950_dbName , BER_CLASS_CON, 105, BER_FLAGS_NOOWNTAG, dissect_z3950_DatabaseName },
2435 { &hf_z3950_esn , BER_CLASS_CON, 103, BER_FLAGS_NOOWNTAG, dissect_z3950_ElementSetName },
2436 { NULL, 0, 0, 0, NULL }
2439 static int
2440 dissect_z3950_T_databaseSpecific_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2441 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2442 T_databaseSpecific_item_sequence, hf_index, ett_z3950_T_databaseSpecific_item);
2444 return offset;
2448 static const ber_sequence_t T_databaseSpecific_sequence_of[1] = {
2449 { &hf_z3950_databaseSpecific_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_databaseSpecific_item },
2452 static int
2453 dissect_z3950_T_databaseSpecific(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2454 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2455 T_databaseSpecific_sequence_of, hf_index, ett_z3950_T_databaseSpecific);
2457 return offset;
2461 static const value_string z3950_ElementSetNames_vals[] = {
2462 { 0, "genericElementSetName" },
2463 { 1, "databaseSpecific" },
2464 { 0, NULL }
2467 static const ber_choice_t ElementSetNames_choice[] = {
2468 { 0, &hf_z3950_genericElementSetName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2469 { 1, &hf_z3950_databaseSpecific, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_databaseSpecific },
2470 { 0, NULL, 0, 0, 0, NULL }
2473 static int
2474 dissect_z3950_ElementSetNames(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2475 offset = dissect_ber_choice(actx, tree, tvb, offset,
2476 ElementSetNames_choice, hf_index, ett_z3950_ElementSetNames,
2477 NULL);
2479 return offset;
2484 static int
2485 dissect_z3950_T_type_0(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2486 /*XXX Not implemented yet */
2489 return offset;
2494 static int
2495 dissect_z3950_AttributeSetId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2496 tvbuff_t *oid_tvb=NULL;
2498 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, &oid_tvb);
2500 if (oid_tvb) {
2501 packet_info *pinfo = actx->pinfo;
2502 unsigned len = tvb_reported_length_remaining(oid_tvb, 0);
2503 char *oid_str = oid_encoded2string(pinfo->pool,
2504 tvb_get_ptr(oid_tvb, 0, len), len);
2505 int attribute_set_idx = Z3950_ATSET_UNKNOWN;
2506 z3950_atinfo_t *atinfo_data;
2508 if (g_strcmp0(oid_str, Z3950_ATSET_BIB1_OID) == 0) {
2509 attribute_set_idx = Z3950_ATSET_BIB1;
2511 if ((atinfo_data = (z3950_atinfo_t *)p_get_proto_data(pinfo->pool, pinfo, proto_z3950, Z3950_ATINFO_KEY)) == NULL) {
2513 atinfo_data = wmem_new0(pinfo->pool, z3950_atinfo_t);
2514 atinfo_data->atsetidx = attribute_set_idx;
2515 p_add_proto_data(pinfo->pool, pinfo,
2516 proto_z3950, Z3950_ATINFO_KEY, atinfo_data);
2518 else {
2519 atinfo_data->atsetidx = attribute_set_idx;
2523 return offset;
2528 static int
2529 dissect_z3950_T_attributeElement_attributeType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2530 int att_type=0;
2531 packet_info *pinfo = actx->pinfo;
2532 z3950_atinfo_t *atinfo_data;
2533 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2534 &att_type);
2536 atinfo_data = (z3950_atinfo_t *)p_get_proto_data(pinfo->pool, pinfo, proto_z3950, Z3950_ATINFO_KEY);
2537 if (atinfo_data && atinfo_data->atsetidx == Z3950_ATSET_BIB1) {
2538 proto_item_append_text(actx->created_item, " (%s)",
2539 val_to_str(att_type, z3950_bib1_att_types, "Unknown bib-1 attributeType %d"));
2540 atinfo_data->attype = att_type;
2542 return offset;
2547 static int
2548 dissect_z3950_T_attributeValue_numeric(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2549 int att_value=0;
2550 packet_info *pinfo = actx->pinfo;
2551 z3950_atinfo_t *atinfo_data;
2552 const value_string *att_value_string = NULL;
2553 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2554 &att_value);
2556 atinfo_data = (z3950_atinfo_t *)p_get_proto_data(pinfo->pool, pinfo, proto_z3950, Z3950_ATINFO_KEY);
2557 if (atinfo_data && atinfo_data->atsetidx == Z3950_ATSET_BIB1) {
2558 switch (atinfo_data->attype) {
2559 case Z3950_BIB1_AT_USE:
2560 att_value_string = z3950_bib1_at_use;
2561 break;
2562 case Z3950_BIB1_AT_RELATION:
2563 att_value_string = z3950_bib1_at_relation;
2564 break;
2565 case Z3950_BIB1_AT_POSITION:
2566 att_value_string = z3950_bib1_at_position;
2567 break;
2568 case Z3950_BIB1_AT_STRUCTURE:
2569 att_value_string = z3950_bib1_at_structure;
2570 break;
2571 case Z3950_BIB1_AT_TRUNCATION:
2572 att_value_string = z3950_bib1_at_truncation;
2573 break;
2574 case Z3950_BIB1_AT_COMPLETENESS:
2575 att_value_string = z3950_bib1_at_completeness;
2576 break;
2577 default:
2578 att_value_string = NULL;
2580 if (att_value_string) {
2581 proto_item_append_text(actx->created_item, " (%s)",
2582 val_to_str(att_value, att_value_string, "Unknown bib-1 attributeValue %d"));
2585 return offset;
2589 static const value_string z3950_StringOrNumeric_vals[] = {
2590 { 1, "string" },
2591 { 2, "numeric" },
2592 { 0, NULL }
2595 static const ber_choice_t StringOrNumeric_choice[] = {
2596 { 1, &hf_z3950_string , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2597 { 2, &hf_z3950_numeric , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2598 { 0, NULL, 0, 0, 0, NULL }
2601 static int
2602 dissect_z3950_StringOrNumeric(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2603 offset = dissect_ber_choice(actx, tree, tvb, offset,
2604 StringOrNumeric_choice, hf_index, ett_z3950_StringOrNumeric,
2605 NULL);
2607 return offset;
2611 static const ber_sequence_t SEQUENCE_OF_StringOrNumeric_sequence_of[1] = {
2612 { &hf_z3950_attributeValue_complex_list_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
2615 static int
2616 dissect_z3950_SEQUENCE_OF_StringOrNumeric(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2617 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2618 SEQUENCE_OF_StringOrNumeric_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_StringOrNumeric);
2620 return offset;
2624 static const ber_sequence_t T_semanticAction_sequence_of[1] = {
2625 { &hf_z3950_semanticAction_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_z3950_INTEGER },
2628 static int
2629 dissect_z3950_T_semanticAction(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2630 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2631 T_semanticAction_sequence_of, hf_index, ett_z3950_T_semanticAction);
2633 return offset;
2637 static const ber_sequence_t T_attributeValue_complex_sequence[] = {
2638 { &hf_z3950_attributeValue_complex_list, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_StringOrNumeric },
2639 { &hf_z3950_semanticAction, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_semanticAction },
2640 { NULL, 0, 0, 0, NULL }
2643 static int
2644 dissect_z3950_T_attributeValue_complex(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2645 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2646 T_attributeValue_complex_sequence, hf_index, ett_z3950_T_attributeValue_complex);
2648 return offset;
2652 static const value_string z3950_T_attributeValue_vals[] = {
2653 { 121, "numeric" },
2654 { 224, "complex" },
2655 { 0, NULL }
2658 static const ber_choice_t T_attributeValue_choice[] = {
2659 { 121, &hf_z3950_attributeValue_numeric, BER_CLASS_CON, 121, BER_FLAGS_IMPLTAG, dissect_z3950_T_attributeValue_numeric },
2660 { 224, &hf_z3950_attributeValue_complex, BER_CLASS_CON, 224, BER_FLAGS_IMPLTAG, dissect_z3950_T_attributeValue_complex },
2661 { 0, NULL, 0, 0, 0, NULL }
2664 static int
2665 dissect_z3950_T_attributeValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2666 offset = dissect_ber_choice(actx, tree, tvb, offset,
2667 T_attributeValue_choice, hf_index, ett_z3950_T_attributeValue,
2668 NULL);
2670 return offset;
2674 static const ber_sequence_t AttributeElement_sequence[] = {
2675 { &hf_z3950_attributeSet , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AttributeSetId },
2676 { &hf_z3950_attributeElement_attributeType, BER_CLASS_CON, 120, BER_FLAGS_IMPLTAG, dissect_z3950_T_attributeElement_attributeType },
2677 { &hf_z3950_attributeValue, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_attributeValue },
2678 { NULL, 0, 0, 0, NULL }
2681 static int
2682 dissect_z3950_AttributeElement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2683 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2684 AttributeElement_sequence, hf_index, ett_z3950_AttributeElement);
2686 return offset;
2690 static const ber_sequence_t SEQUENCE_OF_AttributeElement_sequence_of[1] = {
2691 { &hf_z3950_attributeList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeElement },
2694 static int
2695 dissect_z3950_SEQUENCE_OF_AttributeElement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2696 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2697 SEQUENCE_OF_AttributeElement_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeElement);
2699 return offset;
2704 static int
2705 dissect_z3950_AttributeList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2706 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2707 hf_index, BER_CLASS_CON, 44, true, dissect_z3950_SEQUENCE_OF_AttributeElement);
2709 return offset;
2714 static int
2715 dissect_z3950_T_general(bool 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_tagged_type(implicit_tag, actx, tree, tvb, offset,
2717 hf_index, BER_CLASS_CON, 2, true,
2718 dissect_z3950_printable_OCTET_STRING);
2721 return offset;
2726 static int
2727 dissect_z3950_GeneralizedTime(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2728 offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
2730 return offset;
2734 static const ber_sequence_t Unit_sequence[] = {
2735 { &hf_z3950_unitSystem , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_z3950_InternationalString },
2736 { &hf_z3950_unitType , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
2737 { &hf_z3950_unit , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
2738 { &hf_z3950_scaleFactor , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2739 { NULL, 0, 0, 0, NULL }
2742 static int
2743 dissect_z3950_Unit(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2744 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2745 Unit_sequence, hf_index, ett_z3950_Unit);
2747 return offset;
2751 static const ber_sequence_t IntUnit_sequence[] = {
2752 { &hf_z3950_value , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2753 { &hf_z3950_unitUsed , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_Unit },
2754 { NULL, 0, 0, 0, NULL }
2757 static int
2758 dissect_z3950_IntUnit(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2759 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2760 IntUnit_sequence, hf_index, ett_z3950_IntUnit);
2762 return offset;
2766 static const value_string z3950_Term_vals[] = {
2767 { 45, "general" },
2768 { 215, "numeric" },
2769 { 216, "characterString" },
2770 { 217, "oid" },
2771 { 218, "dateTime" },
2772 { 219, "external" },
2773 { 220, "integerAndUnit" },
2774 { 221, "null" },
2775 { 0, NULL }
2778 static const ber_choice_t Term_choice[] = {
2779 { 45, &hf_z3950_general , BER_CLASS_CON, 45, BER_FLAGS_IMPLTAG, dissect_z3950_T_general },
2780 { 215, &hf_z3950_numeric , BER_CLASS_CON, 215, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2781 { 216, &hf_z3950_characterString, BER_CLASS_CON, 216, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
2782 { 217, &hf_z3950_oid , BER_CLASS_CON, 217, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
2783 { 218, &hf_z3950_dateTime , BER_CLASS_CON, 218, BER_FLAGS_IMPLTAG, dissect_z3950_GeneralizedTime },
2784 { 219, &hf_z3950_external , BER_CLASS_CON, 219, BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
2785 { 220, &hf_z3950_integerAndUnit, BER_CLASS_CON, 220, BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
2786 { 221, &hf_z3950_null , BER_CLASS_CON, 221, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
2787 { 0, NULL, 0, 0, 0, NULL }
2790 static int
2791 dissect_z3950_Term(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2792 offset = dissect_ber_choice(actx, tree, tvb, offset,
2793 Term_choice, hf_index, ett_z3950_Term,
2794 NULL);
2796 return offset;
2800 static const ber_sequence_t AttributesPlusTerm_U_sequence[] = {
2801 { &hf_z3950_attributes , BER_CLASS_CON, 44, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeList },
2802 { &hf_z3950_term , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_Term },
2803 { NULL, 0, 0, 0, NULL }
2806 static int
2807 dissect_z3950_AttributesPlusTerm_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2808 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2809 AttributesPlusTerm_U_sequence, hf_index, ett_z3950_AttributesPlusTerm_U);
2811 return offset;
2816 static int
2817 dissect_z3950_AttributesPlusTerm(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2818 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2819 hf_index, BER_CLASS_CON, 102, true, dissect_z3950_AttributesPlusTerm_U);
2821 return offset;
2826 static int
2827 dissect_z3950_ResultSetId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2828 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2829 hf_index, BER_CLASS_CON, 31, true, dissect_z3950_InternationalString);
2831 return offset;
2835 static const ber_sequence_t ResultSetPlusAttributes_U_sequence[] = {
2836 { &hf_z3950_resultSet , BER_CLASS_CON, 31, BER_FLAGS_NOOWNTAG, dissect_z3950_ResultSetId },
2837 { &hf_z3950_attributes , BER_CLASS_CON, 44, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeList },
2838 { NULL, 0, 0, 0, NULL }
2841 static int
2842 dissect_z3950_ResultSetPlusAttributes_U(bool 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 ResultSetPlusAttributes_U_sequence, hf_index, ett_z3950_ResultSetPlusAttributes_U);
2846 return offset;
2851 static int
2852 dissect_z3950_ResultSetPlusAttributes(bool 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, 214, true, dissect_z3950_ResultSetPlusAttributes_U);
2856 return offset;
2860 static const value_string z3950_Operand_vals[] = {
2861 { 102, "attrTerm" },
2862 { 31, "resultSet" },
2863 { 214, "resultAttr" },
2864 { 0, NULL }
2867 static const ber_choice_t Operand_choice[] = {
2868 { 102, &hf_z3950_attrTerm , BER_CLASS_CON, 102, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributesPlusTerm },
2869 { 31, &hf_z3950_resultSet , BER_CLASS_CON, 31, BER_FLAGS_NOOWNTAG, dissect_z3950_ResultSetId },
2870 { 214, &hf_z3950_resultAttr , BER_CLASS_CON, 214, BER_FLAGS_NOOWNTAG, dissect_z3950_ResultSetPlusAttributes },
2871 { 0, NULL, 0, 0, 0, NULL }
2874 static int
2875 dissect_z3950_Operand(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2876 offset = dissect_ber_choice(actx, tree, tvb, offset,
2877 Operand_choice, hf_index, ett_z3950_Operand,
2878 NULL);
2880 return offset;
2884 static const value_string z3950_T_relationType_vals[] = {
2885 { 1, "lessThan" },
2886 { 2, "lessThanOrEqual" },
2887 { 3, "equal" },
2888 { 4, "greaterThanOrEqual" },
2889 { 5, "greaterThan" },
2890 { 6, "notEqual" },
2891 { 0, NULL }
2895 static int
2896 dissect_z3950_T_relationType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2897 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2898 NULL);
2900 return offset;
2904 static const value_string z3950_KnownProximityUnit_vals[] = {
2905 { 1, "character" },
2906 { 2, "word" },
2907 { 3, "sentence" },
2908 { 4, "paragraph" },
2909 { 5, "section" },
2910 { 6, "chapter" },
2911 { 7, "document" },
2912 { 8, "element" },
2913 { 9, "subelement" },
2914 { 10, "elementType" },
2915 { 11, "byte" },
2916 { 0, NULL }
2920 static int
2921 dissect_z3950_KnownProximityUnit(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2922 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2923 NULL);
2925 return offset;
2929 static const value_string z3950_T_proximityUnitCode_vals[] = {
2930 { 1, "known" },
2931 { 2, "private" },
2932 { 0, NULL }
2935 static const ber_choice_t T_proximityUnitCode_choice[] = {
2936 { 1, &hf_z3950_known , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_KnownProximityUnit },
2937 { 2, &hf_z3950_private , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2938 { 0, NULL, 0, 0, 0, NULL }
2941 static int
2942 dissect_z3950_T_proximityUnitCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2943 offset = dissect_ber_choice(actx, tree, tvb, offset,
2944 T_proximityUnitCode_choice, hf_index, ett_z3950_T_proximityUnitCode,
2945 NULL);
2947 return offset;
2951 static const ber_sequence_t ProximityOperator_sequence[] = {
2952 { &hf_z3950_exclusion , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
2953 { &hf_z3950_distance , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
2954 { &hf_z3950_ordered , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
2955 { &hf_z3950_relationType , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_T_relationType },
2956 { &hf_z3950_proximityUnitCode, BER_CLASS_CON, 5, 0, dissect_z3950_T_proximityUnitCode },
2957 { NULL, 0, 0, 0, NULL }
2960 static int
2961 dissect_z3950_ProximityOperator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2962 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2963 ProximityOperator_sequence, hf_index, ett_z3950_ProximityOperator);
2965 return offset;
2969 static const value_string z3950_Operator_U_vals[] = {
2970 { 0, "and" },
2971 { 1, "or" },
2972 { 2, "and-not" },
2973 { 3, "prox" },
2974 { 0, NULL }
2977 static const ber_choice_t Operator_U_choice[] = {
2978 { 0, &hf_z3950_and , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
2979 { 1, &hf_z3950_or , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
2980 { 2, &hf_z3950_and_not , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
2981 { 3, &hf_z3950_prox , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_ProximityOperator },
2982 { 0, NULL, 0, 0, 0, NULL }
2985 static int
2986 dissect_z3950_Operator_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2987 offset = dissect_ber_choice(actx, tree, tvb, offset,
2988 Operator_U_choice, hf_index, ett_z3950_Operator_U,
2989 NULL);
2991 return offset;
2996 static int
2997 dissect_z3950_Operator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2998 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
2999 hf_index, BER_CLASS_CON, 46, false, dissect_z3950_Operator_U);
3001 return offset;
3005 static const ber_sequence_t T_rpnRpnOp_sequence[] = {
3006 { &hf_z3950_rpn1 , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_RPNStructure },
3007 { &hf_z3950_rpn2 , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_RPNStructure },
3008 { &hf_z3950_operatorRpnOp , BER_CLASS_CON, 46, BER_FLAGS_NOOWNTAG, dissect_z3950_Operator },
3009 { NULL, 0, 0, 0, NULL }
3012 static int
3013 dissect_z3950_T_rpnRpnOp(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3014 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3015 T_rpnRpnOp_sequence, hf_index, ett_z3950_T_rpnRpnOp);
3017 return offset;
3021 static const value_string z3950_RPNStructure_vals[] = {
3022 { 0, "op" },
3023 { 1, "rpnRpnOp" },
3024 { 0, NULL }
3027 static const ber_choice_t RPNStructure_choice[] = {
3028 { 0, &hf_z3950_operandRpnOp , BER_CLASS_CON, 0, 0, dissect_z3950_Operand },
3029 { 1, &hf_z3950_rpnRpnOp , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_rpnRpnOp },
3030 { 0, NULL, 0, 0, 0, NULL }
3033 static int
3034 dissect_z3950_RPNStructure(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3035 // RPNStructure -> RPNStructure/rpnRpnOp -> RPNStructure
3036 actx->pinfo->dissection_depth += 2;
3037 increment_dissection_depth(actx->pinfo);
3038 offset = dissect_ber_choice(actx, tree, tvb, offset,
3039 RPNStructure_choice, hf_index, ett_z3950_RPNStructure,
3040 NULL);
3042 actx->pinfo->dissection_depth -= 2;
3043 decrement_dissection_depth(actx->pinfo);
3044 return offset;
3048 static const ber_sequence_t RPNQuery_sequence[] = {
3049 { &hf_z3950_attributeSet , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeSetId },
3050 { &hf_z3950_rpn , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_RPNStructure },
3051 { NULL, 0, 0, 0, NULL }
3054 static int
3055 dissect_z3950_RPNQuery(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3056 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3057 RPNQuery_sequence, hf_index, ett_z3950_RPNQuery);
3059 return offset;
3063 static const value_string z3950_Query_vals[] = {
3064 { 0, "type-0" },
3065 { 1, "type-1" },
3066 { 2, "type-2" },
3067 { 100, "type-100" },
3068 { 101, "type-101" },
3069 { 102, "type-102" },
3070 { 0, NULL }
3073 static const ber_choice_t Query_choice[] = {
3074 { 0, &hf_z3950_type_0 , BER_CLASS_CON, 0, 0, dissect_z3950_T_type_0 },
3075 { 1, &hf_z3950_type_1 , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_RPNQuery },
3076 { 2, &hf_z3950_type_2 , BER_CLASS_CON, 2, 0, dissect_z3950_OCTET_STRING },
3077 { 100, &hf_z3950_type_100 , BER_CLASS_CON, 100, 0, dissect_z3950_OCTET_STRING },
3078 { 101, &hf_z3950_type_101 , BER_CLASS_CON, 101, BER_FLAGS_IMPLTAG, dissect_z3950_RPNQuery },
3079 { 102, &hf_z3950_type_102 , BER_CLASS_CON, 102, 0, dissect_z3950_OCTET_STRING },
3080 { 0, NULL, 0, 0, 0, NULL }
3083 static int
3084 dissect_z3950_Query(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3085 offset = dissect_ber_choice(actx, tree, tvb, offset,
3086 Query_choice, hf_index, ett_z3950_Query,
3087 NULL);
3089 return offset;
3093 static const ber_sequence_t SearchRequest_sequence[] = {
3094 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3095 { &hf_z3950_smallSetUpperBound, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3096 { &hf_z3950_largeSetLowerBound, BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3097 { &hf_z3950_mediumSetPresentNumber, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3098 { &hf_z3950_replaceIndicator, BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3099 { &hf_z3950_resultSetName , BER_CLASS_CON, 17, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
3100 { &hf_z3950_databaseNames , BER_CLASS_CON, 18, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DatabaseName },
3101 { &hf_z3950_smallSetElementSetNames, BER_CLASS_CON, 100, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_ElementSetNames },
3102 { &hf_z3950_mediumSetElementSetNames, BER_CLASS_CON, 101, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_ElementSetNames },
3103 { &hf_z3950_preferredRecordSyntax, BER_CLASS_CON, 104, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
3104 { &hf_z3950_query , BER_CLASS_CON, 21, BER_FLAGS_NOTCHKTAG, dissect_z3950_Query },
3105 { &hf_z3950_additionalSearchInfo, BER_CLASS_CON, 203, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OtherInformation },
3106 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3107 { NULL, 0, 0, 0, NULL }
3110 static int
3111 dissect_z3950_SearchRequest(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3112 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3113 SearchRequest_sequence, hf_index, ett_z3950_SearchRequest);
3115 return offset;
3119 static const value_string z3950_T_search_resultSetStatus_vals[] = {
3120 { 1, "subset" },
3121 { 2, "interim" },
3122 { 3, "none" },
3123 { 0, NULL }
3127 static int
3128 dissect_z3950_T_search_resultSetStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3129 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3130 NULL);
3132 return offset;
3136 static const value_string z3950_PresentStatus_U_vals[] = {
3137 { 0, "success" },
3138 { 1, "partial-1" },
3139 { 2, "partial-2" },
3140 { 3, "partial-3" },
3141 { 4, "partial-4" },
3142 { 5, "failure" },
3143 { 0, NULL }
3147 static int
3148 dissect_z3950_PresentStatus_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3149 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3150 NULL);
3152 return offset;
3157 static int
3158 dissect_z3950_PresentStatus(bool 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_tagged_type(implicit_tag, actx, tree, tvb, offset,
3160 hf_index, BER_CLASS_CON, 27, true, dissect_z3950_PresentStatus_U);
3162 return offset;
3167 static int
3168 dissect_z3950_T_diagnosticSetId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3169 tvbuff_t *oid_tvb=NULL;
3171 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, &oid_tvb);
3173 if (oid_tvb) {
3174 packet_info *pinfo = actx->pinfo;
3175 unsigned len = tvb_reported_length_remaining(oid_tvb, 0);
3176 char *oid_str = oid_encoded2string(pinfo->pool,
3177 tvb_get_ptr(oid_tvb, 0, len), len);
3178 int diagset_idx = Z3950_DIAGSET_UNKNOWN;
3179 z3950_diaginfo_t *diaginfo_data;
3181 if (g_strcmp0(oid_str, Z3950_DIAGSET_BIB1_OID) == 0) {
3182 diagset_idx = Z3950_DIAGSET_BIB1;
3184 if ((diaginfo_data = (z3950_diaginfo_t *)p_get_proto_data(pinfo->pool, pinfo, proto_z3950, Z3950_DIAGSET_KEY)) == NULL) {
3186 diaginfo_data = wmem_new0(pinfo->pool, z3950_diaginfo_t);
3187 diaginfo_data->diagsetidx = diagset_idx;
3188 p_add_proto_data(pinfo->pool, pinfo,
3189 proto_z3950, Z3950_DIAGSET_KEY, diaginfo_data);
3191 else {
3192 diaginfo_data->diagsetidx = diagset_idx;
3196 return offset;
3201 static int
3202 dissect_z3950_T_condition(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3203 int diag_condition=0;
3204 packet_info *pinfo = actx->pinfo;
3205 z3950_diaginfo_t *diaginfo_data;
3206 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3207 &diag_condition);
3209 diaginfo_data = (z3950_diaginfo_t *)p_get_proto_data(pinfo->pool, pinfo, proto_z3950, Z3950_DIAGSET_KEY);
3210 if (diaginfo_data && diaginfo_data->diagsetidx == Z3950_DIAGSET_BIB1) {
3211 proto_item_append_text(actx->created_item, " (%s)",
3212 val_to_str(diag_condition, z3950_bib1_diagconditions, "Unknown bib-1 diagnostic %d"));
3213 diaginfo_data->diagcondition = diag_condition;
3215 return offset;
3219 static const value_string z3950_T_addinfo_vals[] = {
3220 { 0, "v2Addinfo" },
3221 { 1, "v3Addinfo" },
3222 { 0, NULL }
3225 static const ber_choice_t T_addinfo_choice[] = {
3226 { 0, &hf_z3950_v2Addinfo , BER_CLASS_UNI, BER_UNI_TAG_VisibleString, BER_FLAGS_NOOWNTAG, dissect_z3950_VisibleString },
3227 { 1, &hf_z3950_v3Addinfo , BER_CLASS_UNI, BER_UNI_TAG_GeneralString, BER_FLAGS_NOOWNTAG, dissect_z3950_InternationalString },
3228 { 0, NULL, 0, 0, 0, NULL }
3231 static int
3232 dissect_z3950_T_addinfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3233 offset = dissect_ber_choice(actx, tree, tvb, offset,
3234 T_addinfo_choice, hf_index, ett_z3950_T_addinfo,
3235 NULL);
3237 return offset;
3241 static const ber_sequence_t DefaultDiagFormat_sequence[] = {
3242 { &hf_z3950_diagnosticSetId, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_T_diagnosticSetId },
3243 { &hf_z3950_condition , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_z3950_T_condition },
3244 { &hf_z3950_addinfo , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_addinfo },
3245 { NULL, 0, 0, 0, NULL }
3248 static int
3249 dissect_z3950_DefaultDiagFormat(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3250 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3251 DefaultDiagFormat_sequence, hf_index, ett_z3950_DefaultDiagFormat);
3253 return offset;
3257 static const value_string z3950_DiagRec_vals[] = {
3258 { 0, "defaultFormat" },
3259 { 1, "externallyDefined" },
3260 { 0, NULL }
3263 static const ber_choice_t DiagRec_choice[] = {
3264 { 0, &hf_z3950_defaultFormat , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_DefaultDiagFormat },
3265 { 1, &hf_z3950_externallyDefined, BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_z3950_EXTERNAL },
3266 { 0, NULL, 0, 0, 0, NULL }
3269 static int
3270 dissect_z3950_DiagRec(bool 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 DiagRec_choice, hf_index, ett_z3950_DiagRec,
3273 NULL);
3275 return offset;
3279 static const value_string z3950_FragmentSyntax_vals[] = {
3280 { 0, "externallyTagged" },
3281 { 1, "notExternallyTagged" },
3282 { 0, NULL }
3285 static const ber_choice_t FragmentSyntax_choice[] = {
3286 { 0, &hf_z3950_externallyTagged, BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_z3950_EXTERNAL },
3287 { 1, &hf_z3950_notExternallyTagged, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_z3950_OCTET_STRING },
3288 { 0, NULL, 0, 0, 0, NULL }
3291 static int
3292 dissect_z3950_FragmentSyntax(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3293 offset = dissect_ber_choice(actx, tree, tvb, offset,
3294 FragmentSyntax_choice, hf_index, ett_z3950_FragmentSyntax,
3295 NULL);
3297 return offset;
3301 static const value_string z3950_T_record_vals[] = {
3302 { 1, "retrievalRecord" },
3303 { 2, "surrogateDiagnostic" },
3304 { 3, "startingFragment" },
3305 { 4, "intermediateFragment" },
3306 { 5, "finalFragment" },
3307 { 0, NULL }
3310 static const ber_choice_t T_record_choice[] = {
3311 { 1, &hf_z3950_retrievalRecord, BER_CLASS_CON, 1, 0, dissect_z3950_EXTERNAL },
3312 { 2, &hf_z3950_surrogateDiagnostic, BER_CLASS_CON, 2, 0, dissect_z3950_DiagRec },
3313 { 3, &hf_z3950_startingFragment, BER_CLASS_CON, 3, 0, dissect_z3950_FragmentSyntax },
3314 { 4, &hf_z3950_intermediateFragment, BER_CLASS_CON, 4, 0, dissect_z3950_FragmentSyntax },
3315 { 5, &hf_z3950_finalFragment , BER_CLASS_CON, 5, 0, dissect_z3950_FragmentSyntax },
3316 { 0, NULL, 0, 0, 0, NULL }
3319 static int
3320 dissect_z3950_T_record(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3321 offset = dissect_ber_choice(actx, tree, tvb, offset,
3322 T_record_choice, hf_index, ett_z3950_T_record,
3323 NULL);
3325 return offset;
3329 static const ber_sequence_t NamePlusRecord_sequence[] = {
3330 { &hf_z3950_namePlusRecord_name, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
3331 { &hf_z3950_record , BER_CLASS_CON, 1, 0, dissect_z3950_T_record },
3332 { NULL, 0, 0, 0, NULL }
3335 static int
3336 dissect_z3950_NamePlusRecord(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3337 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3338 NamePlusRecord_sequence, hf_index, ett_z3950_NamePlusRecord);
3340 return offset;
3344 static const ber_sequence_t SEQUENCE_OF_NamePlusRecord_sequence_of[1] = {
3345 { &hf_z3950_segmentRecords_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_NamePlusRecord },
3348 static int
3349 dissect_z3950_SEQUENCE_OF_NamePlusRecord(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3350 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3351 SEQUENCE_OF_NamePlusRecord_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_NamePlusRecord);
3353 return offset;
3357 static const ber_sequence_t SEQUENCE_OF_DiagRec_sequence_of[1] = {
3358 { &hf_z3950_multipleNonSurDiagnostics_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_DiagRec },
3361 static int
3362 dissect_z3950_SEQUENCE_OF_DiagRec(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3363 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3364 SEQUENCE_OF_DiagRec_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_DiagRec);
3366 return offset;
3370 static const value_string z3950_Records_vals[] = {
3371 { 28, "responseRecords" },
3372 { 130, "nonSurrogateDiagnostic" },
3373 { 205, "multipleNonSurDiagnostics" },
3374 { 0, NULL }
3377 static const ber_choice_t Records_choice[] = {
3378 { 28, &hf_z3950_responseRecords, BER_CLASS_CON, 28, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_NamePlusRecord },
3379 { 130, &hf_z3950_nonSurrogateDiagnostic, BER_CLASS_CON, 130, BER_FLAGS_IMPLTAG, dissect_z3950_DefaultDiagFormat },
3380 { 205, &hf_z3950_multipleNonSurDiagnostics, BER_CLASS_CON, 205, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DiagRec },
3381 { 0, NULL, 0, 0, 0, NULL }
3384 static int
3385 dissect_z3950_Records(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3386 offset = dissect_ber_choice(actx, tree, tvb, offset,
3387 Records_choice, hf_index, ett_z3950_Records,
3388 NULL);
3390 return offset;
3394 static const ber_sequence_t SearchResponse_sequence[] = {
3395 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3396 { &hf_z3950_resultCount , BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3397 { &hf_z3950_numberOfRecordsReturned, BER_CLASS_CON, 24, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3398 { &hf_z3950_nextResultSetPosition, BER_CLASS_CON, 25, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3399 { &hf_z3950_searchStatus , BER_CLASS_CON, 22, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3400 { &hf_z3950_search_resultSetStatus, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_search_resultSetStatus },
3401 { &hf_z3950_presentStatus , BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_PresentStatus },
3402 { &hf_z3950_records , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_Records },
3403 { &hf_z3950_additionalSearchInfo, BER_CLASS_CON, 203, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OtherInformation },
3404 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3405 { NULL, 0, 0, 0, NULL }
3408 static int
3409 dissect_z3950_SearchResponse(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3410 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3411 SearchResponse_sequence, hf_index, ett_z3950_SearchResponse);
3413 return offset;
3417 static const ber_sequence_t Range_sequence[] = {
3418 { &hf_z3950_startingPosition, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3419 { &hf_z3950_numberOfRecords, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3420 { NULL, 0, 0, 0, NULL }
3423 static int
3424 dissect_z3950_Range(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3425 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3426 Range_sequence, hf_index, ett_z3950_Range);
3428 return offset;
3432 static const ber_sequence_t SEQUENCE_OF_Range_sequence_of[1] = {
3433 { &hf_z3950_additionalRanges_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Range },
3436 static int
3437 dissect_z3950_SEQUENCE_OF_Range(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3438 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3439 SEQUENCE_OF_Range_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_Range);
3441 return offset;
3445 static const value_string z3950_T_specification_elementSpec_vals[] = {
3446 { 1, "elementSetName" },
3447 { 2, "externalEspec" },
3448 { 0, NULL }
3451 static const ber_choice_t T_specification_elementSpec_choice[] = {
3452 { 1, &hf_z3950_elementSetName, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
3453 { 2, &hf_z3950_externalEspec , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
3454 { 0, NULL, 0, 0, 0, NULL }
3457 static int
3458 dissect_z3950_T_specification_elementSpec(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3459 offset = dissect_ber_choice(actx, tree, tvb, offset,
3460 T_specification_elementSpec_choice, hf_index, ett_z3950_T_specification_elementSpec,
3461 NULL);
3463 return offset;
3467 static const ber_sequence_t Specification_sequence[] = {
3468 { &hf_z3950_schema , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
3469 { &hf_z3950_specification_elementSpec, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_z3950_T_specification_elementSpec },
3470 { NULL, 0, 0, 0, NULL }
3473 static int
3474 dissect_z3950_Specification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3475 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3476 Specification_sequence, hf_index, ett_z3950_Specification);
3478 return offset;
3482 static const ber_sequence_t T_dbSpecific_item_sequence[] = {
3483 { &hf_z3950_db , BER_CLASS_CON, 1, 0, dissect_z3950_DatabaseName },
3484 { &hf_z3950_spec , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_Specification },
3485 { NULL, 0, 0, 0, NULL }
3488 static int
3489 dissect_z3950_T_dbSpecific_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3490 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3491 T_dbSpecific_item_sequence, hf_index, ett_z3950_T_dbSpecific_item);
3493 return offset;
3497 static const ber_sequence_t T_dbSpecific_sequence_of[1] = {
3498 { &hf_z3950_dbSpecific_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_dbSpecific_item },
3501 static int
3502 dissect_z3950_T_dbSpecific(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3503 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3504 T_dbSpecific_sequence_of, hf_index, ett_z3950_T_dbSpecific);
3506 return offset;
3510 static const ber_sequence_t T_compSpec_recordSyntax_sequence_of[1] = {
3511 { &hf_z3950_compSpec_recordSyntax_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
3514 static int
3515 dissect_z3950_T_compSpec_recordSyntax(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3516 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3517 T_compSpec_recordSyntax_sequence_of, hf_index, ett_z3950_T_compSpec_recordSyntax);
3519 return offset;
3523 static const ber_sequence_t CompSpec_sequence[] = {
3524 { &hf_z3950_selectAlternativeSyntax, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3525 { &hf_z3950_compSpec_generic, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Specification },
3526 { &hf_z3950_dbSpecific , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_dbSpecific },
3527 { &hf_z3950_compSpec_recordSyntax, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_compSpec_recordSyntax },
3528 { NULL, 0, 0, 0, NULL }
3531 static int
3532 dissect_z3950_CompSpec(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3533 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3534 CompSpec_sequence, hf_index, ett_z3950_CompSpec);
3536 return offset;
3540 static const value_string z3950_T_recordComposition_vals[] = {
3541 { 19, "simple" },
3542 { 209, "complex" },
3543 { 0, NULL }
3546 static const ber_choice_t T_recordComposition_choice[] = {
3547 { 19, &hf_z3950_simple , BER_CLASS_CON, 19, 0, dissect_z3950_ElementSetNames },
3548 { 209, &hf_z3950_recordComposition_complex, BER_CLASS_CON, 209, BER_FLAGS_IMPLTAG, dissect_z3950_CompSpec },
3549 { 0, NULL, 0, 0, 0, NULL }
3552 static int
3553 dissect_z3950_T_recordComposition(bool 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_choice(actx, tree, tvb, offset,
3555 T_recordComposition_choice, hf_index, ett_z3950_T_recordComposition,
3556 NULL);
3558 return offset;
3562 static const ber_sequence_t PresentRequest_sequence[] = {
3563 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3564 { &hf_z3950_resultSetId , BER_CLASS_CON, 31, BER_FLAGS_NOOWNTAG, dissect_z3950_ResultSetId },
3565 { &hf_z3950_resultSetStartPoint, BER_CLASS_CON, 30, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3566 { &hf_z3950_numberOfRecordsRequested, BER_CLASS_CON, 29, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3567 { &hf_z3950_additionalRanges, BER_CLASS_CON, 212, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Range },
3568 { &hf_z3950_recordComposition, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_recordComposition },
3569 { &hf_z3950_preferredRecordSyntax, BER_CLASS_CON, 104, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
3570 { &hf_z3950_maxSegmentCount, BER_CLASS_CON, 204, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3571 { &hf_z3950_maxRecordSize , BER_CLASS_CON, 206, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3572 { &hf_z3950_maxSegmentSize, BER_CLASS_CON, 207, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3573 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3574 { NULL, 0, 0, 0, NULL }
3577 static int
3578 dissect_z3950_PresentRequest(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3579 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3580 PresentRequest_sequence, hf_index, ett_z3950_PresentRequest);
3582 return offset;
3586 static const ber_sequence_t PresentResponse_sequence[] = {
3587 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3588 { &hf_z3950_numberOfRecordsReturned, BER_CLASS_CON, 24, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3589 { &hf_z3950_nextResultSetPosition, BER_CLASS_CON, 25, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3590 { &hf_z3950_presentStatus , BER_CLASS_CON, 27, BER_FLAGS_NOOWNTAG, dissect_z3950_PresentStatus },
3591 { &hf_z3950_records , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_Records },
3592 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3593 { NULL, 0, 0, 0, NULL }
3596 static int
3597 dissect_z3950_PresentResponse(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3598 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3599 PresentResponse_sequence, hf_index, ett_z3950_PresentResponse);
3601 return offset;
3605 static const value_string z3950_T_deleteFunction_vals[] = {
3606 { 0, "list" },
3607 { 1, "all" },
3608 { 0, NULL }
3612 static int
3613 dissect_z3950_T_deleteFunction(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3614 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3615 NULL);
3617 return offset;
3621 static const ber_sequence_t SEQUENCE_OF_ResultSetId_sequence_of[1] = {
3622 { &hf_z3950_resultSetList_item, BER_CLASS_CON, 31, BER_FLAGS_NOOWNTAG, dissect_z3950_ResultSetId },
3625 static int
3626 dissect_z3950_SEQUENCE_OF_ResultSetId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3627 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3628 SEQUENCE_OF_ResultSetId_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_ResultSetId);
3630 return offset;
3634 static const ber_sequence_t DeleteResultSetRequest_sequence[] = {
3635 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3636 { &hf_z3950_deleteFunction, BER_CLASS_CON, 32, BER_FLAGS_IMPLTAG, dissect_z3950_T_deleteFunction },
3637 { &hf_z3950_resultSetList , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_SEQUENCE_OF_ResultSetId },
3638 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3639 { NULL, 0, 0, 0, NULL }
3642 static int
3643 dissect_z3950_DeleteResultSetRequest(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3644 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3645 DeleteResultSetRequest_sequence, hf_index, ett_z3950_DeleteResultSetRequest);
3647 return offset;
3651 static const value_string z3950_DeleteSetStatus_U_vals[] = {
3652 { 0, "success" },
3653 { 1, "resultSetDidNotExist" },
3654 { 2, "previouslyDeletedByTarget" },
3655 { 3, "systemProblemAtTarget" },
3656 { 4, "accessNotAllowed" },
3657 { 5, "resourceControlAtOrigin" },
3658 { 6, "resourceControlAtTarget" },
3659 { 7, "bulkDeleteNotSupported" },
3660 { 8, "notAllRsltSetsDeletedOnBulkDlte" },
3661 { 9, "notAllRequestedResultSetsDeleted" },
3662 { 10, "resultSetInUse" },
3663 { 0, NULL }
3667 static int
3668 dissect_z3950_DeleteSetStatus_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3669 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3670 NULL);
3672 return offset;
3677 static int
3678 dissect_z3950_DeleteSetStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3679 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
3680 hf_index, BER_CLASS_CON, 33, true, dissect_z3950_DeleteSetStatus_U);
3682 return offset;
3686 static const ber_sequence_t ListStatuses_item_sequence[] = {
3687 { &hf_z3950_listStatuses_id, BER_CLASS_CON, 31, BER_FLAGS_NOOWNTAG, dissect_z3950_ResultSetId },
3688 { &hf_z3950_status , BER_CLASS_CON, 33, BER_FLAGS_NOOWNTAG, dissect_z3950_DeleteSetStatus },
3689 { NULL, 0, 0, 0, NULL }
3692 static int
3693 dissect_z3950_ListStatuses_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3694 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3695 ListStatuses_item_sequence, hf_index, ett_z3950_ListStatuses_item);
3697 return offset;
3701 static const ber_sequence_t ListStatuses_sequence_of[1] = {
3702 { &hf_z3950_ListStatuses_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_ListStatuses_item },
3705 static int
3706 dissect_z3950_ListStatuses(bool 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_sequence_of(implicit_tag, actx, tree, tvb, offset,
3708 ListStatuses_sequence_of, hf_index, ett_z3950_ListStatuses);
3710 return offset;
3714 static const ber_sequence_t DeleteResultSetResponse_sequence[] = {
3715 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3716 { &hf_z3950_deleteOperationStatus, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_DeleteSetStatus },
3717 { &hf_z3950_deleteListStatuses, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ListStatuses },
3718 { &hf_z3950_numberNotDeleted, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3719 { &hf_z3950_bulkStatuses , BER_CLASS_CON, 35, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ListStatuses },
3720 { &hf_z3950_deleteMessage , BER_CLASS_CON, 36, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
3721 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3722 { NULL, 0, 0, 0, NULL }
3725 static int
3726 dissect_z3950_DeleteResultSetResponse(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3727 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3728 DeleteResultSetResponse_sequence, hf_index, ett_z3950_DeleteResultSetResponse);
3730 return offset;
3734 static const value_string z3950_T_securityChallenge_vals[] = {
3735 { 37, "simpleForm" },
3736 { 0, "externallyDefined" },
3737 { 0, NULL }
3740 static const ber_choice_t T_securityChallenge_choice[] = {
3741 { 37, &hf_z3950_simpleForm , BER_CLASS_CON, 37, BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
3742 { 0, &hf_z3950_externallyDefined, BER_CLASS_CON, 0, 0, dissect_z3950_EXTERNAL },
3743 { 0, NULL, 0, 0, 0, NULL }
3746 static int
3747 dissect_z3950_T_securityChallenge(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3748 offset = dissect_ber_choice(actx, tree, tvb, offset,
3749 T_securityChallenge_choice, hf_index, ett_z3950_T_securityChallenge,
3750 NULL);
3752 return offset;
3756 static const ber_sequence_t AccessControlRequest_sequence[] = {
3757 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3758 { &hf_z3950_securityChallenge, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_securityChallenge },
3759 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3760 { NULL, 0, 0, 0, NULL }
3763 static int
3764 dissect_z3950_AccessControlRequest(bool 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 AccessControlRequest_sequence, hf_index, ett_z3950_AccessControlRequest);
3768 return offset;
3772 static const value_string z3950_T_securityChallengeResponse_vals[] = {
3773 { 38, "simpleForm" },
3774 { 0, "externallyDefined" },
3775 { 0, NULL }
3778 static const ber_choice_t T_securityChallengeResponse_choice[] = {
3779 { 38, &hf_z3950_simpleForm , BER_CLASS_CON, 38, 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 }
3784 static int
3785 dissect_z3950_T_securityChallengeResponse(bool 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_securityChallengeResponse_choice, hf_index, ett_z3950_T_securityChallengeResponse,
3788 NULL);
3790 return offset;
3794 static const ber_sequence_t AccessControlResponse_sequence[] = {
3795 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3796 { &hf_z3950_securityChallengeResponse, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_securityChallengeResponse },
3797 { &hf_z3950_diagnostic , BER_CLASS_CON, 223, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_DiagRec },
3798 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3799 { NULL, 0, 0, 0, NULL }
3802 static int
3803 dissect_z3950_AccessControlResponse(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3804 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3805 AccessControlResponse_sequence, hf_index, ett_z3950_AccessControlResponse);
3807 return offset;
3812 static int
3813 dissect_z3950_ResourceReport(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3814 offset = dissect_ber_external_type(implicit_tag, tree, tvb, offset, actx, hf_index, NULL);
3816 return offset;
3820 static const value_string z3950_T_partialResultsAvailable_vals[] = {
3821 { 1, "subset" },
3822 { 2, "interim" },
3823 { 3, "none" },
3824 { 0, NULL }
3828 static int
3829 dissect_z3950_T_partialResultsAvailable(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3830 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3831 NULL);
3833 return offset;
3837 static const ber_sequence_t ResourceControlRequest_sequence[] = {
3838 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3839 { &hf_z3950_suspendedFlag , BER_CLASS_CON, 39, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3840 { &hf_z3950_resourceReport, BER_CLASS_CON, 40, BER_FLAGS_OPTIONAL, dissect_z3950_ResourceReport },
3841 { &hf_z3950_partialResultsAvailable, BER_CLASS_CON, 41, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_partialResultsAvailable },
3842 { &hf_z3950_resourceControlRequest_responseRequired, BER_CLASS_CON, 42, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3843 { &hf_z3950_triggeredRequestFlag, BER_CLASS_CON, 43, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3844 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3845 { NULL, 0, 0, 0, NULL }
3848 static int
3849 dissect_z3950_ResourceControlRequest(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3850 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3851 ResourceControlRequest_sequence, hf_index, ett_z3950_ResourceControlRequest);
3853 return offset;
3857 static const ber_sequence_t ResourceControlResponse_sequence[] = {
3858 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3859 { &hf_z3950_continueFlag , BER_CLASS_CON, 44, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3860 { &hf_z3950_resultSetWanted, BER_CLASS_CON, 45, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3861 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3862 { NULL, 0, 0, 0, NULL }
3865 static int
3866 dissect_z3950_ResourceControlResponse(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3867 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3868 ResourceControlResponse_sequence, hf_index, ett_z3950_ResourceControlResponse);
3870 return offset;
3874 static const value_string z3950_T_requestedAction_vals[] = {
3875 { 1, "resourceReport" },
3876 { 2, "resourceControl" },
3877 { 3, "cancel" },
3878 { 0, NULL }
3882 static int
3883 dissect_z3950_T_requestedAction(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3884 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3885 NULL);
3887 return offset;
3892 static int
3893 dissect_z3950_ResourceReportId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3894 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
3896 return offset;
3900 static const ber_sequence_t TriggerResourceControlRequest_sequence[] = {
3901 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3902 { &hf_z3950_requestedAction, BER_CLASS_CON, 46, BER_FLAGS_IMPLTAG, dissect_z3950_T_requestedAction },
3903 { &hf_z3950_prefResourceReportFormat, BER_CLASS_CON, 47, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ResourceReportId },
3904 { &hf_z3950_resultSetWanted, BER_CLASS_CON, 48, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
3905 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3906 { NULL, 0, 0, 0, NULL }
3909 static int
3910 dissect_z3950_TriggerResourceControlRequest(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3911 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3912 TriggerResourceControlRequest_sequence, hf_index, ett_z3950_TriggerResourceControlRequest);
3914 return offset;
3918 static const ber_sequence_t ResourceReportRequest_sequence[] = {
3919 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3920 { &hf_z3950_opId , BER_CLASS_CON, 210, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ReferenceId },
3921 { &hf_z3950_prefResourceReportFormat, BER_CLASS_CON, 49, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ResourceReportId },
3922 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3923 { NULL, 0, 0, 0, NULL }
3926 static int
3927 dissect_z3950_ResourceReportRequest(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3928 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3929 ResourceReportRequest_sequence, hf_index, ett_z3950_ResourceReportRequest);
3931 return offset;
3935 static const value_string z3950_T_resourceReportStatus_vals[] = {
3936 { 0, "success" },
3937 { 1, "partial" },
3938 { 2, "failure-1" },
3939 { 3, "failure-2" },
3940 { 4, "failure-3" },
3941 { 5, "failure-4" },
3942 { 6, "failure-5" },
3943 { 7, "failure-6" },
3944 { 0, NULL }
3948 static int
3949 dissect_z3950_T_resourceReportStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3950 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3951 NULL);
3953 return offset;
3957 static const ber_sequence_t ResourceReportResponse_sequence[] = {
3958 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3959 { &hf_z3950_resourceReportStatus, BER_CLASS_CON, 50, BER_FLAGS_IMPLTAG, dissect_z3950_T_resourceReportStatus },
3960 { &hf_z3950_resourceReport, BER_CLASS_CON, 51, BER_FLAGS_OPTIONAL, dissect_z3950_ResourceReport },
3961 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3962 { NULL, 0, 0, 0, NULL }
3965 static int
3966 dissect_z3950_ResourceReportResponse(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3967 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3968 ResourceReportResponse_sequence, hf_index, ett_z3950_ResourceReportResponse);
3970 return offset;
3974 static const ber_sequence_t ScanRequest_sequence[] = {
3975 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
3976 { &hf_z3950_databaseNames , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DatabaseName },
3977 { &hf_z3950_attributeSet , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeSetId },
3978 { &hf_z3950_termListAndStartPoint, BER_CLASS_CON, 102, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributesPlusTerm },
3979 { &hf_z3950_stepSize , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3980 { &hf_z3950_numberOfTermsRequested, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3981 { &hf_z3950_preferredPositionInResponse, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
3982 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
3983 { NULL, 0, 0, 0, NULL }
3986 static int
3987 dissect_z3950_ScanRequest(bool 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_sequence(implicit_tag, actx, tree, tvb, offset,
3989 ScanRequest_sequence, hf_index, ett_z3950_ScanRequest);
3991 return offset;
3995 static const value_string z3950_T_scanStatus_vals[] = {
3996 { 0, "success" },
3997 { 1, "partial-1" },
3998 { 2, "partial-2" },
3999 { 3, "partial-3" },
4000 { 4, "partial-4" },
4001 { 5, "partial-5" },
4002 { 6, "failure" },
4003 { 0, NULL }
4007 static int
4008 dissect_z3950_T_scanStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4009 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4010 NULL);
4012 return offset;
4016 static const ber_sequence_t SEQUENCE_OF_AttributesPlusTerm_sequence_of[1] = {
4017 { &hf_z3950_alternativeTerm_item, BER_CLASS_CON, 102, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributesPlusTerm },
4020 static int
4021 dissect_z3950_SEQUENCE_OF_AttributesPlusTerm(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4022 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4023 SEQUENCE_OF_AttributesPlusTerm_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributesPlusTerm);
4025 return offset;
4029 static const ber_sequence_t T_byDatabase_item_sequence[] = {
4030 { &hf_z3950_db , BER_CLASS_CON, 105, BER_FLAGS_NOOWNTAG, dissect_z3950_DatabaseName },
4031 { &hf_z3950_num , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
4032 { &hf_z3950_otherDbInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4033 { NULL, 0, 0, 0, NULL }
4036 static int
4037 dissect_z3950_T_byDatabase_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4038 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4039 T_byDatabase_item_sequence, hf_index, ett_z3950_T_byDatabase_item);
4041 return offset;
4045 static const ber_sequence_t T_byDatabase_sequence_of[1] = {
4046 { &hf_z3950_byDatabase_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_byDatabase_item },
4049 static int
4050 dissect_z3950_T_byDatabase(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4051 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4052 T_byDatabase_sequence_of, hf_index, ett_z3950_T_byDatabase);
4054 return offset;
4058 static const value_string z3950_T_occurrences_vals[] = {
4059 { 2, "global" },
4060 { 3, "byDatabase" },
4061 { 0, NULL }
4064 static const ber_choice_t T_occurrences_choice[] = {
4065 { 2, &hf_z3950_global , BER_CLASS_CON, 2, 0, dissect_z3950_INTEGER },
4066 { 3, &hf_z3950_byDatabase , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_T_byDatabase },
4067 { 0, NULL, 0, 0, 0, NULL }
4070 static int
4071 dissect_z3950_T_occurrences(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4072 offset = dissect_ber_choice(actx, tree, tvb, offset,
4073 T_occurrences_choice, hf_index, ett_z3950_T_occurrences,
4074 NULL);
4076 return offset;
4080 static const ber_sequence_t OccurrenceByAttributes_item_sequence[] = {
4081 { &hf_z3950_attributes , BER_CLASS_CON, 1, 0, dissect_z3950_AttributeList },
4082 { &hf_z3950_occurrences , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_occurrences },
4083 { &hf_z3950_otherOccurInfo, BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4084 { NULL, 0, 0, 0, NULL }
4087 static int
4088 dissect_z3950_OccurrenceByAttributes_item(bool 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(implicit_tag, actx, tree, tvb, offset,
4090 OccurrenceByAttributes_item_sequence, hf_index, ett_z3950_OccurrenceByAttributes_item);
4092 return offset;
4096 static const ber_sequence_t OccurrenceByAttributes_sequence_of[1] = {
4097 { &hf_z3950_OccurrenceByAttributes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_OccurrenceByAttributes_item },
4100 static int
4101 dissect_z3950_OccurrenceByAttributes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4102 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4103 OccurrenceByAttributes_sequence_of, hf_index, ett_z3950_OccurrenceByAttributes);
4105 return offset;
4109 static const ber_sequence_t TermInfo_sequence[] = {
4110 { &hf_z3950_term , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_Term },
4111 { &hf_z3950_displayTerm , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4112 { &hf_z3950_suggestedAttributes, BER_CLASS_CON, 44, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeList },
4113 { &hf_z3950_alternativeTerm, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributesPlusTerm },
4114 { &hf_z3950_globalOccurrences, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
4115 { &hf_z3950_byAttributes , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OccurrenceByAttributes },
4116 { &hf_z3950_otherTermInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4117 { NULL, 0, 0, 0, NULL }
4120 static int
4121 dissect_z3950_TermInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4122 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4123 TermInfo_sequence, hf_index, ett_z3950_TermInfo);
4125 return offset;
4129 static const value_string z3950_Entry_vals[] = {
4130 { 1, "termInfo" },
4131 { 2, "surrogateDiagnostic" },
4132 { 0, NULL }
4135 static const ber_choice_t Entry_choice[] = {
4136 { 1, &hf_z3950_termInfo , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_TermInfo },
4137 { 2, &hf_z3950_surrogateDiagnostic, BER_CLASS_CON, 2, 0, dissect_z3950_DiagRec },
4138 { 0, NULL, 0, 0, 0, NULL }
4141 static int
4142 dissect_z3950_Entry(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4143 offset = dissect_ber_choice(actx, tree, tvb, offset,
4144 Entry_choice, hf_index, ett_z3950_Entry,
4145 NULL);
4147 return offset;
4151 static const ber_sequence_t SEQUENCE_OF_Entry_sequence_of[1] = {
4152 { &hf_z3950_listEntries_entries_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_Entry },
4155 static int
4156 dissect_z3950_SEQUENCE_OF_Entry(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4157 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4158 SEQUENCE_OF_Entry_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_Entry);
4160 return offset;
4164 static const ber_sequence_t ListEntries_sequence[] = {
4165 { &hf_z3950_listEntries_entries, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Entry },
4166 { &hf_z3950_nonsurrogateDiagnostics, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DiagRec },
4167 { NULL, 0, 0, 0, NULL }
4170 static int
4171 dissect_z3950_ListEntries(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4172 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4173 ListEntries_sequence, hf_index, ett_z3950_ListEntries);
4175 return offset;
4179 static const ber_sequence_t ScanResponse_sequence[] = {
4180 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
4181 { &hf_z3950_stepSize , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
4182 { &hf_z3950_scanStatus , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_T_scanStatus },
4183 { &hf_z3950_numberOfEntriesReturned, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
4184 { &hf_z3950_positionOfTerm, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
4185 { &hf_z3950_scanResponse_entries, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ListEntries },
4186 { &hf_z3950_attributeSet , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AttributeSetId },
4187 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4188 { NULL, 0, 0, 0, NULL }
4191 static int
4192 dissect_z3950_ScanResponse(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4193 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4194 ScanResponse_sequence, hf_index, ett_z3950_ScanResponse);
4196 return offset;
4200 static const ber_sequence_t SEQUENCE_OF_InternationalString_sequence_of[1] = {
4201 { &hf_z3950_inputResultSetNames_item, BER_CLASS_UNI, BER_UNI_TAG_GeneralString, BER_FLAGS_NOOWNTAG, dissect_z3950_InternationalString },
4204 static int
4205 dissect_z3950_SEQUENCE_OF_InternationalString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4206 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4207 SEQUENCE_OF_InternationalString_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_InternationalString);
4209 return offset;
4213 static const ber_sequence_t T_sortAttributes_sequence[] = {
4214 { &hf_z3950_sortAttributes_id, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeSetId },
4215 { &hf_z3950_sortAttributes_list, BER_CLASS_CON, 44, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeList },
4216 { NULL, 0, 0, 0, NULL }
4219 static int
4220 dissect_z3950_T_sortAttributes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4221 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4222 T_sortAttributes_sequence, hf_index, ett_z3950_T_sortAttributes);
4224 return offset;
4228 static const value_string z3950_SortKey_vals[] = {
4229 { 0, "sortfield" },
4230 { 1, "elementSpec" },
4231 { 2, "sortAttributes" },
4232 { 0, NULL }
4235 static const ber_choice_t SortKey_choice[] = {
4236 { 0, &hf_z3950_sortfield , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4237 { 1, &hf_z3950_sortKey_elementSpec, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_Specification },
4238 { 2, &hf_z3950_sortAttributes, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_sortAttributes },
4239 { 0, NULL, 0, 0, 0, NULL }
4242 static int
4243 dissect_z3950_SortKey(bool 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_choice(actx, tree, tvb, offset,
4245 SortKey_choice, hf_index, ett_z3950_SortKey,
4246 NULL);
4248 return offset;
4252 static const ber_sequence_t T_datbaseSpecific_item_sequence[] = {
4253 { &hf_z3950_databaseName , BER_CLASS_CON, 105, BER_FLAGS_NOOWNTAG, dissect_z3950_DatabaseName },
4254 { &hf_z3950_dbSort , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_SortKey },
4255 { NULL, 0, 0, 0, NULL }
4258 static int
4259 dissect_z3950_T_datbaseSpecific_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4260 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4261 T_datbaseSpecific_item_sequence, hf_index, ett_z3950_T_datbaseSpecific_item);
4263 return offset;
4267 static const ber_sequence_t T_datbaseSpecific_sequence_of[1] = {
4268 { &hf_z3950_datbaseSpecific_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_datbaseSpecific_item },
4271 static int
4272 dissect_z3950_T_datbaseSpecific(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4273 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4274 T_datbaseSpecific_sequence_of, hf_index, ett_z3950_T_datbaseSpecific);
4276 return offset;
4280 static const value_string z3950_SortElement_vals[] = {
4281 { 1, "generic" },
4282 { 2, "datbaseSpecific" },
4283 { 0, NULL }
4286 static const ber_choice_t SortElement_choice[] = {
4287 { 1, &hf_z3950_sortElement_generic, BER_CLASS_CON, 1, 0, dissect_z3950_SortKey },
4288 { 2, &hf_z3950_datbaseSpecific, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_datbaseSpecific },
4289 { 0, NULL, 0, 0, 0, NULL }
4292 static int
4293 dissect_z3950_SortElement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4294 offset = dissect_ber_choice(actx, tree, tvb, offset,
4295 SortElement_choice, hf_index, ett_z3950_SortElement,
4296 NULL);
4298 return offset;
4302 static const value_string z3950_T_sortRelation_vals[] = {
4303 { 0, "ascending" },
4304 { 1, "descending" },
4305 { 3, "ascendingByFrequency" },
4306 { 4, "descendingByfrequency" },
4307 { 0, NULL }
4311 static int
4312 dissect_z3950_T_sortRelation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4313 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4314 NULL);
4316 return offset;
4320 static const value_string z3950_T_caseSensitivity_vals[] = {
4321 { 0, "caseSensitive" },
4322 { 1, "caseInsensitive" },
4323 { 0, NULL }
4327 static int
4328 dissect_z3950_T_caseSensitivity(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4329 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4330 NULL);
4332 return offset;
4336 static const value_string z3950_T_missingValueAction_vals[] = {
4337 { 1, "abort" },
4338 { 2, "null" },
4339 { 3, "missingValueData" },
4340 { 0, NULL }
4343 static const ber_choice_t T_missingValueAction_choice[] = {
4344 { 1, &hf_z3950_abort , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
4345 { 2, &hf_z3950_null , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
4346 { 3, &hf_z3950_missingValueData, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
4347 { 0, NULL, 0, 0, 0, NULL }
4350 static int
4351 dissect_z3950_T_missingValueAction(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4352 offset = dissect_ber_choice(actx, tree, tvb, offset,
4353 T_missingValueAction_choice, hf_index, ett_z3950_T_missingValueAction,
4354 NULL);
4356 return offset;
4360 static const ber_sequence_t SortKeySpec_sequence[] = {
4361 { &hf_z3950_sortElement , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_SortElement },
4362 { &hf_z3950_sortRelation , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_sortRelation },
4363 { &hf_z3950_caseSensitivity, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_caseSensitivity },
4364 { &hf_z3950_missingValueAction, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_z3950_T_missingValueAction },
4365 { NULL, 0, 0, 0, NULL }
4368 static int
4369 dissect_z3950_SortKeySpec(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4370 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4371 SortKeySpec_sequence, hf_index, ett_z3950_SortKeySpec);
4373 return offset;
4377 static const ber_sequence_t SEQUENCE_OF_SortKeySpec_sequence_of[1] = {
4378 { &hf_z3950_sortSequence_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_SortKeySpec },
4381 static int
4382 dissect_z3950_SEQUENCE_OF_SortKeySpec(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4383 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4384 SEQUENCE_OF_SortKeySpec_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_SortKeySpec);
4386 return offset;
4390 static const ber_sequence_t SortRequest_sequence[] = {
4391 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
4392 { &hf_z3950_inputResultSetNames, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
4393 { &hf_z3950_sortedResultSetName, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4394 { &hf_z3950_sortSequence , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_SortKeySpec },
4395 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4396 { NULL, 0, 0, 0, NULL }
4399 static int
4400 dissect_z3950_SortRequest(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4401 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4402 SortRequest_sequence, hf_index, ett_z3950_SortRequest);
4404 return offset;
4408 static const value_string z3950_T_sortStatus_vals[] = {
4409 { 0, "success" },
4410 { 1, "partial-1" },
4411 { 2, "failure" },
4412 { 0, NULL }
4416 static int
4417 dissect_z3950_T_sortStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4418 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4419 NULL);
4421 return offset;
4425 static const value_string z3950_T_sort_resultSetStatus_vals[] = {
4426 { 1, "empty" },
4427 { 2, "interim" },
4428 { 3, "unchanged" },
4429 { 4, "none" },
4430 { 0, NULL }
4434 static int
4435 dissect_z3950_T_sort_resultSetStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4436 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4437 NULL);
4439 return offset;
4443 static const ber_sequence_t SortResponse_sequence[] = {
4444 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
4445 { &hf_z3950_sortStatus , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_T_sortStatus },
4446 { &hf_z3950_sort_resultSetStatus, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_sort_resultSetStatus },
4447 { &hf_z3950_diagnostics , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DiagRec },
4448 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4449 { NULL, 0, 0, 0, NULL }
4452 static int
4453 dissect_z3950_SortResponse(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4454 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4455 SortResponse_sequence, hf_index, ett_z3950_SortResponse);
4457 return offset;
4461 static const ber_sequence_t Segment_sequence[] = {
4462 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
4463 { &hf_z3950_numberOfRecordsReturned, BER_CLASS_CON, 24, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
4464 { &hf_z3950_segmentRecords, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_NamePlusRecord },
4465 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4466 { NULL, 0, 0, 0, NULL }
4469 static int
4470 dissect_z3950_Segment(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4471 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4472 Segment_sequence, hf_index, ett_z3950_Segment);
4474 return offset;
4478 static const value_string z3950_T_function_vals[] = {
4479 { 1, "create" },
4480 { 2, "delete" },
4481 { 3, "modify" },
4482 { 0, NULL }
4486 static int
4487 dissect_z3950_T_function(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4488 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4489 NULL);
4491 return offset;
4495 static const value_string z3950_T_allowableFunctions_item_vals[] = {
4496 { 1, "delete" },
4497 { 2, "modifyContents" },
4498 { 3, "modifyPermissions" },
4499 { 4, "present" },
4500 { 5, "invoke" },
4501 { 0, NULL }
4505 static int
4506 dissect_z3950_T_allowableFunctions_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4507 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4508 NULL);
4510 return offset;
4514 static const ber_sequence_t T_allowableFunctions_sequence_of[1] = {
4515 { &hf_z3950_allowableFunctions_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_z3950_T_allowableFunctions_item },
4518 static int
4519 dissect_z3950_T_allowableFunctions(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4520 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4521 T_allowableFunctions_sequence_of, hf_index, ett_z3950_T_allowableFunctions);
4523 return offset;
4527 static const ber_sequence_t Permissions_item_sequence[] = {
4528 { &hf_z3950_userId , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4529 { &hf_z3950_allowableFunctions, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_allowableFunctions },
4530 { NULL, 0, 0, 0, NULL }
4533 static int
4534 dissect_z3950_Permissions_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4535 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4536 Permissions_item_sequence, hf_index, ett_z3950_Permissions_item);
4538 return offset;
4542 static const ber_sequence_t Permissions_sequence_of[1] = {
4543 { &hf_z3950_Permissions_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Permissions_item },
4546 static int
4547 dissect_z3950_Permissions(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4548 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4549 Permissions_sequence_of, hf_index, ett_z3950_Permissions);
4551 return offset;
4555 static const value_string z3950_T_waitAction_vals[] = {
4556 { 1, "wait" },
4557 { 2, "waitIfPossible" },
4558 { 3, "dontWait" },
4559 { 4, "dontReturnPackage" },
4560 { 0, NULL }
4564 static int
4565 dissect_z3950_T_waitAction(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4566 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4567 NULL);
4569 return offset;
4573 static const ber_sequence_t ExtendedServicesRequest_sequence[] = {
4574 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
4575 { &hf_z3950_function , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_T_function },
4576 { &hf_z3950_packageType , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
4577 { &hf_z3950_packageName , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4578 { &hf_z3950_userId , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4579 { &hf_z3950_retentionTime , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
4580 { &hf_z3950_permissions , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Permissions },
4581 { &hf_z3950_extendedServicesRequest_description, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4582 { &hf_z3950_taskSpecificParameters, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
4583 { &hf_z3950_waitAction , BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_z3950_T_waitAction },
4584 { &hf_z3950_elements , BER_CLASS_CON, 103, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ElementSetName },
4585 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4586 { NULL, 0, 0, 0, NULL }
4589 static int
4590 dissect_z3950_ExtendedServicesRequest(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4591 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4592 ExtendedServicesRequest_sequence, hf_index, ett_z3950_ExtendedServicesRequest);
4594 return offset;
4598 static const value_string z3950_T_operationStatus_vals[] = {
4599 { 1, "done" },
4600 { 2, "accepted" },
4601 { 3, "failure" },
4602 { 0, NULL }
4606 static int
4607 dissect_z3950_T_operationStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4608 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4609 NULL);
4611 return offset;
4615 static const ber_sequence_t ExtendedServicesResponse_sequence[] = {
4616 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
4617 { &hf_z3950_operationStatus, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_T_operationStatus },
4618 { &hf_z3950_diagnostics , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DiagRec },
4619 { &hf_z3950_taskPackage , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
4620 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4621 { NULL, 0, 0, 0, NULL }
4624 static int
4625 dissect_z3950_ExtendedServicesResponse(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4626 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4627 ExtendedServicesResponse_sequence, hf_index, ett_z3950_ExtendedServicesResponse);
4629 return offset;
4633 static const value_string z3950_CloseReason_U_vals[] = {
4634 { 0, "finished" },
4635 { 1, "shutdown" },
4636 { 2, "systemProblem" },
4637 { 3, "costLimit" },
4638 { 4, "resources" },
4639 { 5, "securityViolation" },
4640 { 6, "protocolError" },
4641 { 7, "lackOfActivity" },
4642 { 8, "peerAbort" },
4643 { 9, "unspecified" },
4644 { 0, NULL }
4648 static int
4649 dissect_z3950_CloseReason_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4650 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4651 NULL);
4653 return offset;
4658 static int
4659 dissect_z3950_CloseReason(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4660 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
4661 hf_index, BER_CLASS_CON, 211, true, dissect_z3950_CloseReason_U);
4663 return offset;
4667 static const ber_sequence_t Close_sequence[] = {
4668 { &hf_z3950_referenceId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_ReferenceId },
4669 { &hf_z3950_closeReason , BER_CLASS_CON, 211, BER_FLAGS_NOOWNTAG, dissect_z3950_CloseReason },
4670 { &hf_z3950_diagnosticInformation, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4671 { &hf_z3950_resourceReportFormat, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ResourceReportId },
4672 { &hf_z3950_resourceReport, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_z3950_ResourceReport },
4673 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
4674 { NULL, 0, 0, 0, NULL }
4677 static int
4678 dissect_z3950_Close(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4679 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4680 Close_sequence, hf_index, ett_z3950_Close);
4682 return offset;
4686 static const value_string z3950_PDU_vals[] = {
4687 { 20, "initRequest" },
4688 { 21, "initResponse" },
4689 { 22, "searchRequest" },
4690 { 23, "searchResponse" },
4691 { 24, "presentRequest" },
4692 { 25, "presentResponse" },
4693 { 26, "deleteResultSetRequest" },
4694 { 27, "deleteResultSetResponse" },
4695 { 28, "accessControlRequest" },
4696 { 29, "accessControlResponse" },
4697 { 30, "resourceControlRequest" },
4698 { 31, "resourceControlResponse" },
4699 { 32, "triggerResourceControlRequest" },
4700 { 33, "resourceReportRequest" },
4701 { 34, "resourceReportResponse" },
4702 { 35, "scanRequest" },
4703 { 36, "scanResponse" },
4704 { 43, "sortRequest" },
4705 { 44, "sortResponse" },
4706 { 45, "segmentRequest" },
4707 { 46, "extendedServicesRequest" },
4708 { 47, "extendedServicesResponse" },
4709 { 48, "close" },
4710 { 0, NULL }
4713 static const ber_choice_t PDU_choice[] = {
4714 { 20, &hf_z3950_initRequest , BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_z3950_InitializeRequest },
4715 { 21, &hf_z3950_initResponse , BER_CLASS_CON, 21, BER_FLAGS_IMPLTAG, dissect_z3950_InitializeResponse },
4716 { 22, &hf_z3950_searchRequest , BER_CLASS_CON, 22, BER_FLAGS_IMPLTAG, dissect_z3950_SearchRequest },
4717 { 23, &hf_z3950_searchResponse, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_z3950_SearchResponse },
4718 { 24, &hf_z3950_presentRequest, BER_CLASS_CON, 24, BER_FLAGS_IMPLTAG, dissect_z3950_PresentRequest },
4719 { 25, &hf_z3950_presentResponse, BER_CLASS_CON, 25, BER_FLAGS_IMPLTAG, dissect_z3950_PresentResponse },
4720 { 26, &hf_z3950_deleteResultSetRequest, BER_CLASS_CON, 26, BER_FLAGS_IMPLTAG, dissect_z3950_DeleteResultSetRequest },
4721 { 27, &hf_z3950_deleteResultSetResponse, BER_CLASS_CON, 27, BER_FLAGS_IMPLTAG, dissect_z3950_DeleteResultSetResponse },
4722 { 28, &hf_z3950_accessControlRequest, BER_CLASS_CON, 28, BER_FLAGS_IMPLTAG, dissect_z3950_AccessControlRequest },
4723 { 29, &hf_z3950_accessControlResponse, BER_CLASS_CON, 29, BER_FLAGS_IMPLTAG, dissect_z3950_AccessControlResponse },
4724 { 30, &hf_z3950_resourceControlRequest, BER_CLASS_CON, 30, BER_FLAGS_IMPLTAG, dissect_z3950_ResourceControlRequest },
4725 { 31, &hf_z3950_resourceControlResponse, BER_CLASS_CON, 31, BER_FLAGS_IMPLTAG, dissect_z3950_ResourceControlResponse },
4726 { 32, &hf_z3950_triggerResourceControlRequest, BER_CLASS_CON, 32, BER_FLAGS_IMPLTAG, dissect_z3950_TriggerResourceControlRequest },
4727 { 33, &hf_z3950_resourceReportRequest, BER_CLASS_CON, 33, BER_FLAGS_IMPLTAG, dissect_z3950_ResourceReportRequest },
4728 { 34, &hf_z3950_resourceReportResponse, BER_CLASS_CON, 34, BER_FLAGS_IMPLTAG, dissect_z3950_ResourceReportResponse },
4729 { 35, &hf_z3950_scanRequest , BER_CLASS_CON, 35, BER_FLAGS_IMPLTAG, dissect_z3950_ScanRequest },
4730 { 36, &hf_z3950_scanResponse , BER_CLASS_CON, 36, BER_FLAGS_IMPLTAG, dissect_z3950_ScanResponse },
4731 { 43, &hf_z3950_sortRequest , BER_CLASS_CON, 43, BER_FLAGS_IMPLTAG, dissect_z3950_SortRequest },
4732 { 44, &hf_z3950_sortResponse , BER_CLASS_CON, 44, BER_FLAGS_IMPLTAG, dissect_z3950_SortResponse },
4733 { 45, &hf_z3950_segmentRequest, BER_CLASS_CON, 45, BER_FLAGS_IMPLTAG, dissect_z3950_Segment },
4734 { 46, &hf_z3950_extendedServicesRequest, BER_CLASS_CON, 46, BER_FLAGS_IMPLTAG, dissect_z3950_ExtendedServicesRequest },
4735 { 47, &hf_z3950_extendedServicesResponse, BER_CLASS_CON, 47, BER_FLAGS_IMPLTAG, dissect_z3950_ExtendedServicesResponse },
4736 { 48, &hf_z3950_close , BER_CLASS_CON, 48, BER_FLAGS_IMPLTAG, dissect_z3950_Close },
4737 { 0, NULL, 0, 0, 0, NULL }
4740 static int
4741 dissect_z3950_PDU(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4742 int choice;
4743 offset = dissect_ber_choice(actx, tree, tvb, offset,
4744 PDU_choice, hf_index, ett_z3950_PDU,
4745 &choice);
4747 if (choice >= 0) {
4748 packet_info *pinfo = actx->pinfo;
4749 int32_t tag = PDU_choice[choice].tag;
4751 col_set_str(pinfo->cinfo, COL_INFO,
4752 val_to_str_const(tag, z3950_PDU_vals, "Unknown Z39.50 PDU"));
4755 return offset;
4760 static int
4761 dissect_z3950_DBName(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4762 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
4763 hf_index, BER_CLASS_CON, 2, true, dissect_z3950_VisibleString);
4765 return offset;
4769 static const ber_sequence_t SEQUENCE_OF_DBName_sequence_of[1] = {
4770 { &hf_z3950_dblist_item , BER_CLASS_CON, 2, BER_FLAGS_NOOWNTAG, dissect_z3950_DBName },
4773 static int
4774 dissect_z3950_SEQUENCE_OF_DBName(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4775 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4776 SEQUENCE_OF_DBName_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_DBName);
4778 return offset;
4782 static const ber_sequence_t OCLC_UserInformation_sequence[] = {
4783 { &hf_z3950_motd , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_VisibleString },
4784 { &hf_z3950_dblist , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_SEQUENCE_OF_DBName },
4785 { &hf_z3950_failReason , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
4786 { &hf_z3950_oCLC_UserInformation_text, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_VisibleString },
4787 { NULL, 0, 0, 0, NULL }
4790 static int
4791 dissect_z3950_OCLC_UserInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4792 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4793 OCLC_UserInformation_sequence, hf_index, ett_z3950_OCLC_UserInformation);
4795 return offset;
4800 static int
4801 dissect_z3950_SutrsRecord(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4802 offset = dissect_z3950_InternationalString(implicit_tag, tvb, offset, actx, tree, hf_index);
4804 return offset;
4808 static const ber_sequence_t Volume_sequence[] = {
4809 { &hf_z3950_enumeration , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4810 { &hf_z3950_chronology , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4811 { &hf_z3950_enumAndChron , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4812 { NULL, 0, 0, 0, NULL }
4815 static int
4816 dissect_z3950_Volume(bool 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(implicit_tag, actx, tree, tvb, offset,
4818 Volume_sequence, hf_index, ett_z3950_Volume);
4820 return offset;
4824 static const ber_sequence_t SEQUENCE_OF_Volume_sequence_of[1] = {
4825 { &hf_z3950_volumes_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Volume },
4828 static int
4829 dissect_z3950_SEQUENCE_OF_Volume(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4830 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4831 SEQUENCE_OF_Volume_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_Volume);
4833 return offset;
4837 static const ber_sequence_t CircRecord_sequence[] = {
4838 { &hf_z3950_availableNow , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
4839 { &hf_z3950_availablityDate, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4840 { &hf_z3950_availableThru , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4841 { &hf_z3950_circRecord_restrictions, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4842 { &hf_z3950_itemId , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4843 { &hf_z3950_renewable , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
4844 { &hf_z3950_onHold , BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
4845 { &hf_z3950_enumAndChron , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4846 { &hf_z3950_midspine , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4847 { &hf_z3950_temporaryLocation, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4848 { NULL, 0, 0, 0, NULL }
4851 static int
4852 dissect_z3950_CircRecord(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4853 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4854 CircRecord_sequence, hf_index, ett_z3950_CircRecord);
4856 return offset;
4860 static const ber_sequence_t SEQUENCE_OF_CircRecord_sequence_of[1] = {
4861 { &hf_z3950_circulationData_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_CircRecord },
4864 static int
4865 dissect_z3950_SEQUENCE_OF_CircRecord(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4866 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4867 SEQUENCE_OF_CircRecord_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_CircRecord);
4869 return offset;
4873 static const ber_sequence_t HoldingsAndCircData_sequence[] = {
4874 { &hf_z3950_typeOfRecord , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4875 { &hf_z3950_encodingLevel , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4876 { &hf_z3950_format , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4877 { &hf_z3950_receiptAcqStatus, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4878 { &hf_z3950_generalRetention, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4879 { &hf_z3950_completeness , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4880 { &hf_z3950_dateOfReport , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4881 { &hf_z3950_nucCode , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4882 { &hf_z3950_localLocation , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4883 { &hf_z3950_shelvingLocation, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4884 { &hf_z3950_callNumber , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4885 { &hf_z3950_shelvingData , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4886 { &hf_z3950_copyNumber , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4887 { &hf_z3950_publicNote , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4888 { &hf_z3950_reproductionNote, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4889 { &hf_z3950_termsUseRepro , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4890 { &hf_z3950_enumAndChron , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
4891 { &hf_z3950_volumes , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Volume },
4892 { &hf_z3950_circulationData, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_CircRecord },
4893 { NULL, 0, 0, 0, NULL }
4896 static int
4897 dissect_z3950_HoldingsAndCircData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4898 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4899 HoldingsAndCircData_sequence, hf_index, ett_z3950_HoldingsAndCircData);
4901 return offset;
4905 static const value_string z3950_HoldingsRecord_vals[] = {
4906 { 1, "marcHoldingsRecord" },
4907 { 2, "holdingsAndCirc" },
4908 { 0, NULL }
4911 static const ber_choice_t HoldingsRecord_choice[] = {
4912 { 1, &hf_z3950_marcHoldingsRecord, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
4913 { 2, &hf_z3950_holdingsAndCirc, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_HoldingsAndCircData },
4914 { 0, NULL, 0, 0, 0, NULL }
4917 static int
4918 dissect_z3950_HoldingsRecord(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4919 offset = dissect_ber_choice(actx, tree, tvb, offset,
4920 HoldingsRecord_choice, hf_index, ett_z3950_HoldingsRecord,
4921 NULL);
4923 return offset;
4927 static const ber_sequence_t SEQUENCE_OF_HoldingsRecord_sequence_of[1] = {
4928 { &hf_z3950_holdingsData_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_HoldingsRecord },
4931 static int
4932 dissect_z3950_SEQUENCE_OF_HoldingsRecord(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4933 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4934 SEQUENCE_OF_HoldingsRecord_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_HoldingsRecord);
4936 return offset;
4940 static const ber_sequence_t OPACRecord_sequence[] = {
4941 { &hf_z3950_bibliographicRecord, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
4942 { &hf_z3950_holdingsData , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_HoldingsRecord },
4943 { NULL, 0, 0, 0, NULL }
4946 static int
4947 dissect_z3950_OPACRecord(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4948 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4949 OPACRecord_sequence, hf_index, ett_z3950_OPACRecord);
4951 return offset;
4955 static const value_string z3950_T_tooManyWhat_vals[] = {
4956 { 1, "argumentWords" },
4957 { 2, "truncatedWords" },
4958 { 3, "booleanOperators" },
4959 { 4, "incompleteSubfields" },
4960 { 5, "characters" },
4961 { 6, "recordsRetrieved" },
4962 { 7, "dataBasesSpecified" },
4963 { 8, "resultSetsCreated" },
4964 { 9, "indexTermsProcessed" },
4965 { 0, NULL }
4969 static int
4970 dissect_z3950_T_tooManyWhat(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4971 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4972 NULL);
4974 return offset;
4978 static const ber_sequence_t T_tooMany_sequence[] = {
4979 { &hf_z3950_tooManyWhat , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_tooManyWhat },
4980 { &hf_z3950_max , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
4981 { NULL, 0, 0, 0, NULL }
4984 static int
4985 dissect_z3950_T_tooMany(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4986 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4987 T_tooMany_sequence, hf_index, ett_z3950_T_tooMany);
4989 return offset;
4993 static const ber_sequence_t SEQUENCE_OF_Specification_sequence_of[1] = {
4994 { &hf_z3950_goodOnes_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Specification },
4997 static int
4998 dissect_z3950_SEQUENCE_OF_Specification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4999 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5000 SEQUENCE_OF_Specification_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_Specification);
5002 return offset;
5006 static const ber_sequence_t T_badSpec_sequence[] = {
5007 { &hf_z3950_spec , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_Specification },
5008 { &hf_z3950_db , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
5009 { &hf_z3950_goodOnes , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Specification },
5010 { NULL, 0, 0, 0, NULL }
5013 static int
5014 dissect_z3950_T_badSpec(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5015 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5016 T_badSpec_sequence, hf_index, ett_z3950_T_badSpec);
5018 return offset;
5022 static const value_string z3950_T_reasonCode_vals[] = {
5023 { 0, "doesNotExist" },
5024 { 1, "existsButUnavail" },
5025 { 2, "locked" },
5026 { 3, "accessDenied" },
5027 { 0, NULL }
5031 static int
5032 dissect_z3950_T_reasonCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5033 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5034 NULL);
5036 return offset;
5040 static const ber_sequence_t T_why_sequence[] = {
5041 { &hf_z3950_reasonCode , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_reasonCode },
5042 { &hf_z3950_message , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5043 { NULL, 0, 0, 0, NULL }
5046 static int
5047 dissect_z3950_T_why(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5048 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5049 T_why_sequence, hf_index, ett_z3950_T_why);
5051 return offset;
5055 static const ber_sequence_t T_dbUnavail_sequence[] = {
5056 { &hf_z3950_db , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
5057 { &hf_z3950_why , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_why },
5058 { NULL, 0, 0, 0, NULL }
5061 static int
5062 dissect_z3950_T_dbUnavail(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5063 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5064 T_dbUnavail_sequence, hf_index, ett_z3950_T_dbUnavail);
5066 return offset;
5070 static const value_string z3950_T_unSupOp_vals[] = {
5071 { 0, "and" },
5072 { 1, "or" },
5073 { 2, "and-not" },
5074 { 3, "prox" },
5075 { 0, NULL }
5079 static int
5080 dissect_z3950_T_unSupOp(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5081 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5082 NULL);
5084 return offset;
5088 static const ber_sequence_t T_attribute_sequence[] = {
5089 { &hf_z3950_id , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
5090 { &hf_z3950_type , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5091 { &hf_z3950_value , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5092 { &hf_z3950_term , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_Term },
5093 { NULL, 0, 0, 0, NULL }
5096 static int
5097 dissect_z3950_T_attribute(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5098 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5099 T_attribute_sequence, hf_index, ett_z3950_T_attribute);
5101 return offset;
5105 static const ber_sequence_t SEQUENCE_OF_AttributeList_sequence_of[1] = {
5106 { &hf_z3950_recommendedAlternatives_item, BER_CLASS_CON, 44, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeList },
5109 static int
5110 dissect_z3950_SEQUENCE_OF_AttributeList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5111 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5112 SEQUENCE_OF_AttributeList_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeList);
5114 return offset;
5118 static const ber_sequence_t T_attCombo_sequence[] = {
5119 { &hf_z3950_unsupportedCombination, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_AttributeList },
5120 { &hf_z3950_recommendedAlternatives, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeList },
5121 { NULL, 0, 0, 0, NULL }
5124 static int
5125 dissect_z3950_T_attCombo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5126 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5127 T_attCombo_sequence, hf_index, ett_z3950_T_attCombo);
5129 return offset;
5133 static const value_string z3950_T_problem_vals[] = {
5134 { 1, "codedValue" },
5135 { 2, "unparsable" },
5136 { 3, "tooShort" },
5137 { 4, "type" },
5138 { 0, NULL }
5142 static int
5143 dissect_z3950_T_problem(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5144 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5145 NULL);
5147 return offset;
5151 static const ber_sequence_t T_diagFormat_term_sequence[] = {
5152 { &hf_z3950_problem , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_problem },
5153 { &hf_z3950_term , BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_z3950_Term },
5154 { NULL, 0, 0, 0, NULL }
5157 static int
5158 dissect_z3950_T_diagFormat_term(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5159 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5160 T_diagFormat_term_sequence, hf_index, ett_z3950_T_diagFormat_term);
5162 return offset;
5166 static const value_string z3950_T_diagFormat_proximity_vals[] = {
5167 { 1, "resultSets" },
5168 { 2, "badSet" },
5169 { 3, "relation" },
5170 { 4, "unit" },
5171 { 5, "distance" },
5172 { 6, "attributes" },
5173 { 7, "ordered" },
5174 { 8, "exclusion" },
5175 { 0, NULL }
5178 static const ber_choice_t T_diagFormat_proximity_choice[] = {
5179 { 1, &hf_z3950_resultSets , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5180 { 2, &hf_z3950_badSet , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5181 { 3, &hf_z3950_relation , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5182 { 4, &hf_z3950_diagFormat_proximity_unit, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5183 { 5, &hf_z3950_distance , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5184 { 6, &hf_z3950_attributes , BER_CLASS_CON, 6, 0, dissect_z3950_AttributeList },
5185 { 7, &hf_z3950_diagFormat_proximity_ordered, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5186 { 8, &hf_z3950_diagFormat_proximity_exclusion, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5187 { 0, NULL, 0, 0, 0, NULL }
5190 static int
5191 dissect_z3950_T_diagFormat_proximity(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5192 offset = dissect_ber_choice(actx, tree, tvb, offset,
5193 T_diagFormat_proximity_choice, hf_index, ett_z3950_T_diagFormat_proximity,
5194 NULL);
5196 return offset;
5200 static const value_string z3950_T_posInResponse_vals[] = {
5201 { 1, "mustBeOne" },
5202 { 2, "mustBePositive" },
5203 { 3, "mustBeNonNegative" },
5204 { 4, "other" },
5205 { 0, NULL }
5209 static int
5210 dissect_z3950_T_posInResponse(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5211 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5212 NULL);
5214 return offset;
5218 static const value_string z3950_T_scan_vals[] = {
5219 { 0, "nonZeroStepSize" },
5220 { 1, "specifiedStepSize" },
5221 { 3, "termList1" },
5222 { 4, "termList2" },
5223 { 5, "posInResponse" },
5224 { 6, "resources" },
5225 { 7, "endOfList" },
5226 { 0, NULL }
5229 static const ber_choice_t T_scan_choice[] = {
5230 { 0, &hf_z3950_nonZeroStepSize, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5231 { 1, &hf_z3950_specifiedStepSize, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5232 { 3, &hf_z3950_termList1 , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5233 { 4, &hf_z3950_termList2 , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeList },
5234 { 5, &hf_z3950_posInResponse , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_T_posInResponse },
5235 { 6, &hf_z3950_resources , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5236 { 7, &hf_z3950_endOfList , BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5237 { 0, NULL, 0, 0, 0, NULL }
5240 static int
5241 dissect_z3950_T_scan(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5242 offset = dissect_ber_choice(actx, tree, tvb, offset,
5243 T_scan_choice, hf_index, ett_z3950_T_scan,
5244 NULL);
5246 return offset;
5250 static const value_string z3950_T_key_vals[] = {
5251 { 1, "tooMany" },
5252 { 2, "duplicate" },
5253 { 0, NULL }
5257 static int
5258 dissect_z3950_T_key(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5259 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5260 NULL);
5262 return offset;
5266 static const value_string z3950_T_illegal_vals[] = {
5267 { 1, "relation" },
5268 { 2, "case" },
5269 { 3, "action" },
5270 { 4, "sort" },
5271 { 0, NULL }
5275 static int
5276 dissect_z3950_T_illegal(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5277 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5278 NULL);
5280 return offset;
5284 static const value_string z3950_T_sort_vals[] = {
5285 { 0, "sequence" },
5286 { 1, "noRsName" },
5287 { 2, "tooMany" },
5288 { 3, "incompatible" },
5289 { 4, "generic" },
5290 { 5, "dbSpecific" },
5291 { 6, "sortElement" },
5292 { 7, "key" },
5293 { 8, "action" },
5294 { 9, "illegal" },
5295 { 10, "inputTooLarge" },
5296 { 11, "aggregateTooLarge" },
5297 { 0, NULL }
5300 static const ber_choice_t T_sort_choice[] = {
5301 { 0, &hf_z3950_sequence , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5302 { 1, &hf_z3950_noRsName , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5303 { 2, &hf_z3950_diagFormat_sort_tooMany, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5304 { 3, &hf_z3950_incompatible , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5305 { 4, &hf_z3950_generic , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5306 { 5, &hf_z3950_diagFormat_sort_dbSpecific, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5307 { 6, &hf_z3950_sortElement , BER_CLASS_CON, 6, 0, dissect_z3950_SortElement },
5308 { 7, &hf_z3950_key , BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_z3950_T_key },
5309 { 8, &hf_z3950_action , BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5310 { 9, &hf_z3950_illegal , BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_z3950_T_illegal },
5311 { 10, &hf_z3950_inputTooLarge , BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
5312 { 11, &hf_z3950_aggregateTooLarge, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5313 { 0, NULL, 0, 0, 0, NULL }
5316 static int
5317 dissect_z3950_T_sort(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5318 offset = dissect_ber_choice(actx, tree, tvb, offset,
5319 T_sort_choice, hf_index, ett_z3950_T_sort,
5320 NULL);
5322 return offset;
5326 static const value_string z3950_T_segmentation_vals[] = {
5327 { 0, "segmentCount" },
5328 { 1, "segmentSize" },
5329 { 0, NULL }
5332 static const ber_choice_t T_segmentation_choice[] = {
5333 { 0, &hf_z3950_segmentCount , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5334 { 1, &hf_z3950_segmentSize , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5335 { 0, NULL, 0, 0, 0, NULL }
5338 static int
5339 dissect_z3950_T_segmentation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5340 offset = dissect_ber_choice(actx, tree, tvb, offset,
5341 T_segmentation_choice, hf_index, ett_z3950_T_segmentation,
5342 NULL);
5344 return offset;
5348 static const value_string z3950_T_req_vals[] = {
5349 { 1, "nameInUse" },
5350 { 2, "noSuchName" },
5351 { 3, "quota" },
5352 { 4, "type" },
5353 { 0, NULL }
5357 static int
5358 dissect_z3950_T_req(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5359 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5360 NULL);
5362 return offset;
5366 static const value_string z3950_T_permission_vals[] = {
5367 { 1, "id" },
5368 { 2, "modifyDelete" },
5369 { 0, NULL }
5373 static int
5374 dissect_z3950_T_permission(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5375 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5376 NULL);
5378 return offset;
5382 static const value_string z3950_T_immediate_vals[] = {
5383 { 1, "failed" },
5384 { 2, "service" },
5385 { 3, "parameters" },
5386 { 0, NULL }
5390 static int
5391 dissect_z3950_T_immediate(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5392 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
5393 NULL);
5395 return offset;
5399 static const value_string z3950_T_extServices_vals[] = {
5400 { 1, "req" },
5401 { 2, "permission" },
5402 { 3, "immediate" },
5403 { 0, NULL }
5406 static const ber_choice_t T_extServices_choice[] = {
5407 { 1, &hf_z3950_req , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_req },
5408 { 2, &hf_z3950_permission , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_permission },
5409 { 3, &hf_z3950_immediate , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_T_immediate },
5410 { 0, NULL, 0, 0, 0, NULL }
5413 static int
5414 dissect_z3950_T_extServices(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5415 offset = dissect_ber_choice(actx, tree, tvb, offset,
5416 T_extServices_choice, hf_index, ett_z3950_T_extServices,
5417 NULL);
5419 return offset;
5423 static const ber_sequence_t T_diagFormat_accessCtrl_oid_sequence_of[1] = {
5424 { &hf_z3950_diagFormat_accessCtrl_oid_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
5427 static int
5428 dissect_z3950_T_diagFormat_accessCtrl_oid(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5429 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5430 T_diagFormat_accessCtrl_oid_sequence_of, hf_index, ett_z3950_T_diagFormat_accessCtrl_oid);
5432 return offset;
5436 static const ber_sequence_t T_alternative_sequence_of[1] = {
5437 { &hf_z3950_alternative_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
5440 static int
5441 dissect_z3950_T_alternative(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5442 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5443 T_alternative_sequence_of, hf_index, ett_z3950_T_alternative);
5445 return offset;
5449 static const value_string z3950_T_accessCtrl_vals[] = {
5450 { 1, "noUser" },
5451 { 2, "refused" },
5452 { 3, "simple" },
5453 { 4, "oid" },
5454 { 5, "alternative" },
5455 { 6, "pwdInv" },
5456 { 7, "pwdExp" },
5457 { 0, NULL }
5460 static const ber_choice_t T_accessCtrl_choice[] = {
5461 { 1, &hf_z3950_noUser , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5462 { 2, &hf_z3950_refused , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5463 { 3, &hf_z3950_diagFormat_accessCtrl_simple, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5464 { 4, &hf_z3950_diagFormat_accessCtrl_oid, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_T_diagFormat_accessCtrl_oid },
5465 { 5, &hf_z3950_alternative , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_T_alternative },
5466 { 6, &hf_z3950_pwdInv , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5467 { 7, &hf_z3950_pwdExp , BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
5468 { 0, NULL, 0, 0, 0, NULL }
5471 static int
5472 dissect_z3950_T_accessCtrl(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5473 offset = dissect_ber_choice(actx, tree, tvb, offset,
5474 T_accessCtrl_choice, hf_index, ett_z3950_T_accessCtrl,
5475 NULL);
5477 return offset;
5481 static const ber_sequence_t T_suggestedAlternatives_sequence_of[1] = {
5482 { &hf_z3950_suggestedAlternatives_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
5485 static int
5486 dissect_z3950_T_suggestedAlternatives(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5487 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5488 T_suggestedAlternatives_sequence_of, hf_index, ett_z3950_T_suggestedAlternatives);
5490 return offset;
5494 static const ber_sequence_t T_diagFormat_recordSyntax_sequence[] = {
5495 { &hf_z3950_unsupportedSyntax, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
5496 { &hf_z3950_suggestedAlternatives, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_suggestedAlternatives },
5497 { NULL, 0, 0, 0, NULL }
5500 static int
5501 dissect_z3950_T_diagFormat_recordSyntax(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5502 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5503 T_diagFormat_recordSyntax_sequence, hf_index, ett_z3950_T_diagFormat_recordSyntax);
5505 return offset;
5509 static const value_string z3950_DiagFormat_vals[] = {
5510 { 1000, "tooMany" },
5511 { 1001, "badSpec" },
5512 { 1002, "dbUnavail" },
5513 { 1003, "unSupOp" },
5514 { 1004, "attribute" },
5515 { 1005, "attCombo" },
5516 { 1006, "term" },
5517 { 1007, "proximity" },
5518 { 1008, "scan" },
5519 { 1009, "sort" },
5520 { 1010, "segmentation" },
5521 { 1011, "extServices" },
5522 { 1012, "accessCtrl" },
5523 { 1013, "recordSyntax" },
5524 { 0, NULL }
5527 static const ber_choice_t DiagFormat_choice[] = {
5528 { 1000, &hf_z3950_tooMany , BER_CLASS_CON, 1000, BER_FLAGS_IMPLTAG, dissect_z3950_T_tooMany },
5529 { 1001, &hf_z3950_badSpec , BER_CLASS_CON, 1001, BER_FLAGS_IMPLTAG, dissect_z3950_T_badSpec },
5530 { 1002, &hf_z3950_dbUnavail , BER_CLASS_CON, 1002, BER_FLAGS_IMPLTAG, dissect_z3950_T_dbUnavail },
5531 { 1003, &hf_z3950_unSupOp , BER_CLASS_CON, 1003, BER_FLAGS_IMPLTAG, dissect_z3950_T_unSupOp },
5532 { 1004, &hf_z3950_attribute , BER_CLASS_CON, 1004, BER_FLAGS_IMPLTAG, dissect_z3950_T_attribute },
5533 { 1005, &hf_z3950_attCombo , BER_CLASS_CON, 1005, BER_FLAGS_IMPLTAG, dissect_z3950_T_attCombo },
5534 { 1006, &hf_z3950_diagFormat_term, BER_CLASS_CON, 1006, BER_FLAGS_IMPLTAG, dissect_z3950_T_diagFormat_term },
5535 { 1007, &hf_z3950_diagFormat_proximity, BER_CLASS_CON, 1007, 0, dissect_z3950_T_diagFormat_proximity },
5536 { 1008, &hf_z3950_scan , BER_CLASS_CON, 1008, 0, dissect_z3950_T_scan },
5537 { 1009, &hf_z3950_sort , BER_CLASS_CON, 1009, 0, dissect_z3950_T_sort },
5538 { 1010, &hf_z3950_segmentation , BER_CLASS_CON, 1010, 0, dissect_z3950_T_segmentation },
5539 { 1011, &hf_z3950_extServices , BER_CLASS_CON, 1011, 0, dissect_z3950_T_extServices },
5540 { 1012, &hf_z3950_accessCtrl , BER_CLASS_CON, 1012, 0, dissect_z3950_T_accessCtrl },
5541 { 1013, &hf_z3950_diagFormat_recordSyntax, BER_CLASS_CON, 1013, BER_FLAGS_IMPLTAG, dissect_z3950_T_diagFormat_recordSyntax },
5542 { 0, NULL, 0, 0, 0, NULL }
5545 static int
5546 dissect_z3950_DiagFormat(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5547 offset = dissect_ber_choice(actx, tree, tvb, offset,
5548 DiagFormat_choice, hf_index, ett_z3950_DiagFormat,
5549 NULL);
5551 return offset;
5555 static const value_string z3950_T_diagnosticFormat_item_diagnostic_vals[] = {
5556 { 1, "defaultDiagRec" },
5557 { 2, "explicitDiagnostic" },
5558 { 0, NULL }
5561 static const ber_choice_t T_diagnosticFormat_item_diagnostic_choice[] = {
5562 { 1, &hf_z3950_defaultDiagRec, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DefaultDiagFormat },
5563 { 2, &hf_z3950_explicitDiagnostic, BER_CLASS_CON, 2, 0, dissect_z3950_DiagFormat },
5564 { 0, NULL, 0, 0, 0, NULL }
5567 static int
5568 dissect_z3950_T_diagnosticFormat_item_diagnostic(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5569 offset = dissect_ber_choice(actx, tree, tvb, offset,
5570 T_diagnosticFormat_item_diagnostic_choice, hf_index, ett_z3950_T_diagnosticFormat_item_diagnostic,
5571 NULL);
5573 return offset;
5577 static const ber_sequence_t DiagnosticFormat_item_sequence[] = {
5578 { &hf_z3950_diagnosticFormat_item_diagnostic, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_z3950_T_diagnosticFormat_item_diagnostic },
5579 { &hf_z3950_message , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5580 { NULL, 0, 0, 0, NULL }
5583 static int
5584 dissect_z3950_DiagnosticFormat_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5585 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5586 DiagnosticFormat_item_sequence, hf_index, ett_z3950_DiagnosticFormat_item);
5588 return offset;
5592 static const ber_sequence_t DiagnosticFormat_sequence_of[1] = {
5593 { &hf_z3950_DiagnosticFormat_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_DiagnosticFormat_item },
5596 static int
5597 dissect_z3950_DiagnosticFormat(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5598 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5599 DiagnosticFormat_sequence_of, hf_index, ett_z3950_DiagnosticFormat);
5601 return offset;
5606 static int
5607 dissect_z3950_LanguageCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5608 offset = dissect_z3950_InternationalString(implicit_tag, tvb, offset, actx, tree, hf_index);
5610 return offset;
5614 static const ber_sequence_t CommonInfo_sequence[] = {
5615 { &hf_z3950_dateAdded , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_GeneralizedTime },
5616 { &hf_z3950_dateChanged , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_GeneralizedTime },
5617 { &hf_z3950_expiry , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_GeneralizedTime },
5618 { &hf_z3950_humanString_Language, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_LanguageCode },
5619 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
5620 { NULL, 0, 0, 0, NULL }
5623 static int
5624 dissect_z3950_CommonInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5625 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5626 CommonInfo_sequence, hf_index, ett_z3950_CommonInfo);
5628 return offset;
5632 static const ber_sequence_t HumanString_item_sequence[] = {
5633 { &hf_z3950_language , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_LanguageCode },
5634 { &hf_z3950_text , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5635 { NULL, 0, 0, 0, NULL }
5638 static int
5639 dissect_z3950_HumanString_item(bool 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(implicit_tag, actx, tree, tvb, offset,
5641 HumanString_item_sequence, hf_index, ett_z3950_HumanString_item);
5643 return offset;
5647 static const ber_sequence_t HumanString_sequence_of[1] = {
5648 { &hf_z3950_HumanString_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_HumanString_item },
5651 static int
5652 dissect_z3950_HumanString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5653 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5654 HumanString_sequence_of, hf_index, ett_z3950_HumanString);
5656 return offset;
5660 static const value_string z3950_T_bodyType_vals[] = {
5661 { 1, "ianaType" },
5662 { 2, "z3950type" },
5663 { 3, "otherType" },
5664 { 0, NULL }
5667 static const ber_choice_t T_bodyType_choice[] = {
5668 { 1, &hf_z3950_ianaType , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5669 { 2, &hf_z3950_z3950type , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5670 { 3, &hf_z3950_otherType , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5671 { 0, NULL, 0, 0, 0, NULL }
5674 static int
5675 dissect_z3950_T_bodyType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5676 offset = dissect_ber_choice(actx, tree, tvb, offset,
5677 T_bodyType_choice, hf_index, ett_z3950_T_bodyType,
5678 NULL);
5680 return offset;
5684 static const ber_sequence_t IconObject_item_sequence[] = {
5685 { &hf_z3950_bodyType , BER_CLASS_CON, 1, 0, dissect_z3950_T_bodyType },
5686 { &hf_z3950_content , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
5687 { NULL, 0, 0, 0, NULL }
5690 static int
5691 dissect_z3950_IconObject_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5692 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5693 IconObject_item_sequence, hf_index, ett_z3950_IconObject_item);
5695 return offset;
5699 static const ber_sequence_t IconObject_sequence_of[1] = {
5700 { &hf_z3950_IconObject_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_IconObject_item },
5703 static int
5704 dissect_z3950_IconObject(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5705 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5706 IconObject_sequence_of, hf_index, ett_z3950_IconObject);
5708 return offset;
5712 static const ber_sequence_t ContactInfo_sequence[] = {
5713 { &hf_z3950_name , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5714 { &hf_z3950_description , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
5715 { &hf_z3950_address , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
5716 { &hf_z3950_email , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5717 { &hf_z3950_phone , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5718 { NULL, 0, 0, 0, NULL }
5721 static int
5722 dissect_z3950_ContactInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5723 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5724 ContactInfo_sequence, hf_index, ett_z3950_ContactInfo);
5726 return offset;
5730 static const ber_sequence_t DatabaseList_sequence_of[1] = {
5731 { &hf_z3950_DatabaseList_item, BER_CLASS_CON, 105, BER_FLAGS_NOOWNTAG, dissect_z3950_DatabaseName },
5734 static int
5735 dissect_z3950_DatabaseList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5736 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5737 DatabaseList_sequence_of, hf_index, ett_z3950_DatabaseList);
5739 return offset;
5743 static const ber_sequence_t SEQUENCE_OF_DatabaseList_sequence_of[1] = {
5744 { &hf_z3950_dbCombinations_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_DatabaseList },
5747 static int
5748 dissect_z3950_SEQUENCE_OF_DatabaseList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5749 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5750 SEQUENCE_OF_DatabaseList_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_DatabaseList);
5752 return offset;
5756 static const ber_sequence_t T_internetAddress_sequence[] = {
5757 { &hf_z3950_hostAddress , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5758 { &hf_z3950_port , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5759 { NULL, 0, 0, 0, NULL }
5762 static int
5763 dissect_z3950_T_internetAddress(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5764 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5765 T_internetAddress_sequence, hf_index, ett_z3950_T_internetAddress);
5767 return offset;
5771 static const ber_sequence_t T_osiPresentationAddress_sequence[] = {
5772 { &hf_z3950_pSel , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5773 { &hf_z3950_sSel , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5774 { &hf_z3950_tSel , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5775 { &hf_z3950_nSap , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5776 { NULL, 0, 0, 0, NULL }
5779 static int
5780 dissect_z3950_T_osiPresentationAddress(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5781 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5782 T_osiPresentationAddress_sequence, hf_index, ett_z3950_T_osiPresentationAddress);
5784 return offset;
5788 static const ber_sequence_t T_networkAddress_other_sequence[] = {
5789 { &hf_z3950_networkAddress_other_type, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5790 { &hf_z3950_networkAddress_other_address, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5791 { NULL, 0, 0, 0, NULL }
5794 static int
5795 dissect_z3950_T_networkAddress_other(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5796 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5797 T_networkAddress_other_sequence, hf_index, ett_z3950_T_networkAddress_other);
5799 return offset;
5803 static const value_string z3950_NetworkAddress_vals[] = {
5804 { 0, "internetAddress" },
5805 { 1, "osiPresentationAddress" },
5806 { 2, "other" },
5807 { 0, NULL }
5810 static const ber_choice_t NetworkAddress_choice[] = {
5811 { 0, &hf_z3950_internetAddress, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_T_internetAddress },
5812 { 1, &hf_z3950_osiPresentationAddress, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_osiPresentationAddress },
5813 { 2, &hf_z3950_networkAddress_other, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_networkAddress_other },
5814 { 0, NULL, 0, 0, 0, NULL }
5817 static int
5818 dissect_z3950_NetworkAddress(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5819 offset = dissect_ber_choice(actx, tree, tvb, offset,
5820 NetworkAddress_choice, hf_index, ett_z3950_NetworkAddress,
5821 NULL);
5823 return offset;
5827 static const ber_sequence_t SEQUENCE_OF_NetworkAddress_sequence_of[1] = {
5828 { &hf_z3950_addresses_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_NetworkAddress },
5831 static int
5832 dissect_z3950_SEQUENCE_OF_NetworkAddress(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5833 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5834 SEQUENCE_OF_NetworkAddress_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_NetworkAddress);
5836 return offset;
5840 static const ber_sequence_t T_privateCapabilities_operators_item_sequence[] = {
5841 { &hf_z3950_operator , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5842 { &hf_z3950_description , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
5843 { NULL, 0, 0, 0, NULL }
5846 static int
5847 dissect_z3950_T_privateCapabilities_operators_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5848 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5849 T_privateCapabilities_operators_item_sequence, hf_index, ett_z3950_T_privateCapabilities_operators_item);
5851 return offset;
5855 static const ber_sequence_t T_privateCapabilities_operators_sequence_of[1] = {
5856 { &hf_z3950_privateCapabilities_operators_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_privateCapabilities_operators_item },
5859 static int
5860 dissect_z3950_T_privateCapabilities_operators(bool 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_sequence_of(implicit_tag, actx, tree, tvb, offset,
5862 T_privateCapabilities_operators_sequence_of, hf_index, ett_z3950_T_privateCapabilities_operators);
5864 return offset;
5868 static const ber_sequence_t SearchKey_sequence[] = {
5869 { &hf_z3950_searchKey , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
5870 { &hf_z3950_description , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
5871 { NULL, 0, 0, 0, NULL }
5874 static int
5875 dissect_z3950_SearchKey(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5876 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5877 SearchKey_sequence, hf_index, ett_z3950_SearchKey);
5879 return offset;
5883 static const ber_sequence_t SEQUENCE_OF_SearchKey_sequence_of[1] = {
5884 { &hf_z3950_searchKeys_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_SearchKey },
5887 static int
5888 dissect_z3950_SEQUENCE_OF_SearchKey(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5889 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5890 SEQUENCE_OF_SearchKey_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_SearchKey);
5892 return offset;
5896 static const ber_sequence_t SEQUENCE_OF_HumanString_sequence_of[1] = {
5897 { &hf_z3950_keywords_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_HumanString },
5900 static int
5901 dissect_z3950_SEQUENCE_OF_HumanString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5902 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5903 SEQUENCE_OF_HumanString_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_HumanString);
5905 return offset;
5909 static const ber_sequence_t PrivateCapabilities_sequence[] = {
5910 { &hf_z3950_privateCapabilities_operators, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_privateCapabilities_operators },
5911 { &hf_z3950_searchKeys , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_SearchKey },
5912 { &hf_z3950_privateCapabilities_description, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_HumanString },
5913 { NULL, 0, 0, 0, NULL }
5916 static int
5917 dissect_z3950_PrivateCapabilities(bool 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 PrivateCapabilities_sequence, hf_index, ett_z3950_PrivateCapabilities);
5921 return offset;
5925 static const ber_sequence_t T_operators_sequence_of[1] = {
5926 { &hf_z3950_operators_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_z3950_INTEGER },
5929 static int
5930 dissect_z3950_T_operators(bool 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 T_operators_sequence_of, hf_index, ett_z3950_T_operators);
5934 return offset;
5938 static const ber_sequence_t T_proximitySupport_unitsSupported_item_private_sequence[] = {
5939 { &hf_z3950_proximitySupport_unitsSupported_item_private_unit, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5940 { &hf_z3950_description , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_z3950_HumanString },
5941 { NULL, 0, 0, 0, NULL }
5944 static int
5945 dissect_z3950_T_proximitySupport_unitsSupported_item_private(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5946 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5947 T_proximitySupport_unitsSupported_item_private_sequence, hf_index, ett_z3950_T_proximitySupport_unitsSupported_item_private);
5949 return offset;
5953 static const value_string z3950_T_unitsSupported_item_vals[] = {
5954 { 1, "known" },
5955 { 2, "private" },
5956 { 0, NULL }
5959 static const ber_choice_t T_unitsSupported_item_choice[] = {
5960 { 1, &hf_z3950_proximitySupport_unitsSupported_item_known, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
5961 { 2, &hf_z3950_proximitySupport_unitsSupported_item_private, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_proximitySupport_unitsSupported_item_private },
5962 { 0, NULL, 0, 0, 0, NULL }
5965 static int
5966 dissect_z3950_T_unitsSupported_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5967 offset = dissect_ber_choice(actx, tree, tvb, offset,
5968 T_unitsSupported_item_choice, hf_index, ett_z3950_T_unitsSupported_item,
5969 NULL);
5971 return offset;
5975 static const ber_sequence_t T_unitsSupported_sequence_of[1] = {
5976 { &hf_z3950_unitsSupported_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_unitsSupported_item },
5979 static int
5980 dissect_z3950_T_unitsSupported(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5981 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
5982 T_unitsSupported_sequence_of, hf_index, ett_z3950_T_unitsSupported);
5984 return offset;
5988 static const ber_sequence_t ProximitySupport_sequence[] = {
5989 { &hf_z3950_anySupport , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
5990 { &hf_z3950_unitsSupported, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_unitsSupported },
5991 { NULL, 0, 0, 0, NULL }
5994 static int
5995 dissect_z3950_ProximitySupport(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5996 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
5997 ProximitySupport_sequence, hf_index, ett_z3950_ProximitySupport);
5999 return offset;
6003 static const ber_sequence_t RpnCapabilities_sequence[] = {
6004 { &hf_z3950_operators , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_operators },
6005 { &hf_z3950_resultSetAsOperandSupported, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6006 { &hf_z3950_restrictionOperandSupported, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6007 { &hf_z3950_proximity , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ProximitySupport },
6008 { NULL, 0, 0, 0, NULL }
6011 static int
6012 dissect_z3950_RpnCapabilities(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6013 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6014 RpnCapabilities_sequence, hf_index, ett_z3950_RpnCapabilities);
6016 return offset;
6020 static const ber_sequence_t Iso8777Capabilities_sequence[] = {
6021 { &hf_z3950_searchKeys , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_SearchKey },
6022 { &hf_z3950_restrictions , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6023 { NULL, 0, 0, 0, NULL }
6026 static int
6027 dissect_z3950_Iso8777Capabilities(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6028 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6029 Iso8777Capabilities_sequence, hf_index, ett_z3950_Iso8777Capabilities);
6031 return offset;
6035 static const value_string z3950_QueryTypeDetails_vals[] = {
6036 { 0, "private" },
6037 { 1, "rpn" },
6038 { 2, "iso8777" },
6039 { 100, "z39-58" },
6040 { 101, "erpn" },
6041 { 102, "rankedList" },
6042 { 0, NULL }
6045 static const ber_choice_t QueryTypeDetails_choice[] = {
6046 { 0, &hf_z3950_queryTypeDetails_private, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_PrivateCapabilities },
6047 { 1, &hf_z3950_queryTypeDetails_rpn, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_RpnCapabilities },
6048 { 2, &hf_z3950_iso8777 , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_Iso8777Capabilities },
6049 { 100, &hf_z3950_z39_58 , BER_CLASS_CON, 100, BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6050 { 101, &hf_z3950_erpn , BER_CLASS_CON, 101, BER_FLAGS_IMPLTAG, dissect_z3950_RpnCapabilities },
6051 { 102, &hf_z3950_rankedList , BER_CLASS_CON, 102, BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6052 { 0, NULL, 0, 0, 0, NULL }
6055 static int
6056 dissect_z3950_QueryTypeDetails(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6057 offset = dissect_ber_choice(actx, tree, tvb, offset,
6058 QueryTypeDetails_choice, hf_index, ett_z3950_QueryTypeDetails,
6059 NULL);
6061 return offset;
6065 static const ber_sequence_t SEQUENCE_OF_QueryTypeDetails_sequence_of[1] = {
6066 { &hf_z3950_queryTypesSupported_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_QueryTypeDetails },
6069 static int
6070 dissect_z3950_SEQUENCE_OF_QueryTypeDetails(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6071 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6072 SEQUENCE_OF_QueryTypeDetails_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_QueryTypeDetails);
6074 return offset;
6078 static const ber_sequence_t T_diagnosticsSets_sequence_of[1] = {
6079 { &hf_z3950_diagnosticsSets_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
6082 static int
6083 dissect_z3950_T_diagnosticsSets(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6084 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6085 T_diagnosticsSets_sequence_of, hf_index, ett_z3950_T_diagnosticsSets);
6087 return offset;
6091 static const ber_sequence_t SEQUENCE_OF_AttributeSetId_sequence_of[1] = {
6092 { &hf_z3950_attributeSetIds_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeSetId },
6095 static int
6096 dissect_z3950_SEQUENCE_OF_AttributeSetId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6097 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6098 SEQUENCE_OF_AttributeSetId_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeSetId);
6100 return offset;
6104 static const ber_sequence_t T_schemas_sequence_of[1] = {
6105 { &hf_z3950_schemas_item , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
6108 static int
6109 dissect_z3950_T_schemas(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6110 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6111 T_schemas_sequence_of, hf_index, ett_z3950_T_schemas);
6113 return offset;
6117 static const ber_sequence_t T_recordSyntaxes_sequence_of[1] = {
6118 { &hf_z3950_recordSyntaxes_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
6121 static int
6122 dissect_z3950_T_recordSyntaxes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6123 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6124 T_recordSyntaxes_sequence_of, hf_index, ett_z3950_T_recordSyntaxes);
6126 return offset;
6130 static const ber_sequence_t T_resourceChallenges_sequence_of[1] = {
6131 { &hf_z3950_resourceChallenges_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
6134 static int
6135 dissect_z3950_T_resourceChallenges(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6136 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6137 T_resourceChallenges_sequence_of, hf_index, ett_z3950_T_resourceChallenges);
6139 return offset;
6143 static const value_string z3950_T_accessType_vals[] = {
6144 { 0, "any" },
6145 { 1, "search" },
6146 { 2, "present" },
6147 { 3, "specific-elements" },
6148 { 4, "extended-services" },
6149 { 5, "by-database" },
6150 { 0, NULL }
6154 static int
6155 dissect_z3950_T_accessType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6156 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
6157 NULL);
6159 return offset;
6163 static const ber_sequence_t T_accessChallenges_sequence_of[1] = {
6164 { &hf_z3950_accessChallenges_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
6167 static int
6168 dissect_z3950_T_accessChallenges(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6169 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6170 T_accessChallenges_sequence_of, hf_index, ett_z3950_T_accessChallenges);
6172 return offset;
6176 static const ber_sequence_t AccessRestrictions_item_sequence[] = {
6177 { &hf_z3950_accessType , BER_CLASS_CON, 0, 0, dissect_z3950_T_accessType },
6178 { &hf_z3950_accessText , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6179 { &hf_z3950_accessChallenges, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_accessChallenges },
6180 { NULL, 0, 0, 0, NULL }
6183 static int
6184 dissect_z3950_AccessRestrictions_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6185 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6186 AccessRestrictions_item_sequence, hf_index, ett_z3950_AccessRestrictions_item);
6188 return offset;
6192 static const ber_sequence_t AccessRestrictions_sequence_of[1] = {
6193 { &hf_z3950_AccessRestrictions_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AccessRestrictions_item },
6196 static int
6197 dissect_z3950_AccessRestrictions(bool 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_sequence_of(implicit_tag, actx, tree, tvb, offset,
6199 AccessRestrictions_sequence_of, hf_index, ett_z3950_AccessRestrictions);
6201 return offset;
6205 static const ber_sequence_t Charge_sequence[] = {
6206 { &hf_z3950_cost , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
6207 { &hf_z3950_perWhat , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Unit },
6208 { &hf_z3950_charge_text , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6209 { NULL, 0, 0, 0, NULL }
6212 static int
6213 dissect_z3950_Charge(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6214 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6215 Charge_sequence, hf_index, ett_z3950_Charge);
6217 return offset;
6221 static const ber_sequence_t T_otherCharges_item_sequence[] = {
6222 { &hf_z3950_forWhat , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6223 { &hf_z3950_charge , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_Charge },
6224 { NULL, 0, 0, 0, NULL }
6227 static int
6228 dissect_z3950_T_otherCharges_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6229 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6230 T_otherCharges_item_sequence, hf_index, ett_z3950_T_otherCharges_item);
6232 return offset;
6236 static const ber_sequence_t T_otherCharges_sequence_of[1] = {
6237 { &hf_z3950_otherCharges_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_otherCharges_item },
6240 static int
6241 dissect_z3950_T_otherCharges(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6242 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6243 T_otherCharges_sequence_of, hf_index, ett_z3950_T_otherCharges);
6245 return offset;
6249 static const ber_sequence_t Costs_sequence[] = {
6250 { &hf_z3950_connectCharge , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Charge },
6251 { &hf_z3950_connectTime , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Charge },
6252 { &hf_z3950_displayCharge , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Charge },
6253 { &hf_z3950_searchCharge , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Charge },
6254 { &hf_z3950_subscriptCharge, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Charge },
6255 { &hf_z3950_otherCharges , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_otherCharges },
6256 { NULL, 0, 0, 0, NULL }
6259 static int
6260 dissect_z3950_Costs(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6261 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6262 Costs_sequence, hf_index, ett_z3950_Costs);
6264 return offset;
6268 static const ber_sequence_t T_variantSets_sequence_of[1] = {
6269 { &hf_z3950_variantSets_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
6272 static int
6273 dissect_z3950_T_variantSets(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6274 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6275 T_variantSets_sequence_of, hf_index, ett_z3950_T_variantSets);
6277 return offset;
6281 static const ber_sequence_t SEQUENCE_OF_ElementSetName_sequence_of[1] = {
6282 { &hf_z3950_elementSetNames_item, BER_CLASS_CON, 103, BER_FLAGS_NOOWNTAG, dissect_z3950_ElementSetName },
6285 static int
6286 dissect_z3950_SEQUENCE_OF_ElementSetName(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6287 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6288 SEQUENCE_OF_ElementSetName_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_ElementSetName);
6290 return offset;
6294 static const ber_sequence_t AccessInfo_sequence[] = {
6295 { &hf_z3950_queryTypesSupported, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_QueryTypeDetails },
6296 { &hf_z3950_diagnosticsSets, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_diagnosticsSets },
6297 { &hf_z3950_attributeSetIds, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeSetId },
6298 { &hf_z3950_schemas , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_schemas },
6299 { &hf_z3950_recordSyntaxes, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_recordSyntaxes },
6300 { &hf_z3950_resourceChallenges, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_resourceChallenges },
6301 { &hf_z3950_restrictedAccess, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AccessRestrictions },
6302 { &hf_z3950_costInfo , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Costs },
6303 { &hf_z3950_variantSets , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_variantSets },
6304 { &hf_z3950_elementSetNames, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_ElementSetName },
6305 { &hf_z3950_unitSystems , BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
6306 { NULL, 0, 0, 0, NULL }
6309 static int
6310 dissect_z3950_AccessInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6311 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6312 AccessInfo_sequence, hf_index, ett_z3950_AccessInfo);
6314 return offset;
6318 static const ber_sequence_t TargetInfo_sequence[] = {
6319 { &hf_z3950_commonInfo , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
6320 { &hf_z3950_name , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6321 { &hf_z3950_recent_news , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6322 { &hf_z3950_icon , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IconObject },
6323 { &hf_z3950_namedResultSets, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6324 { &hf_z3950_multipleDBsearch, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6325 { &hf_z3950_maxResultSets , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6326 { &hf_z3950_maxResultSize , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6327 { &hf_z3950_maxTerms , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6328 { &hf_z3950_timeoutInterval, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
6329 { &hf_z3950_welcomeMessage, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6330 { &hf_z3950_contactInfo , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ContactInfo },
6331 { &hf_z3950_description , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6332 { &hf_z3950_nicknames , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
6333 { &hf_z3950_usage_restrictions, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6334 { &hf_z3950_paymentAddr , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6335 { &hf_z3950_hours , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6336 { &hf_z3950_dbCombinations, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DatabaseList },
6337 { &hf_z3950_addresses , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_NetworkAddress },
6338 { &hf_z3950_languages , BER_CLASS_CON, 101, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
6339 { &hf_z3950_commonAccessInfo, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AccessInfo },
6340 { NULL, 0, 0, 0, NULL }
6343 static int
6344 dissect_z3950_TargetInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6345 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6346 TargetInfo_sequence, hf_index, ett_z3950_TargetInfo);
6348 return offset;
6352 static const value_string z3950_T_recordCount_vals[] = {
6353 { 0, "actualNumber" },
6354 { 1, "approxNumber" },
6355 { 0, NULL }
6358 static const ber_choice_t T_recordCount_choice[] = {
6359 { 0, &hf_z3950_actualNumber , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6360 { 1, &hf_z3950_approxNumber , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6361 { 0, NULL, 0, 0, 0, NULL }
6364 static int
6365 dissect_z3950_T_recordCount(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6366 offset = dissect_ber_choice(actx, tree, tvb, offset,
6367 T_recordCount_choice, hf_index, ett_z3950_T_recordCount,
6368 NULL);
6370 return offset;
6374 static const ber_sequence_t DatabaseInfo_sequence[] = {
6375 { &hf_z3950_commonInfo , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
6376 { &hf_z3950_databaseInfo_name, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
6377 { &hf_z3950_explainDatabase, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
6378 { &hf_z3950_databaseInfo_nicknames, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DatabaseName },
6379 { &hf_z3950_icon , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IconObject },
6380 { &hf_z3950_user_fee , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6381 { &hf_z3950_available , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6382 { &hf_z3950_titleString , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6383 { &hf_z3950_keywords , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_HumanString },
6384 { &hf_z3950_description , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6385 { &hf_z3950_associatedDbs , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseList },
6386 { &hf_z3950_subDbs , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseList },
6387 { &hf_z3950_disclaimers , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6388 { &hf_z3950_news , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6389 { &hf_z3950_recordCount , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL, dissect_z3950_T_recordCount },
6390 { &hf_z3950_defaultOrder , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6391 { &hf_z3950_avRecordSize , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6392 { &hf_z3950_maxRecordSize , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6393 { &hf_z3950_hours , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6394 { &hf_z3950_bestTime , BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6395 { &hf_z3950_lastUpdate , BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_GeneralizedTime },
6396 { &hf_z3950_updateInterval, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
6397 { &hf_z3950_coverage , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6398 { &hf_z3950_proprietary , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6399 { &hf_z3950_copyrightText , BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6400 { &hf_z3950_copyrightNotice, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6401 { &hf_z3950_producerContactInfo, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ContactInfo },
6402 { &hf_z3950_supplierContactInfo, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ContactInfo },
6403 { &hf_z3950_submissionContactInfo, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ContactInfo },
6404 { &hf_z3950_accessInfo , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AccessInfo },
6405 { NULL, 0, 0, 0, NULL }
6408 static int
6409 dissect_z3950_DatabaseInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6410 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6411 DatabaseInfo_sequence, hf_index, ett_z3950_DatabaseInfo);
6413 return offset;
6417 static const ber_sequence_t T_tagTypeMapping_item_sequence[] = {
6418 { &hf_z3950_tagType , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6419 { &hf_z3950_tagSet , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
6420 { &hf_z3950_defaultTagType, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
6421 { NULL, 0, 0, 0, NULL }
6424 static int
6425 dissect_z3950_T_tagTypeMapping_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6426 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6427 T_tagTypeMapping_item_sequence, hf_index, ett_z3950_T_tagTypeMapping_item);
6429 return offset;
6433 static const ber_sequence_t T_tagTypeMapping_sequence_of[1] = {
6434 { &hf_z3950_tagTypeMapping_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_tagTypeMapping_item },
6437 static int
6438 dissect_z3950_T_tagTypeMapping(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6439 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6440 T_tagTypeMapping_sequence_of, hf_index, ett_z3950_T_tagTypeMapping);
6442 return offset;
6446 static const ber_sequence_t Path_item_sequence[] = {
6447 { &hf_z3950_tagType , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6448 { &hf_z3950_tagValue , BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
6449 { NULL, 0, 0, 0, NULL }
6452 static int
6453 dissect_z3950_Path_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6454 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6455 Path_item_sequence, hf_index, ett_z3950_Path_item);
6457 return offset;
6461 static const ber_sequence_t Path_sequence_of[1] = {
6462 { &hf_z3950_Path_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Path_item },
6465 static int
6466 dissect_z3950_Path(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6467 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6468 Path_sequence_of, hf_index, ett_z3950_Path);
6470 return offset;
6474 static const value_string z3950_PrimitiveDataType_vals[] = {
6475 { 0, "octetString" },
6476 { 1, "numeric" },
6477 { 2, "date" },
6478 { 3, "external" },
6479 { 4, "string" },
6480 { 5, "trueOrFalse" },
6481 { 6, "oid" },
6482 { 7, "intUnit" },
6483 { 8, "empty" },
6484 { 100, "noneOfTheAbove" },
6485 { 0, NULL }
6489 static int
6490 dissect_z3950_PrimitiveDataType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6491 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
6492 NULL);
6494 return offset;
6498 static const ber_sequence_t SEQUENCE_OF_ElementInfo_sequence_of[1] = {
6499 { &hf_z3950_recordStructure_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_ElementInfo },
6502 static int
6503 dissect_z3950_SEQUENCE_OF_ElementInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6504 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6505 SEQUENCE_OF_ElementInfo_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_ElementInfo);
6507 return offset;
6511 static const value_string z3950_ElementDataType_vals[] = {
6512 { 0, "primitive" },
6513 { 1, "structured" },
6514 { 0, NULL }
6517 static const ber_choice_t ElementDataType_choice[] = {
6518 { 0, &hf_z3950_primitive , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_PrimitiveDataType },
6519 { 1, &hf_z3950_structured , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_ElementInfo },
6520 { 0, NULL, 0, 0, 0, NULL }
6523 static int
6524 dissect_z3950_ElementDataType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6525 offset = dissect_ber_choice(actx, tree, tvb, offset,
6526 ElementDataType_choice, hf_index, ett_z3950_ElementDataType,
6527 NULL);
6529 return offset;
6533 static const ber_sequence_t ElementInfo_sequence[] = {
6534 { &hf_z3950_elementName , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6535 { &hf_z3950_elementTagPath, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_Path },
6536 { &hf_z3950_elementInfo_dataType, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_ElementDataType },
6537 { &hf_z3950_required , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6538 { &hf_z3950_repeatable , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6539 { &hf_z3950_description , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6540 { NULL, 0, 0, 0, NULL }
6543 static int
6544 dissect_z3950_ElementInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6545 // ElementInfo -> ElementDataType -> ElementDataType/structured -> ElementInfo
6546 actx->pinfo->dissection_depth += 3;
6547 increment_dissection_depth(actx->pinfo);
6548 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6549 ElementInfo_sequence, hf_index, ett_z3950_ElementInfo);
6551 actx->pinfo->dissection_depth -= 3;
6552 decrement_dissection_depth(actx->pinfo);
6553 return offset;
6557 static const ber_sequence_t SchemaInfo_sequence[] = {
6558 { &hf_z3950_commonInfo , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
6559 { &hf_z3950_schema , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
6560 { &hf_z3950_name , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6561 { &hf_z3950_description , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6562 { &hf_z3950_tagTypeMapping, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_tagTypeMapping },
6563 { &hf_z3950_recordStructure, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_ElementInfo },
6564 { NULL, 0, 0, 0, NULL }
6567 static int
6568 dissect_z3950_SchemaInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6569 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6570 SchemaInfo_sequence, hf_index, ett_z3950_SchemaInfo);
6572 return offset;
6576 static const ber_sequence_t T_tagSetInfo_elements_item_sequence[] = {
6577 { &hf_z3950_elementname , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6578 { &hf_z3950_nicknames , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
6579 { &hf_z3950_elementTag , BER_CLASS_CON, 3, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
6580 { &hf_z3950_description , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6581 { &hf_z3950_dataType , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_z3950_PrimitiveDataType },
6582 { &hf_z3950_otherTagInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
6583 { NULL, 0, 0, 0, NULL }
6586 static int
6587 dissect_z3950_T_tagSetInfo_elements_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6588 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6589 T_tagSetInfo_elements_item_sequence, hf_index, ett_z3950_T_tagSetInfo_elements_item);
6591 return offset;
6595 static const ber_sequence_t T_tagSetInfo_elements_sequence_of[1] = {
6596 { &hf_z3950_tagSetInfo_elements_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_tagSetInfo_elements_item },
6599 static int
6600 dissect_z3950_T_tagSetInfo_elements(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6601 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6602 T_tagSetInfo_elements_sequence_of, hf_index, ett_z3950_T_tagSetInfo_elements);
6604 return offset;
6608 static const ber_sequence_t TagSetInfo_sequence[] = {
6609 { &hf_z3950_commonInfo , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
6610 { &hf_z3950_tagSet , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
6611 { &hf_z3950_name , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6612 { &hf_z3950_description , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6613 { &hf_z3950_tagSetInfo_elements, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_tagSetInfo_elements },
6614 { NULL, 0, 0, 0, NULL }
6617 static int
6618 dissect_z3950_TagSetInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6619 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6620 TagSetInfo_sequence, hf_index, ett_z3950_TagSetInfo);
6622 return offset;
6626 static const ber_sequence_t T_transferSyntaxes_sequence_of[1] = {
6627 { &hf_z3950_transferSyntaxes_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
6630 static int
6631 dissect_z3950_T_transferSyntaxes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6632 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6633 T_transferSyntaxes_sequence_of, hf_index, ett_z3950_T_transferSyntaxes);
6635 return offset;
6639 static const ber_sequence_t RecordSyntaxInfo_sequence[] = {
6640 { &hf_z3950_commonInfo , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
6641 { &hf_z3950_recordSyntax , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
6642 { &hf_z3950_name , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6643 { &hf_z3950_transferSyntaxes, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_transferSyntaxes },
6644 { &hf_z3950_description , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6645 { &hf_z3950_asn1Module , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6646 { &hf_z3950_abstractStructure, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_ElementInfo },
6647 { NULL, 0, 0, 0, NULL }
6650 static int
6651 dissect_z3950_RecordSyntaxInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6652 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6653 RecordSyntaxInfo_sequence, hf_index, ett_z3950_RecordSyntaxInfo);
6655 return offset;
6659 static const ber_sequence_t AttributeDescription_sequence[] = {
6660 { &hf_z3950_name , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6661 { &hf_z3950_description , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6662 { &hf_z3950_attributeDescription_attributeValue, BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
6663 { &hf_z3950_equivalentAttributes, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_StringOrNumeric },
6664 { NULL, 0, 0, 0, NULL }
6667 static int
6668 dissect_z3950_AttributeDescription(bool 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(implicit_tag, actx, tree, tvb, offset,
6670 AttributeDescription_sequence, hf_index, ett_z3950_AttributeDescription);
6672 return offset;
6676 static const ber_sequence_t SEQUENCE_OF_AttributeDescription_sequence_of[1] = {
6677 { &hf_z3950_attributeValues_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeDescription },
6680 static int
6681 dissect_z3950_SEQUENCE_OF_AttributeDescription(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6682 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6683 SEQUENCE_OF_AttributeDescription_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeDescription);
6685 return offset;
6689 static const ber_sequence_t AttributeType_sequence[] = {
6690 { &hf_z3950_name , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6691 { &hf_z3950_description , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6692 { &hf_z3950_attributeType , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6693 { &hf_z3950_attributeValues, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeDescription },
6694 { NULL, 0, 0, 0, NULL }
6697 static int
6698 dissect_z3950_AttributeType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6699 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6700 AttributeType_sequence, hf_index, ett_z3950_AttributeType);
6702 return offset;
6706 static const ber_sequence_t SEQUENCE_OF_AttributeType_sequence_of[1] = {
6707 { &hf_z3950_attributeSetInfo_attributes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeType },
6710 static int
6711 dissect_z3950_SEQUENCE_OF_AttributeType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6712 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6713 SEQUENCE_OF_AttributeType_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeType);
6715 return offset;
6719 static const ber_sequence_t AttributeSetInfo_sequence[] = {
6720 { &hf_z3950_commonInfo , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
6721 { &hf_z3950_attributeSet , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_AttributeSetId },
6722 { &hf_z3950_name , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6723 { &hf_z3950_attributeSetInfo_attributes, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeType },
6724 { &hf_z3950_description , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6725 { NULL, 0, 0, 0, NULL }
6728 static int
6729 dissect_z3950_AttributeSetInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6730 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6731 AttributeSetInfo_sequence, hf_index, ett_z3950_AttributeSetInfo);
6733 return offset;
6737 static const value_string z3950_T_searchCost_vals[] = {
6738 { 0, "optimized" },
6739 { 1, "normal" },
6740 { 2, "expensive" },
6741 { 3, "filter" },
6742 { 0, NULL }
6746 static int
6747 dissect_z3950_T_searchCost(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6748 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
6749 NULL);
6751 return offset;
6755 static const ber_sequence_t T_termLists_item_sequence[] = {
6756 { &hf_z3950_name , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6757 { &hf_z3950_title , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6758 { &hf_z3950_searchCost , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_searchCost },
6759 { &hf_z3950_scanable , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6760 { &hf_z3950_broader , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
6761 { &hf_z3950_narrower , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
6762 { NULL, 0, 0, 0, NULL }
6765 static int
6766 dissect_z3950_T_termLists_item(bool 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 T_termLists_item_sequence, hf_index, ett_z3950_T_termLists_item);
6770 return offset;
6774 static const ber_sequence_t T_termLists_sequence_of[1] = {
6775 { &hf_z3950_termLists_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_termLists_item },
6778 static int
6779 dissect_z3950_T_termLists(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6780 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6781 T_termLists_sequence_of, hf_index, ett_z3950_T_termLists);
6783 return offset;
6787 static const ber_sequence_t TermListInfo_sequence[] = {
6788 { &hf_z3950_commonInfo , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
6789 { &hf_z3950_databaseName , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
6790 { &hf_z3950_termLists , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_termLists },
6791 { NULL, 0, 0, 0, NULL }
6794 static int
6795 dissect_z3950_TermListInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6796 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6797 TermListInfo_sequence, hf_index, ett_z3950_TermListInfo);
6799 return offset;
6803 static const value_string z3950_T_extendedServicesInfo_waitAction_vals[] = {
6804 { 1, "waitSupported" },
6805 { 2, "waitAlways" },
6806 { 3, "waitNotSupported" },
6807 { 4, "depends" },
6808 { 5, "notSaying" },
6809 { 0, NULL }
6813 static int
6814 dissect_z3950_T_extendedServicesInfo_waitAction(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6815 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
6816 NULL);
6818 return offset;
6822 static const ber_sequence_t ExtendedServicesInfo_sequence[] = {
6823 { &hf_z3950_commonInfo , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
6824 { &hf_z3950_extendedServicesInfo_type, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
6825 { &hf_z3950_name , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6826 { &hf_z3950_privateType , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6827 { &hf_z3950_restrictionsApply, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6828 { &hf_z3950_feeApply , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6829 { &hf_z3950_available , BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6830 { &hf_z3950_retentionSupported, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
6831 { &hf_z3950_extendedServicesInfo_waitAction, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_z3950_T_extendedServicesInfo_waitAction },
6832 { &hf_z3950_description , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6833 { &hf_z3950_specificExplain, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
6834 { &hf_z3950_esASN , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
6835 { NULL, 0, 0, 0, NULL }
6838 static int
6839 dissect_z3950_ExtendedServicesInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6840 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6841 ExtendedServicesInfo_sequence, hf_index, ett_z3950_ExtendedServicesInfo);
6843 return offset;
6847 static const ber_sequence_t OmittedAttributeInterpretation_sequence[] = {
6848 { &hf_z3950_defaultValue , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
6849 { &hf_z3950_defaultDescription, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6850 { NULL, 0, 0, 0, NULL }
6853 static int
6854 dissect_z3950_OmittedAttributeInterpretation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6855 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6856 OmittedAttributeInterpretation_sequence, hf_index, ett_z3950_OmittedAttributeInterpretation);
6858 return offset;
6862 static const ber_sequence_t AttributeValue_sequence[] = {
6863 { &hf_z3950_attributeValue_value, BER_CLASS_CON, 0, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
6864 { &hf_z3950_description , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
6865 { &hf_z3950_subAttributes , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_StringOrNumeric },
6866 { &hf_z3950_superAttributes, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_StringOrNumeric },
6867 { &hf_z3950_partialSupport, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
6868 { NULL, 0, 0, 0, NULL }
6871 static int
6872 dissect_z3950_AttributeValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6873 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6874 AttributeValue_sequence, hf_index, ett_z3950_AttributeValue);
6876 return offset;
6880 static const ber_sequence_t SEQUENCE_OF_AttributeValue_sequence_of[1] = {
6881 { &hf_z3950_attributeTypeDetails_attributeValues_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeValue },
6884 static int
6885 dissect_z3950_SEQUENCE_OF_AttributeValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6886 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6887 SEQUENCE_OF_AttributeValue_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeValue);
6889 return offset;
6893 static const ber_sequence_t AttributeTypeDetails_sequence[] = {
6894 { &hf_z3950_attributeType , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6895 { &hf_z3950_defaultIfOmitted, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OmittedAttributeInterpretation },
6896 { &hf_z3950_attributeTypeDetails_attributeValues, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeValue },
6897 { NULL, 0, 0, 0, NULL }
6900 static int
6901 dissect_z3950_AttributeTypeDetails(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6902 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6903 AttributeTypeDetails_sequence, hf_index, ett_z3950_AttributeTypeDetails);
6905 return offset;
6909 static const ber_sequence_t SEQUENCE_OF_AttributeTypeDetails_sequence_of[1] = {
6910 { &hf_z3950_attributesByType_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeTypeDetails },
6913 static int
6914 dissect_z3950_SEQUENCE_OF_AttributeTypeDetails(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6915 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6916 SEQUENCE_OF_AttributeTypeDetails_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeTypeDetails);
6918 return offset;
6922 static const ber_sequence_t AttributeSetDetails_sequence[] = {
6923 { &hf_z3950_attributeSet , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_AttributeSetId },
6924 { &hf_z3950_attributesByType, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeTypeDetails },
6925 { NULL, 0, 0, 0, NULL }
6928 static int
6929 dissect_z3950_AttributeSetDetails(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6930 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6931 AttributeSetDetails_sequence, hf_index, ett_z3950_AttributeSetDetails);
6933 return offset;
6937 static const ber_sequence_t SEQUENCE_OF_AttributeSetDetails_sequence_of[1] = {
6938 { &hf_z3950_attributesBySet_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeSetDetails },
6941 static int
6942 dissect_z3950_SEQUENCE_OF_AttributeSetDetails(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6943 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6944 SEQUENCE_OF_AttributeSetDetails_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeSetDetails);
6946 return offset;
6950 static const value_string z3950_T_attributeOccurrence_attributeValues_vals[] = {
6951 { 3, "any-or-none" },
6952 { 4, "specific" },
6953 { 0, NULL }
6956 static const ber_choice_t T_attributeOccurrence_attributeValues_choice[] = {
6957 { 3, &hf_z3950_any_or_none , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
6958 { 4, &hf_z3950_specific , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_StringOrNumeric },
6959 { 0, NULL, 0, 0, 0, NULL }
6962 static int
6963 dissect_z3950_T_attributeOccurrence_attributeValues(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6964 offset = dissect_ber_choice(actx, tree, tvb, offset,
6965 T_attributeOccurrence_attributeValues_choice, hf_index, ett_z3950_T_attributeOccurrence_attributeValues,
6966 NULL);
6968 return offset;
6972 static const ber_sequence_t AttributeOccurrence_sequence[] = {
6973 { &hf_z3950_attributeSet , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AttributeSetId },
6974 { &hf_z3950_attributeType , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
6975 { &hf_z3950_mustBeSupplied, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
6976 { &hf_z3950_attributeOccurrence_attributeValues, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_T_attributeOccurrence_attributeValues },
6977 { NULL, 0, 0, 0, NULL }
6980 static int
6981 dissect_z3950_AttributeOccurrence(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6982 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
6983 AttributeOccurrence_sequence, hf_index, ett_z3950_AttributeOccurrence);
6985 return offset;
6989 static const ber_sequence_t AttributeCombination_sequence_of[1] = {
6990 { &hf_z3950_AttributeCombination_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeOccurrence },
6993 static int
6994 dissect_z3950_AttributeCombination(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
6995 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
6996 AttributeCombination_sequence_of, hf_index, ett_z3950_AttributeCombination);
6998 return offset;
7002 static const ber_sequence_t SEQUENCE_OF_AttributeCombination_sequence_of[1] = {
7003 { &hf_z3950_legalCombinations_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_AttributeCombination },
7006 static int
7007 dissect_z3950_SEQUENCE_OF_AttributeCombination(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7008 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7009 SEQUENCE_OF_AttributeCombination_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_AttributeCombination);
7011 return offset;
7015 static const ber_sequence_t AttributeCombinations_sequence[] = {
7016 { &hf_z3950_defaultAttributeSet, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_AttributeSetId },
7017 { &hf_z3950_legalCombinations, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeCombination },
7018 { NULL, 0, 0, 0, NULL }
7021 static int
7022 dissect_z3950_AttributeCombinations(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7023 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7024 AttributeCombinations_sequence, hf_index, ett_z3950_AttributeCombinations);
7026 return offset;
7030 static const ber_sequence_t AttributeDetails_sequence[] = {
7031 { &hf_z3950_commonInfo , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7032 { &hf_z3950_databaseName , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
7033 { &hf_z3950_attributesBySet, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_AttributeSetDetails },
7034 { &hf_z3950_attributeCombinations, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AttributeCombinations },
7035 { NULL, 0, 0, 0, NULL }
7038 static int
7039 dissect_z3950_AttributeDetails(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7040 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7041 AttributeDetails_sequence, hf_index, ett_z3950_AttributeDetails);
7043 return offset;
7047 static const ber_sequence_t T_scanInfo_sequence[] = {
7048 { &hf_z3950_maxStepSize , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7049 { &hf_z3950_collatingSequence, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7050 { &hf_z3950_increasing , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
7051 { NULL, 0, 0, 0, NULL }
7054 static int
7055 dissect_z3950_T_scanInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7056 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7057 T_scanInfo_sequence, hf_index, ett_z3950_T_scanInfo);
7059 return offset;
7063 static const ber_sequence_t SEQUENCE_OF_Term_sequence_of[1] = {
7064 { &hf_z3950_sampleTerms_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_Term },
7067 static int
7068 dissect_z3950_SEQUENCE_OF_Term(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7069 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7070 SEQUENCE_OF_Term_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_Term);
7072 return offset;
7076 static const ber_sequence_t TermListDetails_sequence[] = {
7077 { &hf_z3950_commonInfo , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7078 { &hf_z3950_termListName , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7079 { &hf_z3950_description , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7080 { &hf_z3950_termListDetails_attributes, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AttributeCombinations },
7081 { &hf_z3950_scanInfo , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_scanInfo },
7082 { &hf_z3950_estNumberTerms, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7083 { &hf_z3950_sampleTerms , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Term },
7084 { NULL, 0, 0, 0, NULL }
7087 static int
7088 dissect_z3950_TermListDetails(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7089 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7090 TermListDetails_sequence, hf_index, ett_z3950_TermListDetails);
7092 return offset;
7096 static const ber_sequence_t RecordTag_sequence[] = {
7097 { &hf_z3950_qualifier , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
7098 { &hf_z3950_tagValue , BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
7099 { NULL, 0, 0, 0, NULL }
7102 static int
7103 dissect_z3950_RecordTag(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7104 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7105 RecordTag_sequence, hf_index, ett_z3950_RecordTag);
7107 return offset;
7111 static const ber_sequence_t SEQUENCE_OF_Path_sequence_of[1] = {
7112 { &hf_z3950_schemaTags_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Path },
7115 static int
7116 dissect_z3950_SEQUENCE_OF_Path(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7117 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7118 SEQUENCE_OF_Path_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_Path);
7120 return offset;
7124 static const ber_sequence_t PerElementDetails_sequence[] = {
7125 { &hf_z3950_name , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7126 { &hf_z3950_recordTag , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_RecordTag },
7127 { &hf_z3950_schemaTags , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Path },
7128 { &hf_z3950_maxSize , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7129 { &hf_z3950_minSize , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7130 { &hf_z3950_avgSize , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7131 { &hf_z3950_fixedSize , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7132 { &hf_z3950_repeatable , BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
7133 { &hf_z3950_required , BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
7134 { &hf_z3950_description , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7135 { &hf_z3950_contents , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7136 { &hf_z3950_billingInfo , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7137 { &hf_z3950_restrictions , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7138 { &hf_z3950_alternateNames, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
7139 { &hf_z3950_genericNames , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
7140 { &hf_z3950_searchAccess , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AttributeCombinations },
7141 { NULL, 0, 0, 0, NULL }
7144 static int
7145 dissect_z3950_PerElementDetails(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7146 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7147 PerElementDetails_sequence, hf_index, ett_z3950_PerElementDetails);
7149 return offset;
7153 static const ber_sequence_t SEQUENCE_OF_PerElementDetails_sequence_of[1] = {
7154 { &hf_z3950_detailsPerElement_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_PerElementDetails },
7157 static int
7158 dissect_z3950_SEQUENCE_OF_PerElementDetails(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7159 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7160 SEQUENCE_OF_PerElementDetails_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_PerElementDetails);
7162 return offset;
7166 static const ber_sequence_t ElementSetDetails_sequence[] = {
7167 { &hf_z3950_commonInfo , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7168 { &hf_z3950_databaseName , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
7169 { &hf_z3950_elementSetDetails_elementSetName, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_ElementSetName },
7170 { &hf_z3950_recordSyntax , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
7171 { &hf_z3950_schema , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
7172 { &hf_z3950_description , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7173 { &hf_z3950_detailsPerElement, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_PerElementDetails },
7174 { NULL, 0, 0, 0, NULL }
7177 static int
7178 dissect_z3950_ElementSetDetails(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7179 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7180 ElementSetDetails_sequence, hf_index, ett_z3950_ElementSetDetails);
7182 return offset;
7186 static const ber_sequence_t RetrievalRecordDetails_sequence[] = {
7187 { &hf_z3950_commonInfo , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7188 { &hf_z3950_databaseName , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
7189 { &hf_z3950_schema , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
7190 { &hf_z3950_recordSyntax , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
7191 { &hf_z3950_description , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7192 { &hf_z3950_detailsPerElement, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_PerElementDetails },
7193 { NULL, 0, 0, 0, NULL }
7196 static int
7197 dissect_z3950_RetrievalRecordDetails(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7198 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7199 RetrievalRecordDetails_sequence, hf_index, ett_z3950_RetrievalRecordDetails);
7201 return offset;
7205 static const value_string z3950_T_sortType_vals[] = {
7206 { 0, "character" },
7207 { 1, "numeric" },
7208 { 2, "structured" },
7209 { 0, NULL }
7212 static const ber_choice_t T_sortType_choice[] = {
7213 { 0, &hf_z3950_character , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
7214 { 1, &hf_z3950_sortKeyDetails_sortType_numeric, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
7215 { 2, &hf_z3950_sortKeyDetails_sortType_structured, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7216 { 0, NULL, 0, 0, 0, NULL }
7219 static int
7220 dissect_z3950_T_sortType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7221 offset = dissect_ber_choice(actx, tree, tvb, offset,
7222 T_sortType_choice, hf_index, ett_z3950_T_sortType,
7223 NULL);
7225 return offset;
7229 static const value_string z3950_T_sortKeyDetails_caseSensitivity_vals[] = {
7230 { 0, "always" },
7231 { 1, "never" },
7232 { 2, "default-yes" },
7233 { 3, "default-no" },
7234 { 0, NULL }
7238 static int
7239 dissect_z3950_T_sortKeyDetails_caseSensitivity(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7240 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7241 NULL);
7243 return offset;
7247 static const ber_sequence_t SortKeyDetails_sequence[] = {
7248 { &hf_z3950_description , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7249 { &hf_z3950_elementSpecifications, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Specification },
7250 { &hf_z3950_attributeSpecifications, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_AttributeCombinations },
7251 { &hf_z3950_sortType , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_z3950_T_sortType },
7252 { &hf_z3950_sortKeyDetails_caseSensitivity, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_sortKeyDetails_caseSensitivity },
7253 { NULL, 0, 0, 0, NULL }
7256 static int
7257 dissect_z3950_SortKeyDetails(bool 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_sequence(implicit_tag, actx, tree, tvb, offset,
7259 SortKeyDetails_sequence, hf_index, ett_z3950_SortKeyDetails);
7261 return offset;
7265 static const ber_sequence_t SEQUENCE_OF_SortKeyDetails_sequence_of[1] = {
7266 { &hf_z3950_sortKeys_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_SortKeyDetails },
7269 static int
7270 dissect_z3950_SEQUENCE_OF_SortKeyDetails(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7271 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7272 SEQUENCE_OF_SortKeyDetails_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_SortKeyDetails);
7274 return offset;
7278 static const ber_sequence_t SortDetails_sequence[] = {
7279 { &hf_z3950_commonInfo , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7280 { &hf_z3950_databaseName , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
7281 { &hf_z3950_sortKeys , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_SortKeyDetails },
7282 { NULL, 0, 0, 0, NULL }
7285 static int
7286 dissect_z3950_SortDetails(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7287 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7288 SortDetails_sequence, hf_index, ett_z3950_SortDetails);
7290 return offset;
7294 static const value_string z3950_T_processingContext_vals[] = {
7295 { 0, "access" },
7296 { 1, "search" },
7297 { 2, "retrieval" },
7298 { 3, "record-presentation" },
7299 { 4, "record-handling" },
7300 { 0, NULL }
7304 static int
7305 dissect_z3950_T_processingContext(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7306 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7307 NULL);
7309 return offset;
7313 static const ber_sequence_t ProcessingInformation_sequence[] = {
7314 { &hf_z3950_commonInfo , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7315 { &hf_z3950_databaseName , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseName },
7316 { &hf_z3950_processingContext, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_processingContext },
7317 { &hf_z3950_name , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7318 { &hf_z3950_oid , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
7319 { &hf_z3950_description , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7320 { &hf_z3950_instructions , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
7321 { NULL, 0, 0, 0, NULL }
7324 static int
7325 dissect_z3950_ProcessingInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7326 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7327 ProcessingInformation_sequence, hf_index, ett_z3950_ProcessingInformation);
7329 return offset;
7333 static const value_string z3950_ValueDescription_vals[] = {
7334 { 0, "integer" },
7335 { 1, "string" },
7336 { 2, "octets" },
7337 { 3, "oid" },
7338 { 4, "unit" },
7339 { 5, "valueAndUnit" },
7340 { 0, NULL }
7343 static const ber_choice_t ValueDescription_choice[] = {
7344 { 0, &hf_z3950_integer , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_z3950_INTEGER },
7345 { 1, &hf_z3950_string , BER_CLASS_UNI, BER_UNI_TAG_GeneralString, BER_FLAGS_NOOWNTAG, dissect_z3950_InternationalString },
7346 { 2, &hf_z3950_octets , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_z3950_OCTET_STRING },
7347 { 3, &hf_z3950_oid , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
7348 { 4, &hf_z3950_valueDescription_unit, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_Unit },
7349 { 5, &hf_z3950_valueAndUnit , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
7350 { 0, NULL, 0, 0, 0, NULL }
7353 static int
7354 dissect_z3950_ValueDescription(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7355 offset = dissect_ber_choice(actx, tree, tvb, offset,
7356 ValueDescription_choice, hf_index, ett_z3950_ValueDescription,
7357 NULL);
7359 return offset;
7363 static const ber_sequence_t ValueRange_sequence[] = {
7364 { &hf_z3950_lower , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_ValueDescription },
7365 { &hf_z3950_upper , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_ValueDescription },
7366 { NULL, 0, 0, 0, NULL }
7369 static int
7370 dissect_z3950_ValueRange(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7371 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7372 ValueRange_sequence, hf_index, ett_z3950_ValueRange);
7374 return offset;
7378 static const ber_sequence_t SEQUENCE_OF_ValueDescription_sequence_of[1] = {
7379 { &hf_z3950_enumerated_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_ValueDescription },
7382 static int
7383 dissect_z3950_SEQUENCE_OF_ValueDescription(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7384 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7385 SEQUENCE_OF_ValueDescription_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_ValueDescription);
7387 return offset;
7391 static const value_string z3950_ValueSet_vals[] = {
7392 { 0, "range" },
7393 { 1, "enumerated" },
7394 { 0, NULL }
7397 static const ber_choice_t ValueSet_choice[] = {
7398 { 0, &hf_z3950_range , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_ValueRange },
7399 { 1, &hf_z3950_enumerated , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_ValueDescription },
7400 { 0, NULL, 0, 0, 0, NULL }
7403 static int
7404 dissect_z3950_ValueSet(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7405 offset = dissect_ber_choice(actx, tree, tvb, offset,
7406 ValueSet_choice, hf_index, ett_z3950_ValueSet,
7407 NULL);
7409 return offset;
7413 static const ber_sequence_t VariantValue_sequence[] = {
7414 { &hf_z3950_dataType , BER_CLASS_CON, 0, 0, dissect_z3950_PrimitiveDataType },
7415 { &hf_z3950_values , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_ValueSet },
7416 { NULL, 0, 0, 0, NULL }
7419 static int
7420 dissect_z3950_VariantValue(bool 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(implicit_tag, actx, tree, tvb, offset,
7422 VariantValue_sequence, hf_index, ett_z3950_VariantValue);
7424 return offset;
7428 static const ber_sequence_t VariantType_sequence[] = {
7429 { &hf_z3950_name , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7430 { &hf_z3950_description , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7431 { &hf_z3950_variantType , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7432 { &hf_z3950_variantValue , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_VariantValue },
7433 { NULL, 0, 0, 0, NULL }
7436 static int
7437 dissect_z3950_VariantType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7438 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7439 VariantType_sequence, hf_index, ett_z3950_VariantType);
7441 return offset;
7445 static const ber_sequence_t SEQUENCE_OF_VariantType_sequence_of[1] = {
7446 { &hf_z3950_variantTypes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_VariantType },
7449 static int
7450 dissect_z3950_SEQUENCE_OF_VariantType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7451 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7452 SEQUENCE_OF_VariantType_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_VariantType);
7454 return offset;
7458 static const ber_sequence_t VariantClass_sequence[] = {
7459 { &hf_z3950_name , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7460 { &hf_z3950_description , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7461 { &hf_z3950_variantClass , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7462 { &hf_z3950_variantTypes , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_VariantType },
7463 { NULL, 0, 0, 0, NULL }
7466 static int
7467 dissect_z3950_VariantClass(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7468 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7469 VariantClass_sequence, hf_index, ett_z3950_VariantClass);
7471 return offset;
7475 static const ber_sequence_t SEQUENCE_OF_VariantClass_sequence_of[1] = {
7476 { &hf_z3950_variantSetInfo_variants_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_VariantClass },
7479 static int
7480 dissect_z3950_SEQUENCE_OF_VariantClass(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7481 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7482 SEQUENCE_OF_VariantClass_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_VariantClass);
7484 return offset;
7488 static const ber_sequence_t VariantSetInfo_sequence[] = {
7489 { &hf_z3950_commonInfo , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7490 { &hf_z3950_variantSet , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
7491 { &hf_z3950_name , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7492 { &hf_z3950_variantSetInfo_variants, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_VariantClass },
7493 { NULL, 0, 0, 0, NULL }
7496 static int
7497 dissect_z3950_VariantSetInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7498 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7499 VariantSetInfo_sequence, hf_index, ett_z3950_VariantSetInfo);
7501 return offset;
7505 static const ber_sequence_t Units_sequence[] = {
7506 { &hf_z3950_name , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7507 { &hf_z3950_description , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7508 { &hf_z3950_unit , BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
7509 { NULL, 0, 0, 0, NULL }
7512 static int
7513 dissect_z3950_Units(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7514 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7515 Units_sequence, hf_index, ett_z3950_Units);
7517 return offset;
7521 static const ber_sequence_t SEQUENCE_OF_Units_sequence_of[1] = {
7522 { &hf_z3950_unitType_units_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Units },
7525 static int
7526 dissect_z3950_SEQUENCE_OF_Units(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7527 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7528 SEQUENCE_OF_Units_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_Units);
7530 return offset;
7534 static const ber_sequence_t UnitType_sequence[] = {
7535 { &hf_z3950_name , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7536 { &hf_z3950_description , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7537 { &hf_z3950_unitType , BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
7538 { &hf_z3950_unitType_units, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Units },
7539 { NULL, 0, 0, 0, NULL }
7542 static int
7543 dissect_z3950_UnitType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7544 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7545 UnitType_sequence, hf_index, ett_z3950_UnitType);
7547 return offset;
7551 static const ber_sequence_t SEQUENCE_OF_UnitType_sequence_of[1] = {
7552 { &hf_z3950_unitInfo_units_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_UnitType },
7555 static int
7556 dissect_z3950_SEQUENCE_OF_UnitType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7557 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7558 SEQUENCE_OF_UnitType_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_UnitType);
7560 return offset;
7564 static const ber_sequence_t UnitInfo_sequence[] = {
7565 { &hf_z3950_commonInfo , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7566 { &hf_z3950_unitSystem , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7567 { &hf_z3950_description , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7568 { &hf_z3950_unitInfo_units, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_UnitType },
7569 { NULL, 0, 0, 0, NULL }
7572 static int
7573 dissect_z3950_UnitInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7574 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7575 UnitInfo_sequence, hf_index, ett_z3950_UnitInfo);
7577 return offset;
7581 static const ber_sequence_t CategoryInfo_sequence[] = {
7582 { &hf_z3950_categoryInfo_category, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7583 { &hf_z3950_originalCategory, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7584 { &hf_z3950_description , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_HumanString },
7585 { &hf_z3950_asn1Module , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7586 { NULL, 0, 0, 0, NULL }
7589 static int
7590 dissect_z3950_CategoryInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7591 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7592 CategoryInfo_sequence, hf_index, ett_z3950_CategoryInfo);
7594 return offset;
7598 static const ber_sequence_t SEQUENCE_OF_CategoryInfo_sequence_of[1] = {
7599 { &hf_z3950_categories_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_CategoryInfo },
7602 static int
7603 dissect_z3950_SEQUENCE_OF_CategoryInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7604 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7605 SEQUENCE_OF_CategoryInfo_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_CategoryInfo);
7607 return offset;
7611 static const ber_sequence_t CategoryList_sequence[] = {
7612 { &hf_z3950_commonInfo , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_CommonInfo },
7613 { &hf_z3950_categories , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_CategoryInfo },
7614 { NULL, 0, 0, 0, NULL }
7617 static int
7618 dissect_z3950_CategoryList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7619 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7620 CategoryList_sequence, hf_index, ett_z3950_CategoryList);
7622 return offset;
7626 static const value_string z3950_Explain_Record_vals[] = {
7627 { 0, "targetInfo" },
7628 { 1, "databaseInfo" },
7629 { 2, "schemaInfo" },
7630 { 3, "tagSetInfo" },
7631 { 4, "recordSyntaxInfo" },
7632 { 5, "attributeSetInfo" },
7633 { 6, "termListInfo" },
7634 { 7, "extendedServicesInfo" },
7635 { 8, "attributeDetails" },
7636 { 9, "termListDetails" },
7637 { 10, "elementSetDetails" },
7638 { 11, "retrievalRecordDetails" },
7639 { 12, "sortDetails" },
7640 { 13, "processing" },
7641 { 14, "variants" },
7642 { 15, "units" },
7643 { 100, "categoryList" },
7644 { 0, NULL }
7647 static const ber_choice_t Explain_Record_choice[] = {
7648 { 0, &hf_z3950_targetInfo , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_z3950_TargetInfo },
7649 { 1, &hf_z3950_databaseInfo , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DatabaseInfo },
7650 { 2, &hf_z3950_schemaInfo , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_SchemaInfo },
7651 { 3, &hf_z3950_tagSetInfo , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_TagSetInfo },
7652 { 4, &hf_z3950_recordSyntaxInfo, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_RecordSyntaxInfo },
7653 { 5, &hf_z3950_attributeSetInfo, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_AttributeSetInfo },
7654 { 6, &hf_z3950_termListInfo , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_z3950_TermListInfo },
7655 { 7, &hf_z3950_extendedServicesInfo, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_z3950_ExtendedServicesInfo },
7656 { 8, &hf_z3950_attributeDetails, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_z3950_AttributeDetails },
7657 { 9, &hf_z3950_termListDetails, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_z3950_TermListDetails },
7658 { 10, &hf_z3950_elementSetDetails, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_z3950_ElementSetDetails },
7659 { 11, &hf_z3950_retrievalRecordDetails, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_z3950_RetrievalRecordDetails },
7660 { 12, &hf_z3950_sortDetails , BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_z3950_SortDetails },
7661 { 13, &hf_z3950_processing , BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_z3950_ProcessingInformation },
7662 { 14, &hf_z3950_variants , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_z3950_VariantSetInfo },
7663 { 15, &hf_z3950_units , BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_z3950_UnitInfo },
7664 { 100, &hf_z3950_categoryList , BER_CLASS_CON, 100, BER_FLAGS_IMPLTAG, dissect_z3950_CategoryList },
7665 { 0, NULL, 0, 0, 0, NULL }
7668 static int
7669 dissect_z3950_Explain_Record(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7670 offset = dissect_ber_choice(actx, tree, tvb, offset,
7671 Explain_Record_choice, hf_index, ett_z3950_Explain_Record,
7672 NULL);
7674 return offset;
7678 static const ber_sequence_t FormatSpec_sequence[] = {
7679 { &hf_z3950_formatSpec_type, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7680 { &hf_z3950_size , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7681 { &hf_z3950_bestPosn , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7682 { NULL, 0, 0, 0, NULL }
7685 static int
7686 dissect_z3950_FormatSpec(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7687 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7688 FormatSpec_sequence, hf_index, ett_z3950_FormatSpec);
7690 return offset;
7694 static const ber_sequence_t SEQUENCE_OF_FormatSpec_sequence_of[1] = {
7695 { &hf_z3950_briefBib_format_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_FormatSpec },
7698 static int
7699 dissect_z3950_SEQUENCE_OF_FormatSpec(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7700 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7701 SEQUENCE_OF_FormatSpec_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_FormatSpec);
7703 return offset;
7707 static const ber_sequence_t BriefBib_sequence[] = {
7708 { &hf_z3950_briefBib_title, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7709 { &hf_z3950_author , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7710 { &hf_z3950_callNumber , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7711 { &hf_z3950_recordType , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7712 { &hf_z3950_bibliographicLevel, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7713 { &hf_z3950_briefBib_format, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_FormatSpec },
7714 { &hf_z3950_publicationPlace, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7715 { &hf_z3950_publicationDate, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7716 { &hf_z3950_targetSystemKey, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7717 { &hf_z3950_satisfyingElement, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7718 { &hf_z3950_rank , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7719 { &hf_z3950_documentId , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7720 { &hf_z3950_abstract , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7721 { &hf_z3950_otherInfo , BER_CLASS_CON, 201, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_z3950_OtherInformation },
7722 { NULL, 0, 0, 0, NULL }
7725 static int
7726 dissect_z3950_BriefBib(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7727 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7728 BriefBib_sequence, hf_index, ett_z3950_BriefBib);
7730 return offset;
7734 static const ber_sequence_t SEQUENCE_OF_TaggedElement_sequence_of[1] = {
7735 { &hf_z3950_subtree_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_TaggedElement },
7738 static int
7739 dissect_z3950_SEQUENCE_OF_TaggedElement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7740 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7741 SEQUENCE_OF_TaggedElement_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_TaggedElement);
7743 return offset;
7747 static const value_string z3950_ElementData_vals[] = {
7748 { 0, "octets" },
7749 { 1, "numeric" },
7750 { 2, "date" },
7751 { 3, "ext" },
7752 { 4, "string" },
7753 { 5, "trueOrFalse" },
7754 { 6, "oid" },
7755 { 7, "intUnit" },
7756 { 8, "elementNotThere" },
7757 { 9, "elementEmpty" },
7758 { 10, "noDataRequested" },
7759 { 11, "diagnostic" },
7760 { 12, "subtree" },
7761 { 0, NULL }
7764 static const ber_choice_t ElementData_choice[] = {
7765 { 0, &hf_z3950_octets , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_z3950_OCTET_STRING },
7766 { 1, &hf_z3950_numeric , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_z3950_INTEGER },
7767 { 2, &hf_z3950_date , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_z3950_GeneralizedTime },
7768 { 3, &hf_z3950_ext , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_z3950_EXTERNAL },
7769 { 4, &hf_z3950_string , BER_CLASS_UNI, BER_UNI_TAG_GeneralString, BER_FLAGS_NOOWNTAG, dissect_z3950_InternationalString },
7770 { 5, &hf_z3950_trueOrFalse , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_NOOWNTAG, dissect_z3950_BOOLEAN },
7771 { 6, &hf_z3950_oid , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
7772 { 7, &hf_z3950_intUnit , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
7773 { 8, &hf_z3950_elementNotThere, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
7774 { 9, &hf_z3950_elementEmpty , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
7775 { 10, &hf_z3950_noDataRequested, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
7776 { 11, &hf_z3950_elementData_diagnostic, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
7777 { 12, &hf_z3950_subtree , BER_CLASS_CON, 6, 0, dissect_z3950_SEQUENCE_OF_TaggedElement },
7778 { 0, NULL, 0, 0, 0, NULL }
7781 static int
7782 dissect_z3950_ElementData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7783 offset = dissect_ber_choice(actx, tree, tvb, offset,
7784 ElementData_choice, hf_index, ett_z3950_ElementData,
7785 NULL);
7787 return offset;
7791 static const ber_sequence_t Order_sequence[] = {
7792 { &hf_z3950_ascending , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
7793 { &hf_z3950_order , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7794 { NULL, 0, 0, 0, NULL }
7797 static int
7798 dissect_z3950_Order(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7799 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7800 Order_sequence, hf_index, ett_z3950_Order);
7802 return offset;
7806 static const value_string z3950_T_usage_type_vals[] = {
7807 { 1, "redistributable" },
7808 { 2, "restricted" },
7809 { 3, "licensePointer" },
7810 { 0, NULL }
7814 static int
7815 dissect_z3950_T_usage_type(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7816 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
7817 NULL);
7819 return offset;
7823 static const ber_sequence_t Usage_sequence[] = {
7824 { &hf_z3950_usage_type , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_usage_type },
7825 { &hf_z3950_restriction , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7826 { NULL, 0, 0, 0, NULL }
7829 static int
7830 dissect_z3950_Usage(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7831 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7832 Usage_sequence, hf_index, ett_z3950_Usage);
7834 return offset;
7838 static const ber_sequence_t HitVector_sequence[] = {
7839 { &hf_z3950_satisfier , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_z3950_Term },
7840 { &hf_z3950_offsetIntoElement, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
7841 { &hf_z3950_length , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
7842 { &hf_z3950_hitRank , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7843 { &hf_z3950_targetToken , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
7844 { NULL, 0, 0, 0, NULL }
7847 static int
7848 dissect_z3950_HitVector(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7849 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7850 HitVector_sequence, hf_index, ett_z3950_HitVector);
7852 return offset;
7856 static const ber_sequence_t SEQUENCE_OF_HitVector_sequence_of[1] = {
7857 { &hf_z3950_hits_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_HitVector },
7860 static int
7861 dissect_z3950_SEQUENCE_OF_HitVector(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7862 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7863 SEQUENCE_OF_HitVector_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_HitVector);
7865 return offset;
7869 static const value_string z3950_T_variant_triples_item_value_vals[] = {
7870 { 0, "integer" },
7871 { 1, "string" },
7872 { 2, "octetString" },
7873 { 3, "oid" },
7874 { 4, "boolean" },
7875 { 5, "null" },
7876 { 6, "unit" },
7877 { 7, "valueAndUnit" },
7878 { 0, NULL }
7881 static const ber_choice_t T_variant_triples_item_value_choice[] = {
7882 { 0, &hf_z3950_integer , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_z3950_INTEGER },
7883 { 1, &hf_z3950_string , BER_CLASS_UNI, BER_UNI_TAG_GeneralString, BER_FLAGS_NOOWNTAG, dissect_z3950_InternationalString },
7884 { 2, &hf_z3950_octetString , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_z3950_OCTET_STRING },
7885 { 3, &hf_z3950_oid , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_z3950_OBJECT_IDENTIFIER },
7886 { 4, &hf_z3950_boolean , BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_NOOWNTAG, dissect_z3950_BOOLEAN },
7887 { 5, &hf_z3950_null , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_z3950_NULL },
7888 { 6, &hf_z3950_variant_triples_item_value_unit, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_Unit },
7889 { 7, &hf_z3950_valueAndUnit , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
7890 { 0, NULL, 0, 0, 0, NULL }
7893 static int
7894 dissect_z3950_T_variant_triples_item_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7895 offset = dissect_ber_choice(actx, tree, tvb, offset,
7896 T_variant_triples_item_value_choice, hf_index, ett_z3950_T_variant_triples_item_value,
7897 NULL);
7899 return offset;
7903 static const ber_sequence_t T_triples_item_sequence[] = {
7904 { &hf_z3950_variantSetId , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
7905 { &hf_z3950_class , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7906 { &hf_z3950_type , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7907 { &hf_z3950_variant_triples_item_value, BER_CLASS_CON, 3, 0, dissect_z3950_T_variant_triples_item_value },
7908 { NULL, 0, 0, 0, NULL }
7911 static int
7912 dissect_z3950_T_triples_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7913 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7914 T_triples_item_sequence, hf_index, ett_z3950_T_triples_item);
7916 return offset;
7920 static const ber_sequence_t T_triples_sequence_of[1] = {
7921 { &hf_z3950_triples_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_T_triples_item },
7924 static int
7925 dissect_z3950_T_triples(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7926 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7927 T_triples_sequence_of, hf_index, ett_z3950_T_triples);
7929 return offset;
7933 static const ber_sequence_t Variant_sequence[] = {
7934 { &hf_z3950_globalVariantSetId, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
7935 { &hf_z3950_triples , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_T_triples },
7936 { NULL, 0, 0, 0, NULL }
7939 static int
7940 dissect_z3950_Variant(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7941 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7942 Variant_sequence, hf_index, ett_z3950_Variant);
7944 return offset;
7948 static const ber_sequence_t SEQUENCE_OF_Variant_sequence_of[1] = {
7949 { &hf_z3950_supportedVariants_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Variant },
7952 static int
7953 dissect_z3950_SEQUENCE_OF_Variant(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7954 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7955 SEQUENCE_OF_Variant_sequence_of, hf_index, ett_z3950_SEQUENCE_OF_Variant);
7957 return offset;
7961 static const ber_sequence_t TagPath_item_sequence[] = {
7962 { &hf_z3950_tagType , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7963 { &hf_z3950_tagValue , BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
7964 { &hf_z3950_tagOccurrence , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
7965 { NULL, 0, 0, 0, NULL }
7968 static int
7969 dissect_z3950_TagPath_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7970 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
7971 TagPath_item_sequence, hf_index, ett_z3950_TagPath_item);
7973 return offset;
7977 static const ber_sequence_t TagPath_sequence_of[1] = {
7978 { &hf_z3950_TagPath_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_TagPath_item },
7981 static int
7982 dissect_z3950_TagPath(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
7983 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
7984 TagPath_sequence_of, hf_index, ett_z3950_TagPath);
7986 return offset;
7990 static const ber_sequence_t ElementMetaData_sequence[] = {
7991 { &hf_z3950_seriesOrder , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Order },
7992 { &hf_z3950_usageRight , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Usage },
7993 { &hf_z3950_hits , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_HitVector },
7994 { &hf_z3950_displayName , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7995 { &hf_z3950_supportedVariants, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_Variant },
7996 { &hf_z3950_message , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
7997 { &hf_z3950_elementDescriptor, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
7998 { &hf_z3950_surrogateFor , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_TagPath },
7999 { &hf_z3950_surrogateElement, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_TagPath },
8000 { &hf_z3950_other , BER_CLASS_CON, 99, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
8001 { NULL, 0, 0, 0, NULL }
8004 static int
8005 dissect_z3950_ElementMetaData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8006 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8007 ElementMetaData_sequence, hf_index, ett_z3950_ElementMetaData);
8009 return offset;
8013 static const ber_sequence_t TaggedElement_sequence[] = {
8014 { &hf_z3950_tagType , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
8015 { &hf_z3950_tagValue , BER_CLASS_CON, 2, BER_FLAGS_NOTCHKTAG, dissect_z3950_StringOrNumeric },
8016 { &hf_z3950_tagOccurrence , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
8017 { &hf_z3950_taggedElement_content, BER_CLASS_CON, 4, BER_FLAGS_NOTCHKTAG, dissect_z3950_ElementData },
8018 { &hf_z3950_metaData , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ElementMetaData },
8019 { &hf_z3950_appliedVariant, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Variant },
8020 { NULL, 0, 0, 0, NULL }
8023 static int
8024 dissect_z3950_TaggedElement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8025 // TaggedElement -> ElementData -> ElementData/subtree -> TaggedElement
8026 actx->pinfo->dissection_depth += 3;
8027 increment_dissection_depth(actx->pinfo);
8028 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8029 TaggedElement_sequence, hf_index, ett_z3950_TaggedElement);
8031 actx->pinfo->dissection_depth -= 3;
8032 decrement_dissection_depth(actx->pinfo);
8033 return offset;
8037 static const ber_sequence_t GenericRecord_sequence_of[1] = {
8038 { &hf_z3950_GenericRecord_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_TaggedElement },
8041 static int
8042 dissect_z3950_GenericRecord(bool 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_of(implicit_tag, actx, tree, tvb, offset,
8044 GenericRecord_sequence_of, hf_index, ett_z3950_GenericRecord);
8046 return offset;
8050 static const value_string z3950_T_taskStatus_vals[] = {
8051 { 0, "pending" },
8052 { 1, "active" },
8053 { 2, "complete" },
8054 { 3, "aborted" },
8055 { 0, NULL }
8059 static int
8060 dissect_z3950_T_taskStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8061 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
8062 NULL);
8064 return offset;
8068 static const ber_sequence_t TaskPackage_sequence[] = {
8069 { &hf_z3950_packageType , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_OBJECT_IDENTIFIER },
8070 { &hf_z3950_packageName , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8071 { &hf_z3950_userId , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8072 { &hf_z3950_retentionTime , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
8073 { &hf_z3950_permissions , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_Permissions },
8074 { &hf_z3950_taskPackage_description, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8075 { &hf_z3950_targetReference, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
8076 { &hf_z3950_creationDateTime, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_GeneralizedTime },
8077 { &hf_z3950_taskStatus , BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_z3950_T_taskStatus },
8078 { &hf_z3950_packageDiagnostics, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DiagRec },
8079 { &hf_z3950_taskSpecificParameters, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
8080 { NULL, 0, 0, 0, NULL }
8083 static int
8084 dissect_z3950_TaskPackage(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8085 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8086 TaskPackage_sequence, hf_index, ett_z3950_TaskPackage);
8088 return offset;
8092 static const value_string z3950_T_promptId_enummeratedPrompt_type_vals[] = {
8093 { 0, "groupId" },
8094 { 1, "userId" },
8095 { 2, "password" },
8096 { 3, "newPassword" },
8097 { 4, "copyright" },
8098 { 5, "sessionId" },
8099 { 0, NULL }
8103 static int
8104 dissect_z3950_T_promptId_enummeratedPrompt_type(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8105 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
8106 NULL);
8108 return offset;
8112 static const ber_sequence_t T_enummeratedPrompt_sequence[] = {
8113 { &hf_z3950_promptId_enummeratedPrompt_type, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_promptId_enummeratedPrompt_type },
8114 { &hf_z3950_suggestedString, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8115 { NULL, 0, 0, 0, NULL }
8118 static int
8119 dissect_z3950_T_enummeratedPrompt(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8120 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8121 T_enummeratedPrompt_sequence, hf_index, ett_z3950_T_enummeratedPrompt);
8123 return offset;
8127 static const value_string z3950_PromptId_vals[] = {
8128 { 1, "enummeratedPrompt" },
8129 { 2, "nonEnumeratedPrompt" },
8130 { 0, NULL }
8133 static const ber_choice_t PromptId_choice[] = {
8134 { 1, &hf_z3950_enummeratedPrompt, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_enummeratedPrompt },
8135 { 2, &hf_z3950_nonEnumeratedPrompt, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8136 { 0, NULL, 0, 0, 0, NULL }
8139 static int
8140 dissect_z3950_PromptId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8141 offset = dissect_ber_choice(actx, tree, tvb, offset,
8142 PromptId_choice, hf_index, ett_z3950_PromptId,
8143 NULL);
8145 return offset;
8149 static const ber_sequence_t Encryption_sequence[] = {
8150 { &hf_z3950_cryptType , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
8151 { &hf_z3950_credential , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
8152 { &hf_z3950_data , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
8153 { NULL, 0, 0, 0, NULL }
8156 static int
8157 dissect_z3950_Encryption(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8158 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8159 Encryption_sequence, hf_index, ett_z3950_Encryption);
8161 return offset;
8165 static const value_string z3950_T_promptInfo_vals[] = {
8166 { 1, "character" },
8167 { 2, "encrypted" },
8168 { 0, NULL }
8171 static const ber_choice_t T_promptInfo_choice[] = {
8172 { 1, &hf_z3950_challenge_item_promptInfo_character, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8173 { 2, &hf_z3950_encrypted , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_Encryption },
8174 { 0, NULL, 0, 0, 0, NULL }
8177 static int
8178 dissect_z3950_T_promptInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8179 offset = dissect_ber_choice(actx, tree, tvb, offset,
8180 T_promptInfo_choice, hf_index, ett_z3950_T_promptInfo,
8181 NULL);
8183 return offset;
8187 static const value_string z3950_T_challenge_item_dataType_vals[] = {
8188 { 1, "integer" },
8189 { 2, "date" },
8190 { 3, "float" },
8191 { 4, "alphaNumeric" },
8192 { 5, "url-urn" },
8193 { 6, "boolean" },
8194 { 0, NULL }
8198 static int
8199 dissect_z3950_T_challenge_item_dataType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8200 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
8201 NULL);
8203 return offset;
8207 static const ber_sequence_t Challenge_item_sequence[] = {
8208 { &hf_z3950_promptId , BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_z3950_PromptId },
8209 { &hf_z3950_defaultResponse, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8210 { &hf_z3950_promptInfo , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_z3950_T_promptInfo },
8211 { &hf_z3950_regExpr , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8212 { &hf_z3950_responseRequired, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
8213 { &hf_z3950_allowedValues , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_InternationalString },
8214 { &hf_z3950_shouldSave , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
8215 { &hf_z3950_challenge_item_dataType, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_T_challenge_item_dataType },
8216 { &hf_z3950_challenge_item_diagnostic, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_EXTERNAL },
8217 { NULL, 0, 0, 0, NULL }
8220 static int
8221 dissect_z3950_Challenge_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8222 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8223 Challenge_item_sequence, hf_index, ett_z3950_Challenge_item);
8225 return offset;
8229 static const ber_sequence_t Challenge_sequence_of[1] = {
8230 { &hf_z3950_Challenge_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Challenge_item },
8233 static int
8234 dissect_z3950_Challenge(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8235 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
8236 Challenge_sequence_of, hf_index, ett_z3950_Challenge);
8238 return offset;
8242 static const value_string z3950_T_promptResponse_vals[] = {
8243 { 1, "string" },
8244 { 2, "accept" },
8245 { 3, "acknowledge" },
8246 { 4, "diagnostic" },
8247 { 5, "encrypted" },
8248 { 0, NULL }
8251 static const ber_choice_t T_promptResponse_choice[] = {
8252 { 1, &hf_z3950_string , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8253 { 2, &hf_z3950_accept , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
8254 { 3, &hf_z3950_acknowledge , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
8255 { 4, &hf_z3950_diagnostic , BER_CLASS_CON, 4, 0, dissect_z3950_DiagRec },
8256 { 5, &hf_z3950_encrypted , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_z3950_Encryption },
8257 { 0, NULL, 0, 0, 0, NULL }
8260 static int
8261 dissect_z3950_T_promptResponse(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8262 offset = dissect_ber_choice(actx, tree, tvb, offset,
8263 T_promptResponse_choice, hf_index, ett_z3950_T_promptResponse,
8264 NULL);
8266 return offset;
8270 static const ber_sequence_t Response_item_sequence[] = {
8271 { &hf_z3950_promptId , BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_z3950_PromptId },
8272 { &hf_z3950_promptResponse, BER_CLASS_CON, 2, 0, dissect_z3950_T_promptResponse },
8273 { NULL, 0, 0, 0, NULL }
8276 static int
8277 dissect_z3950_Response_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8278 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8279 Response_item_sequence, hf_index, ett_z3950_Response_item);
8281 return offset;
8285 static const ber_sequence_t Response_sequence_of[1] = {
8286 { &hf_z3950_Response_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_Response_item },
8289 static int
8290 dissect_z3950_Response(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8291 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
8292 Response_sequence_of, hf_index, ett_z3950_Response);
8294 return offset;
8298 static const value_string z3950_PromptObject_vals[] = {
8299 { 1, "challenge" },
8300 { 2, "response" },
8301 { 0, NULL }
8304 static const ber_choice_t PromptObject_choice[] = {
8305 { 1, &hf_z3950_challenge , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_Challenge },
8306 { 2, &hf_z3950_response , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_Response },
8307 { 0, NULL, 0, 0, 0, NULL }
8310 static int
8311 dissect_z3950_PromptObject(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8312 offset = dissect_ber_choice(actx, tree, tvb, offset,
8313 PromptObject_choice, hf_index, ett_z3950_PromptObject,
8314 NULL);
8316 return offset;
8320 static const ber_sequence_t DRNType_sequence[] = {
8321 { &hf_z3950_dRNType_userId, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
8322 { &hf_z3950_salt , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
8323 { &hf_z3950_randomNumber , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
8324 { NULL, 0, 0, 0, NULL }
8327 static int
8328 dissect_z3950_DRNType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8329 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8330 DRNType_sequence, hf_index, ett_z3950_DRNType);
8332 return offset;
8336 static const value_string z3950_DES_RN_Object_vals[] = {
8337 { 1, "challenge" },
8338 { 2, "response" },
8339 { 0, NULL }
8342 static const ber_choice_t DES_RN_Object_choice[] = {
8343 { 1, &hf_z3950_dES_RN_Object_challenge, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_DRNType },
8344 { 2, &hf_z3950_rES_RN_Object_response, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_DRNType },
8345 { 0, NULL, 0, 0, 0, NULL }
8348 static int
8349 dissect_z3950_DES_RN_Object(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8350 offset = dissect_ber_choice(actx, tree, tvb, offset,
8351 DES_RN_Object_choice, hf_index, ett_z3950_DES_RN_Object,
8352 NULL);
8354 return offset;
8358 static const ber_sequence_t KRBRequest_sequence[] = {
8359 { &hf_z3950_service , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8360 { &hf_z3950_instance , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8361 { &hf_z3950_realm , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8362 { NULL, 0, 0, 0, NULL }
8365 static int
8366 dissect_z3950_KRBRequest(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8367 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8368 KRBRequest_sequence, hf_index, ett_z3950_KRBRequest);
8370 return offset;
8374 static const ber_sequence_t KRBResponse_sequence[] = {
8375 { &hf_z3950_userid , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8376 { &hf_z3950_ticket , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_OCTET_STRING },
8377 { NULL, 0, 0, 0, NULL }
8380 static int
8381 dissect_z3950_KRBResponse(bool 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_sequence(implicit_tag, actx, tree, tvb, offset,
8383 KRBResponse_sequence, hf_index, ett_z3950_KRBResponse);
8385 return offset;
8389 static const value_string z3950_KRBObject_vals[] = {
8390 { 1, "challenge" },
8391 { 2, "response" },
8392 { 0, NULL }
8395 static const ber_choice_t KRBObject_choice[] = {
8396 { 1, &hf_z3950_kRBObject_challenge, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_KRBRequest },
8397 { 2, &hf_z3950_kRBObject_response, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_KRBResponse },
8398 { 0, NULL, 0, 0, 0, NULL }
8401 static int
8402 dissect_z3950_KRBObject(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8403 offset = dissect_ber_choice(actx, tree, tvb, offset,
8404 KRBObject_choice, hf_index, ett_z3950_KRBObject,
8405 NULL);
8407 return offset;
8411 static const ber_sequence_t T_queryExpression_term_sequence[] = {
8412 { &hf_z3950_queryTerm , BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_z3950_Term },
8413 { &hf_z3950_termComment , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8414 { NULL, 0, 0, 0, NULL }
8417 static int
8418 dissect_z3950_T_queryExpression_term(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8419 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8420 T_queryExpression_term_sequence, hf_index, ett_z3950_T_queryExpression_term);
8422 return offset;
8426 static const value_string z3950_QueryExpression_vals[] = {
8427 { 1, "term" },
8428 { 2, "query" },
8429 { 0, NULL }
8432 static const ber_choice_t QueryExpression_choice[] = {
8433 { 1, &hf_z3950_queryExpression_term, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_T_queryExpression_term },
8434 { 2, &hf_z3950_query , BER_CLASS_CON, 2, 0, dissect_z3950_Query },
8435 { 0, NULL, 0, 0, 0, NULL }
8438 static int
8439 dissect_z3950_QueryExpression(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8440 offset = dissect_ber_choice(actx, tree, tvb, offset,
8441 QueryExpression_choice, hf_index, ett_z3950_QueryExpression,
8442 NULL);
8444 return offset;
8448 static const value_string z3950_T_databases_vals[] = {
8449 { 1, "all" },
8450 { 2, "list" },
8451 { 0, NULL }
8454 static const ber_choice_t T_databases_choice[] = {
8455 { 1, &hf_z3950_all , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_z3950_NULL },
8456 { 2, &hf_z3950_list , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_SEQUENCE_OF_DatabaseName },
8457 { 0, NULL, 0, 0, 0, NULL }
8460 static int
8461 dissect_z3950_T_databases(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8462 offset = dissect_ber_choice(actx, tree, tvb, offset,
8463 T_databases_choice, hf_index, ett_z3950_T_databases,
8464 NULL);
8466 return offset;
8470 static const ber_sequence_t ResultsByDB_item_sequence[] = {
8471 { &hf_z3950_databases , BER_CLASS_CON, 1, 0, dissect_z3950_T_databases },
8472 { &hf_z3950_count , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
8473 { &hf_z3950_resultSetName , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8474 { NULL, 0, 0, 0, NULL }
8477 static int
8478 dissect_z3950_ResultsByDB_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8479 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8480 ResultsByDB_item_sequence, hf_index, ett_z3950_ResultsByDB_item);
8482 return offset;
8486 static const ber_sequence_t ResultsByDB_sequence_of[1] = {
8487 { &hf_z3950_ResultsByDB_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_ResultsByDB_item },
8490 static int
8491 dissect_z3950_ResultsByDB(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8492 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
8493 ResultsByDB_sequence_of, hf_index, ett_z3950_ResultsByDB);
8495 return offset;
8499 static const ber_sequence_t SearchInfoReport_item_sequence[] = {
8500 { &hf_z3950_subqueryId , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_InternationalString },
8501 { &hf_z3950_fullQuery , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_z3950_BOOLEAN },
8502 { &hf_z3950_subqueryExpression, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_QueryExpression },
8503 { &hf_z3950_subqueryInterpretation, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_QueryExpression },
8504 { &hf_z3950_subqueryRecommendation, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_z3950_QueryExpression },
8505 { &hf_z3950_subqueryCount , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_INTEGER },
8506 { &hf_z3950_subqueryWeight, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_IntUnit },
8507 { &hf_z3950_resultsByDB , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_z3950_ResultsByDB },
8508 { NULL, 0, 0, 0, NULL }
8511 static int
8512 dissect_z3950_SearchInfoReport_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8513 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
8514 SearchInfoReport_item_sequence, hf_index, ett_z3950_SearchInfoReport_item);
8516 return offset;
8520 static const ber_sequence_t SearchInfoReport_sequence_of[1] = {
8521 { &hf_z3950_SearchInfoReport_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_z3950_SearchInfoReport_item },
8524 static int
8525 dissect_z3950_SearchInfoReport(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
8526 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
8527 SearchInfoReport_sequence_of, hf_index, ett_z3950_SearchInfoReport);
8529 return offset;
8532 /*--- PDUs ---*/
8534 static int dissect_OCLC_UserInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8535 int offset = 0;
8536 asn1_ctx_t asn1_ctx;
8537 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
8538 offset = dissect_z3950_OCLC_UserInformation(false, tvb, offset, &asn1_ctx, tree, hf_z3950_OCLC_UserInformation_PDU);
8539 return offset;
8541 static int dissect_SutrsRecord_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8542 int offset = 0;
8543 asn1_ctx_t asn1_ctx;
8544 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
8545 offset = dissect_z3950_SutrsRecord(false, tvb, offset, &asn1_ctx, tree, hf_z3950_SutrsRecord_PDU);
8546 return offset;
8548 static int dissect_OPACRecord_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8549 int offset = 0;
8550 asn1_ctx_t asn1_ctx;
8551 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
8552 offset = dissect_z3950_OPACRecord(false, tvb, offset, &asn1_ctx, tree, hf_z3950_OPACRecord_PDU);
8553 return offset;
8555 static int dissect_DiagnosticFormat_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8556 int offset = 0;
8557 asn1_ctx_t asn1_ctx;
8558 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
8559 offset = dissect_z3950_DiagnosticFormat(false, tvb, offset, &asn1_ctx, tree, hf_z3950_DiagnosticFormat_PDU);
8560 return offset;
8562 static int dissect_Explain_Record_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8563 int offset = 0;
8564 asn1_ctx_t asn1_ctx;
8565 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
8566 offset = dissect_z3950_Explain_Record(false, tvb, offset, &asn1_ctx, tree, hf_z3950_Explain_Record_PDU);
8567 return offset;
8569 static int dissect_BriefBib_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8570 int offset = 0;
8571 asn1_ctx_t asn1_ctx;
8572 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
8573 offset = dissect_z3950_BriefBib(false, tvb, offset, &asn1_ctx, tree, hf_z3950_BriefBib_PDU);
8574 return offset;
8576 static int dissect_GenericRecord_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8577 int offset = 0;
8578 asn1_ctx_t asn1_ctx;
8579 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
8580 offset = dissect_z3950_GenericRecord(false, tvb, offset, &asn1_ctx, tree, hf_z3950_GenericRecord_PDU);
8581 return offset;
8583 static int dissect_TaskPackage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8584 int offset = 0;
8585 asn1_ctx_t asn1_ctx;
8586 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
8587 offset = dissect_z3950_TaskPackage(false, tvb, offset, &asn1_ctx, tree, hf_z3950_TaskPackage_PDU);
8588 return offset;
8590 static int dissect_PromptObject_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8591 int offset = 0;
8592 asn1_ctx_t asn1_ctx;
8593 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
8594 offset = dissect_z3950_PromptObject(false, tvb, offset, &asn1_ctx, tree, hf_z3950_PromptObject_PDU);
8595 return offset;
8597 static int dissect_DES_RN_Object_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8598 int offset = 0;
8599 asn1_ctx_t asn1_ctx;
8600 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
8601 offset = dissect_z3950_DES_RN_Object(false, tvb, offset, &asn1_ctx, tree, hf_z3950_DES_RN_Object_PDU);
8602 return offset;
8604 static int dissect_KRBObject_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8605 int offset = 0;
8606 asn1_ctx_t asn1_ctx;
8607 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
8608 offset = dissect_z3950_KRBObject(false, tvb, offset, &asn1_ctx, tree, hf_z3950_KRBObject_PDU);
8609 return offset;
8611 static int dissect_SearchInfoReport_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
8612 int offset = 0;
8613 asn1_ctx_t asn1_ctx;
8614 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
8615 offset = dissect_z3950_SearchInfoReport(false, tvb, offset, &asn1_ctx, tree, hf_z3950_SearchInfoReport_PDU);
8616 return offset;
8620 static int
8621 dissect_z3950(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
8623 proto_item *z3950_item = NULL;
8624 proto_tree *z3950_tree = NULL;
8625 int offset = 0;
8626 asn1_ctx_t asn1_ctx;
8627 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
8630 /* make entry in the Protocol column on summary display */
8631 col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
8633 /* create the z3950 protocol tree */
8634 z3950_item = proto_tree_add_item(tree, proto_z3950, tvb, 0, -1, ENC_NA);
8635 z3950_tree = proto_item_add_subtree(z3950_item, ett_z3950);
8637 return dissect_z3950_PDU(false, tvb, offset, &asn1_ctx, z3950_tree, -1);
8640 static unsigned
8641 get_z3950_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset, void *data _U_)
8643 unsigned plen;
8644 unsigned ber_offset;
8645 TRY {
8646 /* Skip past identifier */
8647 ber_offset = get_ber_identifier(tvb, offset, NULL, NULL, NULL);
8648 ber_offset = get_ber_length(tvb, ber_offset, &plen, NULL);
8649 plen += (ber_offset - offset);
8651 CATCH(ReportedBoundsError) {
8652 plen = 0;
8654 ENDTRY;
8656 return plen;
8659 static int
8660 dissect_z3950_segment(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void * data _U_)
8663 /* Min length of 8 assumes 3 for identifier and 5 for length. */
8664 tcp_dissect_pdus(tvb, pinfo, tree, z3950_desegment, 8, get_z3950_pdu_len, dissect_z3950, data);
8665 return tvb_captured_length(tvb);
8668 /*--- proto_register_z3950 -------------------------------------------*/
8669 void proto_register_z3950(void) {
8671 /* List of fields */
8672 static hf_register_info hf[] = {
8674 { &hf_z3950_OCLC_UserInformation_PDU,
8675 { "OCLC-UserInformation", "z3950.OCLC_UserInformation_element",
8676 FT_NONE, BASE_NONE, NULL, 0,
8677 NULL, HFILL }},
8678 { &hf_z3950_SutrsRecord_PDU,
8679 { "SutrsRecord", "z3950.SutrsRecord",
8680 FT_STRING, BASE_NONE, NULL, 0,
8681 NULL, HFILL }},
8682 { &hf_z3950_OPACRecord_PDU,
8683 { "OPACRecord", "z3950.OPACRecord_element",
8684 FT_NONE, BASE_NONE, NULL, 0,
8685 NULL, HFILL }},
8686 { &hf_z3950_DiagnosticFormat_PDU,
8687 { "DiagnosticFormat", "z3950.DiagnosticFormat",
8688 FT_UINT32, BASE_DEC, NULL, 0,
8689 NULL, HFILL }},
8690 { &hf_z3950_Explain_Record_PDU,
8691 { "Explain-Record", "z3950.Explain_Record",
8692 FT_UINT32, BASE_DEC, VALS(z3950_Explain_Record_vals), 0,
8693 NULL, HFILL }},
8694 { &hf_z3950_BriefBib_PDU,
8695 { "BriefBib", "z3950.BriefBib_element",
8696 FT_NONE, BASE_NONE, NULL, 0,
8697 NULL, HFILL }},
8698 { &hf_z3950_GenericRecord_PDU,
8699 { "GenericRecord", "z3950.GenericRecord",
8700 FT_UINT32, BASE_DEC, NULL, 0,
8701 NULL, HFILL }},
8702 { &hf_z3950_TaskPackage_PDU,
8703 { "TaskPackage", "z3950.TaskPackage_element",
8704 FT_NONE, BASE_NONE, NULL, 0,
8705 NULL, HFILL }},
8706 { &hf_z3950_PromptObject_PDU,
8707 { "PromptObject", "z3950.PromptObject",
8708 FT_UINT32, BASE_DEC, VALS(z3950_PromptObject_vals), 0,
8709 NULL, HFILL }},
8710 { &hf_z3950_DES_RN_Object_PDU,
8711 { "DES-RN-Object", "z3950.DES_RN_Object",
8712 FT_UINT32, BASE_DEC, VALS(z3950_DES_RN_Object_vals), 0,
8713 NULL, HFILL }},
8714 { &hf_z3950_KRBObject_PDU,
8715 { "KRBObject", "z3950.KRBObject",
8716 FT_UINT32, BASE_DEC, VALS(z3950_KRBObject_vals), 0,
8717 NULL, HFILL }},
8718 { &hf_z3950_SearchInfoReport_PDU,
8719 { "SearchInfoReport", "z3950.SearchInfoReport",
8720 FT_UINT32, BASE_DEC, NULL, 0,
8721 NULL, HFILL }},
8722 { &hf_z3950_initRequest,
8723 { "initRequest", "z3950.initRequest_element",
8724 FT_NONE, BASE_NONE, NULL, 0,
8725 "InitializeRequest", HFILL }},
8726 { &hf_z3950_initResponse,
8727 { "initResponse", "z3950.initResponse_element",
8728 FT_NONE, BASE_NONE, NULL, 0,
8729 "InitializeResponse", HFILL }},
8730 { &hf_z3950_searchRequest,
8731 { "searchRequest", "z3950.searchRequest_element",
8732 FT_NONE, BASE_NONE, NULL, 0,
8733 NULL, HFILL }},
8734 { &hf_z3950_searchResponse,
8735 { "searchResponse", "z3950.searchResponse_element",
8736 FT_NONE, BASE_NONE, NULL, 0,
8737 NULL, HFILL }},
8738 { &hf_z3950_presentRequest,
8739 { "presentRequest", "z3950.presentRequest_element",
8740 FT_NONE, BASE_NONE, NULL, 0,
8741 NULL, HFILL }},
8742 { &hf_z3950_presentResponse,
8743 { "presentResponse", "z3950.presentResponse_element",
8744 FT_NONE, BASE_NONE, NULL, 0,
8745 NULL, HFILL }},
8746 { &hf_z3950_deleteResultSetRequest,
8747 { "deleteResultSetRequest", "z3950.deleteResultSetRequest_element",
8748 FT_NONE, BASE_NONE, NULL, 0,
8749 NULL, HFILL }},
8750 { &hf_z3950_deleteResultSetResponse,
8751 { "deleteResultSetResponse", "z3950.deleteResultSetResponse_element",
8752 FT_NONE, BASE_NONE, NULL, 0,
8753 NULL, HFILL }},
8754 { &hf_z3950_accessControlRequest,
8755 { "accessControlRequest", "z3950.accessControlRequest_element",
8756 FT_NONE, BASE_NONE, NULL, 0,
8757 NULL, HFILL }},
8758 { &hf_z3950_accessControlResponse,
8759 { "accessControlResponse", "z3950.accessControlResponse_element",
8760 FT_NONE, BASE_NONE, NULL, 0,
8761 NULL, HFILL }},
8762 { &hf_z3950_resourceControlRequest,
8763 { "resourceControlRequest", "z3950.resourceControlRequest_element",
8764 FT_NONE, BASE_NONE, NULL, 0,
8765 NULL, HFILL }},
8766 { &hf_z3950_resourceControlResponse,
8767 { "resourceControlResponse", "z3950.resourceControlResponse_element",
8768 FT_NONE, BASE_NONE, NULL, 0,
8769 NULL, HFILL }},
8770 { &hf_z3950_triggerResourceControlRequest,
8771 { "triggerResourceControlRequest", "z3950.triggerResourceControlRequest_element",
8772 FT_NONE, BASE_NONE, NULL, 0,
8773 NULL, HFILL }},
8774 { &hf_z3950_resourceReportRequest,
8775 { "resourceReportRequest", "z3950.resourceReportRequest_element",
8776 FT_NONE, BASE_NONE, NULL, 0,
8777 NULL, HFILL }},
8778 { &hf_z3950_resourceReportResponse,
8779 { "resourceReportResponse", "z3950.resourceReportResponse_element",
8780 FT_NONE, BASE_NONE, NULL, 0,
8781 NULL, HFILL }},
8782 { &hf_z3950_scanRequest,
8783 { "scanRequest", "z3950.scanRequest_element",
8784 FT_NONE, BASE_NONE, NULL, 0,
8785 NULL, HFILL }},
8786 { &hf_z3950_scanResponse,
8787 { "scanResponse", "z3950.scanResponse_element",
8788 FT_NONE, BASE_NONE, NULL, 0,
8789 NULL, HFILL }},
8790 { &hf_z3950_sortRequest,
8791 { "sortRequest", "z3950.sortRequest_element",
8792 FT_NONE, BASE_NONE, NULL, 0,
8793 NULL, HFILL }},
8794 { &hf_z3950_sortResponse,
8795 { "sortResponse", "z3950.sortResponse_element",
8796 FT_NONE, BASE_NONE, NULL, 0,
8797 NULL, HFILL }},
8798 { &hf_z3950_segmentRequest,
8799 { "segmentRequest", "z3950.segmentRequest_element",
8800 FT_NONE, BASE_NONE, NULL, 0,
8801 "Segment", HFILL }},
8802 { &hf_z3950_extendedServicesRequest,
8803 { "extendedServicesRequest", "z3950.extendedServicesRequest_element",
8804 FT_NONE, BASE_NONE, NULL, 0,
8805 NULL, HFILL }},
8806 { &hf_z3950_extendedServicesResponse,
8807 { "extendedServicesResponse", "z3950.extendedServicesResponse_element",
8808 FT_NONE, BASE_NONE, NULL, 0,
8809 NULL, HFILL }},
8810 { &hf_z3950_close,
8811 { "close", "z3950.close_element",
8812 FT_NONE, BASE_NONE, NULL, 0,
8813 NULL, HFILL }},
8814 { &hf_z3950_referenceId,
8815 { "referenceId", "z3950.referenceId",
8816 FT_BYTES, BASE_NONE, NULL, 0,
8817 NULL, HFILL }},
8818 { &hf_z3950_protocolVersion,
8819 { "protocolVersion", "z3950.protocolVersion",
8820 FT_BYTES, BASE_NONE, NULL, 0,
8821 NULL, HFILL }},
8822 { &hf_z3950_options,
8823 { "options", "z3950.options",
8824 FT_BYTES, BASE_NONE, NULL, 0,
8825 NULL, HFILL }},
8826 { &hf_z3950_preferredMessageSize,
8827 { "preferredMessageSize", "z3950.preferredMessageSize",
8828 FT_INT32, BASE_DEC, NULL, 0,
8829 "INTEGER", HFILL }},
8830 { &hf_z3950_exceptionalRecordSize,
8831 { "exceptionalRecordSize", "z3950.exceptionalRecordSize",
8832 FT_INT32, BASE_DEC, NULL, 0,
8833 "INTEGER", HFILL }},
8834 { &hf_z3950_idAuthentication,
8835 { "idAuthentication", "z3950.idAuthentication",
8836 FT_UINT32, BASE_DEC, VALS(z3950_T_idAuthentication_vals), 0,
8837 NULL, HFILL }},
8838 { &hf_z3950_open,
8839 { "open", "z3950.open",
8840 FT_STRING, BASE_NONE, NULL, 0,
8841 "VisibleString", HFILL }},
8842 { &hf_z3950_idPass,
8843 { "idPass", "z3950.idPass_element",
8844 FT_NONE, BASE_NONE, NULL, 0,
8845 NULL, HFILL }},
8846 { &hf_z3950_groupId,
8847 { "groupId", "z3950.groupId",
8848 FT_STRING, BASE_NONE, NULL, 0,
8849 "InternationalString", HFILL }},
8850 { &hf_z3950_userId,
8851 { "userId", "z3950.userId",
8852 FT_STRING, BASE_NONE, NULL, 0,
8853 "InternationalString", HFILL }},
8854 { &hf_z3950_password,
8855 { "password", "z3950.password",
8856 FT_STRING, BASE_NONE, NULL, 0,
8857 "InternationalString", HFILL }},
8858 { &hf_z3950_anonymous,
8859 { "anonymous", "z3950.anonymous_element",
8860 FT_NONE, BASE_NONE, NULL, 0,
8861 NULL, HFILL }},
8862 { &hf_z3950_other,
8863 { "other", "z3950.other_element",
8864 FT_NONE, BASE_NONE, NULL, 0,
8865 "EXTERNAL", HFILL }},
8866 { &hf_z3950_implementationId,
8867 { "implementationId", "z3950.implementationId",
8868 FT_STRING, BASE_NONE, NULL, 0,
8869 "InternationalString", HFILL }},
8870 { &hf_z3950_implementationName,
8871 { "implementationName", "z3950.implementationName",
8872 FT_STRING, BASE_NONE, NULL, 0,
8873 "InternationalString", HFILL }},
8874 { &hf_z3950_implementationVersion,
8875 { "implementationVersion", "z3950.implementationVersion",
8876 FT_STRING, BASE_NONE, NULL, 0,
8877 "InternationalString", HFILL }},
8878 { &hf_z3950_userInformationField,
8879 { "userInformationField", "z3950.userInformationField_element",
8880 FT_NONE, BASE_NONE, NULL, 0,
8881 "EXTERNAL", HFILL }},
8882 { &hf_z3950_otherInfo,
8883 { "otherInfo", "z3950.otherInfo",
8884 FT_UINT32, BASE_DEC, NULL, 0,
8885 "OtherInformation", HFILL }},
8886 { &hf_z3950_result,
8887 { "result", "z3950.result",
8888 FT_BOOLEAN, BASE_NONE, NULL, 0,
8889 "BOOLEAN", HFILL }},
8890 { &hf_z3950_smallSetUpperBound,
8891 { "smallSetUpperBound", "z3950.smallSetUpperBound",
8892 FT_INT32, BASE_DEC, NULL, 0,
8893 "INTEGER", HFILL }},
8894 { &hf_z3950_largeSetLowerBound,
8895 { "largeSetLowerBound", "z3950.largeSetLowerBound",
8896 FT_INT32, BASE_DEC, NULL, 0,
8897 "INTEGER", HFILL }},
8898 { &hf_z3950_mediumSetPresentNumber,
8899 { "mediumSetPresentNumber", "z3950.mediumSetPresentNumber",
8900 FT_INT32, BASE_DEC, NULL, 0,
8901 "INTEGER", HFILL }},
8902 { &hf_z3950_replaceIndicator,
8903 { "replaceIndicator", "z3950.replaceIndicator",
8904 FT_BOOLEAN, BASE_NONE, NULL, 0,
8905 "BOOLEAN", HFILL }},
8906 { &hf_z3950_resultSetName,
8907 { "resultSetName", "z3950.resultSetName",
8908 FT_STRING, BASE_NONE, NULL, 0,
8909 "InternationalString", HFILL }},
8910 { &hf_z3950_databaseNames,
8911 { "databaseNames", "z3950.databaseNames",
8912 FT_UINT32, BASE_DEC, NULL, 0,
8913 "SEQUENCE_OF_DatabaseName", HFILL }},
8914 { &hf_z3950_databaseNames_item,
8915 { "DatabaseName", "z3950.DatabaseName",
8916 FT_STRING, BASE_NONE, NULL, 0,
8917 NULL, HFILL }},
8918 { &hf_z3950_smallSetElementSetNames,
8919 { "smallSetElementSetNames", "z3950.smallSetElementSetNames",
8920 FT_UINT32, BASE_DEC, VALS(z3950_ElementSetNames_vals), 0,
8921 "ElementSetNames", HFILL }},
8922 { &hf_z3950_mediumSetElementSetNames,
8923 { "mediumSetElementSetNames", "z3950.mediumSetElementSetNames",
8924 FT_UINT32, BASE_DEC, VALS(z3950_ElementSetNames_vals), 0,
8925 "ElementSetNames", HFILL }},
8926 { &hf_z3950_preferredRecordSyntax,
8927 { "preferredRecordSyntax", "z3950.preferredRecordSyntax",
8928 FT_OID, BASE_NONE, NULL, 0,
8929 "OBJECT_IDENTIFIER", HFILL }},
8930 { &hf_z3950_query,
8931 { "query", "z3950.query",
8932 FT_UINT32, BASE_DEC, VALS(z3950_Query_vals), 0,
8933 NULL, HFILL }},
8934 { &hf_z3950_additionalSearchInfo,
8935 { "additionalSearchInfo", "z3950.additionalSearchInfo",
8936 FT_UINT32, BASE_DEC, NULL, 0,
8937 "OtherInformation", HFILL }},
8938 { &hf_z3950_type_0,
8939 { "type-0", "z3950.type_0_element",
8940 FT_NONE, BASE_NONE, NULL, 0,
8941 NULL, HFILL }},
8942 { &hf_z3950_type_1,
8943 { "type-1", "z3950.type_1_element",
8944 FT_NONE, BASE_NONE, NULL, 0,
8945 "RPNQuery", HFILL }},
8946 { &hf_z3950_type_2,
8947 { "type-2", "z3950.type_2",
8948 FT_BYTES, BASE_NONE, NULL, 0,
8949 "OCTET_STRING", HFILL }},
8950 { &hf_z3950_type_100,
8951 { "type-100", "z3950.type_100",
8952 FT_BYTES, BASE_NONE, NULL, 0,
8953 "OCTET_STRING", HFILL }},
8954 { &hf_z3950_type_101,
8955 { "type-101", "z3950.type_101_element",
8956 FT_NONE, BASE_NONE, NULL, 0,
8957 "RPNQuery", HFILL }},
8958 { &hf_z3950_type_102,
8959 { "type-102", "z3950.type_102",
8960 FT_BYTES, BASE_NONE, NULL, 0,
8961 "OCTET_STRING", HFILL }},
8962 { &hf_z3950_attributeSet,
8963 { "attributeSet", "z3950.attributeSet",
8964 FT_OID, BASE_NONE, NULL, 0,
8965 "AttributeSetId", HFILL }},
8966 { &hf_z3950_rpn,
8967 { "rpn", "z3950.rpn",
8968 FT_UINT32, BASE_DEC, VALS(z3950_RPNStructure_vals), 0,
8969 "RPNStructure", HFILL }},
8970 { &hf_z3950_operandRpnOp,
8971 { "op", "z3950.op",
8972 FT_UINT32, BASE_DEC, VALS(z3950_Operand_vals), 0,
8973 "Operand", HFILL }},
8974 { &hf_z3950_rpnRpnOp,
8975 { "rpnRpnOp", "z3950.rpnRpnOp_element",
8976 FT_NONE, BASE_NONE, NULL, 0,
8977 NULL, HFILL }},
8978 { &hf_z3950_rpn1,
8979 { "rpn1", "z3950.rpn1",
8980 FT_UINT32, BASE_DEC, VALS(z3950_RPNStructure_vals), 0,
8981 "RPNStructure", HFILL }},
8982 { &hf_z3950_rpn2,
8983 { "rpn2", "z3950.rpn2",
8984 FT_UINT32, BASE_DEC, VALS(z3950_RPNStructure_vals), 0,
8985 "RPNStructure", HFILL }},
8986 { &hf_z3950_operatorRpnOp,
8987 { "op", "z3950.op",
8988 FT_UINT32, BASE_DEC, VALS(z3950_Operator_U_vals), 0,
8989 "Operator", HFILL }},
8990 { &hf_z3950_attrTerm,
8991 { "attrTerm", "z3950.attrTerm_element",
8992 FT_NONE, BASE_NONE, NULL, 0,
8993 "AttributesPlusTerm", HFILL }},
8994 { &hf_z3950_resultSet,
8995 { "resultSet", "z3950.resultSet",
8996 FT_STRING, BASE_NONE, NULL, 0,
8997 "ResultSetId", HFILL }},
8998 { &hf_z3950_resultAttr,
8999 { "resultAttr", "z3950.resultAttr_element",
9000 FT_NONE, BASE_NONE, NULL, 0,
9001 "ResultSetPlusAttributes", HFILL }},
9002 { &hf_z3950_attributes,
9003 { "attributes", "z3950.attributes",
9004 FT_UINT32, BASE_DEC, NULL, 0,
9005 "AttributeList", HFILL }},
9006 { &hf_z3950_term,
9007 { "term", "z3950.term",
9008 FT_UINT32, BASE_DEC, VALS(z3950_Term_vals), 0,
9009 NULL, HFILL }},
9010 { &hf_z3950_attributeList_item,
9011 { "AttributeElement", "z3950.AttributeElement_element",
9012 FT_NONE, BASE_NONE, NULL, 0,
9013 NULL, HFILL }},
9014 { &hf_z3950_general,
9015 { "general", "z3950.general",
9016 FT_BYTES, BASE_NONE, NULL, 0,
9017 NULL, HFILL }},
9018 { &hf_z3950_numeric,
9019 { "numeric", "z3950.numeric",
9020 FT_INT32, BASE_DEC, NULL, 0,
9021 "INTEGER", HFILL }},
9022 { &hf_z3950_characterString,
9023 { "characterString", "z3950.characterString",
9024 FT_STRING, BASE_NONE, NULL, 0,
9025 "InternationalString", HFILL }},
9026 { &hf_z3950_oid,
9027 { "oid", "z3950.oid",
9028 FT_OID, BASE_NONE, NULL, 0,
9029 "OBJECT_IDENTIFIER", HFILL }},
9030 { &hf_z3950_dateTime,
9031 { "dateTime", "z3950.dateTime",
9032 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
9033 "GeneralizedTime", HFILL }},
9034 { &hf_z3950_external,
9035 { "external", "z3950.external_element",
9036 FT_NONE, BASE_NONE, NULL, 0,
9037 NULL, HFILL }},
9038 { &hf_z3950_integerAndUnit,
9039 { "integerAndUnit", "z3950.integerAndUnit_element",
9040 FT_NONE, BASE_NONE, NULL, 0,
9041 "IntUnit", HFILL }},
9042 { &hf_z3950_null,
9043 { "null", "z3950.null_element",
9044 FT_NONE, BASE_NONE, NULL, 0,
9045 NULL, HFILL }},
9046 { &hf_z3950_and,
9047 { "and", "z3950.and_element",
9048 FT_NONE, BASE_NONE, NULL, 0,
9049 NULL, HFILL }},
9050 { &hf_z3950_or,
9051 { "or", "z3950.or_element",
9052 FT_NONE, BASE_NONE, NULL, 0,
9053 NULL, HFILL }},
9054 { &hf_z3950_and_not,
9055 { "and-not", "z3950.and_not_element",
9056 FT_NONE, BASE_NONE, NULL, 0,
9057 NULL, HFILL }},
9058 { &hf_z3950_prox,
9059 { "prox", "z3950.prox_element",
9060 FT_NONE, BASE_NONE, NULL, 0,
9061 "ProximityOperator", HFILL }},
9062 { &hf_z3950_attributeElement_attributeType,
9063 { "attributeType", "z3950.attributeType",
9064 FT_INT32, BASE_DEC, NULL, 0,
9065 "T_attributeElement_attributeType", HFILL }},
9066 { &hf_z3950_attributeValue,
9067 { "attributeValue", "z3950.attributeValue",
9068 FT_UINT32, BASE_DEC, VALS(z3950_T_attributeValue_vals), 0,
9069 NULL, HFILL }},
9070 { &hf_z3950_attributeValue_numeric,
9071 { "numeric", "z3950.numeric",
9072 FT_INT32, BASE_DEC, NULL, 0,
9073 "T_attributeValue_numeric", HFILL }},
9074 { &hf_z3950_attributeValue_complex,
9075 { "complex", "z3950.complex_element",
9076 FT_NONE, BASE_NONE, NULL, 0,
9077 "T_attributeValue_complex", HFILL }},
9078 { &hf_z3950_attributeValue_complex_list,
9079 { "list", "z3950.list",
9080 FT_UINT32, BASE_DEC, NULL, 0,
9081 "SEQUENCE_OF_StringOrNumeric", HFILL }},
9082 { &hf_z3950_attributeValue_complex_list_item,
9083 { "StringOrNumeric", "z3950.StringOrNumeric",
9084 FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
9085 NULL, HFILL }},
9086 { &hf_z3950_semanticAction,
9087 { "semanticAction", "z3950.semanticAction",
9088 FT_UINT32, BASE_DEC, NULL, 0,
9089 NULL, HFILL }},
9090 { &hf_z3950_semanticAction_item,
9091 { "semanticAction item", "z3950.semanticAction_item",
9092 FT_INT32, BASE_DEC, NULL, 0,
9093 "INTEGER", HFILL }},
9094 { &hf_z3950_exclusion,
9095 { "exclusion", "z3950.exclusion",
9096 FT_BOOLEAN, BASE_NONE, NULL, 0,
9097 "BOOLEAN", HFILL }},
9098 { &hf_z3950_distance,
9099 { "distance", "z3950.distance",
9100 FT_INT32, BASE_DEC, NULL, 0,
9101 "INTEGER", HFILL }},
9102 { &hf_z3950_ordered,
9103 { "ordered", "z3950.ordered",
9104 FT_BOOLEAN, BASE_NONE, NULL, 0,
9105 "BOOLEAN", HFILL }},
9106 { &hf_z3950_relationType,
9107 { "relationType", "z3950.relationType",
9108 FT_INT32, BASE_DEC, VALS(z3950_T_relationType_vals), 0,
9109 NULL, HFILL }},
9110 { &hf_z3950_proximityUnitCode,
9111 { "proximityUnitCode", "z3950.proximityUnitCode",
9112 FT_UINT32, BASE_DEC, VALS(z3950_T_proximityUnitCode_vals), 0,
9113 NULL, HFILL }},
9114 { &hf_z3950_known,
9115 { "known", "z3950.known",
9116 FT_INT32, BASE_DEC, VALS(z3950_KnownProximityUnit_vals), 0,
9117 "KnownProximityUnit", HFILL }},
9118 { &hf_z3950_private,
9119 { "private", "z3950.private",
9120 FT_INT32, BASE_DEC, NULL, 0,
9121 "INTEGER", HFILL }},
9122 { &hf_z3950_resultCount,
9123 { "resultCount", "z3950.resultCount",
9124 FT_INT32, BASE_DEC, NULL, 0,
9125 "INTEGER", HFILL }},
9126 { &hf_z3950_numberOfRecordsReturned,
9127 { "numberOfRecordsReturned", "z3950.numberOfRecordsReturned",
9128 FT_INT32, BASE_DEC, NULL, 0,
9129 "INTEGER", HFILL }},
9130 { &hf_z3950_nextResultSetPosition,
9131 { "nextResultSetPosition", "z3950.nextResultSetPosition",
9132 FT_INT32, BASE_DEC, NULL, 0,
9133 "INTEGER", HFILL }},
9134 { &hf_z3950_searchStatus,
9135 { "searchStatus", "z3950.searchStatus",
9136 FT_BOOLEAN, BASE_NONE, NULL, 0,
9137 "BOOLEAN", HFILL }},
9138 { &hf_z3950_search_resultSetStatus,
9139 { "resultSetStatus", "z3950.resultSetStatus",
9140 FT_INT32, BASE_DEC, VALS(z3950_T_search_resultSetStatus_vals), 0,
9141 "T_search_resultSetStatus", HFILL }},
9142 { &hf_z3950_presentStatus,
9143 { "presentStatus", "z3950.presentStatus",
9144 FT_INT32, BASE_DEC, VALS(z3950_PresentStatus_U_vals), 0,
9145 NULL, HFILL }},
9146 { &hf_z3950_records,
9147 { "records", "z3950.records",
9148 FT_UINT32, BASE_DEC, VALS(z3950_Records_vals), 0,
9149 NULL, HFILL }},
9150 { &hf_z3950_resultSetId,
9151 { "resultSetId", "z3950.resultSetId",
9152 FT_STRING, BASE_NONE, NULL, 0,
9153 NULL, HFILL }},
9154 { &hf_z3950_resultSetStartPoint,
9155 { "resultSetStartPoint", "z3950.resultSetStartPoint",
9156 FT_INT32, BASE_DEC, NULL, 0,
9157 "INTEGER", HFILL }},
9158 { &hf_z3950_numberOfRecordsRequested,
9159 { "numberOfRecordsRequested", "z3950.numberOfRecordsRequested",
9160 FT_INT32, BASE_DEC, NULL, 0,
9161 "INTEGER", HFILL }},
9162 { &hf_z3950_additionalRanges,
9163 { "additionalRanges", "z3950.additionalRanges",
9164 FT_UINT32, BASE_DEC, NULL, 0,
9165 "SEQUENCE_OF_Range", HFILL }},
9166 { &hf_z3950_additionalRanges_item,
9167 { "Range", "z3950.Range_element",
9168 FT_NONE, BASE_NONE, NULL, 0,
9169 NULL, HFILL }},
9170 { &hf_z3950_recordComposition,
9171 { "recordComposition", "z3950.recordComposition",
9172 FT_UINT32, BASE_DEC, VALS(z3950_T_recordComposition_vals), 0,
9173 NULL, HFILL }},
9174 { &hf_z3950_simple,
9175 { "simple", "z3950.simple",
9176 FT_UINT32, BASE_DEC, VALS(z3950_ElementSetNames_vals), 0,
9177 "ElementSetNames", HFILL }},
9178 { &hf_z3950_recordComposition_complex,
9179 { "complex", "z3950.complex_element",
9180 FT_NONE, BASE_NONE, NULL, 0,
9181 "CompSpec", HFILL }},
9182 { &hf_z3950_maxSegmentCount,
9183 { "maxSegmentCount", "z3950.maxSegmentCount",
9184 FT_INT32, BASE_DEC, NULL, 0,
9185 "INTEGER", HFILL }},
9186 { &hf_z3950_maxRecordSize,
9187 { "maxRecordSize", "z3950.maxRecordSize",
9188 FT_INT32, BASE_DEC, NULL, 0,
9189 "INTEGER", HFILL }},
9190 { &hf_z3950_maxSegmentSize,
9191 { "maxSegmentSize", "z3950.maxSegmentSize",
9192 FT_INT32, BASE_DEC, NULL, 0,
9193 "INTEGER", HFILL }},
9194 { &hf_z3950_segmentRecords,
9195 { "segmentRecords", "z3950.segmentRecords",
9196 FT_UINT32, BASE_DEC, NULL, 0,
9197 "SEQUENCE_OF_NamePlusRecord", HFILL }},
9198 { &hf_z3950_segmentRecords_item,
9199 { "NamePlusRecord", "z3950.NamePlusRecord_element",
9200 FT_NONE, BASE_NONE, NULL, 0,
9201 NULL, HFILL }},
9202 { &hf_z3950_responseRecords,
9203 { "responseRecords", "z3950.responseRecords",
9204 FT_UINT32, BASE_DEC, NULL, 0,
9205 "SEQUENCE_OF_NamePlusRecord", HFILL }},
9206 { &hf_z3950_responseRecords_item,
9207 { "NamePlusRecord", "z3950.NamePlusRecord_element",
9208 FT_NONE, BASE_NONE, NULL, 0,
9209 NULL, HFILL }},
9210 { &hf_z3950_nonSurrogateDiagnostic,
9211 { "nonSurrogateDiagnostic", "z3950.nonSurrogateDiagnostic_element",
9212 FT_NONE, BASE_NONE, NULL, 0,
9213 "DefaultDiagFormat", HFILL }},
9214 { &hf_z3950_multipleNonSurDiagnostics,
9215 { "multipleNonSurDiagnostics", "z3950.multipleNonSurDiagnostics",
9216 FT_UINT32, BASE_DEC, NULL, 0,
9217 "SEQUENCE_OF_DiagRec", HFILL }},
9218 { &hf_z3950_multipleNonSurDiagnostics_item,
9219 { "DiagRec", "z3950.DiagRec",
9220 FT_UINT32, BASE_DEC, VALS(z3950_DiagRec_vals), 0,
9221 NULL, HFILL }},
9222 { &hf_z3950_namePlusRecord_name,
9223 { "name", "z3950.name",
9224 FT_STRING, BASE_NONE, NULL, 0,
9225 "DatabaseName", HFILL }},
9226 { &hf_z3950_record,
9227 { "record", "z3950.record",
9228 FT_UINT32, BASE_DEC, VALS(z3950_T_record_vals), 0,
9229 NULL, HFILL }},
9230 { &hf_z3950_retrievalRecord,
9231 { "retrievalRecord", "z3950.retrievalRecord_element",
9232 FT_NONE, BASE_NONE, NULL, 0,
9233 "EXTERNAL", HFILL }},
9234 { &hf_z3950_surrogateDiagnostic,
9235 { "surrogateDiagnostic", "z3950.surrogateDiagnostic",
9236 FT_UINT32, BASE_DEC, VALS(z3950_DiagRec_vals), 0,
9237 "DiagRec", HFILL }},
9238 { &hf_z3950_startingFragment,
9239 { "startingFragment", "z3950.startingFragment",
9240 FT_UINT32, BASE_DEC, VALS(z3950_FragmentSyntax_vals), 0,
9241 "FragmentSyntax", HFILL }},
9242 { &hf_z3950_intermediateFragment,
9243 { "intermediateFragment", "z3950.intermediateFragment",
9244 FT_UINT32, BASE_DEC, VALS(z3950_FragmentSyntax_vals), 0,
9245 "FragmentSyntax", HFILL }},
9246 { &hf_z3950_finalFragment,
9247 { "finalFragment", "z3950.finalFragment",
9248 FT_UINT32, BASE_DEC, VALS(z3950_FragmentSyntax_vals), 0,
9249 "FragmentSyntax", HFILL }},
9250 { &hf_z3950_externallyTagged,
9251 { "externallyTagged", "z3950.externallyTagged_element",
9252 FT_NONE, BASE_NONE, NULL, 0,
9253 "EXTERNAL", HFILL }},
9254 { &hf_z3950_notExternallyTagged,
9255 { "notExternallyTagged", "z3950.notExternallyTagged",
9256 FT_BYTES, BASE_NONE, NULL, 0,
9257 "OCTET_STRING", HFILL }},
9258 { &hf_z3950_defaultFormat,
9259 { "defaultFormat", "z3950.defaultFormat_element",
9260 FT_NONE, BASE_NONE, NULL, 0,
9261 "DefaultDiagFormat", HFILL }},
9262 { &hf_z3950_externallyDefined,
9263 { "externallyDefined", "z3950.externallyDefined_element",
9264 FT_NONE, BASE_NONE, NULL, 0,
9265 "EXTERNAL", HFILL }},
9266 { &hf_z3950_diagnosticSetId,
9267 { "diagnosticSetId", "z3950.diagnosticSetId",
9268 FT_OID, BASE_NONE, NULL, 0,
9269 NULL, HFILL }},
9270 { &hf_z3950_condition,
9271 { "condition", "z3950.condition",
9272 FT_INT32, BASE_DEC, NULL, 0,
9273 NULL, HFILL }},
9274 { &hf_z3950_addinfo,
9275 { "addinfo", "z3950.addinfo",
9276 FT_UINT32, BASE_DEC, VALS(z3950_T_addinfo_vals), 0,
9277 NULL, HFILL }},
9278 { &hf_z3950_v2Addinfo,
9279 { "v2Addinfo", "z3950.v2Addinfo",
9280 FT_STRING, BASE_NONE, NULL, 0,
9281 "VisibleString", HFILL }},
9282 { &hf_z3950_v3Addinfo,
9283 { "v3Addinfo", "z3950.v3Addinfo",
9284 FT_STRING, BASE_NONE, NULL, 0,
9285 "InternationalString", HFILL }},
9286 { &hf_z3950_startingPosition,
9287 { "startingPosition", "z3950.startingPosition",
9288 FT_INT32, BASE_DEC, NULL, 0,
9289 "INTEGER", HFILL }},
9290 { &hf_z3950_numberOfRecords,
9291 { "numberOfRecords", "z3950.numberOfRecords",
9292 FT_INT32, BASE_DEC, NULL, 0,
9293 "INTEGER", HFILL }},
9294 { &hf_z3950_genericElementSetName,
9295 { "genericElementSetName", "z3950.genericElementSetName",
9296 FT_STRING, BASE_NONE, NULL, 0,
9297 "InternationalString", HFILL }},
9298 { &hf_z3950_databaseSpecific,
9299 { "databaseSpecific", "z3950.databaseSpecific",
9300 FT_UINT32, BASE_DEC, NULL, 0,
9301 NULL, HFILL }},
9302 { &hf_z3950_databaseSpecific_item,
9303 { "databaseSpecific item", "z3950.databaseSpecific_item_element",
9304 FT_NONE, BASE_NONE, NULL, 0,
9305 NULL, HFILL }},
9306 { &hf_z3950_dbName,
9307 { "dbName", "z3950.dbName",
9308 FT_STRING, BASE_NONE, NULL, 0,
9309 "DatabaseName", HFILL }},
9310 { &hf_z3950_esn,
9311 { "esn", "z3950.esn",
9312 FT_STRING, BASE_NONE, NULL, 0,
9313 "ElementSetName", HFILL }},
9314 { &hf_z3950_selectAlternativeSyntax,
9315 { "selectAlternativeSyntax", "z3950.selectAlternativeSyntax",
9316 FT_BOOLEAN, BASE_NONE, NULL, 0,
9317 "BOOLEAN", HFILL }},
9318 { &hf_z3950_compSpec_generic,
9319 { "generic", "z3950.generic_element",
9320 FT_NONE, BASE_NONE, NULL, 0,
9321 "Specification", HFILL }},
9322 { &hf_z3950_dbSpecific,
9323 { "dbSpecific", "z3950.dbSpecific",
9324 FT_UINT32, BASE_DEC, NULL, 0,
9325 NULL, HFILL }},
9326 { &hf_z3950_dbSpecific_item,
9327 { "dbSpecific item", "z3950.dbSpecific_item_element",
9328 FT_NONE, BASE_NONE, NULL, 0,
9329 NULL, HFILL }},
9330 { &hf_z3950_db,
9331 { "db", "z3950.db",
9332 FT_STRING, BASE_NONE, NULL, 0,
9333 "DatabaseName", HFILL }},
9334 { &hf_z3950_spec,
9335 { "spec", "z3950.spec_element",
9336 FT_NONE, BASE_NONE, NULL, 0,
9337 "Specification", HFILL }},
9338 { &hf_z3950_compSpec_recordSyntax,
9339 { "recordSyntax", "z3950.recordSyntax",
9340 FT_UINT32, BASE_DEC, NULL, 0,
9341 "T_compSpec_recordSyntax", HFILL }},
9342 { &hf_z3950_compSpec_recordSyntax_item,
9343 { "recordSyntax item", "z3950.recordSyntax_item",
9344 FT_OID, BASE_NONE, NULL, 0,
9345 "OBJECT_IDENTIFIER", HFILL }},
9346 { &hf_z3950_schema,
9347 { "schema", "z3950.schema",
9348 FT_OID, BASE_NONE, NULL, 0,
9349 "OBJECT_IDENTIFIER", HFILL }},
9350 { &hf_z3950_specification_elementSpec,
9351 { "elementSpec", "z3950.elementSpec",
9352 FT_UINT32, BASE_DEC, VALS(z3950_T_specification_elementSpec_vals), 0,
9353 "T_specification_elementSpec", HFILL }},
9354 { &hf_z3950_elementSetName,
9355 { "elementSetName", "z3950.elementSetName",
9356 FT_STRING, BASE_NONE, NULL, 0,
9357 "InternationalString", HFILL }},
9358 { &hf_z3950_externalEspec,
9359 { "externalEspec", "z3950.externalEspec_element",
9360 FT_NONE, BASE_NONE, NULL, 0,
9361 "EXTERNAL", HFILL }},
9362 { &hf_z3950_deleteFunction,
9363 { "deleteFunction", "z3950.deleteFunction",
9364 FT_INT32, BASE_DEC, VALS(z3950_T_deleteFunction_vals), 0,
9365 NULL, HFILL }},
9366 { &hf_z3950_resultSetList,
9367 { "resultSetList", "z3950.resultSetList",
9368 FT_UINT32, BASE_DEC, NULL, 0,
9369 "SEQUENCE_OF_ResultSetId", HFILL }},
9370 { &hf_z3950_resultSetList_item,
9371 { "ResultSetId", "z3950.ResultSetId",
9372 FT_STRING, BASE_NONE, NULL, 0,
9373 NULL, HFILL }},
9374 { &hf_z3950_deleteOperationStatus,
9375 { "deleteOperationStatus", "z3950.deleteOperationStatus",
9376 FT_INT32, BASE_DEC, VALS(z3950_DeleteSetStatus_U_vals), 0,
9377 "DeleteSetStatus", HFILL }},
9378 { &hf_z3950_deleteListStatuses,
9379 { "deleteListStatuses", "z3950.deleteListStatuses",
9380 FT_UINT32, BASE_DEC, NULL, 0,
9381 "ListStatuses", HFILL }},
9382 { &hf_z3950_numberNotDeleted,
9383 { "numberNotDeleted", "z3950.numberNotDeleted",
9384 FT_INT32, BASE_DEC, NULL, 0,
9385 "INTEGER", HFILL }},
9386 { &hf_z3950_bulkStatuses,
9387 { "bulkStatuses", "z3950.bulkStatuses",
9388 FT_UINT32, BASE_DEC, NULL, 0,
9389 "ListStatuses", HFILL }},
9390 { &hf_z3950_deleteMessage,
9391 { "deleteMessage", "z3950.deleteMessage",
9392 FT_STRING, BASE_NONE, NULL, 0,
9393 "InternationalString", HFILL }},
9394 { &hf_z3950_ListStatuses_item,
9395 { "ListStatuses item", "z3950.ListStatuses_item_element",
9396 FT_NONE, BASE_NONE, NULL, 0,
9397 NULL, HFILL }},
9398 { &hf_z3950_listStatuses_id,
9399 { "id", "z3950.id",
9400 FT_STRING, BASE_NONE, NULL, 0,
9401 "ResultSetId", HFILL }},
9402 { &hf_z3950_status,
9403 { "status", "z3950.status",
9404 FT_INT32, BASE_DEC, VALS(z3950_DeleteSetStatus_U_vals), 0,
9405 "DeleteSetStatus", HFILL }},
9406 { &hf_z3950_securityChallenge,
9407 { "securityChallenge", "z3950.securityChallenge",
9408 FT_UINT32, BASE_DEC, VALS(z3950_T_securityChallenge_vals), 0,
9409 NULL, HFILL }},
9410 { &hf_z3950_simpleForm,
9411 { "simpleForm", "z3950.simpleForm",
9412 FT_BYTES, BASE_NONE, NULL, 0,
9413 "OCTET_STRING", HFILL }},
9414 { &hf_z3950_securityChallengeResponse,
9415 { "securityChallengeResponse", "z3950.securityChallengeResponse",
9416 FT_UINT32, BASE_DEC, VALS(z3950_T_securityChallengeResponse_vals), 0,
9417 NULL, HFILL }},
9418 { &hf_z3950_diagnostic,
9419 { "diagnostic", "z3950.diagnostic",
9420 FT_UINT32, BASE_DEC, VALS(z3950_DiagRec_vals), 0,
9421 "DiagRec", HFILL }},
9422 { &hf_z3950_suspendedFlag,
9423 { "suspendedFlag", "z3950.suspendedFlag",
9424 FT_BOOLEAN, BASE_NONE, NULL, 0,
9425 "BOOLEAN", HFILL }},
9426 { &hf_z3950_resourceReport,
9427 { "resourceReport", "z3950.resourceReport_element",
9428 FT_NONE, BASE_NONE, NULL, 0,
9429 NULL, HFILL }},
9430 { &hf_z3950_partialResultsAvailable,
9431 { "partialResultsAvailable", "z3950.partialResultsAvailable",
9432 FT_INT32, BASE_DEC, VALS(z3950_T_partialResultsAvailable_vals), 0,
9433 NULL, HFILL }},
9434 { &hf_z3950_resourceControlRequest_responseRequired,
9435 { "responseRequired", "z3950.responseRequired",
9436 FT_BOOLEAN, BASE_NONE, NULL, 0,
9437 "BOOLEAN", HFILL }},
9438 { &hf_z3950_triggeredRequestFlag,
9439 { "triggeredRequestFlag", "z3950.triggeredRequestFlag",
9440 FT_BOOLEAN, BASE_NONE, NULL, 0,
9441 "BOOLEAN", HFILL }},
9442 { &hf_z3950_continueFlag,
9443 { "continueFlag", "z3950.continueFlag",
9444 FT_BOOLEAN, BASE_NONE, NULL, 0,
9445 "BOOLEAN", HFILL }},
9446 { &hf_z3950_resultSetWanted,
9447 { "resultSetWanted", "z3950.resultSetWanted",
9448 FT_BOOLEAN, BASE_NONE, NULL, 0,
9449 "BOOLEAN", HFILL }},
9450 { &hf_z3950_requestedAction,
9451 { "requestedAction", "z3950.requestedAction",
9452 FT_INT32, BASE_DEC, VALS(z3950_T_requestedAction_vals), 0,
9453 NULL, HFILL }},
9454 { &hf_z3950_prefResourceReportFormat,
9455 { "prefResourceReportFormat", "z3950.prefResourceReportFormat",
9456 FT_OID, BASE_NONE, NULL, 0,
9457 "ResourceReportId", HFILL }},
9458 { &hf_z3950_opId,
9459 { "opId", "z3950.opId",
9460 FT_BYTES, BASE_NONE, NULL, 0,
9461 "ReferenceId", HFILL }},
9462 { &hf_z3950_resourceReportStatus,
9463 { "resourceReportStatus", "z3950.resourceReportStatus",
9464 FT_INT32, BASE_DEC, VALS(z3950_T_resourceReportStatus_vals), 0,
9465 NULL, HFILL }},
9466 { &hf_z3950_termListAndStartPoint,
9467 { "termListAndStartPoint", "z3950.termListAndStartPoint_element",
9468 FT_NONE, BASE_NONE, NULL, 0,
9469 "AttributesPlusTerm", HFILL }},
9470 { &hf_z3950_stepSize,
9471 { "stepSize", "z3950.stepSize",
9472 FT_INT32, BASE_DEC, NULL, 0,
9473 "INTEGER", HFILL }},
9474 { &hf_z3950_numberOfTermsRequested,
9475 { "numberOfTermsRequested", "z3950.numberOfTermsRequested",
9476 FT_INT32, BASE_DEC, NULL, 0,
9477 "INTEGER", HFILL }},
9478 { &hf_z3950_preferredPositionInResponse,
9479 { "preferredPositionInResponse", "z3950.preferredPositionInResponse",
9480 FT_INT32, BASE_DEC, NULL, 0,
9481 "INTEGER", HFILL }},
9482 { &hf_z3950_scanStatus,
9483 { "scanStatus", "z3950.scanStatus",
9484 FT_INT32, BASE_DEC, VALS(z3950_T_scanStatus_vals), 0,
9485 NULL, HFILL }},
9486 { &hf_z3950_numberOfEntriesReturned,
9487 { "numberOfEntriesReturned", "z3950.numberOfEntriesReturned",
9488 FT_INT32, BASE_DEC, NULL, 0,
9489 "INTEGER", HFILL }},
9490 { &hf_z3950_positionOfTerm,
9491 { "positionOfTerm", "z3950.positionOfTerm",
9492 FT_INT32, BASE_DEC, NULL, 0,
9493 "INTEGER", HFILL }},
9494 { &hf_z3950_scanResponse_entries,
9495 { "entries", "z3950.entries_element",
9496 FT_NONE, BASE_NONE, NULL, 0,
9497 "ListEntries", HFILL }},
9498 { &hf_z3950_listEntries_entries,
9499 { "entries", "z3950.entries",
9500 FT_UINT32, BASE_DEC, NULL, 0,
9501 "SEQUENCE_OF_Entry", HFILL }},
9502 { &hf_z3950_listEntries_entries_item,
9503 { "Entry", "z3950.Entry",
9504 FT_UINT32, BASE_DEC, VALS(z3950_Entry_vals), 0,
9505 NULL, HFILL }},
9506 { &hf_z3950_nonsurrogateDiagnostics,
9507 { "nonsurrogateDiagnostics", "z3950.nonsurrogateDiagnostics",
9508 FT_UINT32, BASE_DEC, NULL, 0,
9509 "SEQUENCE_OF_DiagRec", HFILL }},
9510 { &hf_z3950_nonsurrogateDiagnostics_item,
9511 { "DiagRec", "z3950.DiagRec",
9512 FT_UINT32, BASE_DEC, VALS(z3950_DiagRec_vals), 0,
9513 NULL, HFILL }},
9514 { &hf_z3950_termInfo,
9515 { "termInfo", "z3950.termInfo_element",
9516 FT_NONE, BASE_NONE, NULL, 0,
9517 NULL, HFILL }},
9518 { &hf_z3950_displayTerm,
9519 { "displayTerm", "z3950.displayTerm",
9520 FT_STRING, BASE_NONE, NULL, 0,
9521 "InternationalString", HFILL }},
9522 { &hf_z3950_suggestedAttributes,
9523 { "suggestedAttributes", "z3950.suggestedAttributes",
9524 FT_UINT32, BASE_DEC, NULL, 0,
9525 "AttributeList", HFILL }},
9526 { &hf_z3950_alternativeTerm,
9527 { "alternativeTerm", "z3950.alternativeTerm",
9528 FT_UINT32, BASE_DEC, NULL, 0,
9529 "SEQUENCE_OF_AttributesPlusTerm", HFILL }},
9530 { &hf_z3950_alternativeTerm_item,
9531 { "AttributesPlusTerm", "z3950.AttributesPlusTerm_element",
9532 FT_NONE, BASE_NONE, NULL, 0,
9533 NULL, HFILL }},
9534 { &hf_z3950_globalOccurrences,
9535 { "globalOccurrences", "z3950.globalOccurrences",
9536 FT_INT32, BASE_DEC, NULL, 0,
9537 "INTEGER", HFILL }},
9538 { &hf_z3950_byAttributes,
9539 { "byAttributes", "z3950.byAttributes",
9540 FT_UINT32, BASE_DEC, NULL, 0,
9541 "OccurrenceByAttributes", HFILL }},
9542 { &hf_z3950_otherTermInfo,
9543 { "otherTermInfo", "z3950.otherTermInfo",
9544 FT_UINT32, BASE_DEC, NULL, 0,
9545 "OtherInformation", HFILL }},
9546 { &hf_z3950_OccurrenceByAttributes_item,
9547 { "OccurrenceByAttributes item", "z3950.OccurrenceByAttributes_item_element",
9548 FT_NONE, BASE_NONE, NULL, 0,
9549 NULL, HFILL }},
9550 { &hf_z3950_occurrences,
9551 { "occurrences", "z3950.occurrences",
9552 FT_UINT32, BASE_DEC, VALS(z3950_T_occurrences_vals), 0,
9553 NULL, HFILL }},
9554 { &hf_z3950_global,
9555 { "global", "z3950.global",
9556 FT_INT32, BASE_DEC, NULL, 0,
9557 "INTEGER", HFILL }},
9558 { &hf_z3950_byDatabase,
9559 { "byDatabase", "z3950.byDatabase",
9560 FT_UINT32, BASE_DEC, NULL, 0,
9561 NULL, HFILL }},
9562 { &hf_z3950_byDatabase_item,
9563 { "byDatabase item", "z3950.byDatabase_item_element",
9564 FT_NONE, BASE_NONE, NULL, 0,
9565 NULL, HFILL }},
9566 { &hf_z3950_num,
9567 { "num", "z3950.num",
9568 FT_INT32, BASE_DEC, NULL, 0,
9569 "INTEGER", HFILL }},
9570 { &hf_z3950_otherDbInfo,
9571 { "otherDbInfo", "z3950.otherDbInfo",
9572 FT_UINT32, BASE_DEC, NULL, 0,
9573 "OtherInformation", HFILL }},
9574 { &hf_z3950_otherOccurInfo,
9575 { "otherOccurInfo", "z3950.otherOccurInfo",
9576 FT_UINT32, BASE_DEC, NULL, 0,
9577 "OtherInformation", HFILL }},
9578 { &hf_z3950_inputResultSetNames,
9579 { "inputResultSetNames", "z3950.inputResultSetNames",
9580 FT_UINT32, BASE_DEC, NULL, 0,
9581 "SEQUENCE_OF_InternationalString", HFILL }},
9582 { &hf_z3950_inputResultSetNames_item,
9583 { "InternationalString", "z3950.InternationalString",
9584 FT_STRING, BASE_NONE, NULL, 0,
9585 NULL, HFILL }},
9586 { &hf_z3950_sortedResultSetName,
9587 { "sortedResultSetName", "z3950.sortedResultSetName",
9588 FT_STRING, BASE_NONE, NULL, 0,
9589 "InternationalString", HFILL }},
9590 { &hf_z3950_sortSequence,
9591 { "sortSequence", "z3950.sortSequence",
9592 FT_UINT32, BASE_DEC, NULL, 0,
9593 "SEQUENCE_OF_SortKeySpec", HFILL }},
9594 { &hf_z3950_sortSequence_item,
9595 { "SortKeySpec", "z3950.SortKeySpec_element",
9596 FT_NONE, BASE_NONE, NULL, 0,
9597 NULL, HFILL }},
9598 { &hf_z3950_sortStatus,
9599 { "sortStatus", "z3950.sortStatus",
9600 FT_INT32, BASE_DEC, VALS(z3950_T_sortStatus_vals), 0,
9601 NULL, HFILL }},
9602 { &hf_z3950_sort_resultSetStatus,
9603 { "resultSetStatus", "z3950.resultSetStatus",
9604 FT_INT32, BASE_DEC, VALS(z3950_T_sort_resultSetStatus_vals), 0,
9605 "T_sort_resultSetStatus", HFILL }},
9606 { &hf_z3950_diagnostics,
9607 { "diagnostics", "z3950.diagnostics",
9608 FT_UINT32, BASE_DEC, NULL, 0,
9609 "SEQUENCE_OF_DiagRec", HFILL }},
9610 { &hf_z3950_diagnostics_item,
9611 { "DiagRec", "z3950.DiagRec",
9612 FT_UINT32, BASE_DEC, VALS(z3950_DiagRec_vals), 0,
9613 NULL, HFILL }},
9614 { &hf_z3950_sortElement,
9615 { "sortElement", "z3950.sortElement",
9616 FT_UINT32, BASE_DEC, VALS(z3950_SortElement_vals), 0,
9617 NULL, HFILL }},
9618 { &hf_z3950_sortRelation,
9619 { "sortRelation", "z3950.sortRelation",
9620 FT_INT32, BASE_DEC, VALS(z3950_T_sortRelation_vals), 0,
9621 NULL, HFILL }},
9622 { &hf_z3950_caseSensitivity,
9623 { "caseSensitivity", "z3950.caseSensitivity",
9624 FT_INT32, BASE_DEC, VALS(z3950_T_caseSensitivity_vals), 0,
9625 NULL, HFILL }},
9626 { &hf_z3950_missingValueAction,
9627 { "missingValueAction", "z3950.missingValueAction",
9628 FT_UINT32, BASE_DEC, VALS(z3950_T_missingValueAction_vals), 0,
9629 NULL, HFILL }},
9630 { &hf_z3950_abort,
9631 { "abort", "z3950.abort_element",
9632 FT_NONE, BASE_NONE, NULL, 0,
9633 NULL, HFILL }},
9634 { &hf_z3950_missingValueData,
9635 { "missingValueData", "z3950.missingValueData",
9636 FT_BYTES, BASE_NONE, NULL, 0,
9637 "OCTET_STRING", HFILL }},
9638 { &hf_z3950_sortElement_generic,
9639 { "generic", "z3950.generic",
9640 FT_UINT32, BASE_DEC, VALS(z3950_SortKey_vals), 0,
9641 "SortKey", HFILL }},
9642 { &hf_z3950_datbaseSpecific,
9643 { "datbaseSpecific", "z3950.datbaseSpecific",
9644 FT_UINT32, BASE_DEC, NULL, 0,
9645 NULL, HFILL }},
9646 { &hf_z3950_datbaseSpecific_item,
9647 { "datbaseSpecific item", "z3950.datbaseSpecific_item_element",
9648 FT_NONE, BASE_NONE, NULL, 0,
9649 NULL, HFILL }},
9650 { &hf_z3950_databaseName,
9651 { "databaseName", "z3950.databaseName",
9652 FT_STRING, BASE_NONE, NULL, 0,
9653 NULL, HFILL }},
9654 { &hf_z3950_dbSort,
9655 { "dbSort", "z3950.dbSort",
9656 FT_UINT32, BASE_DEC, VALS(z3950_SortKey_vals), 0,
9657 "SortKey", HFILL }},
9658 { &hf_z3950_sortfield,
9659 { "sortfield", "z3950.sortfield",
9660 FT_STRING, BASE_NONE, NULL, 0,
9661 "InternationalString", HFILL }},
9662 { &hf_z3950_sortKey_elementSpec,
9663 { "elementSpec", "z3950.elementSpec_element",
9664 FT_NONE, BASE_NONE, NULL, 0,
9665 "Specification", HFILL }},
9666 { &hf_z3950_sortAttributes,
9667 { "sortAttributes", "z3950.sortAttributes_element",
9668 FT_NONE, BASE_NONE, NULL, 0,
9669 NULL, HFILL }},
9670 { &hf_z3950_sortAttributes_id,
9671 { "id", "z3950.id",
9672 FT_OID, BASE_NONE, NULL, 0,
9673 "AttributeSetId", HFILL }},
9674 { &hf_z3950_sortAttributes_list,
9675 { "list", "z3950.list",
9676 FT_UINT32, BASE_DEC, NULL, 0,
9677 "AttributeList", HFILL }},
9678 { &hf_z3950_function,
9679 { "function", "z3950.function",
9680 FT_INT32, BASE_DEC, VALS(z3950_T_function_vals), 0,
9681 NULL, HFILL }},
9682 { &hf_z3950_packageType,
9683 { "packageType", "z3950.packageType",
9684 FT_OID, BASE_NONE, NULL, 0,
9685 "OBJECT_IDENTIFIER", HFILL }},
9686 { &hf_z3950_packageName,
9687 { "packageName", "z3950.packageName",
9688 FT_STRING, BASE_NONE, NULL, 0,
9689 "InternationalString", HFILL }},
9690 { &hf_z3950_retentionTime,
9691 { "retentionTime", "z3950.retentionTime_element",
9692 FT_NONE, BASE_NONE, NULL, 0,
9693 "IntUnit", HFILL }},
9694 { &hf_z3950_permissions,
9695 { "permissions", "z3950.permissions",
9696 FT_UINT32, BASE_DEC, NULL, 0,
9697 NULL, HFILL }},
9698 { &hf_z3950_extendedServicesRequest_description,
9699 { "description", "z3950.description",
9700 FT_STRING, BASE_NONE, NULL, 0,
9701 "InternationalString", HFILL }},
9702 { &hf_z3950_taskSpecificParameters,
9703 { "taskSpecificParameters", "z3950.taskSpecificParameters_element",
9704 FT_NONE, BASE_NONE, NULL, 0,
9705 "EXTERNAL", HFILL }},
9706 { &hf_z3950_waitAction,
9707 { "waitAction", "z3950.waitAction",
9708 FT_INT32, BASE_DEC, VALS(z3950_T_waitAction_vals), 0,
9709 NULL, HFILL }},
9710 { &hf_z3950_elements,
9711 { "elements", "z3950.elements",
9712 FT_STRING, BASE_NONE, NULL, 0,
9713 "ElementSetName", HFILL }},
9714 { &hf_z3950_operationStatus,
9715 { "operationStatus", "z3950.operationStatus",
9716 FT_INT32, BASE_DEC, VALS(z3950_T_operationStatus_vals), 0,
9717 NULL, HFILL }},
9718 { &hf_z3950_taskPackage,
9719 { "taskPackage", "z3950.taskPackage_element",
9720 FT_NONE, BASE_NONE, NULL, 0,
9721 "EXTERNAL", HFILL }},
9722 { &hf_z3950_Permissions_item,
9723 { "Permissions item", "z3950.Permissions_item_element",
9724 FT_NONE, BASE_NONE, NULL, 0,
9725 NULL, HFILL }},
9726 { &hf_z3950_allowableFunctions,
9727 { "allowableFunctions", "z3950.allowableFunctions",
9728 FT_UINT32, BASE_DEC, NULL, 0,
9729 NULL, HFILL }},
9730 { &hf_z3950_allowableFunctions_item,
9731 { "allowableFunctions item", "z3950.allowableFunctions_item",
9732 FT_INT32, BASE_DEC, VALS(z3950_T_allowableFunctions_item_vals), 0,
9733 NULL, HFILL }},
9734 { &hf_z3950_closeReason,
9735 { "closeReason", "z3950.closeReason",
9736 FT_INT32, BASE_DEC, VALS(z3950_CloseReason_U_vals), 0,
9737 NULL, HFILL }},
9738 { &hf_z3950_diagnosticInformation,
9739 { "diagnosticInformation", "z3950.diagnosticInformation",
9740 FT_STRING, BASE_NONE, NULL, 0,
9741 "InternationalString", HFILL }},
9742 { &hf_z3950_resourceReportFormat,
9743 { "resourceReportFormat", "z3950.resourceReportFormat",
9744 FT_OID, BASE_NONE, NULL, 0,
9745 "ResourceReportId", HFILL }},
9746 { &hf_z3950_otherInformation_item,
9747 { "_untag item", "z3950._untag_item_element",
9748 FT_NONE, BASE_NONE, NULL, 0,
9749 NULL, HFILL }},
9750 { &hf_z3950_category,
9751 { "category", "z3950.category_element",
9752 FT_NONE, BASE_NONE, NULL, 0,
9753 "InfoCategory", HFILL }},
9754 { &hf_z3950_information,
9755 { "information", "z3950.information",
9756 FT_UINT32, BASE_DEC, VALS(z3950_T_information_vals), 0,
9757 NULL, HFILL }},
9758 { &hf_z3950_characterInfo,
9759 { "characterInfo", "z3950.characterInfo",
9760 FT_STRING, BASE_NONE, NULL, 0,
9761 "InternationalString", HFILL }},
9762 { &hf_z3950_binaryInfo,
9763 { "binaryInfo", "z3950.binaryInfo",
9764 FT_BYTES, BASE_NONE, NULL, 0,
9765 "OCTET_STRING", HFILL }},
9766 { &hf_z3950_externallyDefinedInfo,
9767 { "externallyDefinedInfo", "z3950.externallyDefinedInfo_element",
9768 FT_NONE, BASE_NONE, NULL, 0,
9769 "EXTERNAL", HFILL }},
9770 { &hf_z3950_categoryTypeId,
9771 { "categoryTypeId", "z3950.categoryTypeId",
9772 FT_OID, BASE_NONE, NULL, 0,
9773 "OBJECT_IDENTIFIER", HFILL }},
9774 { &hf_z3950_categoryValue,
9775 { "categoryValue", "z3950.categoryValue",
9776 FT_INT32, BASE_DEC, NULL, 0,
9777 "INTEGER", HFILL }},
9778 { &hf_z3950_value,
9779 { "value", "z3950.value",
9780 FT_INT32, BASE_DEC, NULL, 0,
9781 "INTEGER", HFILL }},
9782 { &hf_z3950_unitUsed,
9783 { "unitUsed", "z3950.unitUsed_element",
9784 FT_NONE, BASE_NONE, NULL, 0,
9785 "Unit", HFILL }},
9786 { &hf_z3950_unitSystem,
9787 { "unitSystem", "z3950.unitSystem",
9788 FT_STRING, BASE_NONE, NULL, 0,
9789 "InternationalString", HFILL }},
9790 { &hf_z3950_unitType,
9791 { "unitType", "z3950.unitType",
9792 FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
9793 "StringOrNumeric", HFILL }},
9794 { &hf_z3950_unit,
9795 { "unit", "z3950.unit",
9796 FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
9797 "StringOrNumeric", HFILL }},
9798 { &hf_z3950_scaleFactor,
9799 { "scaleFactor", "z3950.scaleFactor",
9800 FT_INT32, BASE_DEC, NULL, 0,
9801 "INTEGER", HFILL }},
9802 { &hf_z3950_string,
9803 { "string", "z3950.string",
9804 FT_STRING, BASE_NONE, NULL, 0,
9805 "InternationalString", HFILL }},
9806 { &hf_z3950_motd,
9807 { "motd", "z3950.motd",
9808 FT_STRING, BASE_NONE, NULL, 0,
9809 "VisibleString", HFILL }},
9810 { &hf_z3950_dblist,
9811 { "dblist", "z3950.dblist",
9812 FT_UINT32, BASE_DEC, NULL, 0,
9813 "SEQUENCE_OF_DBName", HFILL }},
9814 { &hf_z3950_dblist_item,
9815 { "DBName", "z3950.DBName",
9816 FT_STRING, BASE_NONE, NULL, 0,
9817 NULL, HFILL }},
9818 { &hf_z3950_failReason,
9819 { "failReason", "z3950.failReason",
9820 FT_BOOLEAN, BASE_NONE, NULL, 0,
9821 "BOOLEAN", HFILL }},
9822 { &hf_z3950_oCLC_UserInformation_text,
9823 { "text", "z3950.text",
9824 FT_STRING, BASE_NONE, NULL, 0,
9825 "VisibleString", HFILL }},
9826 { &hf_z3950_bibliographicRecord,
9827 { "bibliographicRecord", "z3950.bibliographicRecord_element",
9828 FT_NONE, BASE_NONE, NULL, 0,
9829 "EXTERNAL", HFILL }},
9830 { &hf_z3950_holdingsData,
9831 { "holdingsData", "z3950.holdingsData",
9832 FT_UINT32, BASE_DEC, NULL, 0,
9833 "SEQUENCE_OF_HoldingsRecord", HFILL }},
9834 { &hf_z3950_holdingsData_item,
9835 { "HoldingsRecord", "z3950.HoldingsRecord",
9836 FT_UINT32, BASE_DEC, VALS(z3950_HoldingsRecord_vals), 0,
9837 NULL, HFILL }},
9838 { &hf_z3950_marcHoldingsRecord,
9839 { "marcHoldingsRecord", "z3950.marcHoldingsRecord_element",
9840 FT_NONE, BASE_NONE, NULL, 0,
9841 "EXTERNAL", HFILL }},
9842 { &hf_z3950_holdingsAndCirc,
9843 { "holdingsAndCirc", "z3950.holdingsAndCirc_element",
9844 FT_NONE, BASE_NONE, NULL, 0,
9845 "HoldingsAndCircData", HFILL }},
9846 { &hf_z3950_typeOfRecord,
9847 { "typeOfRecord", "z3950.typeOfRecord",
9848 FT_STRING, BASE_NONE, NULL, 0,
9849 "InternationalString", HFILL }},
9850 { &hf_z3950_encodingLevel,
9851 { "encodingLevel", "z3950.encodingLevel",
9852 FT_STRING, BASE_NONE, NULL, 0,
9853 "InternationalString", HFILL }},
9854 { &hf_z3950_format,
9855 { "format", "z3950.format",
9856 FT_STRING, BASE_NONE, NULL, 0,
9857 "InternationalString", HFILL }},
9858 { &hf_z3950_receiptAcqStatus,
9859 { "receiptAcqStatus", "z3950.receiptAcqStatus",
9860 FT_STRING, BASE_NONE, NULL, 0,
9861 "InternationalString", HFILL }},
9862 { &hf_z3950_generalRetention,
9863 { "generalRetention", "z3950.generalRetention",
9864 FT_STRING, BASE_NONE, NULL, 0,
9865 "InternationalString", HFILL }},
9866 { &hf_z3950_completeness,
9867 { "completeness", "z3950.completeness",
9868 FT_STRING, BASE_NONE, NULL, 0,
9869 "InternationalString", HFILL }},
9870 { &hf_z3950_dateOfReport,
9871 { "dateOfReport", "z3950.dateOfReport",
9872 FT_STRING, BASE_NONE, NULL, 0,
9873 "InternationalString", HFILL }},
9874 { &hf_z3950_nucCode,
9875 { "nucCode", "z3950.nucCode",
9876 FT_STRING, BASE_NONE, NULL, 0,
9877 "InternationalString", HFILL }},
9878 { &hf_z3950_localLocation,
9879 { "localLocation", "z3950.localLocation",
9880 FT_STRING, BASE_NONE, NULL, 0,
9881 "InternationalString", HFILL }},
9882 { &hf_z3950_shelvingLocation,
9883 { "shelvingLocation", "z3950.shelvingLocation",
9884 FT_STRING, BASE_NONE, NULL, 0,
9885 "InternationalString", HFILL }},
9886 { &hf_z3950_callNumber,
9887 { "callNumber", "z3950.callNumber",
9888 FT_STRING, BASE_NONE, NULL, 0,
9889 "InternationalString", HFILL }},
9890 { &hf_z3950_shelvingData,
9891 { "shelvingData", "z3950.shelvingData",
9892 FT_STRING, BASE_NONE, NULL, 0,
9893 "InternationalString", HFILL }},
9894 { &hf_z3950_copyNumber,
9895 { "copyNumber", "z3950.copyNumber",
9896 FT_STRING, BASE_NONE, NULL, 0,
9897 "InternationalString", HFILL }},
9898 { &hf_z3950_publicNote,
9899 { "publicNote", "z3950.publicNote",
9900 FT_STRING, BASE_NONE, NULL, 0,
9901 "InternationalString", HFILL }},
9902 { &hf_z3950_reproductionNote,
9903 { "reproductionNote", "z3950.reproductionNote",
9904 FT_STRING, BASE_NONE, NULL, 0,
9905 "InternationalString", HFILL }},
9906 { &hf_z3950_termsUseRepro,
9907 { "termsUseRepro", "z3950.termsUseRepro",
9908 FT_STRING, BASE_NONE, NULL, 0,
9909 "InternationalString", HFILL }},
9910 { &hf_z3950_enumAndChron,
9911 { "enumAndChron", "z3950.enumAndChron",
9912 FT_STRING, BASE_NONE, NULL, 0,
9913 "InternationalString", HFILL }},
9914 { &hf_z3950_volumes,
9915 { "volumes", "z3950.volumes",
9916 FT_UINT32, BASE_DEC, NULL, 0,
9917 "SEQUENCE_OF_Volume", HFILL }},
9918 { &hf_z3950_volumes_item,
9919 { "Volume", "z3950.Volume_element",
9920 FT_NONE, BASE_NONE, NULL, 0,
9921 NULL, HFILL }},
9922 { &hf_z3950_circulationData,
9923 { "circulationData", "z3950.circulationData",
9924 FT_UINT32, BASE_DEC, NULL, 0,
9925 "SEQUENCE_OF_CircRecord", HFILL }},
9926 { &hf_z3950_circulationData_item,
9927 { "CircRecord", "z3950.CircRecord_element",
9928 FT_NONE, BASE_NONE, NULL, 0,
9929 NULL, HFILL }},
9930 { &hf_z3950_enumeration,
9931 { "enumeration", "z3950.enumeration",
9932 FT_STRING, BASE_NONE, NULL, 0,
9933 "InternationalString", HFILL }},
9934 { &hf_z3950_chronology,
9935 { "chronology", "z3950.chronology",
9936 FT_STRING, BASE_NONE, NULL, 0,
9937 "InternationalString", HFILL }},
9938 { &hf_z3950_availableNow,
9939 { "availableNow", "z3950.availableNow",
9940 FT_BOOLEAN, BASE_NONE, NULL, 0,
9941 "BOOLEAN", HFILL }},
9942 { &hf_z3950_availablityDate,
9943 { "availablityDate", "z3950.availablityDate",
9944 FT_STRING, BASE_NONE, NULL, 0,
9945 "InternationalString", HFILL }},
9946 { &hf_z3950_availableThru,
9947 { "availableThru", "z3950.availableThru",
9948 FT_STRING, BASE_NONE, NULL, 0,
9949 "InternationalString", HFILL }},
9950 { &hf_z3950_circRecord_restrictions,
9951 { "restrictions", "z3950.restrictions",
9952 FT_STRING, BASE_NONE, NULL, 0,
9953 "InternationalString", HFILL }},
9954 { &hf_z3950_itemId,
9955 { "itemId", "z3950.itemId",
9956 FT_STRING, BASE_NONE, NULL, 0,
9957 "InternationalString", HFILL }},
9958 { &hf_z3950_renewable,
9959 { "renewable", "z3950.renewable",
9960 FT_BOOLEAN, BASE_NONE, NULL, 0,
9961 "BOOLEAN", HFILL }},
9962 { &hf_z3950_onHold,
9963 { "onHold", "z3950.onHold",
9964 FT_BOOLEAN, BASE_NONE, NULL, 0,
9965 "BOOLEAN", HFILL }},
9966 { &hf_z3950_midspine,
9967 { "midspine", "z3950.midspine",
9968 FT_STRING, BASE_NONE, NULL, 0,
9969 "InternationalString", HFILL }},
9970 { &hf_z3950_temporaryLocation,
9971 { "temporaryLocation", "z3950.temporaryLocation",
9972 FT_STRING, BASE_NONE, NULL, 0,
9973 "InternationalString", HFILL }},
9974 { &hf_z3950_DiagnosticFormat_item,
9975 { "DiagnosticFormat item", "z3950.DiagnosticFormat_item_element",
9976 FT_NONE, BASE_NONE, NULL, 0,
9977 NULL, HFILL }},
9978 { &hf_z3950_diagnosticFormat_item_diagnostic,
9979 { "diagnostic", "z3950.diagnostic",
9980 FT_UINT32, BASE_DEC, VALS(z3950_T_diagnosticFormat_item_diagnostic_vals), 0,
9981 "T_diagnosticFormat_item_diagnostic", HFILL }},
9982 { &hf_z3950_defaultDiagRec,
9983 { "defaultDiagRec", "z3950.defaultDiagRec_element",
9984 FT_NONE, BASE_NONE, NULL, 0,
9985 "DefaultDiagFormat", HFILL }},
9986 { &hf_z3950_explicitDiagnostic,
9987 { "explicitDiagnostic", "z3950.explicitDiagnostic",
9988 FT_UINT32, BASE_DEC, VALS(z3950_DiagFormat_vals), 0,
9989 "DiagFormat", HFILL }},
9990 { &hf_z3950_message,
9991 { "message", "z3950.message",
9992 FT_STRING, BASE_NONE, NULL, 0,
9993 "InternationalString", HFILL }},
9994 { &hf_z3950_tooMany,
9995 { "tooMany", "z3950.tooMany_element",
9996 FT_NONE, BASE_NONE, NULL, 0,
9997 NULL, HFILL }},
9998 { &hf_z3950_tooManyWhat,
9999 { "tooManyWhat", "z3950.tooManyWhat",
10000 FT_INT32, BASE_DEC, VALS(z3950_T_tooManyWhat_vals), 0,
10001 NULL, HFILL }},
10002 { &hf_z3950_max,
10003 { "max", "z3950.max",
10004 FT_INT32, BASE_DEC, NULL, 0,
10005 "INTEGER", HFILL }},
10006 { &hf_z3950_badSpec,
10007 { "badSpec", "z3950.badSpec_element",
10008 FT_NONE, BASE_NONE, NULL, 0,
10009 NULL, HFILL }},
10010 { &hf_z3950_goodOnes,
10011 { "goodOnes", "z3950.goodOnes",
10012 FT_UINT32, BASE_DEC, NULL, 0,
10013 "SEQUENCE_OF_Specification", HFILL }},
10014 { &hf_z3950_goodOnes_item,
10015 { "Specification", "z3950.Specification_element",
10016 FT_NONE, BASE_NONE, NULL, 0,
10017 NULL, HFILL }},
10018 { &hf_z3950_dbUnavail,
10019 { "dbUnavail", "z3950.dbUnavail_element",
10020 FT_NONE, BASE_NONE, NULL, 0,
10021 NULL, HFILL }},
10022 { &hf_z3950_why,
10023 { "why", "z3950.why_element",
10024 FT_NONE, BASE_NONE, NULL, 0,
10025 NULL, HFILL }},
10026 { &hf_z3950_reasonCode,
10027 { "reasonCode", "z3950.reasonCode",
10028 FT_INT32, BASE_DEC, VALS(z3950_T_reasonCode_vals), 0,
10029 NULL, HFILL }},
10030 { &hf_z3950_unSupOp,
10031 { "unSupOp", "z3950.unSupOp",
10032 FT_INT32, BASE_DEC, VALS(z3950_T_unSupOp_vals), 0,
10033 NULL, HFILL }},
10034 { &hf_z3950_attribute,
10035 { "attribute", "z3950.attribute_element",
10036 FT_NONE, BASE_NONE, NULL, 0,
10037 NULL, HFILL }},
10038 { &hf_z3950_id,
10039 { "id", "z3950.id",
10040 FT_OID, BASE_NONE, NULL, 0,
10041 "OBJECT_IDENTIFIER", HFILL }},
10042 { &hf_z3950_type,
10043 { "type", "z3950.type",
10044 FT_INT32, BASE_DEC, NULL, 0,
10045 "INTEGER", HFILL }},
10046 { &hf_z3950_attCombo,
10047 { "attCombo", "z3950.attCombo_element",
10048 FT_NONE, BASE_NONE, NULL, 0,
10049 NULL, HFILL }},
10050 { &hf_z3950_unsupportedCombination,
10051 { "unsupportedCombination", "z3950.unsupportedCombination",
10052 FT_UINT32, BASE_DEC, NULL, 0,
10053 "AttributeList", HFILL }},
10054 { &hf_z3950_recommendedAlternatives,
10055 { "recommendedAlternatives", "z3950.recommendedAlternatives",
10056 FT_UINT32, BASE_DEC, NULL, 0,
10057 "SEQUENCE_OF_AttributeList", HFILL }},
10058 { &hf_z3950_recommendedAlternatives_item,
10059 { "AttributeList", "z3950.AttributeList",
10060 FT_UINT32, BASE_DEC, NULL, 0,
10061 NULL, HFILL }},
10062 { &hf_z3950_diagFormat_term,
10063 { "term", "z3950.term_element",
10064 FT_NONE, BASE_NONE, NULL, 0,
10065 "T_diagFormat_term", HFILL }},
10066 { &hf_z3950_problem,
10067 { "problem", "z3950.problem",
10068 FT_INT32, BASE_DEC, VALS(z3950_T_problem_vals), 0,
10069 NULL, HFILL }},
10070 { &hf_z3950_diagFormat_proximity,
10071 { "proximity", "z3950.proximity",
10072 FT_UINT32, BASE_DEC, VALS(z3950_T_diagFormat_proximity_vals), 0,
10073 "T_diagFormat_proximity", HFILL }},
10074 { &hf_z3950_resultSets,
10075 { "resultSets", "z3950.resultSets_element",
10076 FT_NONE, BASE_NONE, NULL, 0,
10077 NULL, HFILL }},
10078 { &hf_z3950_badSet,
10079 { "badSet", "z3950.badSet",
10080 FT_STRING, BASE_NONE, NULL, 0,
10081 "InternationalString", HFILL }},
10082 { &hf_z3950_relation,
10083 { "relation", "z3950.relation",
10084 FT_INT32, BASE_DEC, NULL, 0,
10085 "INTEGER", HFILL }},
10086 { &hf_z3950_diagFormat_proximity_unit,
10087 { "unit", "z3950.unit",
10088 FT_INT32, BASE_DEC, NULL, 0,
10089 "INTEGER", HFILL }},
10090 { &hf_z3950_diagFormat_proximity_ordered,
10091 { "ordered", "z3950.ordered_element",
10092 FT_NONE, BASE_NONE, NULL, 0,
10093 NULL, HFILL }},
10094 { &hf_z3950_diagFormat_proximity_exclusion,
10095 { "exclusion", "z3950.exclusion_element",
10096 FT_NONE, BASE_NONE, NULL, 0,
10097 NULL, HFILL }},
10098 { &hf_z3950_scan,
10099 { "scan", "z3950.scan",
10100 FT_UINT32, BASE_DEC, VALS(z3950_T_scan_vals), 0,
10101 NULL, HFILL }},
10102 { &hf_z3950_nonZeroStepSize,
10103 { "nonZeroStepSize", "z3950.nonZeroStepSize_element",
10104 FT_NONE, BASE_NONE, NULL, 0,
10105 NULL, HFILL }},
10106 { &hf_z3950_specifiedStepSize,
10107 { "specifiedStepSize", "z3950.specifiedStepSize_element",
10108 FT_NONE, BASE_NONE, NULL, 0,
10109 NULL, HFILL }},
10110 { &hf_z3950_termList1,
10111 { "termList1", "z3950.termList1_element",
10112 FT_NONE, BASE_NONE, NULL, 0,
10113 NULL, HFILL }},
10114 { &hf_z3950_termList2,
10115 { "termList2", "z3950.termList2",
10116 FT_UINT32, BASE_DEC, NULL, 0,
10117 "SEQUENCE_OF_AttributeList", HFILL }},
10118 { &hf_z3950_termList2_item,
10119 { "AttributeList", "z3950.AttributeList",
10120 FT_UINT32, BASE_DEC, NULL, 0,
10121 NULL, HFILL }},
10122 { &hf_z3950_posInResponse,
10123 { "posInResponse", "z3950.posInResponse",
10124 FT_INT32, BASE_DEC, VALS(z3950_T_posInResponse_vals), 0,
10125 NULL, HFILL }},
10126 { &hf_z3950_resources,
10127 { "resources", "z3950.resources_element",
10128 FT_NONE, BASE_NONE, NULL, 0,
10129 NULL, HFILL }},
10130 { &hf_z3950_endOfList,
10131 { "endOfList", "z3950.endOfList_element",
10132 FT_NONE, BASE_NONE, NULL, 0,
10133 NULL, HFILL }},
10134 { &hf_z3950_sort,
10135 { "sort", "z3950.sort",
10136 FT_UINT32, BASE_DEC, VALS(z3950_T_sort_vals), 0,
10137 NULL, HFILL }},
10138 { &hf_z3950_sequence,
10139 { "sequence", "z3950.sequence_element",
10140 FT_NONE, BASE_NONE, NULL, 0,
10141 NULL, HFILL }},
10142 { &hf_z3950_noRsName,
10143 { "noRsName", "z3950.noRsName_element",
10144 FT_NONE, BASE_NONE, NULL, 0,
10145 NULL, HFILL }},
10146 { &hf_z3950_diagFormat_sort_tooMany,
10147 { "tooMany", "z3950.tooMany",
10148 FT_INT32, BASE_DEC, NULL, 0,
10149 "INTEGER", HFILL }},
10150 { &hf_z3950_incompatible,
10151 { "incompatible", "z3950.incompatible_element",
10152 FT_NONE, BASE_NONE, NULL, 0,
10153 NULL, HFILL }},
10154 { &hf_z3950_generic,
10155 { "generic", "z3950.generic_element",
10156 FT_NONE, BASE_NONE, NULL, 0,
10157 NULL, HFILL }},
10158 { &hf_z3950_diagFormat_sort_dbSpecific,
10159 { "dbSpecific", "z3950.dbSpecific_element",
10160 FT_NONE, BASE_NONE, NULL, 0,
10161 NULL, HFILL }},
10162 { &hf_z3950_key,
10163 { "key", "z3950.key",
10164 FT_INT32, BASE_DEC, VALS(z3950_T_key_vals), 0,
10165 NULL, HFILL }},
10166 { &hf_z3950_action,
10167 { "action", "z3950.action_element",
10168 FT_NONE, BASE_NONE, NULL, 0,
10169 NULL, HFILL }},
10170 { &hf_z3950_illegal,
10171 { "illegal", "z3950.illegal",
10172 FT_INT32, BASE_DEC, VALS(z3950_T_illegal_vals), 0,
10173 NULL, HFILL }},
10174 { &hf_z3950_inputTooLarge,
10175 { "inputTooLarge", "z3950.inputTooLarge",
10176 FT_UINT32, BASE_DEC, NULL, 0,
10177 "SEQUENCE_OF_InternationalString", HFILL }},
10178 { &hf_z3950_inputTooLarge_item,
10179 { "InternationalString", "z3950.InternationalString",
10180 FT_STRING, BASE_NONE, NULL, 0,
10181 NULL, HFILL }},
10182 { &hf_z3950_aggregateTooLarge,
10183 { "aggregateTooLarge", "z3950.aggregateTooLarge_element",
10184 FT_NONE, BASE_NONE, NULL, 0,
10185 NULL, HFILL }},
10186 { &hf_z3950_segmentation,
10187 { "segmentation", "z3950.segmentation",
10188 FT_UINT32, BASE_DEC, VALS(z3950_T_segmentation_vals), 0,
10189 NULL, HFILL }},
10190 { &hf_z3950_segmentCount,
10191 { "segmentCount", "z3950.segmentCount_element",
10192 FT_NONE, BASE_NONE, NULL, 0,
10193 NULL, HFILL }},
10194 { &hf_z3950_segmentSize,
10195 { "segmentSize", "z3950.segmentSize",
10196 FT_INT32, BASE_DEC, NULL, 0,
10197 "INTEGER", HFILL }},
10198 { &hf_z3950_extServices,
10199 { "extServices", "z3950.extServices",
10200 FT_UINT32, BASE_DEC, VALS(z3950_T_extServices_vals), 0,
10201 NULL, HFILL }},
10202 { &hf_z3950_req,
10203 { "req", "z3950.req",
10204 FT_INT32, BASE_DEC, VALS(z3950_T_req_vals), 0,
10205 NULL, HFILL }},
10206 { &hf_z3950_permission,
10207 { "permission", "z3950.permission",
10208 FT_INT32, BASE_DEC, VALS(z3950_T_permission_vals), 0,
10209 NULL, HFILL }},
10210 { &hf_z3950_immediate,
10211 { "immediate", "z3950.immediate",
10212 FT_INT32, BASE_DEC, VALS(z3950_T_immediate_vals), 0,
10213 NULL, HFILL }},
10214 { &hf_z3950_accessCtrl,
10215 { "accessCtrl", "z3950.accessCtrl",
10216 FT_UINT32, BASE_DEC, VALS(z3950_T_accessCtrl_vals), 0,
10217 NULL, HFILL }},
10218 { &hf_z3950_noUser,
10219 { "noUser", "z3950.noUser_element",
10220 FT_NONE, BASE_NONE, NULL, 0,
10221 NULL, HFILL }},
10222 { &hf_z3950_refused,
10223 { "refused", "z3950.refused_element",
10224 FT_NONE, BASE_NONE, NULL, 0,
10225 NULL, HFILL }},
10226 { &hf_z3950_diagFormat_accessCtrl_simple,
10227 { "simple", "z3950.simple_element",
10228 FT_NONE, BASE_NONE, NULL, 0,
10229 NULL, HFILL }},
10230 { &hf_z3950_diagFormat_accessCtrl_oid,
10231 { "oid", "z3950.oid",
10232 FT_UINT32, BASE_DEC, NULL, 0,
10233 "T_diagFormat_accessCtrl_oid", HFILL }},
10234 { &hf_z3950_diagFormat_accessCtrl_oid_item,
10235 { "oid item", "z3950.oid_item",
10236 FT_OID, BASE_NONE, NULL, 0,
10237 "OBJECT_IDENTIFIER", HFILL }},
10238 { &hf_z3950_alternative,
10239 { "alternative", "z3950.alternative",
10240 FT_UINT32, BASE_DEC, NULL, 0,
10241 NULL, HFILL }},
10242 { &hf_z3950_alternative_item,
10243 { "alternative item", "z3950.alternative_item",
10244 FT_OID, BASE_NONE, NULL, 0,
10245 "OBJECT_IDENTIFIER", HFILL }},
10246 { &hf_z3950_pwdInv,
10247 { "pwdInv", "z3950.pwdInv_element",
10248 FT_NONE, BASE_NONE, NULL, 0,
10249 NULL, HFILL }},
10250 { &hf_z3950_pwdExp,
10251 { "pwdExp", "z3950.pwdExp_element",
10252 FT_NONE, BASE_NONE, NULL, 0,
10253 NULL, HFILL }},
10254 { &hf_z3950_diagFormat_recordSyntax,
10255 { "recordSyntax", "z3950.recordSyntax_element",
10256 FT_NONE, BASE_NONE, NULL, 0,
10257 "T_diagFormat_recordSyntax", HFILL }},
10258 { &hf_z3950_unsupportedSyntax,
10259 { "unsupportedSyntax", "z3950.unsupportedSyntax",
10260 FT_OID, BASE_NONE, NULL, 0,
10261 "OBJECT_IDENTIFIER", HFILL }},
10262 { &hf_z3950_suggestedAlternatives,
10263 { "suggestedAlternatives", "z3950.suggestedAlternatives",
10264 FT_UINT32, BASE_DEC, NULL, 0,
10265 NULL, HFILL }},
10266 { &hf_z3950_suggestedAlternatives_item,
10267 { "suggestedAlternatives item", "z3950.suggestedAlternatives_item",
10268 FT_OID, BASE_NONE, NULL, 0,
10269 "OBJECT_IDENTIFIER", HFILL }},
10270 { &hf_z3950_targetInfo,
10271 { "targetInfo", "z3950.targetInfo_element",
10272 FT_NONE, BASE_NONE, NULL, 0,
10273 NULL, HFILL }},
10274 { &hf_z3950_databaseInfo,
10275 { "databaseInfo", "z3950.databaseInfo_element",
10276 FT_NONE, BASE_NONE, NULL, 0,
10277 NULL, HFILL }},
10278 { &hf_z3950_schemaInfo,
10279 { "schemaInfo", "z3950.schemaInfo_element",
10280 FT_NONE, BASE_NONE, NULL, 0,
10281 NULL, HFILL }},
10282 { &hf_z3950_tagSetInfo,
10283 { "tagSetInfo", "z3950.tagSetInfo_element",
10284 FT_NONE, BASE_NONE, NULL, 0,
10285 NULL, HFILL }},
10286 { &hf_z3950_recordSyntaxInfo,
10287 { "recordSyntaxInfo", "z3950.recordSyntaxInfo_element",
10288 FT_NONE, BASE_NONE, NULL, 0,
10289 NULL, HFILL }},
10290 { &hf_z3950_attributeSetInfo,
10291 { "attributeSetInfo", "z3950.attributeSetInfo_element",
10292 FT_NONE, BASE_NONE, NULL, 0,
10293 NULL, HFILL }},
10294 { &hf_z3950_termListInfo,
10295 { "termListInfo", "z3950.termListInfo_element",
10296 FT_NONE, BASE_NONE, NULL, 0,
10297 NULL, HFILL }},
10298 { &hf_z3950_extendedServicesInfo,
10299 { "extendedServicesInfo", "z3950.extendedServicesInfo_element",
10300 FT_NONE, BASE_NONE, NULL, 0,
10301 NULL, HFILL }},
10302 { &hf_z3950_attributeDetails,
10303 { "attributeDetails", "z3950.attributeDetails_element",
10304 FT_NONE, BASE_NONE, NULL, 0,
10305 NULL, HFILL }},
10306 { &hf_z3950_termListDetails,
10307 { "termListDetails", "z3950.termListDetails_element",
10308 FT_NONE, BASE_NONE, NULL, 0,
10309 NULL, HFILL }},
10310 { &hf_z3950_elementSetDetails,
10311 { "elementSetDetails", "z3950.elementSetDetails_element",
10312 FT_NONE, BASE_NONE, NULL, 0,
10313 NULL, HFILL }},
10314 { &hf_z3950_retrievalRecordDetails,
10315 { "retrievalRecordDetails", "z3950.retrievalRecordDetails_element",
10316 FT_NONE, BASE_NONE, NULL, 0,
10317 NULL, HFILL }},
10318 { &hf_z3950_sortDetails,
10319 { "sortDetails", "z3950.sortDetails_element",
10320 FT_NONE, BASE_NONE, NULL, 0,
10321 NULL, HFILL }},
10322 { &hf_z3950_processing,
10323 { "processing", "z3950.processing_element",
10324 FT_NONE, BASE_NONE, NULL, 0,
10325 "ProcessingInformation", HFILL }},
10326 { &hf_z3950_variants,
10327 { "variants", "z3950.variants_element",
10328 FT_NONE, BASE_NONE, NULL, 0,
10329 "VariantSetInfo", HFILL }},
10330 { &hf_z3950_units,
10331 { "units", "z3950.units_element",
10332 FT_NONE, BASE_NONE, NULL, 0,
10333 "UnitInfo", HFILL }},
10334 { &hf_z3950_categoryList,
10335 { "categoryList", "z3950.categoryList_element",
10336 FT_NONE, BASE_NONE, NULL, 0,
10337 NULL, HFILL }},
10338 { &hf_z3950_commonInfo,
10339 { "commonInfo", "z3950.commonInfo_element",
10340 FT_NONE, BASE_NONE, NULL, 0,
10341 NULL, HFILL }},
10342 { &hf_z3950_name,
10343 { "name", "z3950.name",
10344 FT_STRING, BASE_NONE, NULL, 0,
10345 "InternationalString", HFILL }},
10346 { &hf_z3950_recent_news,
10347 { "recent-news", "z3950.recent_news",
10348 FT_UINT32, BASE_DEC, NULL, 0,
10349 "HumanString", HFILL }},
10350 { &hf_z3950_icon,
10351 { "icon", "z3950.icon",
10352 FT_UINT32, BASE_DEC, NULL, 0,
10353 "IconObject", HFILL }},
10354 { &hf_z3950_namedResultSets,
10355 { "namedResultSets", "z3950.namedResultSets",
10356 FT_BOOLEAN, BASE_NONE, NULL, 0,
10357 "BOOLEAN", HFILL }},
10358 { &hf_z3950_multipleDBsearch,
10359 { "multipleDBsearch", "z3950.multipleDBsearch",
10360 FT_BOOLEAN, BASE_NONE, NULL, 0,
10361 "BOOLEAN", HFILL }},
10362 { &hf_z3950_maxResultSets,
10363 { "maxResultSets", "z3950.maxResultSets",
10364 FT_INT32, BASE_DEC, NULL, 0,
10365 "INTEGER", HFILL }},
10366 { &hf_z3950_maxResultSize,
10367 { "maxResultSize", "z3950.maxResultSize",
10368 FT_INT32, BASE_DEC, NULL, 0,
10369 "INTEGER", HFILL }},
10370 { &hf_z3950_maxTerms,
10371 { "maxTerms", "z3950.maxTerms",
10372 FT_INT32, BASE_DEC, NULL, 0,
10373 "INTEGER", HFILL }},
10374 { &hf_z3950_timeoutInterval,
10375 { "timeoutInterval", "z3950.timeoutInterval_element",
10376 FT_NONE, BASE_NONE, NULL, 0,
10377 "IntUnit", HFILL }},
10378 { &hf_z3950_welcomeMessage,
10379 { "welcomeMessage", "z3950.welcomeMessage",
10380 FT_UINT32, BASE_DEC, NULL, 0,
10381 "HumanString", HFILL }},
10382 { &hf_z3950_contactInfo,
10383 { "contactInfo", "z3950.contactInfo_element",
10384 FT_NONE, BASE_NONE, NULL, 0,
10385 NULL, HFILL }},
10386 { &hf_z3950_description,
10387 { "description", "z3950.description",
10388 FT_UINT32, BASE_DEC, NULL, 0,
10389 "HumanString", HFILL }},
10390 { &hf_z3950_nicknames,
10391 { "nicknames", "z3950.nicknames",
10392 FT_UINT32, BASE_DEC, NULL, 0,
10393 "SEQUENCE_OF_InternationalString", HFILL }},
10394 { &hf_z3950_nicknames_item,
10395 { "InternationalString", "z3950.InternationalString",
10396 FT_STRING, BASE_NONE, NULL, 0,
10397 NULL, HFILL }},
10398 { &hf_z3950_usage_restrictions,
10399 { "usage-restrictions", "z3950.usage_restrictions",
10400 FT_UINT32, BASE_DEC, NULL, 0,
10401 "HumanString", HFILL }},
10402 { &hf_z3950_paymentAddr,
10403 { "paymentAddr", "z3950.paymentAddr",
10404 FT_UINT32, BASE_DEC, NULL, 0,
10405 "HumanString", HFILL }},
10406 { &hf_z3950_hours,
10407 { "hours", "z3950.hours",
10408 FT_UINT32, BASE_DEC, NULL, 0,
10409 "HumanString", HFILL }},
10410 { &hf_z3950_dbCombinations,
10411 { "dbCombinations", "z3950.dbCombinations",
10412 FT_UINT32, BASE_DEC, NULL, 0,
10413 "SEQUENCE_OF_DatabaseList", HFILL }},
10414 { &hf_z3950_dbCombinations_item,
10415 { "DatabaseList", "z3950.DatabaseList",
10416 FT_UINT32, BASE_DEC, NULL, 0,
10417 NULL, HFILL }},
10418 { &hf_z3950_addresses,
10419 { "addresses", "z3950.addresses",
10420 FT_UINT32, BASE_DEC, NULL, 0,
10421 "SEQUENCE_OF_NetworkAddress", HFILL }},
10422 { &hf_z3950_addresses_item,
10423 { "NetworkAddress", "z3950.NetworkAddress",
10424 FT_UINT32, BASE_DEC, VALS(z3950_NetworkAddress_vals), 0,
10425 NULL, HFILL }},
10426 { &hf_z3950_languages,
10427 { "languages", "z3950.languages",
10428 FT_UINT32, BASE_DEC, NULL, 0,
10429 "SEQUENCE_OF_InternationalString", HFILL }},
10430 { &hf_z3950_languages_item,
10431 { "InternationalString", "z3950.InternationalString",
10432 FT_STRING, BASE_NONE, NULL, 0,
10433 NULL, HFILL }},
10434 { &hf_z3950_commonAccessInfo,
10435 { "commonAccessInfo", "z3950.commonAccessInfo_element",
10436 FT_NONE, BASE_NONE, NULL, 0,
10437 "AccessInfo", HFILL }},
10438 { &hf_z3950_databaseInfo_name,
10439 { "name", "z3950.name",
10440 FT_STRING, BASE_NONE, NULL, 0,
10441 "DatabaseName", HFILL }},
10442 { &hf_z3950_explainDatabase,
10443 { "explainDatabase", "z3950.explainDatabase_element",
10444 FT_NONE, BASE_NONE, NULL, 0,
10445 NULL, HFILL }},
10446 { &hf_z3950_databaseInfo_nicknames,
10447 { "nicknames", "z3950.nicknames",
10448 FT_UINT32, BASE_DEC, NULL, 0,
10449 "SEQUENCE_OF_DatabaseName", HFILL }},
10450 { &hf_z3950_databaseInfo_nicknames_item,
10451 { "DatabaseName", "z3950.DatabaseName",
10452 FT_STRING, BASE_NONE, NULL, 0,
10453 NULL, HFILL }},
10454 { &hf_z3950_user_fee,
10455 { "user-fee", "z3950.user_fee",
10456 FT_BOOLEAN, BASE_NONE, NULL, 0,
10457 "BOOLEAN", HFILL }},
10458 { &hf_z3950_available,
10459 { "available", "z3950.available",
10460 FT_BOOLEAN, BASE_NONE, NULL, 0,
10461 "BOOLEAN", HFILL }},
10462 { &hf_z3950_titleString,
10463 { "titleString", "z3950.titleString",
10464 FT_UINT32, BASE_DEC, NULL, 0,
10465 "HumanString", HFILL }},
10466 { &hf_z3950_keywords,
10467 { "keywords", "z3950.keywords",
10468 FT_UINT32, BASE_DEC, NULL, 0,
10469 "SEQUENCE_OF_HumanString", HFILL }},
10470 { &hf_z3950_keywords_item,
10471 { "HumanString", "z3950.HumanString",
10472 FT_UINT32, BASE_DEC, NULL, 0,
10473 NULL, HFILL }},
10474 { &hf_z3950_associatedDbs,
10475 { "associatedDbs", "z3950.associatedDbs",
10476 FT_UINT32, BASE_DEC, NULL, 0,
10477 "DatabaseList", HFILL }},
10478 { &hf_z3950_subDbs,
10479 { "subDbs", "z3950.subDbs",
10480 FT_UINT32, BASE_DEC, NULL, 0,
10481 "DatabaseList", HFILL }},
10482 { &hf_z3950_disclaimers,
10483 { "disclaimers", "z3950.disclaimers",
10484 FT_UINT32, BASE_DEC, NULL, 0,
10485 "HumanString", HFILL }},
10486 { &hf_z3950_news,
10487 { "news", "z3950.news",
10488 FT_UINT32, BASE_DEC, NULL, 0,
10489 "HumanString", HFILL }},
10490 { &hf_z3950_recordCount,
10491 { "recordCount", "z3950.recordCount",
10492 FT_UINT32, BASE_DEC, VALS(z3950_T_recordCount_vals), 0,
10493 NULL, HFILL }},
10494 { &hf_z3950_actualNumber,
10495 { "actualNumber", "z3950.actualNumber",
10496 FT_INT32, BASE_DEC, NULL, 0,
10497 "INTEGER", HFILL }},
10498 { &hf_z3950_approxNumber,
10499 { "approxNumber", "z3950.approxNumber",
10500 FT_INT32, BASE_DEC, NULL, 0,
10501 "INTEGER", HFILL }},
10502 { &hf_z3950_defaultOrder,
10503 { "defaultOrder", "z3950.defaultOrder",
10504 FT_UINT32, BASE_DEC, NULL, 0,
10505 "HumanString", HFILL }},
10506 { &hf_z3950_avRecordSize,
10507 { "avRecordSize", "z3950.avRecordSize",
10508 FT_INT32, BASE_DEC, NULL, 0,
10509 "INTEGER", HFILL }},
10510 { &hf_z3950_bestTime,
10511 { "bestTime", "z3950.bestTime",
10512 FT_UINT32, BASE_DEC, NULL, 0,
10513 "HumanString", HFILL }},
10514 { &hf_z3950_lastUpdate,
10515 { "lastUpdate", "z3950.lastUpdate",
10516 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
10517 "GeneralizedTime", HFILL }},
10518 { &hf_z3950_updateInterval,
10519 { "updateInterval", "z3950.updateInterval_element",
10520 FT_NONE, BASE_NONE, NULL, 0,
10521 "IntUnit", HFILL }},
10522 { &hf_z3950_coverage,
10523 { "coverage", "z3950.coverage",
10524 FT_UINT32, BASE_DEC, NULL, 0,
10525 "HumanString", HFILL }},
10526 { &hf_z3950_proprietary,
10527 { "proprietary", "z3950.proprietary",
10528 FT_BOOLEAN, BASE_NONE, NULL, 0,
10529 "BOOLEAN", HFILL }},
10530 { &hf_z3950_copyrightText,
10531 { "copyrightText", "z3950.copyrightText",
10532 FT_UINT32, BASE_DEC, NULL, 0,
10533 "HumanString", HFILL }},
10534 { &hf_z3950_copyrightNotice,
10535 { "copyrightNotice", "z3950.copyrightNotice",
10536 FT_UINT32, BASE_DEC, NULL, 0,
10537 "HumanString", HFILL }},
10538 { &hf_z3950_producerContactInfo,
10539 { "producerContactInfo", "z3950.producerContactInfo_element",
10540 FT_NONE, BASE_NONE, NULL, 0,
10541 "ContactInfo", HFILL }},
10542 { &hf_z3950_supplierContactInfo,
10543 { "supplierContactInfo", "z3950.supplierContactInfo_element",
10544 FT_NONE, BASE_NONE, NULL, 0,
10545 "ContactInfo", HFILL }},
10546 { &hf_z3950_submissionContactInfo,
10547 { "submissionContactInfo", "z3950.submissionContactInfo_element",
10548 FT_NONE, BASE_NONE, NULL, 0,
10549 "ContactInfo", HFILL }},
10550 { &hf_z3950_accessInfo,
10551 { "accessInfo", "z3950.accessInfo_element",
10552 FT_NONE, BASE_NONE, NULL, 0,
10553 NULL, HFILL }},
10554 { &hf_z3950_tagTypeMapping,
10555 { "tagTypeMapping", "z3950.tagTypeMapping",
10556 FT_UINT32, BASE_DEC, NULL, 0,
10557 NULL, HFILL }},
10558 { &hf_z3950_tagTypeMapping_item,
10559 { "tagTypeMapping item", "z3950.tagTypeMapping_item_element",
10560 FT_NONE, BASE_NONE, NULL, 0,
10561 NULL, HFILL }},
10562 { &hf_z3950_tagType,
10563 { "tagType", "z3950.tagType",
10564 FT_INT32, BASE_DEC, NULL, 0,
10565 "INTEGER", HFILL }},
10566 { &hf_z3950_tagSet,
10567 { "tagSet", "z3950.tagSet",
10568 FT_OID, BASE_NONE, NULL, 0,
10569 "OBJECT_IDENTIFIER", HFILL }},
10570 { &hf_z3950_defaultTagType,
10571 { "defaultTagType", "z3950.defaultTagType_element",
10572 FT_NONE, BASE_NONE, NULL, 0,
10573 NULL, HFILL }},
10574 { &hf_z3950_recordStructure,
10575 { "recordStructure", "z3950.recordStructure",
10576 FT_UINT32, BASE_DEC, NULL, 0,
10577 "SEQUENCE_OF_ElementInfo", HFILL }},
10578 { &hf_z3950_recordStructure_item,
10579 { "ElementInfo", "z3950.ElementInfo_element",
10580 FT_NONE, BASE_NONE, NULL, 0,
10581 NULL, HFILL }},
10582 { &hf_z3950_elementName,
10583 { "elementName", "z3950.elementName",
10584 FT_STRING, BASE_NONE, NULL, 0,
10585 "InternationalString", HFILL }},
10586 { &hf_z3950_elementTagPath,
10587 { "elementTagPath", "z3950.elementTagPath",
10588 FT_UINT32, BASE_DEC, NULL, 0,
10589 "Path", HFILL }},
10590 { &hf_z3950_elementInfo_dataType,
10591 { "dataType", "z3950.dataType",
10592 FT_UINT32, BASE_DEC, VALS(z3950_ElementDataType_vals), 0,
10593 "ElementDataType", HFILL }},
10594 { &hf_z3950_required,
10595 { "required", "z3950.required",
10596 FT_BOOLEAN, BASE_NONE, NULL, 0,
10597 "BOOLEAN", HFILL }},
10598 { &hf_z3950_repeatable,
10599 { "repeatable", "z3950.repeatable",
10600 FT_BOOLEAN, BASE_NONE, NULL, 0,
10601 "BOOLEAN", HFILL }},
10602 { &hf_z3950_Path_item,
10603 { "Path item", "z3950.Path_item_element",
10604 FT_NONE, BASE_NONE, NULL, 0,
10605 NULL, HFILL }},
10606 { &hf_z3950_tagValue,
10607 { "tagValue", "z3950.tagValue",
10608 FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10609 "StringOrNumeric", HFILL }},
10610 { &hf_z3950_primitive,
10611 { "primitive", "z3950.primitive",
10612 FT_INT32, BASE_DEC, VALS(z3950_PrimitiveDataType_vals), 0,
10613 "PrimitiveDataType", HFILL }},
10614 { &hf_z3950_structured,
10615 { "structured", "z3950.structured",
10616 FT_UINT32, BASE_DEC, NULL, 0,
10617 "SEQUENCE_OF_ElementInfo", HFILL }},
10618 { &hf_z3950_structured_item,
10619 { "ElementInfo", "z3950.ElementInfo_element",
10620 FT_NONE, BASE_NONE, NULL, 0,
10621 NULL, HFILL }},
10622 { &hf_z3950_tagSetInfo_elements,
10623 { "elements", "z3950.elements",
10624 FT_UINT32, BASE_DEC, NULL, 0,
10625 "T_tagSetInfo_elements", HFILL }},
10626 { &hf_z3950_tagSetInfo_elements_item,
10627 { "elements item", "z3950.elements_item_element",
10628 FT_NONE, BASE_NONE, NULL, 0,
10629 "T_tagSetInfo_elements_item", HFILL }},
10630 { &hf_z3950_elementname,
10631 { "elementname", "z3950.elementname",
10632 FT_STRING, BASE_NONE, NULL, 0,
10633 "InternationalString", HFILL }},
10634 { &hf_z3950_elementTag,
10635 { "elementTag", "z3950.elementTag",
10636 FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10637 "StringOrNumeric", HFILL }},
10638 { &hf_z3950_dataType,
10639 { "dataType", "z3950.dataType",
10640 FT_INT32, BASE_DEC, VALS(z3950_PrimitiveDataType_vals), 0,
10641 "PrimitiveDataType", HFILL }},
10642 { &hf_z3950_otherTagInfo,
10643 { "otherTagInfo", "z3950.otherTagInfo",
10644 FT_UINT32, BASE_DEC, NULL, 0,
10645 "OtherInformation", HFILL }},
10646 { &hf_z3950_recordSyntax,
10647 { "recordSyntax", "z3950.recordSyntax",
10648 FT_OID, BASE_NONE, NULL, 0,
10649 "OBJECT_IDENTIFIER", HFILL }},
10650 { &hf_z3950_transferSyntaxes,
10651 { "transferSyntaxes", "z3950.transferSyntaxes",
10652 FT_UINT32, BASE_DEC, NULL, 0,
10653 NULL, HFILL }},
10654 { &hf_z3950_transferSyntaxes_item,
10655 { "transferSyntaxes item", "z3950.transferSyntaxes_item",
10656 FT_OID, BASE_NONE, NULL, 0,
10657 "OBJECT_IDENTIFIER", HFILL }},
10658 { &hf_z3950_asn1Module,
10659 { "asn1Module", "z3950.asn1Module",
10660 FT_STRING, BASE_NONE, NULL, 0,
10661 "InternationalString", HFILL }},
10662 { &hf_z3950_abstractStructure,
10663 { "abstractStructure", "z3950.abstractStructure",
10664 FT_UINT32, BASE_DEC, NULL, 0,
10665 "SEQUENCE_OF_ElementInfo", HFILL }},
10666 { &hf_z3950_abstractStructure_item,
10667 { "ElementInfo", "z3950.ElementInfo_element",
10668 FT_NONE, BASE_NONE, NULL, 0,
10669 NULL, HFILL }},
10670 { &hf_z3950_attributeSetInfo_attributes,
10671 { "attributes", "z3950.attributes",
10672 FT_UINT32, BASE_DEC, NULL, 0,
10673 "SEQUENCE_OF_AttributeType", HFILL }},
10674 { &hf_z3950_attributeSetInfo_attributes_item,
10675 { "AttributeType", "z3950.AttributeType_element",
10676 FT_NONE, BASE_NONE, NULL, 0,
10677 NULL, HFILL }},
10678 { &hf_z3950_attributeType,
10679 { "attributeType", "z3950.attributeType",
10680 FT_INT32, BASE_DEC, NULL, 0,
10681 "INTEGER", HFILL }},
10682 { &hf_z3950_attributeValues,
10683 { "attributeValues", "z3950.attributeValues",
10684 FT_UINT32, BASE_DEC, NULL, 0,
10685 "SEQUENCE_OF_AttributeDescription", HFILL }},
10686 { &hf_z3950_attributeValues_item,
10687 { "AttributeDescription", "z3950.AttributeDescription_element",
10688 FT_NONE, BASE_NONE, NULL, 0,
10689 NULL, HFILL }},
10690 { &hf_z3950_attributeDescription_attributeValue,
10691 { "attributeValue", "z3950.attributeValue",
10692 FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10693 "StringOrNumeric", HFILL }},
10694 { &hf_z3950_equivalentAttributes,
10695 { "equivalentAttributes", "z3950.equivalentAttributes",
10696 FT_UINT32, BASE_DEC, NULL, 0,
10697 "SEQUENCE_OF_StringOrNumeric", HFILL }},
10698 { &hf_z3950_equivalentAttributes_item,
10699 { "StringOrNumeric", "z3950.StringOrNumeric",
10700 FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10701 NULL, HFILL }},
10702 { &hf_z3950_termLists,
10703 { "termLists", "z3950.termLists",
10704 FT_UINT32, BASE_DEC, NULL, 0,
10705 NULL, HFILL }},
10706 { &hf_z3950_termLists_item,
10707 { "termLists item", "z3950.termLists_item_element",
10708 FT_NONE, BASE_NONE, NULL, 0,
10709 NULL, HFILL }},
10710 { &hf_z3950_title,
10711 { "title", "z3950.title",
10712 FT_UINT32, BASE_DEC, NULL, 0,
10713 "HumanString", HFILL }},
10714 { &hf_z3950_searchCost,
10715 { "searchCost", "z3950.searchCost",
10716 FT_INT32, BASE_DEC, VALS(z3950_T_searchCost_vals), 0,
10717 NULL, HFILL }},
10718 { &hf_z3950_scanable,
10719 { "scanable", "z3950.scanable",
10720 FT_BOOLEAN, BASE_NONE, NULL, 0,
10721 "BOOLEAN", HFILL }},
10722 { &hf_z3950_broader,
10723 { "broader", "z3950.broader",
10724 FT_UINT32, BASE_DEC, NULL, 0,
10725 "SEQUENCE_OF_InternationalString", HFILL }},
10726 { &hf_z3950_broader_item,
10727 { "InternationalString", "z3950.InternationalString",
10728 FT_STRING, BASE_NONE, NULL, 0,
10729 NULL, HFILL }},
10730 { &hf_z3950_narrower,
10731 { "narrower", "z3950.narrower",
10732 FT_UINT32, BASE_DEC, NULL, 0,
10733 "SEQUENCE_OF_InternationalString", HFILL }},
10734 { &hf_z3950_narrower_item,
10735 { "InternationalString", "z3950.InternationalString",
10736 FT_STRING, BASE_NONE, NULL, 0,
10737 NULL, HFILL }},
10738 { &hf_z3950_extendedServicesInfo_type,
10739 { "type", "z3950.type",
10740 FT_OID, BASE_NONE, NULL, 0,
10741 "OBJECT_IDENTIFIER", HFILL }},
10742 { &hf_z3950_privateType,
10743 { "privateType", "z3950.privateType",
10744 FT_BOOLEAN, BASE_NONE, NULL, 0,
10745 "BOOLEAN", HFILL }},
10746 { &hf_z3950_restrictionsApply,
10747 { "restrictionsApply", "z3950.restrictionsApply",
10748 FT_BOOLEAN, BASE_NONE, NULL, 0,
10749 "BOOLEAN", HFILL }},
10750 { &hf_z3950_feeApply,
10751 { "feeApply", "z3950.feeApply",
10752 FT_BOOLEAN, BASE_NONE, NULL, 0,
10753 "BOOLEAN", HFILL }},
10754 { &hf_z3950_retentionSupported,
10755 { "retentionSupported", "z3950.retentionSupported",
10756 FT_BOOLEAN, BASE_NONE, NULL, 0,
10757 "BOOLEAN", HFILL }},
10758 { &hf_z3950_extendedServicesInfo_waitAction,
10759 { "waitAction", "z3950.waitAction",
10760 FT_INT32, BASE_DEC, VALS(z3950_T_extendedServicesInfo_waitAction_vals), 0,
10761 "T_extendedServicesInfo_waitAction", HFILL }},
10762 { &hf_z3950_specificExplain,
10763 { "specificExplain", "z3950.specificExplain_element",
10764 FT_NONE, BASE_NONE, NULL, 0,
10765 "EXTERNAL", HFILL }},
10766 { &hf_z3950_esASN,
10767 { "esASN", "z3950.esASN",
10768 FT_STRING, BASE_NONE, NULL, 0,
10769 "InternationalString", HFILL }},
10770 { &hf_z3950_attributesBySet,
10771 { "attributesBySet", "z3950.attributesBySet",
10772 FT_UINT32, BASE_DEC, NULL, 0,
10773 "SEQUENCE_OF_AttributeSetDetails", HFILL }},
10774 { &hf_z3950_attributesBySet_item,
10775 { "AttributeSetDetails", "z3950.AttributeSetDetails_element",
10776 FT_NONE, BASE_NONE, NULL, 0,
10777 NULL, HFILL }},
10778 { &hf_z3950_attributeCombinations,
10779 { "attributeCombinations", "z3950.attributeCombinations_element",
10780 FT_NONE, BASE_NONE, NULL, 0,
10781 NULL, HFILL }},
10782 { &hf_z3950_attributesByType,
10783 { "attributesByType", "z3950.attributesByType",
10784 FT_UINT32, BASE_DEC, NULL, 0,
10785 "SEQUENCE_OF_AttributeTypeDetails", HFILL }},
10786 { &hf_z3950_attributesByType_item,
10787 { "AttributeTypeDetails", "z3950.AttributeTypeDetails_element",
10788 FT_NONE, BASE_NONE, NULL, 0,
10789 NULL, HFILL }},
10790 { &hf_z3950_defaultIfOmitted,
10791 { "defaultIfOmitted", "z3950.defaultIfOmitted_element",
10792 FT_NONE, BASE_NONE, NULL, 0,
10793 "OmittedAttributeInterpretation", HFILL }},
10794 { &hf_z3950_attributeTypeDetails_attributeValues,
10795 { "attributeValues", "z3950.attributeValues",
10796 FT_UINT32, BASE_DEC, NULL, 0,
10797 "SEQUENCE_OF_AttributeValue", HFILL }},
10798 { &hf_z3950_attributeTypeDetails_attributeValues_item,
10799 { "AttributeValue", "z3950.AttributeValue_element",
10800 FT_NONE, BASE_NONE, NULL, 0,
10801 NULL, HFILL }},
10802 { &hf_z3950_defaultValue,
10803 { "defaultValue", "z3950.defaultValue",
10804 FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10805 "StringOrNumeric", HFILL }},
10806 { &hf_z3950_defaultDescription,
10807 { "defaultDescription", "z3950.defaultDescription",
10808 FT_UINT32, BASE_DEC, NULL, 0,
10809 "HumanString", HFILL }},
10810 { &hf_z3950_attributeValue_value,
10811 { "value", "z3950.value",
10812 FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10813 "StringOrNumeric", HFILL }},
10814 { &hf_z3950_subAttributes,
10815 { "subAttributes", "z3950.subAttributes",
10816 FT_UINT32, BASE_DEC, NULL, 0,
10817 "SEQUENCE_OF_StringOrNumeric", HFILL }},
10818 { &hf_z3950_subAttributes_item,
10819 { "StringOrNumeric", "z3950.StringOrNumeric",
10820 FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10821 NULL, HFILL }},
10822 { &hf_z3950_superAttributes,
10823 { "superAttributes", "z3950.superAttributes",
10824 FT_UINT32, BASE_DEC, NULL, 0,
10825 "SEQUENCE_OF_StringOrNumeric", HFILL }},
10826 { &hf_z3950_superAttributes_item,
10827 { "StringOrNumeric", "z3950.StringOrNumeric",
10828 FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10829 NULL, HFILL }},
10830 { &hf_z3950_partialSupport,
10831 { "partialSupport", "z3950.partialSupport_element",
10832 FT_NONE, BASE_NONE, NULL, 0,
10833 NULL, HFILL }},
10834 { &hf_z3950_termListName,
10835 { "termListName", "z3950.termListName",
10836 FT_STRING, BASE_NONE, NULL, 0,
10837 "InternationalString", HFILL }},
10838 { &hf_z3950_termListDetails_attributes,
10839 { "attributes", "z3950.attributes_element",
10840 FT_NONE, BASE_NONE, NULL, 0,
10841 "AttributeCombinations", HFILL }},
10842 { &hf_z3950_scanInfo,
10843 { "scanInfo", "z3950.scanInfo_element",
10844 FT_NONE, BASE_NONE, NULL, 0,
10845 NULL, HFILL }},
10846 { &hf_z3950_maxStepSize,
10847 { "maxStepSize", "z3950.maxStepSize",
10848 FT_INT32, BASE_DEC, NULL, 0,
10849 "INTEGER", HFILL }},
10850 { &hf_z3950_collatingSequence,
10851 { "collatingSequence", "z3950.collatingSequence",
10852 FT_UINT32, BASE_DEC, NULL, 0,
10853 "HumanString", HFILL }},
10854 { &hf_z3950_increasing,
10855 { "increasing", "z3950.increasing",
10856 FT_BOOLEAN, BASE_NONE, NULL, 0,
10857 "BOOLEAN", HFILL }},
10858 { &hf_z3950_estNumberTerms,
10859 { "estNumberTerms", "z3950.estNumberTerms",
10860 FT_INT32, BASE_DEC, NULL, 0,
10861 "INTEGER", HFILL }},
10862 { &hf_z3950_sampleTerms,
10863 { "sampleTerms", "z3950.sampleTerms",
10864 FT_UINT32, BASE_DEC, NULL, 0,
10865 "SEQUENCE_OF_Term", HFILL }},
10866 { &hf_z3950_sampleTerms_item,
10867 { "Term", "z3950.Term",
10868 FT_UINT32, BASE_DEC, VALS(z3950_Term_vals), 0,
10869 NULL, HFILL }},
10870 { &hf_z3950_elementSetDetails_elementSetName,
10871 { "elementSetName", "z3950.elementSetName",
10872 FT_STRING, BASE_NONE, NULL, 0,
10873 NULL, HFILL }},
10874 { &hf_z3950_detailsPerElement,
10875 { "detailsPerElement", "z3950.detailsPerElement",
10876 FT_UINT32, BASE_DEC, NULL, 0,
10877 "SEQUENCE_OF_PerElementDetails", HFILL }},
10878 { &hf_z3950_detailsPerElement_item,
10879 { "PerElementDetails", "z3950.PerElementDetails_element",
10880 FT_NONE, BASE_NONE, NULL, 0,
10881 NULL, HFILL }},
10882 { &hf_z3950_recordTag,
10883 { "recordTag", "z3950.recordTag_element",
10884 FT_NONE, BASE_NONE, NULL, 0,
10885 NULL, HFILL }},
10886 { &hf_z3950_schemaTags,
10887 { "schemaTags", "z3950.schemaTags",
10888 FT_UINT32, BASE_DEC, NULL, 0,
10889 "SEQUENCE_OF_Path", HFILL }},
10890 { &hf_z3950_schemaTags_item,
10891 { "Path", "z3950.Path",
10892 FT_UINT32, BASE_DEC, NULL, 0,
10893 NULL, HFILL }},
10894 { &hf_z3950_maxSize,
10895 { "maxSize", "z3950.maxSize",
10896 FT_INT32, BASE_DEC, NULL, 0,
10897 "INTEGER", HFILL }},
10898 { &hf_z3950_minSize,
10899 { "minSize", "z3950.minSize",
10900 FT_INT32, BASE_DEC, NULL, 0,
10901 "INTEGER", HFILL }},
10902 { &hf_z3950_avgSize,
10903 { "avgSize", "z3950.avgSize",
10904 FT_INT32, BASE_DEC, NULL, 0,
10905 "INTEGER", HFILL }},
10906 { &hf_z3950_fixedSize,
10907 { "fixedSize", "z3950.fixedSize",
10908 FT_INT32, BASE_DEC, NULL, 0,
10909 "INTEGER", HFILL }},
10910 { &hf_z3950_contents,
10911 { "contents", "z3950.contents",
10912 FT_UINT32, BASE_DEC, NULL, 0,
10913 "HumanString", HFILL }},
10914 { &hf_z3950_billingInfo,
10915 { "billingInfo", "z3950.billingInfo",
10916 FT_UINT32, BASE_DEC, NULL, 0,
10917 "HumanString", HFILL }},
10918 { &hf_z3950_restrictions,
10919 { "restrictions", "z3950.restrictions",
10920 FT_UINT32, BASE_DEC, NULL, 0,
10921 "HumanString", HFILL }},
10922 { &hf_z3950_alternateNames,
10923 { "alternateNames", "z3950.alternateNames",
10924 FT_UINT32, BASE_DEC, NULL, 0,
10925 "SEQUENCE_OF_InternationalString", HFILL }},
10926 { &hf_z3950_alternateNames_item,
10927 { "InternationalString", "z3950.InternationalString",
10928 FT_STRING, BASE_NONE, NULL, 0,
10929 NULL, HFILL }},
10930 { &hf_z3950_genericNames,
10931 { "genericNames", "z3950.genericNames",
10932 FT_UINT32, BASE_DEC, NULL, 0,
10933 "SEQUENCE_OF_InternationalString", HFILL }},
10934 { &hf_z3950_genericNames_item,
10935 { "InternationalString", "z3950.InternationalString",
10936 FT_STRING, BASE_NONE, NULL, 0,
10937 NULL, HFILL }},
10938 { &hf_z3950_searchAccess,
10939 { "searchAccess", "z3950.searchAccess_element",
10940 FT_NONE, BASE_NONE, NULL, 0,
10941 "AttributeCombinations", HFILL }},
10942 { &hf_z3950_qualifier,
10943 { "qualifier", "z3950.qualifier",
10944 FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
10945 "StringOrNumeric", HFILL }},
10946 { &hf_z3950_sortKeys,
10947 { "sortKeys", "z3950.sortKeys",
10948 FT_UINT32, BASE_DEC, NULL, 0,
10949 "SEQUENCE_OF_SortKeyDetails", HFILL }},
10950 { &hf_z3950_sortKeys_item,
10951 { "SortKeyDetails", "z3950.SortKeyDetails_element",
10952 FT_NONE, BASE_NONE, NULL, 0,
10953 NULL, HFILL }},
10954 { &hf_z3950_elementSpecifications,
10955 { "elementSpecifications", "z3950.elementSpecifications",
10956 FT_UINT32, BASE_DEC, NULL, 0,
10957 "SEQUENCE_OF_Specification", HFILL }},
10958 { &hf_z3950_elementSpecifications_item,
10959 { "Specification", "z3950.Specification_element",
10960 FT_NONE, BASE_NONE, NULL, 0,
10961 NULL, HFILL }},
10962 { &hf_z3950_attributeSpecifications,
10963 { "attributeSpecifications", "z3950.attributeSpecifications_element",
10964 FT_NONE, BASE_NONE, NULL, 0,
10965 "AttributeCombinations", HFILL }},
10966 { &hf_z3950_sortType,
10967 { "sortType", "z3950.sortType",
10968 FT_UINT32, BASE_DEC, VALS(z3950_T_sortType_vals), 0,
10969 NULL, HFILL }},
10970 { &hf_z3950_character,
10971 { "character", "z3950.character_element",
10972 FT_NONE, BASE_NONE, NULL, 0,
10973 NULL, HFILL }},
10974 { &hf_z3950_sortKeyDetails_sortType_numeric,
10975 { "numeric", "z3950.numeric_element",
10976 FT_NONE, BASE_NONE, NULL, 0,
10977 NULL, HFILL }},
10978 { &hf_z3950_sortKeyDetails_sortType_structured,
10979 { "structured", "z3950.structured",
10980 FT_UINT32, BASE_DEC, NULL, 0,
10981 "HumanString", HFILL }},
10982 { &hf_z3950_sortKeyDetails_caseSensitivity,
10983 { "caseSensitivity", "z3950.caseSensitivity",
10984 FT_INT32, BASE_DEC, VALS(z3950_T_sortKeyDetails_caseSensitivity_vals), 0,
10985 "T_sortKeyDetails_caseSensitivity", HFILL }},
10986 { &hf_z3950_processingContext,
10987 { "processingContext", "z3950.processingContext",
10988 FT_INT32, BASE_DEC, VALS(z3950_T_processingContext_vals), 0,
10989 NULL, HFILL }},
10990 { &hf_z3950_instructions,
10991 { "instructions", "z3950.instructions_element",
10992 FT_NONE, BASE_NONE, NULL, 0,
10993 "EXTERNAL", HFILL }},
10994 { &hf_z3950_variantSet,
10995 { "variantSet", "z3950.variantSet",
10996 FT_OID, BASE_NONE, NULL, 0,
10997 "OBJECT_IDENTIFIER", HFILL }},
10998 { &hf_z3950_variantSetInfo_variants,
10999 { "variants", "z3950.variants",
11000 FT_UINT32, BASE_DEC, NULL, 0,
11001 "SEQUENCE_OF_VariantClass", HFILL }},
11002 { &hf_z3950_variantSetInfo_variants_item,
11003 { "VariantClass", "z3950.VariantClass_element",
11004 FT_NONE, BASE_NONE, NULL, 0,
11005 NULL, HFILL }},
11006 { &hf_z3950_variantClass,
11007 { "variantClass", "z3950.variantClass",
11008 FT_INT32, BASE_DEC, NULL, 0,
11009 "INTEGER", HFILL }},
11010 { &hf_z3950_variantTypes,
11011 { "variantTypes", "z3950.variantTypes",
11012 FT_UINT32, BASE_DEC, NULL, 0,
11013 "SEQUENCE_OF_VariantType", HFILL }},
11014 { &hf_z3950_variantTypes_item,
11015 { "VariantType", "z3950.VariantType_element",
11016 FT_NONE, BASE_NONE, NULL, 0,
11017 NULL, HFILL }},
11018 { &hf_z3950_variantType,
11019 { "variantType", "z3950.variantType",
11020 FT_INT32, BASE_DEC, NULL, 0,
11021 "INTEGER", HFILL }},
11022 { &hf_z3950_variantValue,
11023 { "variantValue", "z3950.variantValue_element",
11024 FT_NONE, BASE_NONE, NULL, 0,
11025 NULL, HFILL }},
11026 { &hf_z3950_values,
11027 { "values", "z3950.values",
11028 FT_UINT32, BASE_DEC, VALS(z3950_ValueSet_vals), 0,
11029 "ValueSet", HFILL }},
11030 { &hf_z3950_range,
11031 { "range", "z3950.range_element",
11032 FT_NONE, BASE_NONE, NULL, 0,
11033 "ValueRange", HFILL }},
11034 { &hf_z3950_enumerated,
11035 { "enumerated", "z3950.enumerated",
11036 FT_UINT32, BASE_DEC, NULL, 0,
11037 "SEQUENCE_OF_ValueDescription", HFILL }},
11038 { &hf_z3950_enumerated_item,
11039 { "ValueDescription", "z3950.ValueDescription",
11040 FT_UINT32, BASE_DEC, VALS(z3950_ValueDescription_vals), 0,
11041 NULL, HFILL }},
11042 { &hf_z3950_lower,
11043 { "lower", "z3950.lower",
11044 FT_UINT32, BASE_DEC, VALS(z3950_ValueDescription_vals), 0,
11045 "ValueDescription", HFILL }},
11046 { &hf_z3950_upper,
11047 { "upper", "z3950.upper",
11048 FT_UINT32, BASE_DEC, VALS(z3950_ValueDescription_vals), 0,
11049 "ValueDescription", HFILL }},
11050 { &hf_z3950_integer,
11051 { "integer", "z3950.integer",
11052 FT_INT32, BASE_DEC, NULL, 0,
11053 NULL, HFILL }},
11054 { &hf_z3950_octets,
11055 { "octets", "z3950.octets",
11056 FT_BYTES, BASE_NONE, NULL, 0,
11057 "OCTET_STRING", HFILL }},
11058 { &hf_z3950_valueDescription_unit,
11059 { "unit", "z3950.unit_element",
11060 FT_NONE, BASE_NONE, NULL, 0,
11061 NULL, HFILL }},
11062 { &hf_z3950_valueAndUnit,
11063 { "valueAndUnit", "z3950.valueAndUnit_element",
11064 FT_NONE, BASE_NONE, NULL, 0,
11065 "IntUnit", HFILL }},
11066 { &hf_z3950_unitInfo_units,
11067 { "units", "z3950.units",
11068 FT_UINT32, BASE_DEC, NULL, 0,
11069 "SEQUENCE_OF_UnitType", HFILL }},
11070 { &hf_z3950_unitInfo_units_item,
11071 { "UnitType", "z3950.UnitType_element",
11072 FT_NONE, BASE_NONE, NULL, 0,
11073 NULL, HFILL }},
11074 { &hf_z3950_unitType_units,
11075 { "units", "z3950.units",
11076 FT_UINT32, BASE_DEC, NULL, 0,
11077 "SEQUENCE_OF_Units", HFILL }},
11078 { &hf_z3950_unitType_units_item,
11079 { "Units", "z3950.Units_element",
11080 FT_NONE, BASE_NONE, NULL, 0,
11081 NULL, HFILL }},
11082 { &hf_z3950_categories,
11083 { "categories", "z3950.categories",
11084 FT_UINT32, BASE_DEC, NULL, 0,
11085 "SEQUENCE_OF_CategoryInfo", HFILL }},
11086 { &hf_z3950_categories_item,
11087 { "CategoryInfo", "z3950.CategoryInfo_element",
11088 FT_NONE, BASE_NONE, NULL, 0,
11089 NULL, HFILL }},
11090 { &hf_z3950_categoryInfo_category,
11091 { "category", "z3950.category",
11092 FT_STRING, BASE_NONE, NULL, 0,
11093 "InternationalString", HFILL }},
11094 { &hf_z3950_originalCategory,
11095 { "originalCategory", "z3950.originalCategory",
11096 FT_STRING, BASE_NONE, NULL, 0,
11097 "InternationalString", HFILL }},
11098 { &hf_z3950_dateAdded,
11099 { "dateAdded", "z3950.dateAdded",
11100 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
11101 "GeneralizedTime", HFILL }},
11102 { &hf_z3950_dateChanged,
11103 { "dateChanged", "z3950.dateChanged",
11104 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
11105 "GeneralizedTime", HFILL }},
11106 { &hf_z3950_expiry,
11107 { "expiry", "z3950.expiry",
11108 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
11109 "GeneralizedTime", HFILL }},
11110 { &hf_z3950_humanString_Language,
11111 { "humanString-Language", "z3950.humanString_Language",
11112 FT_STRING, BASE_NONE, NULL, 0,
11113 "LanguageCode", HFILL }},
11114 { &hf_z3950_HumanString_item,
11115 { "HumanString item", "z3950.HumanString_item_element",
11116 FT_NONE, BASE_NONE, NULL, 0,
11117 NULL, HFILL }},
11118 { &hf_z3950_language,
11119 { "language", "z3950.language",
11120 FT_STRING, BASE_NONE, NULL, 0,
11121 "LanguageCode", HFILL }},
11122 { &hf_z3950_text,
11123 { "text", "z3950.text",
11124 FT_STRING, BASE_NONE, NULL, 0,
11125 "InternationalString", HFILL }},
11126 { &hf_z3950_IconObject_item,
11127 { "IconObject item", "z3950.IconObject_item_element",
11128 FT_NONE, BASE_NONE, NULL, 0,
11129 NULL, HFILL }},
11130 { &hf_z3950_bodyType,
11131 { "bodyType", "z3950.bodyType",
11132 FT_UINT32, BASE_DEC, VALS(z3950_T_bodyType_vals), 0,
11133 NULL, HFILL }},
11134 { &hf_z3950_ianaType,
11135 { "ianaType", "z3950.ianaType",
11136 FT_STRING, BASE_NONE, NULL, 0,
11137 "InternationalString", HFILL }},
11138 { &hf_z3950_z3950type,
11139 { "z3950type", "z3950.z3950type",
11140 FT_STRING, BASE_NONE, NULL, 0,
11141 "InternationalString", HFILL }},
11142 { &hf_z3950_otherType,
11143 { "otherType", "z3950.otherType",
11144 FT_STRING, BASE_NONE, NULL, 0,
11145 "InternationalString", HFILL }},
11146 { &hf_z3950_content,
11147 { "content", "z3950.content",
11148 FT_BYTES, BASE_NONE, NULL, 0,
11149 "OCTET_STRING", HFILL }},
11150 { &hf_z3950_address,
11151 { "address", "z3950.address",
11152 FT_UINT32, BASE_DEC, NULL, 0,
11153 "HumanString", HFILL }},
11154 { &hf_z3950_email,
11155 { "email", "z3950.email",
11156 FT_STRING, BASE_NONE, NULL, 0,
11157 "InternationalString", HFILL }},
11158 { &hf_z3950_phone,
11159 { "phone", "z3950.phone",
11160 FT_STRING, BASE_NONE, NULL, 0,
11161 "InternationalString", HFILL }},
11162 { &hf_z3950_internetAddress,
11163 { "internetAddress", "z3950.internetAddress_element",
11164 FT_NONE, BASE_NONE, NULL, 0,
11165 NULL, HFILL }},
11166 { &hf_z3950_hostAddress,
11167 { "hostAddress", "z3950.hostAddress",
11168 FT_STRING, BASE_NONE, NULL, 0,
11169 "InternationalString", HFILL }},
11170 { &hf_z3950_port,
11171 { "port", "z3950.port",
11172 FT_INT32, BASE_DEC, NULL, 0,
11173 "INTEGER", HFILL }},
11174 { &hf_z3950_osiPresentationAddress,
11175 { "osiPresentationAddress", "z3950.osiPresentationAddress_element",
11176 FT_NONE, BASE_NONE, NULL, 0,
11177 NULL, HFILL }},
11178 { &hf_z3950_pSel,
11179 { "pSel", "z3950.pSel",
11180 FT_STRING, BASE_NONE, NULL, 0,
11181 "InternationalString", HFILL }},
11182 { &hf_z3950_sSel,
11183 { "sSel", "z3950.sSel",
11184 FT_STRING, BASE_NONE, NULL, 0,
11185 "InternationalString", HFILL }},
11186 { &hf_z3950_tSel,
11187 { "tSel", "z3950.tSel",
11188 FT_STRING, BASE_NONE, NULL, 0,
11189 "InternationalString", HFILL }},
11190 { &hf_z3950_nSap,
11191 { "nSap", "z3950.nSap",
11192 FT_STRING, BASE_NONE, NULL, 0,
11193 "InternationalString", HFILL }},
11194 { &hf_z3950_networkAddress_other,
11195 { "other", "z3950.other_element",
11196 FT_NONE, BASE_NONE, NULL, 0,
11197 "T_networkAddress_other", HFILL }},
11198 { &hf_z3950_networkAddress_other_type,
11199 { "type", "z3950.type",
11200 FT_STRING, BASE_NONE, NULL, 0,
11201 "InternationalString", HFILL }},
11202 { &hf_z3950_networkAddress_other_address,
11203 { "address", "z3950.address",
11204 FT_STRING, BASE_NONE, NULL, 0,
11205 "InternationalString", HFILL }},
11206 { &hf_z3950_queryTypesSupported,
11207 { "queryTypesSupported", "z3950.queryTypesSupported",
11208 FT_UINT32, BASE_DEC, NULL, 0,
11209 "SEQUENCE_OF_QueryTypeDetails", HFILL }},
11210 { &hf_z3950_queryTypesSupported_item,
11211 { "QueryTypeDetails", "z3950.QueryTypeDetails",
11212 FT_UINT32, BASE_DEC, VALS(z3950_QueryTypeDetails_vals), 0,
11213 NULL, HFILL }},
11214 { &hf_z3950_diagnosticsSets,
11215 { "diagnosticsSets", "z3950.diagnosticsSets",
11216 FT_UINT32, BASE_DEC, NULL, 0,
11217 NULL, HFILL }},
11218 { &hf_z3950_diagnosticsSets_item,
11219 { "diagnosticsSets item", "z3950.diagnosticsSets_item",
11220 FT_OID, BASE_NONE, NULL, 0,
11221 "OBJECT_IDENTIFIER", HFILL }},
11222 { &hf_z3950_attributeSetIds,
11223 { "attributeSetIds", "z3950.attributeSetIds",
11224 FT_UINT32, BASE_DEC, NULL, 0,
11225 "SEQUENCE_OF_AttributeSetId", HFILL }},
11226 { &hf_z3950_attributeSetIds_item,
11227 { "AttributeSetId", "z3950.AttributeSetId",
11228 FT_OID, BASE_NONE, NULL, 0,
11229 NULL, HFILL }},
11230 { &hf_z3950_schemas,
11231 { "schemas", "z3950.schemas",
11232 FT_UINT32, BASE_DEC, NULL, 0,
11233 NULL, HFILL }},
11234 { &hf_z3950_schemas_item,
11235 { "schemas item", "z3950.schemas_item",
11236 FT_OID, BASE_NONE, NULL, 0,
11237 "OBJECT_IDENTIFIER", HFILL }},
11238 { &hf_z3950_recordSyntaxes,
11239 { "recordSyntaxes", "z3950.recordSyntaxes",
11240 FT_UINT32, BASE_DEC, NULL, 0,
11241 NULL, HFILL }},
11242 { &hf_z3950_recordSyntaxes_item,
11243 { "recordSyntaxes item", "z3950.recordSyntaxes_item",
11244 FT_OID, BASE_NONE, NULL, 0,
11245 "OBJECT_IDENTIFIER", HFILL }},
11246 { &hf_z3950_resourceChallenges,
11247 { "resourceChallenges", "z3950.resourceChallenges",
11248 FT_UINT32, BASE_DEC, NULL, 0,
11249 NULL, HFILL }},
11250 { &hf_z3950_resourceChallenges_item,
11251 { "resourceChallenges item", "z3950.resourceChallenges_item",
11252 FT_OID, BASE_NONE, NULL, 0,
11253 "OBJECT_IDENTIFIER", HFILL }},
11254 { &hf_z3950_restrictedAccess,
11255 { "restrictedAccess", "z3950.restrictedAccess",
11256 FT_UINT32, BASE_DEC, NULL, 0,
11257 "AccessRestrictions", HFILL }},
11258 { &hf_z3950_costInfo,
11259 { "costInfo", "z3950.costInfo_element",
11260 FT_NONE, BASE_NONE, NULL, 0,
11261 "Costs", HFILL }},
11262 { &hf_z3950_variantSets,
11263 { "variantSets", "z3950.variantSets",
11264 FT_UINT32, BASE_DEC, NULL, 0,
11265 NULL, HFILL }},
11266 { &hf_z3950_variantSets_item,
11267 { "variantSets item", "z3950.variantSets_item",
11268 FT_OID, BASE_NONE, NULL, 0,
11269 "OBJECT_IDENTIFIER", HFILL }},
11270 { &hf_z3950_elementSetNames,
11271 { "elementSetNames", "z3950.elementSetNames",
11272 FT_UINT32, BASE_DEC, NULL, 0,
11273 "SEQUENCE_OF_ElementSetName", HFILL }},
11274 { &hf_z3950_elementSetNames_item,
11275 { "ElementSetName", "z3950.ElementSetName",
11276 FT_STRING, BASE_NONE, NULL, 0,
11277 NULL, HFILL }},
11278 { &hf_z3950_unitSystems,
11279 { "unitSystems", "z3950.unitSystems",
11280 FT_UINT32, BASE_DEC, NULL, 0,
11281 "SEQUENCE_OF_InternationalString", HFILL }},
11282 { &hf_z3950_unitSystems_item,
11283 { "InternationalString", "z3950.InternationalString",
11284 FT_STRING, BASE_NONE, NULL, 0,
11285 NULL, HFILL }},
11286 { &hf_z3950_queryTypeDetails_private,
11287 { "private", "z3950.private_element",
11288 FT_NONE, BASE_NONE, NULL, 0,
11289 "PrivateCapabilities", HFILL }},
11290 { &hf_z3950_queryTypeDetails_rpn,
11291 { "rpn", "z3950.rpn_element",
11292 FT_NONE, BASE_NONE, NULL, 0,
11293 "RpnCapabilities", HFILL }},
11294 { &hf_z3950_iso8777,
11295 { "iso8777", "z3950.iso8777_element",
11296 FT_NONE, BASE_NONE, NULL, 0,
11297 "Iso8777Capabilities", HFILL }},
11298 { &hf_z3950_z39_58,
11299 { "z39-58", "z3950.z39_58",
11300 FT_UINT32, BASE_DEC, NULL, 0,
11301 "HumanString", HFILL }},
11302 { &hf_z3950_erpn,
11303 { "erpn", "z3950.erpn_element",
11304 FT_NONE, BASE_NONE, NULL, 0,
11305 "RpnCapabilities", HFILL }},
11306 { &hf_z3950_rankedList,
11307 { "rankedList", "z3950.rankedList",
11308 FT_UINT32, BASE_DEC, NULL, 0,
11309 "HumanString", HFILL }},
11310 { &hf_z3950_privateCapabilities_operators,
11311 { "operators", "z3950.operators",
11312 FT_UINT32, BASE_DEC, NULL, 0,
11313 "T_privateCapabilities_operators", HFILL }},
11314 { &hf_z3950_privateCapabilities_operators_item,
11315 { "operators item", "z3950.operators_item_element",
11316 FT_NONE, BASE_NONE, NULL, 0,
11317 "T_privateCapabilities_operators_item", HFILL }},
11318 { &hf_z3950_operator,
11319 { "operator", "z3950.operator",
11320 FT_STRING, BASE_NONE, NULL, 0,
11321 "InternationalString", HFILL }},
11322 { &hf_z3950_searchKeys,
11323 { "searchKeys", "z3950.searchKeys",
11324 FT_UINT32, BASE_DEC, NULL, 0,
11325 "SEQUENCE_OF_SearchKey", HFILL }},
11326 { &hf_z3950_searchKeys_item,
11327 { "SearchKey", "z3950.SearchKey_element",
11328 FT_NONE, BASE_NONE, NULL, 0,
11329 NULL, HFILL }},
11330 { &hf_z3950_privateCapabilities_description,
11331 { "description", "z3950.description",
11332 FT_UINT32, BASE_DEC, NULL, 0,
11333 "SEQUENCE_OF_HumanString", HFILL }},
11334 { &hf_z3950_privateCapabilities_description_item,
11335 { "HumanString", "z3950.HumanString",
11336 FT_UINT32, BASE_DEC, NULL, 0,
11337 NULL, HFILL }},
11338 { &hf_z3950_operators,
11339 { "operators", "z3950.operators",
11340 FT_UINT32, BASE_DEC, NULL, 0,
11341 NULL, HFILL }},
11342 { &hf_z3950_operators_item,
11343 { "operators item", "z3950.operators_item",
11344 FT_INT32, BASE_DEC, NULL, 0,
11345 "INTEGER", HFILL }},
11346 { &hf_z3950_resultSetAsOperandSupported,
11347 { "resultSetAsOperandSupported", "z3950.resultSetAsOperandSupported",
11348 FT_BOOLEAN, BASE_NONE, NULL, 0,
11349 "BOOLEAN", HFILL }},
11350 { &hf_z3950_restrictionOperandSupported,
11351 { "restrictionOperandSupported", "z3950.restrictionOperandSupported",
11352 FT_BOOLEAN, BASE_NONE, NULL, 0,
11353 "BOOLEAN", HFILL }},
11354 { &hf_z3950_proximity,
11355 { "proximity", "z3950.proximity_element",
11356 FT_NONE, BASE_NONE, NULL, 0,
11357 "ProximitySupport", HFILL }},
11358 { &hf_z3950_anySupport,
11359 { "anySupport", "z3950.anySupport",
11360 FT_BOOLEAN, BASE_NONE, NULL, 0,
11361 "BOOLEAN", HFILL }},
11362 { &hf_z3950_unitsSupported,
11363 { "unitsSupported", "z3950.unitsSupported",
11364 FT_UINT32, BASE_DEC, NULL, 0,
11365 NULL, HFILL }},
11366 { &hf_z3950_unitsSupported_item,
11367 { "unitsSupported item", "z3950.unitsSupported_item",
11368 FT_UINT32, BASE_DEC, VALS(z3950_T_unitsSupported_item_vals), 0,
11369 NULL, HFILL }},
11370 { &hf_z3950_proximitySupport_unitsSupported_item_known,
11371 { "known", "z3950.known",
11372 FT_INT32, BASE_DEC, NULL, 0,
11373 "INTEGER", HFILL }},
11374 { &hf_z3950_proximitySupport_unitsSupported_item_private,
11375 { "private", "z3950.private_element",
11376 FT_NONE, BASE_NONE, NULL, 0,
11377 "T_proximitySupport_unitsSupported_item_private", HFILL }},
11378 { &hf_z3950_proximitySupport_unitsSupported_item_private_unit,
11379 { "unit", "z3950.unit",
11380 FT_INT32, BASE_DEC, NULL, 0,
11381 "INTEGER", HFILL }},
11382 { &hf_z3950_searchKey,
11383 { "searchKey", "z3950.searchKey",
11384 FT_STRING, BASE_NONE, NULL, 0,
11385 "InternationalString", HFILL }},
11386 { &hf_z3950_AccessRestrictions_item,
11387 { "AccessRestrictions item", "z3950.AccessRestrictions_item_element",
11388 FT_NONE, BASE_NONE, NULL, 0,
11389 NULL, HFILL }},
11390 { &hf_z3950_accessType,
11391 { "accessType", "z3950.accessType",
11392 FT_INT32, BASE_DEC, VALS(z3950_T_accessType_vals), 0,
11393 NULL, HFILL }},
11394 { &hf_z3950_accessText,
11395 { "accessText", "z3950.accessText",
11396 FT_UINT32, BASE_DEC, NULL, 0,
11397 "HumanString", HFILL }},
11398 { &hf_z3950_accessChallenges,
11399 { "accessChallenges", "z3950.accessChallenges",
11400 FT_UINT32, BASE_DEC, NULL, 0,
11401 NULL, HFILL }},
11402 { &hf_z3950_accessChallenges_item,
11403 { "accessChallenges item", "z3950.accessChallenges_item",
11404 FT_OID, BASE_NONE, NULL, 0,
11405 "OBJECT_IDENTIFIER", HFILL }},
11406 { &hf_z3950_connectCharge,
11407 { "connectCharge", "z3950.connectCharge_element",
11408 FT_NONE, BASE_NONE, NULL, 0,
11409 "Charge", HFILL }},
11410 { &hf_z3950_connectTime,
11411 { "connectTime", "z3950.connectTime_element",
11412 FT_NONE, BASE_NONE, NULL, 0,
11413 "Charge", HFILL }},
11414 { &hf_z3950_displayCharge,
11415 { "displayCharge", "z3950.displayCharge_element",
11416 FT_NONE, BASE_NONE, NULL, 0,
11417 "Charge", HFILL }},
11418 { &hf_z3950_searchCharge,
11419 { "searchCharge", "z3950.searchCharge_element",
11420 FT_NONE, BASE_NONE, NULL, 0,
11421 "Charge", HFILL }},
11422 { &hf_z3950_subscriptCharge,
11423 { "subscriptCharge", "z3950.subscriptCharge_element",
11424 FT_NONE, BASE_NONE, NULL, 0,
11425 "Charge", HFILL }},
11426 { &hf_z3950_otherCharges,
11427 { "otherCharges", "z3950.otherCharges",
11428 FT_UINT32, BASE_DEC, NULL, 0,
11429 NULL, HFILL }},
11430 { &hf_z3950_otherCharges_item,
11431 { "otherCharges item", "z3950.otherCharges_item_element",
11432 FT_NONE, BASE_NONE, NULL, 0,
11433 NULL, HFILL }},
11434 { &hf_z3950_forWhat,
11435 { "forWhat", "z3950.forWhat",
11436 FT_UINT32, BASE_DEC, NULL, 0,
11437 "HumanString", HFILL }},
11438 { &hf_z3950_charge,
11439 { "charge", "z3950.charge_element",
11440 FT_NONE, BASE_NONE, NULL, 0,
11441 NULL, HFILL }},
11442 { &hf_z3950_cost,
11443 { "cost", "z3950.cost_element",
11444 FT_NONE, BASE_NONE, NULL, 0,
11445 "IntUnit", HFILL }},
11446 { &hf_z3950_perWhat,
11447 { "perWhat", "z3950.perWhat_element",
11448 FT_NONE, BASE_NONE, NULL, 0,
11449 "Unit", HFILL }},
11450 { &hf_z3950_charge_text,
11451 { "text", "z3950.text",
11452 FT_UINT32, BASE_DEC, NULL, 0,
11453 "HumanString", HFILL }},
11454 { &hf_z3950_DatabaseList_item,
11455 { "DatabaseName", "z3950.DatabaseName",
11456 FT_STRING, BASE_NONE, NULL, 0,
11457 NULL, HFILL }},
11458 { &hf_z3950_defaultAttributeSet,
11459 { "defaultAttributeSet", "z3950.defaultAttributeSet",
11460 FT_OID, BASE_NONE, NULL, 0,
11461 "AttributeSetId", HFILL }},
11462 { &hf_z3950_legalCombinations,
11463 { "legalCombinations", "z3950.legalCombinations",
11464 FT_UINT32, BASE_DEC, NULL, 0,
11465 "SEQUENCE_OF_AttributeCombination", HFILL }},
11466 { &hf_z3950_legalCombinations_item,
11467 { "AttributeCombination", "z3950.AttributeCombination",
11468 FT_UINT32, BASE_DEC, NULL, 0,
11469 NULL, HFILL }},
11470 { &hf_z3950_AttributeCombination_item,
11471 { "AttributeOccurrence", "z3950.AttributeOccurrence_element",
11472 FT_NONE, BASE_NONE, NULL, 0,
11473 NULL, HFILL }},
11474 { &hf_z3950_mustBeSupplied,
11475 { "mustBeSupplied", "z3950.mustBeSupplied_element",
11476 FT_NONE, BASE_NONE, NULL, 0,
11477 NULL, HFILL }},
11478 { &hf_z3950_attributeOccurrence_attributeValues,
11479 { "attributeValues", "z3950.attributeValues",
11480 FT_UINT32, BASE_DEC, VALS(z3950_T_attributeOccurrence_attributeValues_vals), 0,
11481 "T_attributeOccurrence_attributeValues", HFILL }},
11482 { &hf_z3950_any_or_none,
11483 { "any-or-none", "z3950.any_or_none_element",
11484 FT_NONE, BASE_NONE, NULL, 0,
11485 NULL, HFILL }},
11486 { &hf_z3950_specific,
11487 { "specific", "z3950.specific",
11488 FT_UINT32, BASE_DEC, NULL, 0,
11489 "SEQUENCE_OF_StringOrNumeric", HFILL }},
11490 { &hf_z3950_specific_item,
11491 { "StringOrNumeric", "z3950.StringOrNumeric",
11492 FT_UINT32, BASE_DEC, VALS(z3950_StringOrNumeric_vals), 0,
11493 NULL, HFILL }},
11494 { &hf_z3950_briefBib_title,
11495 { "title", "z3950.title",
11496 FT_STRING, BASE_NONE, NULL, 0,
11497 "InternationalString", HFILL }},
11498 { &hf_z3950_author,
11499 { "author", "z3950.author",
11500 FT_STRING, BASE_NONE, NULL, 0,
11501 "InternationalString", HFILL }},
11502 { &hf_z3950_recordType,
11503 { "recordType", "z3950.recordType",
11504 FT_STRING, BASE_NONE, NULL, 0,
11505 "InternationalString", HFILL }},
11506 { &hf_z3950_bibliographicLevel,
11507 { "bibliographicLevel", "z3950.bibliographicLevel",
11508 FT_STRING, BASE_NONE, NULL, 0,
11509 "InternationalString", HFILL }},
11510 { &hf_z3950_briefBib_format,
11511 { "format", "z3950.format",
11512 FT_UINT32, BASE_DEC, NULL, 0,
11513 "SEQUENCE_OF_FormatSpec", HFILL }},
11514 { &hf_z3950_briefBib_format_item,
11515 { "FormatSpec", "z3950.FormatSpec_element",
11516 FT_NONE, BASE_NONE, NULL, 0,
11517 NULL, HFILL }},
11518 { &hf_z3950_publicationPlace,
11519 { "publicationPlace", "z3950.publicationPlace",
11520 FT_STRING, BASE_NONE, NULL, 0,
11521 "InternationalString", HFILL }},
11522 { &hf_z3950_publicationDate,
11523 { "publicationDate", "z3950.publicationDate",
11524 FT_STRING, BASE_NONE, NULL, 0,
11525 "InternationalString", HFILL }},
11526 { &hf_z3950_targetSystemKey,
11527 { "targetSystemKey", "z3950.targetSystemKey",
11528 FT_STRING, BASE_NONE, NULL, 0,
11529 "InternationalString", HFILL }},
11530 { &hf_z3950_satisfyingElement,
11531 { "satisfyingElement", "z3950.satisfyingElement",
11532 FT_STRING, BASE_NONE, NULL, 0,
11533 "InternationalString", HFILL }},
11534 { &hf_z3950_rank,
11535 { "rank", "z3950.rank",
11536 FT_INT32, BASE_DEC, NULL, 0,
11537 "INTEGER", HFILL }},
11538 { &hf_z3950_documentId,
11539 { "documentId", "z3950.documentId",
11540 FT_STRING, BASE_NONE, NULL, 0,
11541 "InternationalString", HFILL }},
11542 { &hf_z3950_abstract,
11543 { "abstract", "z3950.abstract",
11544 FT_STRING, BASE_NONE, NULL, 0,
11545 "InternationalString", HFILL }},
11546 { &hf_z3950_formatSpec_type,
11547 { "type", "z3950.type",
11548 FT_STRING, BASE_NONE, NULL, 0,
11549 "InternationalString", HFILL }},
11550 { &hf_z3950_size,
11551 { "size", "z3950.size",
11552 FT_INT32, BASE_DEC, NULL, 0,
11553 "INTEGER", HFILL }},
11554 { &hf_z3950_bestPosn,
11555 { "bestPosn", "z3950.bestPosn",
11556 FT_INT32, BASE_DEC, NULL, 0,
11557 "INTEGER", HFILL }},
11558 { &hf_z3950_GenericRecord_item,
11559 { "TaggedElement", "z3950.TaggedElement_element",
11560 FT_NONE, BASE_NONE, NULL, 0,
11561 NULL, HFILL }},
11562 { &hf_z3950_tagOccurrence,
11563 { "tagOccurrence", "z3950.tagOccurrence",
11564 FT_INT32, BASE_DEC, NULL, 0,
11565 "INTEGER", HFILL }},
11566 { &hf_z3950_taggedElement_content,
11567 { "content", "z3950.content",
11568 FT_UINT32, BASE_DEC, VALS(z3950_ElementData_vals), 0,
11569 "ElementData", HFILL }},
11570 { &hf_z3950_metaData,
11571 { "metaData", "z3950.metaData_element",
11572 FT_NONE, BASE_NONE, NULL, 0,
11573 "ElementMetaData", HFILL }},
11574 { &hf_z3950_appliedVariant,
11575 { "appliedVariant", "z3950.appliedVariant_element",
11576 FT_NONE, BASE_NONE, NULL, 0,
11577 "Variant", HFILL }},
11578 { &hf_z3950_date,
11579 { "date", "z3950.date",
11580 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
11581 "GeneralizedTime", HFILL }},
11582 { &hf_z3950_ext,
11583 { "ext", "z3950.ext_element",
11584 FT_NONE, BASE_NONE, NULL, 0,
11585 "EXTERNAL", HFILL }},
11586 { &hf_z3950_trueOrFalse,
11587 { "trueOrFalse", "z3950.trueOrFalse",
11588 FT_BOOLEAN, BASE_NONE, NULL, 0,
11589 "BOOLEAN", HFILL }},
11590 { &hf_z3950_intUnit,
11591 { "intUnit", "z3950.intUnit_element",
11592 FT_NONE, BASE_NONE, NULL, 0,
11593 NULL, HFILL }},
11594 { &hf_z3950_elementNotThere,
11595 { "elementNotThere", "z3950.elementNotThere_element",
11596 FT_NONE, BASE_NONE, NULL, 0,
11597 NULL, HFILL }},
11598 { &hf_z3950_elementEmpty,
11599 { "elementEmpty", "z3950.elementEmpty_element",
11600 FT_NONE, BASE_NONE, NULL, 0,
11601 NULL, HFILL }},
11602 { &hf_z3950_noDataRequested,
11603 { "noDataRequested", "z3950.noDataRequested_element",
11604 FT_NONE, BASE_NONE, NULL, 0,
11605 NULL, HFILL }},
11606 { &hf_z3950_elementData_diagnostic,
11607 { "diagnostic", "z3950.diagnostic_element",
11608 FT_NONE, BASE_NONE, NULL, 0,
11609 "EXTERNAL", HFILL }},
11610 { &hf_z3950_subtree,
11611 { "subtree", "z3950.subtree",
11612 FT_UINT32, BASE_DEC, NULL, 0,
11613 "SEQUENCE_OF_TaggedElement", HFILL }},
11614 { &hf_z3950_subtree_item,
11615 { "TaggedElement", "z3950.TaggedElement_element",
11616 FT_NONE, BASE_NONE, NULL, 0,
11617 NULL, HFILL }},
11618 { &hf_z3950_seriesOrder,
11619 { "seriesOrder", "z3950.seriesOrder_element",
11620 FT_NONE, BASE_NONE, NULL, 0,
11621 "Order", HFILL }},
11622 { &hf_z3950_usageRight,
11623 { "usageRight", "z3950.usageRight_element",
11624 FT_NONE, BASE_NONE, NULL, 0,
11625 "Usage", HFILL }},
11626 { &hf_z3950_hits,
11627 { "hits", "z3950.hits",
11628 FT_UINT32, BASE_DEC, NULL, 0,
11629 "SEQUENCE_OF_HitVector", HFILL }},
11630 { &hf_z3950_hits_item,
11631 { "HitVector", "z3950.HitVector_element",
11632 FT_NONE, BASE_NONE, NULL, 0,
11633 NULL, HFILL }},
11634 { &hf_z3950_displayName,
11635 { "displayName", "z3950.displayName",
11636 FT_STRING, BASE_NONE, NULL, 0,
11637 "InternationalString", HFILL }},
11638 { &hf_z3950_supportedVariants,
11639 { "supportedVariants", "z3950.supportedVariants",
11640 FT_UINT32, BASE_DEC, NULL, 0,
11641 "SEQUENCE_OF_Variant", HFILL }},
11642 { &hf_z3950_supportedVariants_item,
11643 { "Variant", "z3950.Variant_element",
11644 FT_NONE, BASE_NONE, NULL, 0,
11645 NULL, HFILL }},
11646 { &hf_z3950_elementDescriptor,
11647 { "elementDescriptor", "z3950.elementDescriptor",
11648 FT_BYTES, BASE_NONE, NULL, 0,
11649 "OCTET_STRING", HFILL }},
11650 { &hf_z3950_surrogateFor,
11651 { "surrogateFor", "z3950.surrogateFor",
11652 FT_UINT32, BASE_DEC, NULL, 0,
11653 "TagPath", HFILL }},
11654 { &hf_z3950_surrogateElement,
11655 { "surrogateElement", "z3950.surrogateElement",
11656 FT_UINT32, BASE_DEC, NULL, 0,
11657 "TagPath", HFILL }},
11658 { &hf_z3950_TagPath_item,
11659 { "TagPath item", "z3950.TagPath_item_element",
11660 FT_NONE, BASE_NONE, NULL, 0,
11661 NULL, HFILL }},
11662 { &hf_z3950_ascending,
11663 { "ascending", "z3950.ascending",
11664 FT_BOOLEAN, BASE_NONE, NULL, 0,
11665 "BOOLEAN", HFILL }},
11666 { &hf_z3950_order,
11667 { "order", "z3950.order",
11668 FT_INT32, BASE_DEC, NULL, 0,
11669 "INTEGER", HFILL }},
11670 { &hf_z3950_usage_type,
11671 { "type", "z3950.type",
11672 FT_INT32, BASE_DEC, VALS(z3950_T_usage_type_vals), 0,
11673 "T_usage_type", HFILL }},
11674 { &hf_z3950_restriction,
11675 { "restriction", "z3950.restriction",
11676 FT_STRING, BASE_NONE, NULL, 0,
11677 "InternationalString", HFILL }},
11678 { &hf_z3950_satisfier,
11679 { "satisfier", "z3950.satisfier",
11680 FT_UINT32, BASE_DEC, VALS(z3950_Term_vals), 0,
11681 "Term", HFILL }},
11682 { &hf_z3950_offsetIntoElement,
11683 { "offsetIntoElement", "z3950.offsetIntoElement_element",
11684 FT_NONE, BASE_NONE, NULL, 0,
11685 "IntUnit", HFILL }},
11686 { &hf_z3950_length,
11687 { "length", "z3950.length_element",
11688 FT_NONE, BASE_NONE, NULL, 0,
11689 "IntUnit", HFILL }},
11690 { &hf_z3950_hitRank,
11691 { "hitRank", "z3950.hitRank",
11692 FT_INT32, BASE_DEC, NULL, 0,
11693 "INTEGER", HFILL }},
11694 { &hf_z3950_targetToken,
11695 { "targetToken", "z3950.targetToken",
11696 FT_BYTES, BASE_NONE, NULL, 0,
11697 "OCTET_STRING", HFILL }},
11698 { &hf_z3950_globalVariantSetId,
11699 { "globalVariantSetId", "z3950.globalVariantSetId",
11700 FT_OID, BASE_NONE, NULL, 0,
11701 "OBJECT_IDENTIFIER", HFILL }},
11702 { &hf_z3950_triples,
11703 { "triples", "z3950.triples",
11704 FT_UINT32, BASE_DEC, NULL, 0,
11705 NULL, HFILL }},
11706 { &hf_z3950_triples_item,
11707 { "triples item", "z3950.triples_item_element",
11708 FT_NONE, BASE_NONE, NULL, 0,
11709 NULL, HFILL }},
11710 { &hf_z3950_variantSetId,
11711 { "variantSetId", "z3950.variantSetId",
11712 FT_OID, BASE_NONE, NULL, 0,
11713 "OBJECT_IDENTIFIER", HFILL }},
11714 { &hf_z3950_class,
11715 { "class", "z3950.class",
11716 FT_INT32, BASE_DEC, NULL, 0,
11717 "INTEGER", HFILL }},
11718 { &hf_z3950_variant_triples_item_value,
11719 { "value", "z3950.value",
11720 FT_UINT32, BASE_DEC, VALS(z3950_T_variant_triples_item_value_vals), 0,
11721 "T_variant_triples_item_value", HFILL }},
11722 { &hf_z3950_octetString,
11723 { "octetString", "z3950.octetString",
11724 FT_BYTES, BASE_NONE, NULL, 0,
11725 "OCTET_STRING", HFILL }},
11726 { &hf_z3950_boolean,
11727 { "boolean", "z3950.boolean",
11728 FT_BOOLEAN, BASE_NONE, NULL, 0,
11729 NULL, HFILL }},
11730 { &hf_z3950_variant_triples_item_value_unit,
11731 { "unit", "z3950.unit_element",
11732 FT_NONE, BASE_NONE, NULL, 0,
11733 NULL, HFILL }},
11734 { &hf_z3950_taskPackage_description,
11735 { "description", "z3950.description",
11736 FT_STRING, BASE_NONE, NULL, 0,
11737 "InternationalString", HFILL }},
11738 { &hf_z3950_targetReference,
11739 { "targetReference", "z3950.targetReference",
11740 FT_BYTES, BASE_NONE, NULL, 0,
11741 "OCTET_STRING", HFILL }},
11742 { &hf_z3950_creationDateTime,
11743 { "creationDateTime", "z3950.creationDateTime",
11744 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
11745 "GeneralizedTime", HFILL }},
11746 { &hf_z3950_taskStatus,
11747 { "taskStatus", "z3950.taskStatus",
11748 FT_INT32, BASE_DEC, VALS(z3950_T_taskStatus_vals), 0,
11749 NULL, HFILL }},
11750 { &hf_z3950_packageDiagnostics,
11751 { "packageDiagnostics", "z3950.packageDiagnostics",
11752 FT_UINT32, BASE_DEC, NULL, 0,
11753 "SEQUENCE_OF_DiagRec", HFILL }},
11754 { &hf_z3950_packageDiagnostics_item,
11755 { "DiagRec", "z3950.DiagRec",
11756 FT_UINT32, BASE_DEC, VALS(z3950_DiagRec_vals), 0,
11757 NULL, HFILL }},
11758 { &hf_z3950_challenge,
11759 { "challenge", "z3950.challenge",
11760 FT_UINT32, BASE_DEC, NULL, 0,
11761 NULL, HFILL }},
11762 { &hf_z3950_response,
11763 { "response", "z3950.response",
11764 FT_UINT32, BASE_DEC, NULL, 0,
11765 NULL, HFILL }},
11766 { &hf_z3950_Challenge_item,
11767 { "Challenge item", "z3950.Challenge_item_element",
11768 FT_NONE, BASE_NONE, NULL, 0,
11769 NULL, HFILL }},
11770 { &hf_z3950_promptId,
11771 { "promptId", "z3950.promptId",
11772 FT_UINT32, BASE_DEC, VALS(z3950_PromptId_vals), 0,
11773 NULL, HFILL }},
11774 { &hf_z3950_defaultResponse,
11775 { "defaultResponse", "z3950.defaultResponse",
11776 FT_STRING, BASE_NONE, NULL, 0,
11777 "InternationalString", HFILL }},
11778 { &hf_z3950_promptInfo,
11779 { "promptInfo", "z3950.promptInfo",
11780 FT_UINT32, BASE_DEC, VALS(z3950_T_promptInfo_vals), 0,
11781 NULL, HFILL }},
11782 { &hf_z3950_challenge_item_promptInfo_character,
11783 { "character", "z3950.character",
11784 FT_STRING, BASE_NONE, NULL, 0,
11785 "InternationalString", HFILL }},
11786 { &hf_z3950_encrypted,
11787 { "encrypted", "z3950.encrypted_element",
11788 FT_NONE, BASE_NONE, NULL, 0,
11789 "Encryption", HFILL }},
11790 { &hf_z3950_regExpr,
11791 { "regExpr", "z3950.regExpr",
11792 FT_STRING, BASE_NONE, NULL, 0,
11793 "InternationalString", HFILL }},
11794 { &hf_z3950_responseRequired,
11795 { "responseRequired", "z3950.responseRequired_element",
11796 FT_NONE, BASE_NONE, NULL, 0,
11797 NULL, HFILL }},
11798 { &hf_z3950_allowedValues,
11799 { "allowedValues", "z3950.allowedValues",
11800 FT_UINT32, BASE_DEC, NULL, 0,
11801 "SEQUENCE_OF_InternationalString", HFILL }},
11802 { &hf_z3950_allowedValues_item,
11803 { "InternationalString", "z3950.InternationalString",
11804 FT_STRING, BASE_NONE, NULL, 0,
11805 NULL, HFILL }},
11806 { &hf_z3950_shouldSave,
11807 { "shouldSave", "z3950.shouldSave_element",
11808 FT_NONE, BASE_NONE, NULL, 0,
11809 NULL, HFILL }},
11810 { &hf_z3950_challenge_item_dataType,
11811 { "dataType", "z3950.dataType",
11812 FT_INT32, BASE_DEC, VALS(z3950_T_challenge_item_dataType_vals), 0,
11813 "T_challenge_item_dataType", HFILL }},
11814 { &hf_z3950_challenge_item_diagnostic,
11815 { "diagnostic", "z3950.diagnostic_element",
11816 FT_NONE, BASE_NONE, NULL, 0,
11817 "EXTERNAL", HFILL }},
11818 { &hf_z3950_Response_item,
11819 { "Response item", "z3950.Response_item_element",
11820 FT_NONE, BASE_NONE, NULL, 0,
11821 NULL, HFILL }},
11822 { &hf_z3950_promptResponse,
11823 { "promptResponse", "z3950.promptResponse",
11824 FT_UINT32, BASE_DEC, VALS(z3950_T_promptResponse_vals), 0,
11825 NULL, HFILL }},
11826 { &hf_z3950_accept,
11827 { "accept", "z3950.accept",
11828 FT_BOOLEAN, BASE_NONE, NULL, 0,
11829 "BOOLEAN", HFILL }},
11830 { &hf_z3950_acknowledge,
11831 { "acknowledge", "z3950.acknowledge_element",
11832 FT_NONE, BASE_NONE, NULL, 0,
11833 NULL, HFILL }},
11834 { &hf_z3950_enummeratedPrompt,
11835 { "enummeratedPrompt", "z3950.enummeratedPrompt_element",
11836 FT_NONE, BASE_NONE, NULL, 0,
11837 NULL, HFILL }},
11838 { &hf_z3950_promptId_enummeratedPrompt_type,
11839 { "type", "z3950.type",
11840 FT_INT32, BASE_DEC, VALS(z3950_T_promptId_enummeratedPrompt_type_vals), 0,
11841 "T_promptId_enummeratedPrompt_type", HFILL }},
11842 { &hf_z3950_suggestedString,
11843 { "suggestedString", "z3950.suggestedString",
11844 FT_STRING, BASE_NONE, NULL, 0,
11845 "InternationalString", HFILL }},
11846 { &hf_z3950_nonEnumeratedPrompt,
11847 { "nonEnumeratedPrompt", "z3950.nonEnumeratedPrompt",
11848 FT_STRING, BASE_NONE, NULL, 0,
11849 "InternationalString", HFILL }},
11850 { &hf_z3950_cryptType,
11851 { "cryptType", "z3950.cryptType",
11852 FT_BYTES, BASE_NONE, NULL, 0,
11853 "OCTET_STRING", HFILL }},
11854 { &hf_z3950_credential,
11855 { "credential", "z3950.credential",
11856 FT_BYTES, BASE_NONE, NULL, 0,
11857 "OCTET_STRING", HFILL }},
11858 { &hf_z3950_data,
11859 { "data", "z3950.data",
11860 FT_BYTES, BASE_NONE, NULL, 0,
11861 "OCTET_STRING", HFILL }},
11862 { &hf_z3950_dES_RN_Object_challenge,
11863 { "challenge", "z3950.challenge_element",
11864 FT_NONE, BASE_NONE, NULL, 0,
11865 "DRNType", HFILL }},
11866 { &hf_z3950_rES_RN_Object_response,
11867 { "response", "z3950.response_element",
11868 FT_NONE, BASE_NONE, NULL, 0,
11869 "DRNType", HFILL }},
11870 { &hf_z3950_dRNType_userId,
11871 { "userId", "z3950.userId",
11872 FT_BYTES, BASE_NONE, NULL, 0,
11873 "OCTET_STRING", HFILL }},
11874 { &hf_z3950_salt,
11875 { "salt", "z3950.salt",
11876 FT_BYTES, BASE_NONE, NULL, 0,
11877 "OCTET_STRING", HFILL }},
11878 { &hf_z3950_randomNumber,
11879 { "randomNumber", "z3950.randomNumber",
11880 FT_BYTES, BASE_NONE, NULL, 0,
11881 "OCTET_STRING", HFILL }},
11882 { &hf_z3950_kRBObject_challenge,
11883 { "challenge", "z3950.challenge_element",
11884 FT_NONE, BASE_NONE, NULL, 0,
11885 "KRBRequest", HFILL }},
11886 { &hf_z3950_kRBObject_response,
11887 { "response", "z3950.response_element",
11888 FT_NONE, BASE_NONE, NULL, 0,
11889 "KRBResponse", HFILL }},
11890 { &hf_z3950_service,
11891 { "service", "z3950.service",
11892 FT_STRING, BASE_NONE, NULL, 0,
11893 "InternationalString", HFILL }},
11894 { &hf_z3950_instance,
11895 { "instance", "z3950.instance",
11896 FT_STRING, BASE_NONE, NULL, 0,
11897 "InternationalString", HFILL }},
11898 { &hf_z3950_realm,
11899 { "realm", "z3950.realm",
11900 FT_STRING, BASE_NONE, NULL, 0,
11901 "InternationalString", HFILL }},
11902 { &hf_z3950_userid,
11903 { "userid", "z3950.userid",
11904 FT_STRING, BASE_NONE, NULL, 0,
11905 "InternationalString", HFILL }},
11906 { &hf_z3950_ticket,
11907 { "ticket", "z3950.ticket",
11908 FT_BYTES, BASE_NONE, NULL, 0,
11909 "OCTET_STRING", HFILL }},
11910 { &hf_z3950_SearchInfoReport_item,
11911 { "SearchInfoReport item", "z3950.SearchInfoReport_item_element",
11912 FT_NONE, BASE_NONE, NULL, 0,
11913 NULL, HFILL }},
11914 { &hf_z3950_subqueryId,
11915 { "subqueryId", "z3950.subqueryId",
11916 FT_STRING, BASE_NONE, NULL, 0,
11917 "InternationalString", HFILL }},
11918 { &hf_z3950_fullQuery,
11919 { "fullQuery", "z3950.fullQuery",
11920 FT_BOOLEAN, BASE_NONE, NULL, 0,
11921 "BOOLEAN", HFILL }},
11922 { &hf_z3950_subqueryExpression,
11923 { "subqueryExpression", "z3950.subqueryExpression",
11924 FT_UINT32, BASE_DEC, VALS(z3950_QueryExpression_vals), 0,
11925 "QueryExpression", HFILL }},
11926 { &hf_z3950_subqueryInterpretation,
11927 { "subqueryInterpretation", "z3950.subqueryInterpretation",
11928 FT_UINT32, BASE_DEC, VALS(z3950_QueryExpression_vals), 0,
11929 "QueryExpression", HFILL }},
11930 { &hf_z3950_subqueryRecommendation,
11931 { "subqueryRecommendation", "z3950.subqueryRecommendation",
11932 FT_UINT32, BASE_DEC, VALS(z3950_QueryExpression_vals), 0,
11933 "QueryExpression", HFILL }},
11934 { &hf_z3950_subqueryCount,
11935 { "subqueryCount", "z3950.subqueryCount",
11936 FT_INT32, BASE_DEC, NULL, 0,
11937 "INTEGER", HFILL }},
11938 { &hf_z3950_subqueryWeight,
11939 { "subqueryWeight", "z3950.subqueryWeight_element",
11940 FT_NONE, BASE_NONE, NULL, 0,
11941 "IntUnit", HFILL }},
11942 { &hf_z3950_resultsByDB,
11943 { "resultsByDB", "z3950.resultsByDB",
11944 FT_UINT32, BASE_DEC, NULL, 0,
11945 NULL, HFILL }},
11946 { &hf_z3950_ResultsByDB_item,
11947 { "ResultsByDB item", "z3950.ResultsByDB_item_element",
11948 FT_NONE, BASE_NONE, NULL, 0,
11949 NULL, HFILL }},
11950 { &hf_z3950_databases,
11951 { "databases", "z3950.databases",
11952 FT_UINT32, BASE_DEC, VALS(z3950_T_databases_vals), 0,
11953 NULL, HFILL }},
11954 { &hf_z3950_all,
11955 { "all", "z3950.all_element",
11956 FT_NONE, BASE_NONE, NULL, 0,
11957 NULL, HFILL }},
11958 { &hf_z3950_list,
11959 { "list", "z3950.list",
11960 FT_UINT32, BASE_DEC, NULL, 0,
11961 "SEQUENCE_OF_DatabaseName", HFILL }},
11962 { &hf_z3950_list_item,
11963 { "DatabaseName", "z3950.DatabaseName",
11964 FT_STRING, BASE_NONE, NULL, 0,
11965 NULL, HFILL }},
11966 { &hf_z3950_count,
11967 { "count", "z3950.count",
11968 FT_INT32, BASE_DEC, NULL, 0,
11969 "INTEGER", HFILL }},
11970 { &hf_z3950_queryExpression_term,
11971 { "term", "z3950.term_element",
11972 FT_NONE, BASE_NONE, NULL, 0,
11973 "T_queryExpression_term", HFILL }},
11974 { &hf_z3950_queryTerm,
11975 { "queryTerm", "z3950.queryTerm",
11976 FT_UINT32, BASE_DEC, VALS(z3950_Term_vals), 0,
11977 "Term", HFILL }},
11978 { &hf_z3950_termComment,
11979 { "termComment", "z3950.termComment",
11980 FT_STRING, BASE_NONE, NULL, 0,
11981 "InternationalString", HFILL }},
11982 { &hf_z3950_ProtocolVersion_U_version_1,
11983 { "version-1", "z3950.ProtocolVersion.U.version.1",
11984 FT_BOOLEAN, 8, NULL, 0x80,
11985 NULL, HFILL }},
11986 { &hf_z3950_ProtocolVersion_U_version_2,
11987 { "version-2", "z3950.ProtocolVersion.U.version.2",
11988 FT_BOOLEAN, 8, NULL, 0x40,
11989 NULL, HFILL }},
11990 { &hf_z3950_ProtocolVersion_U_version_3,
11991 { "version-3", "z3950.ProtocolVersion.U.version.3",
11992 FT_BOOLEAN, 8, NULL, 0x20,
11993 NULL, HFILL }},
11994 { &hf_z3950_Options_U_search,
11995 { "search", "z3950.Options.U.search",
11996 FT_BOOLEAN, 8, NULL, 0x80,
11997 NULL, HFILL }},
11998 { &hf_z3950_Options_U_present,
11999 { "present", "z3950.Options.U.present",
12000 FT_BOOLEAN, 8, NULL, 0x40,
12001 NULL, HFILL }},
12002 { &hf_z3950_Options_U_delSet,
12003 { "delSet", "z3950.Options.U.delSet",
12004 FT_BOOLEAN, 8, NULL, 0x20,
12005 NULL, HFILL }},
12006 { &hf_z3950_Options_U_resourceReport,
12007 { "resourceReport", "z3950.Options.U.resourceReport",
12008 FT_BOOLEAN, 8, NULL, 0x10,
12009 NULL, HFILL }},
12010 { &hf_z3950_Options_U_triggerResourceCtrl,
12011 { "triggerResourceCtrl", "z3950.Options.U.triggerResourceCtrl",
12012 FT_BOOLEAN, 8, NULL, 0x08,
12013 NULL, HFILL }},
12014 { &hf_z3950_Options_U_resourceCtrl,
12015 { "resourceCtrl", "z3950.Options.U.resourceCtrl",
12016 FT_BOOLEAN, 8, NULL, 0x04,
12017 NULL, HFILL }},
12018 { &hf_z3950_Options_U_accessCtrl,
12019 { "accessCtrl", "z3950.Options.U.accessCtrl",
12020 FT_BOOLEAN, 8, NULL, 0x02,
12021 NULL, HFILL }},
12022 { &hf_z3950_Options_U_scan,
12023 { "scan", "z3950.Options.U.scan",
12024 FT_BOOLEAN, 8, NULL, 0x01,
12025 NULL, HFILL }},
12026 { &hf_z3950_Options_U_sort,
12027 { "sort", "z3950.Options.U.sort",
12028 FT_BOOLEAN, 8, NULL, 0x80,
12029 NULL, HFILL }},
12030 { &hf_z3950_Options_U_spare_bit9,
12031 { "spare_bit9", "z3950.Options.U.spare.bit9",
12032 FT_BOOLEAN, 8, NULL, 0x40,
12033 NULL, HFILL }},
12034 { &hf_z3950_Options_U_extendedServices,
12035 { "extendedServices", "z3950.Options.U.extendedServices",
12036 FT_BOOLEAN, 8, NULL, 0x20,
12037 NULL, HFILL }},
12038 { &hf_z3950_Options_U_level_1Segmentation,
12039 { "level-1Segmentation", "z3950.Options.U.level.1Segmentation",
12040 FT_BOOLEAN, 8, NULL, 0x10,
12041 NULL, HFILL }},
12042 { &hf_z3950_Options_U_level_2Segmentation,
12043 { "level-2Segmentation", "z3950.Options.U.level.2Segmentation",
12044 FT_BOOLEAN, 8, NULL, 0x08,
12045 NULL, HFILL }},
12046 { &hf_z3950_Options_U_concurrentOperations,
12047 { "concurrentOperations", "z3950.Options.U.concurrentOperations",
12048 FT_BOOLEAN, 8, NULL, 0x04,
12049 NULL, HFILL }},
12050 { &hf_z3950_Options_U_namedResultSets,
12051 { "namedResultSets", "z3950.Options.U.namedResultSets",
12052 FT_BOOLEAN, 8, NULL, 0x02,
12053 NULL, HFILL }},
12055 { &hf_z3950_referenceId_printable,
12056 { "referenceId", "z3950.referenceId.printable",
12057 FT_STRING, BASE_NONE, NULL, 0,
12058 NULL, HFILL }},
12059 { &hf_z3950_general_printable,
12060 { "general", "z3950.general.printable",
12061 FT_STRING, BASE_NONE, NULL, 0,
12062 NULL, HFILL }},
12064 /* MARC hf definitions */
12065 { &hf_marc_record,
12066 { "MARC record", "marc",
12067 FT_NONE, BASE_NONE, NULL, 0,
12068 NULL, HFILL }},
12069 { &hf_marc_record_terminator,
12070 { "MARC record terminator", "marc.terminator",
12071 FT_CHAR, BASE_HEX, NULL, 0,
12072 NULL, HFILL }},
12073 { &hf_marc_leader,
12074 { "MARC leader", "marc.leader",
12075 FT_NONE, BASE_NONE, NULL, 0,
12076 NULL, HFILL }},
12077 { &hf_marc_leader_length,
12078 { "MARC leader length", "marc.leader.length",
12079 FT_STRING, BASE_NONE, NULL, 0,
12080 NULL, HFILL }},
12081 { &hf_marc_leader_status,
12082 { "MARC leader status", "marc.leader.status",
12083 FT_CHAR, BASE_HEX, NULL, 0,
12084 NULL, HFILL }},
12085 { &hf_marc_leader_type,
12086 { "MARC leader type", "marc.leader.type",
12087 FT_CHAR, BASE_HEX, NULL, 0,
12088 NULL, HFILL }},
12089 { &hf_marc_leader_biblevel,
12090 { "MARC leader biblevel", "marc.leader.biblevel",
12091 FT_CHAR, BASE_HEX, NULL, 0,
12092 NULL, HFILL }},
12093 { &hf_marc_leader_control,
12094 { "MARC leader control", "marc.leader.control",
12095 FT_CHAR, BASE_HEX, NULL, 0,
12096 NULL, HFILL }},
12097 { &hf_marc_leader_encoding,
12098 { "MARC leader encoding", "marc.leader.encoding",
12099 FT_CHAR, BASE_HEX, NULL, 0,
12100 NULL, HFILL }},
12101 { &hf_marc_leader_indicator_count,
12102 { "MARC leader indicator count", "marc.leader.indicator_count",
12103 FT_CHAR, BASE_HEX, NULL, 0,
12104 NULL, HFILL }},
12105 { &hf_marc_leader_subfield_count,
12106 { "MARC leader subfield count", "marc.leader.subfield_count",
12107 FT_CHAR, BASE_HEX, NULL, 0,
12108 NULL, HFILL }},
12109 { &hf_marc_leader_data_offset,
12110 { "MARC leader data offset", "marc.leader.data_offset",
12111 FT_STRING, BASE_NONE, NULL, 0,
12112 NULL, HFILL }},
12113 { &hf_marc_leader_encoding_level,
12114 { "MARC leader encoding level", "marc.leader.encoding_level",
12115 FT_CHAR, BASE_HEX, NULL, 0,
12116 NULL, HFILL }},
12117 { &hf_marc_leader_descriptive_cataloging,
12118 { "MARC leader descriptive cataloging", "marc.leader.descriptive_cataloging",
12119 FT_CHAR, BASE_HEX, NULL, 0,
12120 NULL, HFILL }},
12121 { &hf_marc_leader_multipart_level,
12122 { "MARC leader multipart level", "marc.leader.multipart_level",
12123 FT_CHAR, BASE_HEX, NULL, 0,
12124 NULL, HFILL }},
12125 { &hf_marc_leader_length_of_field_length,
12126 { "MARC leader length-of-field length", "marc.leader.length_of_field_length",
12127 FT_CHAR, BASE_HEX, NULL, 0,
12128 NULL, HFILL }},
12129 { &hf_marc_leader_starting_character_position_length,
12130 { "MARC leader starting-character-position length", "marc.leader.starting_character_position_length",
12131 FT_CHAR, BASE_HEX, NULL, 0,
12132 NULL, HFILL }},
12133 { &hf_marc_leader_implementation_defined_length,
12134 { "MARC leader implementation-defined length", "marc.leader.implementation_defined_length",
12135 FT_CHAR, BASE_HEX, NULL, 0,
12136 NULL, HFILL }},
12137 { &hf_marc_directory,
12138 { "MARC directory", "marc.directory",
12139 FT_NONE, BASE_NONE, NULL, 0,
12140 NULL, HFILL }},
12141 { &hf_marc_directory_entry,
12142 { "MARC directory entry", "marc.directory.entry",
12143 FT_NONE, BASE_NONE, NULL, 0,
12144 NULL, HFILL }},
12145 { &hf_marc_directory_entry_tag,
12146 { "tag", "marc.directory.entry.tag",
12147 FT_STRING, BASE_NONE, NULL, 0,
12148 NULL, HFILL }},
12149 { &hf_marc_directory_entry_length,
12150 { "length", "marc.directory.entry.length",
12151 FT_STRING, BASE_NONE, NULL, 0,
12152 NULL, HFILL }},
12153 { &hf_marc_directory_entry_starting_position,
12154 { "starting position", "marc.directory.entry.starting_position",
12155 FT_STRING, BASE_NONE, NULL, 0,
12156 NULL, HFILL }},
12157 { &hf_marc_directory_terminator,
12158 { "MARC directory terminator", "marc.directory.terminator",
12159 FT_CHAR, BASE_HEX, NULL, 0,
12160 NULL, HFILL }},
12161 { &hf_marc_fields,
12162 { "MARC data fields", "marc.fields",
12163 FT_NONE, BASE_NONE, NULL, 0,
12164 NULL, HFILL }},
12165 { &hf_marc_field,
12166 { "MARC field", "marc.field",
12167 FT_NONE, BASE_NONE, NULL, 0,
12168 NULL, HFILL }},
12169 { &hf_marc_field_control,
12170 { "Control field", "marc.field.control",
12171 FT_STRING, BASE_NONE, NULL, 0,
12172 NULL, HFILL }},
12173 { &hf_marc_field_terminator,
12174 { "MARC field terminator", "marc.field.terminator",
12175 FT_CHAR, BASE_HEX, NULL, 0,
12176 NULL, HFILL }},
12177 { &hf_marc_field_indicator1,
12178 { "MARC field indicator1", "marc.field.indicator1",
12179 FT_CHAR, BASE_HEX, NULL, 0,
12180 NULL, HFILL }},
12181 { &hf_marc_field_indicator2,
12182 { "MARC field indicator2", "marc.field.indicator2",
12183 FT_CHAR, BASE_HEX, NULL, 0,
12184 NULL, HFILL }},
12185 { &hf_marc_field_subfield_indicator,
12186 { "MARC field subfield indicator", "marc.field.subfield.indicator",
12187 FT_CHAR, BASE_HEX, NULL, 0,
12188 NULL, HFILL }},
12189 { &hf_marc_field_subfield_tag,
12190 { "MARC field subfield tag", "marc.field.subfield.tag",
12191 FT_CHAR, BASE_HEX, NULL, 0,
12192 NULL, HFILL }},
12193 { &hf_marc_field_subfield,
12194 { "MARC Subfield", "marc.field.subfield",
12195 FT_STRING, BASE_NONE, NULL, 0,
12196 NULL, HFILL }},
12200 /* List of subtrees */
12201 static int *ett[] = {
12202 &ett_z3950,
12203 /* MARC etts */
12204 &ett_marc_record,
12205 &ett_marc_leader,
12206 &ett_marc_directory,
12207 &ett_marc_directory_entry,
12208 &ett_marc_fields,
12209 &ett_marc_field,
12210 &ett_z3950_PDU,
12211 &ett_z3950_InitializeRequest,
12212 &ett_z3950_T_idAuthentication,
12213 &ett_z3950_T_idPass,
12214 &ett_z3950_InitializeResponse,
12215 &ett_z3950_ProtocolVersion_U,
12216 &ett_z3950_Options_U,
12217 &ett_z3950_SearchRequest,
12218 &ett_z3950_SEQUENCE_OF_DatabaseName,
12219 &ett_z3950_Query,
12220 &ett_z3950_RPNQuery,
12221 &ett_z3950_RPNStructure,
12222 &ett_z3950_T_rpnRpnOp,
12223 &ett_z3950_Operand,
12224 &ett_z3950_AttributesPlusTerm_U,
12225 &ett_z3950_ResultSetPlusAttributes_U,
12226 &ett_z3950_SEQUENCE_OF_AttributeElement,
12227 &ett_z3950_Term,
12228 &ett_z3950_Operator_U,
12229 &ett_z3950_AttributeElement,
12230 &ett_z3950_T_attributeValue,
12231 &ett_z3950_T_attributeValue_complex,
12232 &ett_z3950_SEQUENCE_OF_StringOrNumeric,
12233 &ett_z3950_T_semanticAction,
12234 &ett_z3950_ProximityOperator,
12235 &ett_z3950_T_proximityUnitCode,
12236 &ett_z3950_SearchResponse,
12237 &ett_z3950_PresentRequest,
12238 &ett_z3950_SEQUENCE_OF_Range,
12239 &ett_z3950_T_recordComposition,
12240 &ett_z3950_Segment,
12241 &ett_z3950_SEQUENCE_OF_NamePlusRecord,
12242 &ett_z3950_PresentResponse,
12243 &ett_z3950_Records,
12244 &ett_z3950_SEQUENCE_OF_DiagRec,
12245 &ett_z3950_NamePlusRecord,
12246 &ett_z3950_T_record,
12247 &ett_z3950_FragmentSyntax,
12248 &ett_z3950_DiagRec,
12249 &ett_z3950_DefaultDiagFormat,
12250 &ett_z3950_T_addinfo,
12251 &ett_z3950_Range,
12252 &ett_z3950_ElementSetNames,
12253 &ett_z3950_T_databaseSpecific,
12254 &ett_z3950_T_databaseSpecific_item,
12255 &ett_z3950_CompSpec,
12256 &ett_z3950_T_dbSpecific,
12257 &ett_z3950_T_dbSpecific_item,
12258 &ett_z3950_T_compSpec_recordSyntax,
12259 &ett_z3950_Specification,
12260 &ett_z3950_T_specification_elementSpec,
12261 &ett_z3950_DeleteResultSetRequest,
12262 &ett_z3950_SEQUENCE_OF_ResultSetId,
12263 &ett_z3950_DeleteResultSetResponse,
12264 &ett_z3950_ListStatuses,
12265 &ett_z3950_ListStatuses_item,
12266 &ett_z3950_AccessControlRequest,
12267 &ett_z3950_T_securityChallenge,
12268 &ett_z3950_AccessControlResponse,
12269 &ett_z3950_T_securityChallengeResponse,
12270 &ett_z3950_ResourceControlRequest,
12271 &ett_z3950_ResourceControlResponse,
12272 &ett_z3950_TriggerResourceControlRequest,
12273 &ett_z3950_ResourceReportRequest,
12274 &ett_z3950_ResourceReportResponse,
12275 &ett_z3950_ScanRequest,
12276 &ett_z3950_ScanResponse,
12277 &ett_z3950_ListEntries,
12278 &ett_z3950_SEQUENCE_OF_Entry,
12279 &ett_z3950_Entry,
12280 &ett_z3950_TermInfo,
12281 &ett_z3950_SEQUENCE_OF_AttributesPlusTerm,
12282 &ett_z3950_OccurrenceByAttributes,
12283 &ett_z3950_OccurrenceByAttributes_item,
12284 &ett_z3950_T_occurrences,
12285 &ett_z3950_T_byDatabase,
12286 &ett_z3950_T_byDatabase_item,
12287 &ett_z3950_SortRequest,
12288 &ett_z3950_SEQUENCE_OF_InternationalString,
12289 &ett_z3950_SEQUENCE_OF_SortKeySpec,
12290 &ett_z3950_SortResponse,
12291 &ett_z3950_SortKeySpec,
12292 &ett_z3950_T_missingValueAction,
12293 &ett_z3950_SortElement,
12294 &ett_z3950_T_datbaseSpecific,
12295 &ett_z3950_T_datbaseSpecific_item,
12296 &ett_z3950_SortKey,
12297 &ett_z3950_T_sortAttributes,
12298 &ett_z3950_ExtendedServicesRequest,
12299 &ett_z3950_ExtendedServicesResponse,
12300 &ett_z3950_Permissions,
12301 &ett_z3950_Permissions_item,
12302 &ett_z3950_T_allowableFunctions,
12303 &ett_z3950_Close,
12304 &ett_z3950_OtherInformation_U,
12305 &ett_z3950_T__untag_item,
12306 &ett_z3950_T_information,
12307 &ett_z3950_InfoCategory,
12308 &ett_z3950_IntUnit,
12309 &ett_z3950_Unit,
12310 &ett_z3950_StringOrNumeric,
12311 &ett_z3950_OCLC_UserInformation,
12312 &ett_z3950_SEQUENCE_OF_DBName,
12313 &ett_z3950_OPACRecord,
12314 &ett_z3950_SEQUENCE_OF_HoldingsRecord,
12315 &ett_z3950_HoldingsRecord,
12316 &ett_z3950_HoldingsAndCircData,
12317 &ett_z3950_SEQUENCE_OF_Volume,
12318 &ett_z3950_SEQUENCE_OF_CircRecord,
12319 &ett_z3950_Volume,
12320 &ett_z3950_CircRecord,
12321 &ett_z3950_DiagnosticFormat,
12322 &ett_z3950_DiagnosticFormat_item,
12323 &ett_z3950_T_diagnosticFormat_item_diagnostic,
12324 &ett_z3950_DiagFormat,
12325 &ett_z3950_T_tooMany,
12326 &ett_z3950_T_badSpec,
12327 &ett_z3950_SEQUENCE_OF_Specification,
12328 &ett_z3950_T_dbUnavail,
12329 &ett_z3950_T_why,
12330 &ett_z3950_T_attribute,
12331 &ett_z3950_T_attCombo,
12332 &ett_z3950_SEQUENCE_OF_AttributeList,
12333 &ett_z3950_T_diagFormat_term,
12334 &ett_z3950_T_diagFormat_proximity,
12335 &ett_z3950_T_scan,
12336 &ett_z3950_T_sort,
12337 &ett_z3950_T_segmentation,
12338 &ett_z3950_T_extServices,
12339 &ett_z3950_T_accessCtrl,
12340 &ett_z3950_T_diagFormat_accessCtrl_oid,
12341 &ett_z3950_T_alternative,
12342 &ett_z3950_T_diagFormat_recordSyntax,
12343 &ett_z3950_T_suggestedAlternatives,
12344 &ett_z3950_Explain_Record,
12345 &ett_z3950_TargetInfo,
12346 &ett_z3950_SEQUENCE_OF_DatabaseList,
12347 &ett_z3950_SEQUENCE_OF_NetworkAddress,
12348 &ett_z3950_DatabaseInfo,
12349 &ett_z3950_SEQUENCE_OF_HumanString,
12350 &ett_z3950_T_recordCount,
12351 &ett_z3950_SchemaInfo,
12352 &ett_z3950_T_tagTypeMapping,
12353 &ett_z3950_T_tagTypeMapping_item,
12354 &ett_z3950_SEQUENCE_OF_ElementInfo,
12355 &ett_z3950_ElementInfo,
12356 &ett_z3950_Path,
12357 &ett_z3950_Path_item,
12358 &ett_z3950_ElementDataType,
12359 &ett_z3950_TagSetInfo,
12360 &ett_z3950_T_tagSetInfo_elements,
12361 &ett_z3950_T_tagSetInfo_elements_item,
12362 &ett_z3950_RecordSyntaxInfo,
12363 &ett_z3950_T_transferSyntaxes,
12364 &ett_z3950_AttributeSetInfo,
12365 &ett_z3950_SEQUENCE_OF_AttributeType,
12366 &ett_z3950_AttributeType,
12367 &ett_z3950_SEQUENCE_OF_AttributeDescription,
12368 &ett_z3950_AttributeDescription,
12369 &ett_z3950_TermListInfo,
12370 &ett_z3950_T_termLists,
12371 &ett_z3950_T_termLists_item,
12372 &ett_z3950_ExtendedServicesInfo,
12373 &ett_z3950_AttributeDetails,
12374 &ett_z3950_SEQUENCE_OF_AttributeSetDetails,
12375 &ett_z3950_AttributeSetDetails,
12376 &ett_z3950_SEQUENCE_OF_AttributeTypeDetails,
12377 &ett_z3950_AttributeTypeDetails,
12378 &ett_z3950_SEQUENCE_OF_AttributeValue,
12379 &ett_z3950_OmittedAttributeInterpretation,
12380 &ett_z3950_AttributeValue,
12381 &ett_z3950_TermListDetails,
12382 &ett_z3950_T_scanInfo,
12383 &ett_z3950_SEQUENCE_OF_Term,
12384 &ett_z3950_ElementSetDetails,
12385 &ett_z3950_SEQUENCE_OF_PerElementDetails,
12386 &ett_z3950_RetrievalRecordDetails,
12387 &ett_z3950_PerElementDetails,
12388 &ett_z3950_SEQUENCE_OF_Path,
12389 &ett_z3950_RecordTag,
12390 &ett_z3950_SortDetails,
12391 &ett_z3950_SEQUENCE_OF_SortKeyDetails,
12392 &ett_z3950_SortKeyDetails,
12393 &ett_z3950_T_sortType,
12394 &ett_z3950_ProcessingInformation,
12395 &ett_z3950_VariantSetInfo,
12396 &ett_z3950_SEQUENCE_OF_VariantClass,
12397 &ett_z3950_VariantClass,
12398 &ett_z3950_SEQUENCE_OF_VariantType,
12399 &ett_z3950_VariantType,
12400 &ett_z3950_VariantValue,
12401 &ett_z3950_ValueSet,
12402 &ett_z3950_SEQUENCE_OF_ValueDescription,
12403 &ett_z3950_ValueRange,
12404 &ett_z3950_ValueDescription,
12405 &ett_z3950_UnitInfo,
12406 &ett_z3950_SEQUENCE_OF_UnitType,
12407 &ett_z3950_UnitType,
12408 &ett_z3950_SEQUENCE_OF_Units,
12409 &ett_z3950_Units,
12410 &ett_z3950_CategoryList,
12411 &ett_z3950_SEQUENCE_OF_CategoryInfo,
12412 &ett_z3950_CategoryInfo,
12413 &ett_z3950_CommonInfo,
12414 &ett_z3950_HumanString,
12415 &ett_z3950_HumanString_item,
12416 &ett_z3950_IconObject,
12417 &ett_z3950_IconObject_item,
12418 &ett_z3950_T_bodyType,
12419 &ett_z3950_ContactInfo,
12420 &ett_z3950_NetworkAddress,
12421 &ett_z3950_T_internetAddress,
12422 &ett_z3950_T_osiPresentationAddress,
12423 &ett_z3950_T_networkAddress_other,
12424 &ett_z3950_AccessInfo,
12425 &ett_z3950_SEQUENCE_OF_QueryTypeDetails,
12426 &ett_z3950_T_diagnosticsSets,
12427 &ett_z3950_SEQUENCE_OF_AttributeSetId,
12428 &ett_z3950_T_schemas,
12429 &ett_z3950_T_recordSyntaxes,
12430 &ett_z3950_T_resourceChallenges,
12431 &ett_z3950_T_variantSets,
12432 &ett_z3950_SEQUENCE_OF_ElementSetName,
12433 &ett_z3950_QueryTypeDetails,
12434 &ett_z3950_PrivateCapabilities,
12435 &ett_z3950_T_privateCapabilities_operators,
12436 &ett_z3950_T_privateCapabilities_operators_item,
12437 &ett_z3950_SEQUENCE_OF_SearchKey,
12438 &ett_z3950_RpnCapabilities,
12439 &ett_z3950_T_operators,
12440 &ett_z3950_Iso8777Capabilities,
12441 &ett_z3950_ProximitySupport,
12442 &ett_z3950_T_unitsSupported,
12443 &ett_z3950_T_unitsSupported_item,
12444 &ett_z3950_T_proximitySupport_unitsSupported_item_private,
12445 &ett_z3950_SearchKey,
12446 &ett_z3950_AccessRestrictions,
12447 &ett_z3950_AccessRestrictions_item,
12448 &ett_z3950_T_accessChallenges,
12449 &ett_z3950_Costs,
12450 &ett_z3950_T_otherCharges,
12451 &ett_z3950_T_otherCharges_item,
12452 &ett_z3950_Charge,
12453 &ett_z3950_DatabaseList,
12454 &ett_z3950_AttributeCombinations,
12455 &ett_z3950_SEQUENCE_OF_AttributeCombination,
12456 &ett_z3950_AttributeCombination,
12457 &ett_z3950_AttributeOccurrence,
12458 &ett_z3950_T_attributeOccurrence_attributeValues,
12459 &ett_z3950_BriefBib,
12460 &ett_z3950_SEQUENCE_OF_FormatSpec,
12461 &ett_z3950_FormatSpec,
12462 &ett_z3950_GenericRecord,
12463 &ett_z3950_TaggedElement,
12464 &ett_z3950_ElementData,
12465 &ett_z3950_SEQUENCE_OF_TaggedElement,
12466 &ett_z3950_ElementMetaData,
12467 &ett_z3950_SEQUENCE_OF_HitVector,
12468 &ett_z3950_SEQUENCE_OF_Variant,
12469 &ett_z3950_TagPath,
12470 &ett_z3950_TagPath_item,
12471 &ett_z3950_Order,
12472 &ett_z3950_Usage,
12473 &ett_z3950_HitVector,
12474 &ett_z3950_Variant,
12475 &ett_z3950_T_triples,
12476 &ett_z3950_T_triples_item,
12477 &ett_z3950_T_variant_triples_item_value,
12478 &ett_z3950_TaskPackage,
12479 &ett_z3950_PromptObject,
12480 &ett_z3950_Challenge,
12481 &ett_z3950_Challenge_item,
12482 &ett_z3950_T_promptInfo,
12483 &ett_z3950_Response,
12484 &ett_z3950_Response_item,
12485 &ett_z3950_T_promptResponse,
12486 &ett_z3950_PromptId,
12487 &ett_z3950_T_enummeratedPrompt,
12488 &ett_z3950_Encryption,
12489 &ett_z3950_DES_RN_Object,
12490 &ett_z3950_DRNType,
12491 &ett_z3950_KRBObject,
12492 &ett_z3950_KRBRequest,
12493 &ett_z3950_KRBResponse,
12494 &ett_z3950_SearchInfoReport,
12495 &ett_z3950_SearchInfoReport_item,
12496 &ett_z3950_ResultsByDB,
12497 &ett_z3950_ResultsByDB_item,
12498 &ett_z3950_T_databases,
12499 &ett_z3950_QueryExpression,
12500 &ett_z3950_T_queryExpression_term,
12503 module_t *z3950_module;
12505 /* Expert info */
12506 static ei_register_info ei[] = {
12507 /* Z39.50 expert info */
12509 /* MARC expert info */
12510 { &ei_marc_invalid_length, { "marc.invalid_length", PI_MALFORMED, PI_ERROR,
12511 "MARC record too short", EXPFILL }},
12512 { &ei_marc_invalid_value, { "marc.invalid_value", PI_MALFORMED, PI_ERROR,
12513 "MARC field has invalid value", EXPFILL }},
12514 { &ei_marc_invalid_record_length, { "marc.invalid_record_length", PI_MALFORMED, PI_ERROR,
12515 "MARC length field has invalid value", EXPFILL }},
12518 expert_module_t* expert_z3950;
12521 /* Register protocol */
12522 proto_z3950 = proto_register_protocol(PNAME, PSNAME, PFNAME);
12523 /* Register fields and subtrees */
12524 proto_register_field_array(proto_z3950, hf, array_length(hf));
12525 proto_register_subtree_array(ett, array_length(ett));
12526 expert_z3950 = expert_register_protocol(proto_z3950);
12527 expert_register_field_array(expert_z3950, ei, array_length(ei));
12529 /* Register preferences */
12530 z3950_module = prefs_register_protocol(proto_z3950, NULL);
12531 prefs_register_bool_preference(z3950_module, "desegment_buffers",
12532 "Reassemble Z39.50 buffers spanning multiple TCP segments",
12533 "Whether the Z39.50 dissector should reassemble TDS buffers spanning multiple TCP segments. "
12534 "To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
12535 &z3950_desegment);
12537 /* Allow dissector to be found by name. */
12538 z3950_handle = register_dissector(PSNAME, dissect_z3950_segment,
12539 proto_z3950);
12543 /*--- proto_reg_handoff_z3950 ---------------------------------------*/
12544 void
12545 proto_reg_handoff_z3950(void)
12548 dissector_add_uint_with_preference("tcp.port",
12549 global_z3950_port, z3950_handle);
12551 register_ber_oid_dissector("1.2.840.10003.5.100", dissect_Explain_Record_PDU, proto_z3950, "Explain-record");
12552 register_ber_oid_dissector("1.2.840.10003.5.101", dissect_SutrsRecord_PDU, proto_z3950, "Sutrs-record");
12553 register_ber_oid_dissector("1.2.840.10003.5.102", dissect_OPACRecord_PDU, proto_z3950, "OPAC-record");
12554 register_ber_oid_dissector("1.2.840.10003.5.103", dissect_BriefBib_PDU, proto_z3950, "Summary-record");
12555 register_ber_oid_dissector("1.2.840.10003.5.105", dissect_GenericRecord_PDU, proto_z3950, "GRS-1-record");
12556 register_ber_oid_dissector("1.2.840.10003.5.106", dissect_TaskPackage_PDU, proto_z3950, "ESTaskPackage");
12557 register_ber_oid_dissector("1.2.840.10003.4.2", dissect_DiagnosticFormat_PDU, proto_z3950, "diag-1");
12558 register_ber_oid_dissector("1.2.840.10003.8.1", dissect_PromptObject_PDU, proto_z3950, "Prompt-1");
12559 register_ber_oid_dissector("1.2.840.10003.8.2", dissect_DES_RN_Object_PDU, proto_z3950, "DES-1");
12560 register_ber_oid_dissector("1.2.840.10003.8.3", dissect_KRBObject_PDU, proto_z3950, "KRB-1");
12561 register_ber_oid_dissector("1.2.840.10003.10.1", dissect_SearchInfoReport_PDU, proto_z3950, "SearchResult-1");
12562 register_ber_oid_dissector("1.2.840.10003.10.1000.17.1", dissect_OCLC_UserInformation_PDU, proto_z3950, "OCLC-UserInfo-1");
12565 register_ber_oid_dissector(Z3950_RECORDSYNTAX_MARC21_OID, dissect_marc_record, proto_z3950, "MARC21");
12567 oid_add_from_string("Z39.50", "1.2.840.10003");
12568 oid_add_from_string("Z39.50-APDU", "1.2.840.10003.2");
12569 oid_add_from_string("Z39.50-attributeSet", "1.2.840.10003.3");
12570 oid_add_from_string("Z39.50-diagnostic", "1.2.840.10003.4");
12571 oid_add_from_string("Z39.50-recordSyntax", "1.2.840.10003.5");
12572 oid_add_from_string("Z39.50-resourceReport", "1.2.840.10003.7");
12573 oid_add_from_string("Z39.50-accessControl", "1.2.840.10003.8");
12574 oid_add_from_string("Z39.50-extendedService", "1.2.840.10003.9");
12575 oid_add_from_string("Z39.50-userinfoFormat", "1.2.840.10003.10");
12576 oid_add_from_string("Z39.50-elementSpec", "1.2.840.10003.11");
12577 oid_add_from_string("Z39.50-variantSet", "1.2.840.10003.12");
12578 oid_add_from_string("Z39.50-schema", "1.2.840.10003.13");
12579 oid_add_from_string("Z39.50-tagSet", "1.2.840.10003.14");
12580 oid_add_from_string("Z39.50-negotiation", "1.2.840.10003.15");
12581 oid_add_from_string("Z39.50-query", "1.2.840.10003.16");
12582 /* MARC Record Syntaxes */
12583 oid_add_from_string("UNIMARC","1.2.840.10003.5.1");
12584 oid_add_from_string("INTERMARC","1.2.840.10003.5.2");
12585 oid_add_from_string("CCF","1.2.840.10003.5.3");
12586 oid_add_from_string("MARC21 (formerly USMARC)",Z3950_RECORDSYNTAX_MARC21_OID);
12587 oid_add_from_string("UKMARC","1.2.840.10003.5.11");
12588 oid_add_from_string("NORMARC","1.2.840.10003.5.12");
12589 oid_add_from_string("Librismarc","1.2.840.10003.5.13");
12590 oid_add_from_string("danMARC2","1.2.840.10003.5.14");
12591 oid_add_from_string("Finmarc","1.2.840.10003.5.15");
12592 oid_add_from_string("MAB","1.2.840.10003.5.16");
12593 oid_add_from_string("Canmarc","1.2.840.10003.5.17");
12594 oid_add_from_string("SBN","1.2.840.10003.5.18");
12595 oid_add_from_string("Picamarc","1.2.840.10003.5.19");
12596 oid_add_from_string("Ausmarc","1.2.840.10003.5.20");
12597 oid_add_from_string("Ibermarc","1.2.840.10003.5.21");
12598 oid_add_from_string("Catmarc","1.2.840.10003.5.22");
12599 oid_add_from_string("Malmarc","1.2.840.10003.5.23");
12600 oid_add_from_string("JPmarc","1.2.840.10003.5.24");
12601 oid_add_from_string("SWEMarc","1.2.840.10003.5.25");
12602 oid_add_from_string("SIGLEmarc","1.2.840.10003.5.26");
12603 oid_add_from_string("ISDS/ISSNmarc","1.2.840.10003.5.27");
12604 oid_add_from_string("RUSMarc","1.2.840.10003.5.28");
12605 oid_add_from_string("Hunmarc","1.2.840.10003.5.29");
12606 oid_add_from_string("NACSIS-CATP","1.2.840.10003.5.30");
12607 oid_add_from_string("FINMARC2000","1.2.840.10003.5.31");
12608 oid_add_from_string("MARC21-fin","1.2.840.10003.5.32");
12609 oid_add_from_string("COMARC","1.2.840.10003.5.33");
12610 /* Non-MARC record syntaxes */
12611 oid_add_from_string("Explain","1.2.840.10003.5.100");
12612 oid_add_from_string("Explain with ZSQL","1.2.840.10003.5.100.1");
12613 oid_add_from_string("SUTRS","1.2.840.10003.5.101");
12614 oid_add_from_string("OPAC","1.2.840.10003.5.102");
12615 oid_add_from_string("Summary","1.2.840.10003.5.103");
12616 oid_add_from_string("GRS-0","1.2.840.10003.5.104");
12617 oid_add_from_string("GRS-1","1.2.840.10003.5.105");
12618 oid_add_from_string("ESTaskPackage","1.2.840.10003.5.106");
12619 oid_add_from_string("fragment","1.2.840.10003.5.108");
12620 /* Attribute sets */
12621 oid_add_from_string("bib-1",Z3950_ATSET_BIB1_OID);
12622 oid_add_from_string("exp-1","1.2.840.10003.3.2");
12623 oid_add_from_string("ext-1","1.2.840.10003.3.3");
12624 oid_add_from_string("ccl-1","1.2.840.10003.3.4");
12625 oid_add_from_string("gils","1.2.840.10003.3.5");
12626 oid_add_from_string("stas","1.2.840.10003.3.6");
12627 oid_add_from_string("collections-1","1.2.840.10003.3.7");
12628 oid_add_from_string("cimi-1","1.2.840.10003.3.8");
12629 oid_add_from_string("geo-1","1.2.840.10003.3.9");
12630 oid_add_from_string("ZBIG","1.2.840.10003.3.10");
12631 oid_add_from_string("util","1.2.840.10003.3.11");
12632 oid_add_from_string("xd-1","1.2.840.10003.3.12");
12633 oid_add_from_string("Zthes","1.2.840.10003.3.13");
12634 oid_add_from_string("Fin-1","1.2.840.10003.3.14");
12635 oid_add_from_string("Dan-1","1.2.840.10003.3.15");
12636 oid_add_from_string("Holdings","1.2.840.10003.3.16");
12637 oid_add_from_string("MARC","1.2.840.10003.3.17");
12638 oid_add_from_string("bib-2","1.2.840.10003.3.18");
12639 oid_add_from_string("ZeeRex","1.2.840.10003.3.19");
12640 /* Diagnostic sets */
12641 oid_add_from_string("bib-1-diagnostics",Z3950_DIAGSET_BIB1_OID);
12645 /* MARC routines */
12647 static int
12648 dissect_marc_record(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void * data _U_)
12650 proto_item *record_item, *leader_item,
12651 *directory_item,
12652 *fields_item,
12653 *item;
12654 proto_tree *marc_tree, *leader_tree,
12655 *directory_tree,
12656 *fields_tree;
12657 marc_directory_entry *marc_directory;
12658 unsigned len = tvb_reported_length(tvb);
12659 const uint8_t *marc_value_str;
12660 unsigned record_length = 0,
12661 data_offset = 0,
12662 length_of_field_size,
12663 starting_character_position_size,
12664 directory_entry_len,
12665 directory_entry_count,
12666 dir_index,
12667 offset = 0;
12668 uint32_t marc_value_char;
12670 record_item = proto_tree_add_item(tree, hf_marc_record,
12671 tvb, 0, len, ENC_NA);
12672 marc_tree = proto_item_add_subtree(record_item, ett_marc_record);
12673 if (len < MARC_LEADER_LENGTH) {
12674 expert_add_info_format(pinfo, record_item,
12675 &ei_marc_invalid_record_length,
12676 "MARC record length %d is shorter than leader", len);
12678 leader_item = proto_tree_add_item(marc_tree, hf_marc_leader, tvb, 0,
12679 MARC_LEADER_LENGTH, ENC_NA);
12680 leader_tree = proto_item_add_subtree(leader_item, ett_marc_leader);
12682 marc_value_str = NULL;
12683 item = proto_tree_add_item_ret_string(leader_tree,
12684 hf_marc_leader_length, tvb, offset, 5, ENC_ASCII|ENC_NA,
12685 pinfo->pool,&marc_value_str);
12686 offset += 5;
12688 if (marc_value_str) {
12689 if (isdigit_string(marc_value_str)) {
12690 record_length = (unsigned)strtoul(marc_value_str, NULL, 10);
12692 else {
12693 expert_add_info_format(pinfo, item,
12694 &ei_marc_invalid_value,
12695 "MARC length field '%s' contains invalid characters",
12696 marc_value_str );
12698 if (record_length != len) {
12699 expert_add_info_format(pinfo, item,
12700 &ei_marc_invalid_length,
12701 "MARC length field value %d does not match reported length %d",
12702 record_length, len);
12706 proto_tree_add_item(leader_tree, hf_marc_leader_status, tvb, offset, 1, ENC_ASCII);
12707 offset += 1;
12708 proto_tree_add_item(leader_tree, hf_marc_leader_type, tvb, offset, 1, ENC_ASCII);
12709 offset += 1;
12710 proto_tree_add_item(leader_tree, hf_marc_leader_biblevel, tvb, offset, 1, ENC_ASCII);
12711 offset += 1;
12712 proto_tree_add_item(leader_tree, hf_marc_leader_control, tvb, offset, 1, ENC_ASCII);
12713 offset += 1;
12714 proto_tree_add_item(leader_tree, hf_marc_leader_encoding, tvb, offset, 1, ENC_ASCII);
12715 offset += 1;
12716 marc_value_char = MARC_CHAR_UNINITIALIZED;
12717 item = proto_tree_add_item_ret_uint(leader_tree, hf_marc_leader_indicator_count,
12718 tvb, offset, 1, ENC_ASCII, &marc_value_char);
12719 offset += 1;
12720 if (marc_value_char != MARC_CHAR_UNINITIALIZED) {
12721 if (!marc_isdigit(marc_value_char)) {
12722 expert_add_info_format(pinfo, item, &ei_marc_invalid_value,
12723 "Indicator count '%c' is invalid", marc_value_char);
12725 else {
12726 if (marc_char_to_int(marc_value_char) != 2) {
12727 expert_add_info_format(pinfo, item, &ei_marc_invalid_length,
12728 "MARC21 requires indicator count equal 2, not %d",
12729 marc_char_to_int(marc_value_char));
12734 marc_value_char = MARC_CHAR_UNINITIALIZED;
12735 item = proto_tree_add_item_ret_uint(leader_tree, hf_marc_leader_subfield_count,
12736 tvb, offset, 1, ENC_ASCII, &marc_value_char);
12737 offset += 1;
12738 if (marc_value_char != MARC_CHAR_UNINITIALIZED) {
12739 if (!marc_isdigit(marc_value_char)) {
12740 expert_add_info_format(pinfo, item, &ei_marc_invalid_value,
12741 "Subfield count '%c' is invalid", marc_value_char);
12743 else {
12744 if (marc_char_to_int(marc_value_char) != 2) {
12745 expert_add_info_format(pinfo, item, &ei_marc_invalid_length,
12746 "MARC21 requires subfield count equal 2, not %d",
12747 marc_char_to_int(marc_value_char));
12752 item = proto_tree_add_item_ret_string(leader_tree, hf_marc_leader_data_offset,
12753 tvb, offset, 5, ENC_ASCII|ENC_NA,
12754 pinfo->pool,&marc_value_str);
12755 offset += 5;
12756 if (marc_value_str) {
12757 if (isdigit_string(marc_value_str)) {
12758 data_offset = (unsigned)strtoul(marc_value_str, NULL, 10);
12760 else {
12761 expert_add_info_format(pinfo, item,
12762 &ei_marc_invalid_value,
12763 "MARC data offset field '%s' contains invalid characters",
12764 marc_value_str );
12766 if (data_offset < MARC_LEADER_LENGTH ||
12767 data_offset > record_length) {
12768 expert_add_info_format(pinfo, item,
12769 &ei_marc_invalid_length,
12770 "MARC data offset %d does not lie within record (length %d)",
12771 data_offset, len);
12774 proto_tree_add_item(leader_tree, hf_marc_leader_encoding_level, tvb, offset, 1, ENC_ASCII);
12775 offset += 1;
12776 proto_tree_add_item(leader_tree, hf_marc_leader_descriptive_cataloging, tvb, offset, 1, ENC_ASCII);
12777 offset += 1;
12778 proto_tree_add_item(leader_tree, hf_marc_leader_multipart_level, tvb, offset, 1, ENC_ASCII);
12779 offset += 1;
12780 marc_value_char = MARC_CHAR_UNINITIALIZED;
12781 item = proto_tree_add_item_ret_uint(leader_tree, hf_marc_leader_length_of_field_length,
12782 tvb, offset, 1, ENC_ASCII, &marc_value_char);
12783 offset += 1;
12784 length_of_field_size = 4;
12785 if (marc_value_char != MARC_CHAR_UNINITIALIZED) {
12786 if (!marc_isdigit(marc_value_char)) {
12787 expert_add_info_format(pinfo, item, &ei_marc_invalid_value,
12788 "Length-of field-length '%c' is invalid", marc_value_char);
12790 else {
12791 if (marc_char_to_int(marc_value_char) != 4) {
12792 expert_add_info_format(pinfo, item, &ei_marc_invalid_length,
12793 "MARC21 requires length-of-field equal 4, not %d",
12794 marc_char_to_int(marc_value_char));
12799 marc_value_char = MARC_CHAR_UNINITIALIZED;
12800 item = proto_tree_add_item_ret_uint(leader_tree, hf_marc_leader_starting_character_position_length,
12801 tvb, offset, 1, ENC_ASCII, &marc_value_char);
12802 offset += 1;
12803 starting_character_position_size = 5;
12804 if (marc_value_char != MARC_CHAR_UNINITIALIZED) {
12805 if (!marc_isdigit(marc_value_char)) {
12806 expert_add_info_format(pinfo, item, &ei_marc_invalid_value,
12807 "Starting-character-position length '%c' is invalid", marc_value_char);
12809 else {
12810 if (marc_char_to_int(marc_value_char) != 5) {
12811 expert_add_info_format(pinfo, item, &ei_marc_invalid_length,
12812 "MARC21 requires starting-character-position equal 5, not %d",
12813 marc_char_to_int(marc_value_char));
12818 proto_tree_add_item(leader_tree, hf_marc_leader_implementation_defined_length, tvb, offset, 1, ENC_ASCII);
12819 offset += 1;
12821 /* One position is defined as unused-must-be-zero.
12822 * Don't bother displaying or checking it. */
12823 offset += 1;
12825 /* Process the directory */
12827 directory_entry_len = 3 + length_of_field_size
12828 + starting_character_position_size;
12829 directory_entry_count = ((data_offset - 1) - MARC_LEADER_LENGTH) / directory_entry_len;
12831 marc_directory = (marc_directory_entry *)wmem_alloc0(pinfo->pool,
12832 directory_entry_count * sizeof(marc_directory_entry));
12834 directory_item = proto_tree_add_item(marc_tree, hf_marc_directory,
12835 tvb, offset, data_offset - offset, ENC_NA);
12836 directory_tree = proto_item_add_subtree(directory_item, ett_marc_directory);
12838 dir_index = 0;
12839 /* Minus one for the terminator character */
12840 while (offset < (data_offset - 1)) {
12841 uint32_t tag_value = 0,
12842 length_value = 0,
12843 starting_char_value = 0;
12844 proto_item *length_item;
12845 proto_item *directory_entry_item;
12846 proto_tree *directory_entry_tree;
12848 directory_entry_item = proto_tree_add_item(directory_tree, hf_marc_directory_entry,
12849 tvb, offset, directory_entry_len, ENC_NA);
12850 directory_entry_tree = proto_item_add_subtree(directory_entry_item, ett_marc_directory_entry);
12852 marc_value_str = NULL;
12853 item = proto_tree_add_item_ret_string(directory_entry_tree, hf_marc_directory_entry_tag,
12854 tvb, offset, 3, ENC_ASCII,
12855 pinfo->pool, &marc_value_str);
12856 offset += 3;
12857 if (marc_value_str) {
12858 if (isdigit_string(marc_value_str)) {
12859 tag_value = (unsigned)strtoul(marc_value_str, NULL, 10);
12861 else {
12862 expert_add_info_format(pinfo, item,
12863 &ei_marc_invalid_value,
12864 "MARC directory tag value %d ('%s') contains invalid characters",
12865 dir_index, marc_value_str );
12868 marc_value_str = NULL;
12869 length_item = proto_tree_add_item_ret_string(directory_entry_tree,
12870 hf_marc_directory_entry_length,
12871 tvb, offset, length_of_field_size, ENC_ASCII,
12872 pinfo->pool, &marc_value_str);
12873 offset += length_of_field_size;
12874 if (marc_value_str) {
12875 if (isdigit_string(marc_value_str)) {
12876 length_value = (unsigned)strtoul(marc_value_str, NULL, 10);
12878 else {
12879 expert_add_info_format(pinfo, length_item,
12880 &ei_marc_invalid_value,
12881 "MARC directory length value %d ('%s') contains invalid characters",
12882 dir_index, marc_value_str );
12885 marc_value_str = NULL;
12886 item = proto_tree_add_item_ret_string(directory_entry_tree, hf_marc_directory_entry_starting_position,
12887 tvb, offset, starting_character_position_size, ENC_ASCII,
12888 pinfo->pool, &marc_value_str);
12889 offset += starting_character_position_size;
12890 if (marc_value_str) {
12891 if (isdigit_string(marc_value_str)) {
12892 starting_char_value = (unsigned)strtoul(marc_value_str, NULL, 10);
12894 else {
12895 expert_add_info_format(pinfo, item,
12896 &ei_marc_invalid_value,
12897 "MARC directory entry %d starting char value '%s' contains invalid characters",
12898 dir_index, marc_value_str );
12902 if (starting_char_value >= (record_length - data_offset)) {
12903 expert_add_info_format(pinfo, item,
12904 &ei_marc_invalid_value,
12905 "MARC directory entry %d starting char value %d is outside record size %d",
12906 dir_index, starting_char_value, (record_length - data_offset));
12908 if ((starting_char_value + length_value) >= (record_length - data_offset)) {
12909 expert_add_info_format(pinfo, length_item,
12910 &ei_marc_invalid_value,
12911 "MARC directory entry %d length value %d goes outside record size %d",
12912 dir_index, length_value, (record_length - data_offset));
12914 marc_directory[dir_index].tag = tag_value;
12915 marc_directory[dir_index].length = length_value;
12916 marc_directory[dir_index].starting_character = starting_char_value;
12917 dir_index++;
12919 proto_tree_add_item(directory_tree, hf_marc_directory_terminator,
12920 tvb, offset, 1, ENC_ASCII);
12921 offset += 1;
12923 fields_item = proto_tree_add_item(marc_tree, hf_marc_fields,
12924 tvb, offset, record_length - offset, ENC_NA);
12925 fields_tree = proto_item_add_subtree(fields_item, ett_marc_fields);
12927 for (dir_index = 0; dir_index < directory_entry_count; dir_index++) {
12928 const char *tag_str;
12929 proto_item *field_item;
12930 proto_tree *field_tree;
12932 field_item = proto_tree_add_item(fields_tree, hf_marc_field,
12933 tvb, offset, marc_directory[dir_index].length, ENC_NA);
12934 field_tree = proto_item_add_subtree(field_item, ett_marc_field);
12936 tag_str = try_val_to_str(marc_directory[dir_index].tag, marc_tag_names);
12937 if (tag_str) {
12938 proto_item_append_text(field_item," Tag %03d (%s)",
12939 marc_directory[dir_index].tag, tag_str);
12941 else {
12942 proto_item_append_text(field_item," Tag %03d",
12943 marc_directory[dir_index].tag);
12946 if (marc_directory[dir_index].tag < 10) {
12947 proto_tree_add_item(field_tree, hf_marc_field_control,
12948 tvb, offset, marc_directory[dir_index].length - 1, ENC_ASCII);
12949 offset += marc_directory[dir_index].length - 1;
12950 proto_tree_add_item(field_tree, hf_marc_field_terminator,
12951 tvb, offset, 1, ENC_ASCII);
12952 offset += 1;
12954 else {
12955 unsigned next_offset = offset + marc_directory[dir_index].length - 1;
12956 proto_tree_add_item(field_tree, hf_marc_field_indicator1,
12957 tvb, offset, 1, ENC_ASCII);
12958 offset += 1;
12959 proto_tree_add_item(field_tree, hf_marc_field_indicator2,
12960 tvb, offset, 1, ENC_ASCII);
12961 offset += 1;
12962 do {
12963 int next_subfield;
12964 proto_tree_add_item(field_tree, hf_marc_field_subfield_indicator,
12965 tvb, offset, 1, ENC_ASCII);
12966 offset += 1;
12967 proto_tree_add_item(field_tree, hf_marc_field_subfield_tag,
12968 tvb, offset, 1, ENC_ASCII);
12969 offset += 1;
12970 next_subfield = tvb_find_uint8(tvb, offset, next_offset - offset,
12971 MARC_SUBFIELD_INDICATOR);
12972 if (next_subfield >= 0) {
12973 proto_tree_add_item(field_tree, hf_marc_field_subfield,
12974 tvb, offset, next_subfield - offset, ENC_ASCII);
12975 offset += (next_subfield - offset);
12977 else {
12978 proto_tree_add_item(field_tree, hf_marc_field_subfield,
12979 tvb, offset, next_offset - offset, ENC_ASCII);
12980 offset = next_offset;
12982 } while (offset < next_offset);
12983 proto_tree_add_item(field_tree, hf_marc_field_terminator,
12984 tvb, offset, 1, ENC_ASCII);
12985 offset += 1;
12989 proto_tree_add_item(marc_tree, hf_marc_record_terminator,
12990 tvb, offset, 1, ENC_ASCII);
12991 offset += 1;
12993 if (offset != len) {
12994 expert_add_info_format(pinfo, record_item,
12995 &ei_marc_invalid_record_length,
12996 "MARC record component length %d does not match record length %d",
12997 offset, len);
13000 return len;
13004 * Editor modelines
13006 * Local Variables:
13007 * c-basic-offset: 4
13008 * tab-width: 8
13009 * indent-tabs-mode: nil
13010 * End:
13012 * ex: set shiftwidth=4 tabstop=8 expandtab:
13013 * :indentSize=4:tabSize=8:noTabs=true: