Update headers and omit CVS Ids.
[yaz-moved-to-github.git] / doc / asn.xml
1  <chapter id="asn"><title>The Z39.50 ASN.1 Module</title>
2   <sect1 id="asn.introduction"><title>Introduction</title>
3    <para>
4     The &asn; module provides you with a set of C struct definitions for the
5     various PDUs of the Z39.50 protocol, as well as for the complex types
6     appearing within the PDUs. For the primitive data types, the C
7     representation often takes the form of an ordinary C language type,
8     such as <literal>int</literal>. For ASN.1 constructs that have no direct
9     representation in C, such as general octet strings and bit strings,
10     the &odr; module (see section <link linkend="odr">The ODR Module</link>)
11     provides auxiliary definitions.
12    </para>
13    <para>
14     The &asn; module is located in sub directory <filename>z39.50</filename>.
15     There you'll find C files that implements encoders and decoders for the
16     Z39.50 types. You'll also find the protocol definitions:
17     <filename>z3950v3.asn</filename>, <filename>esupdate.asn</filename>, 
18     and others.
19    </para>
20   </sect1>
21   <sect1 id="asn.preparing"><title>Preparing PDUs</title>
22    
23    <para>
24     A structure representing a complex ASN.1 type doesn't in itself contain the
25     members of that type. Instead, the structure contains
26     <emphasis>pointers</emphasis> to the members of the type.
27     This is necessary, in part, to allow a mechanism for specifying which
28     of the optional structure (SEQUENCE) members are present, and which
29     are not. It follows that you will need to somehow provide space for
30     the individual members of the structure, and set the pointers to
31     refer to the members.
32    </para>
33    <para>
34     The conversion routines don't care how you allocate and maintain your
35     C structures - they just follow the pointers that you provide.
36     Depending on the complexity of your application, and your personal
37     taste, there are at least three different approaches that you may take
38     when you allocate the structures.
39    </para>
40    
41    <para>
42     You can use static or automatic local variables in the function that
43     prepares the PDU. This is a simple approach, and it provides the most
44     efficient form of memory management. While it works well for flat
45     PDUs like the InitReqest, it will generally not be sufficient for say,
46     the generation of an arbitrarily complex RPN query structure.
47    </para>
48    <para>
49     You can individually create the structure and its members using the
50     <function>malloc(2)</function> function. If you want to ensure that
51     the data is freed when it is no longer needed, you will have to
52     define a function that individually releases each member of a
53     structure before freeing the structure itself.
54    </para>
55    <para>
56     You can use the <function>odr_malloc()</function> function (see
57     <xref linkend="odr.use"/> for details). When you use
58     <function>odr_malloc()</function>, you can release all of the
59     allocated data in a single operation, independent of any pointers and
60     relations between the data. <function>odr_malloc()</function> is based on a
61     &quot;nibble-memory&quot;
62     scheme, in which large portions of memory are allocated, and then
63     gradually handed out with each call to <function>odr_malloc()</function>.
64     The next time you call <function>odr_reset()</function>, all of the
65     memory allocated since the last call is recycled for future use (actually,
66     it is placed on a free-list).
67    </para>
68    <para>
69     You can combine all of the methods described here. This will often be
70     the most practical approach. For instance, you might use
71     <function>odr_malloc()</function> to allocate an entire structure and
72     some of its elements, while you leave other elements pointing to global
73     or per-session default variables.
74    </para>
75    
76    <para>
77     The &asn; module provides an important aid in creating new PDUs. For
78     each of the PDU types (say, <function>Z_InitRequest</function>), a
79     function is provided that allocates and initializes an instance of
80     that PDU type for you. In the case of the InitRequest, the function is
81     simply named <function>zget_InitRequest()</function>, and it sets up
82     reasonable default value for all of the mandatory members. The optional
83     members are generally initialized to null pointers. This last aspect
84     is very important: it ensures that if the PDU definitions are
85     extended after you finish your implementation (to accommodate
86     new versions of the protocol, say), you won't get into trouble with
87     uninitialized pointers in your structures. The functions use
88     <function>odr_malloc()</function> to
89     allocate the PDUs and its members, so you can free everything again with a
90     single call to <function>odr_reset()</function>. We strongly recommend
91     that you use the <literal>zget_*</literal>
92     functions whenever you are preparing a PDU (in a C++ API, the
93     <literal>zget_</literal>
94     functions would probably be promoted to constructors for the
95     individual types).
96    </para>
97    <para>
98    The prototype for the individual PDU types generally look like this:
99    </para>
100    <synopsis>
101     Z_&lt;type> *zget_&lt;type>(ODR o);
102    </synopsis>
103    
104    <para>
105     eg.:
106    </para>
107    
108    <synopsis>
109     Z_InitRequest *zget_InitRequest(ODR o);
110    </synopsis>
111
112    <para>
113    The &odr; handle should generally be your encoding stream, but it
114     needn't be.
115    </para>
116    <para>
117    As well as the individual PDU functions, a function
118     <function>zget_APDU()</function> is provided, which allocates
119     a top-level Z-APDU of the type requested:
120    </para>
121    
122    <synopsis>
123     Z_APDU *zget_APDU(ODR o, int which);
124    </synopsis>
125    
126    <para>
127     The <varname>which</varname> parameter is (of course) the discriminator
128     belonging to the <varname>Z_APDU</varname> <literal>CHOICE</literal> type.
129     All of the interface described here is provided by the &asn; module, and
130     you access it through the <filename>proto.h</filename> header file.
131     
132    </para>
133   </sect1>
134   <sect1 id="asn.external"><title>EXTERNAL Data</title>
135    
136    <para>
137     In order to achieve extensibility and adaptability to different
138     application domains, the new version of the protocol defines many
139     structures outside of the main ASN.1 specification, referencing them
140     through ASN.1 EXTERNAL constructs. To simplify the construction and
141     access to the externally referenced data, the &asn; module defines a
142     specialized version of the EXTERNAL construct, called
143     <literal>Z_External</literal>.It is defined thus:
144    </para>
145    
146    <screen>
147 typedef struct Z_External
148 {
149     Odr_oid *direct_reference;
150     int *indirect_reference;
151     char *descriptor;
152     enum
153     {
154         /* Generic types */
155         Z_External_single = 0,
156         Z_External_octet,
157         Z_External_arbitrary,
158
159         /* Specific types */
160         Z_External_SUTRS,
161         Z_External_explainRecord,
162         Z_External_resourceReport1,
163         Z_External_resourceReport2
164
165     ...
166
167     } which;
168     union
169     {
170         /* Generic types */
171         Odr_any *single_ASN1_type;
172         Odr_oct *octet_aligned;
173         Odr_bitmask *arbitrary;
174
175         /* Specific types */
176         Z_SUTRS *sutrs;
177         Z_ExplainRecord *explainRecord;
178         Z_ResourceReport1 *resourceReport1;
179         Z_ResourceReport2 *resourceReport2;
180
181         ...
182
183     } u;
184 } Z_External;
185    </screen>
186    
187    <para>
188     When decoding, the &asn; module will attempt to determine which
189     syntax describes the data by looking at the reference fields
190     (currently only the direct-reference). For ASN.1 structured data, you
191     need only consult the <literal>which</literal> field to determine the
192     type of data. You can the access  the data directly through the union.
193     When constructing data for encoding, you set the union pointer to point
194     to the data, and set the <literal>which</literal> field accordingly.
195     Remember also to set the direct (or indirect) reference to the correct
196     OID for the data type.
197     For non-ASN.1 data such as MARC records, use the
198     <literal>octet_aligned</literal> arm of the union.
199    </para>
200    
201    <para>
202     Some servers return ASN.1 structured data values (eg. database
203     records) as BER-encoded records placed in the
204     <literal>octet-aligned</literal> branch of the EXTERNAL CHOICE.
205     The ASN-module will <emphasis>not</emphasis> automatically decode
206     these records. To help you decode the records in the application, the
207     function
208    </para>
209    
210    <screen>
211    Z_ext_typeent *z_ext_gettypebyref(const oid *oid);
212    </screen>
213
214    <para>
215     Can be used to retrieve information about the known, external data
216     types. The function return a pointer to a static area, or NULL, if no
217     match for the given direct reference is found. The
218     <literal>Z_ext_typeent</literal>
219     is defined as:
220    </para>
221   
222    <screen>
223 typedef struct Z_ext_typeent
224 {
225     int oid[OID_SIZE]; /* the direct-reference OID. */
226     int what;          /* discriminator value for the external CHOICE */
227     Odr_fun fun;       /* decoder function */
228 } Z_ext_typeent;
229    </screen>
230    
231    <para>
232     The <literal>what</literal> member contains the
233     <literal>Z_External</literal> union discriminator value for the
234     given type: For the SUTRS record syntax, the value would be
235     <literal>Z_External_sutrs</literal>.
236     The <literal>fun</literal> member contains a pointer to the
237     function which encodes/decodes the given type. Again, for the SUTRS
238     record syntax, the value of <literal>fun</literal> would be
239     <literal>z_SUTRS</literal> (a function pointer).
240    </para>
241    
242    <para>
243     If you receive an EXTERNAL which contains an octet-string value that
244     you suspect of being an ASN.1-structured data value, you can use
245     <literal>z_ext_gettypebyref</literal> to look for the provided
246     direct-reference.
247     If the return value is different from NULL, you can use the provided
248     function to decode the BER string (see <xref linkend="odr.use"/>
249     ).
250    </para>
251    
252    <para>
253     If you want to <emphasis>send</emphasis> EXTERNALs containing
254     ASN.1-structured values in the occtet-aligned branch of the CHOICE, this
255     is possible too. However, on the encoding phase, it requires a somewhat
256     involved juggling around of the various buffers involved.
257    </para>
258    <para>
259     If you need to add new, externally defined data types, you must update
260     the struct above, in the source file <filename>prt-ext.h</filename>, as
261     well as the encoder/decoder in the file <filename>prt-ext.c</filename>.
262     When changing the latter, remember to update both the
263     <literal>arm</literal> arrary and the list
264     <literal>type_table</literal>, which drives the CHOICE biasing that
265     is necessary to tell the different, structured types apart
266     on decoding.
267    </para>
268    
269    <note>
270     <para>
271      Eventually, the EXTERNAL processing will most likely
272      automatically insert the correct OIDs or indirect-refs. First,
273      however, we need to determine how application-context management
274      (specifically the presentation-context-list) should fit into the
275      various modules.
276     </para>
277    </note>
278   
279   </sect1>
280   <sect1 id="asn.pdu"><title>PDU Contents Table</title>
281    
282   <para>
283     We include, for reference, a listing of the fields of each top-level
284     PDU, as well as their default settings.
285    </para>
286    
287    <table frame="top" id="asn.default.initialize.request">
288     <title>Default settings for PDU Initialize Request</title>
289     <tgroup cols="3">
290      <colspec colwidth="7*" colname="field"></colspec>
291      <colspec colwidth="5*" colname="type"></colspec>
292      <colspec colwidth="7*" colname="value"></colspec>
293     <thead>
294      <row>
295       <entry>Field</entry>
296       <entry>Type</entry>
297       <entry>Default Value</entry>
298      </row>
299     </thead>
300     <tbody>
301      <row><entry>
302        referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
303       </entry></row>
304      <row><entry>
305        protocolVersion</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
306       </entry></row>
307      <row><entry>
308        options</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
309       </entry></row>
310      <row><entry>
311        preferredMessageSize</entry><entry>int</entry><entry>30*1024
312       </entry></row>
313      <row><entry>
314        maximumRecordSize</entry><entry>int</entry><entry>30*1024
315       </entry></row>
316      <row><entry>
317        idAuthentication</entry><entry>Z_IdAuthentication</entry><entry>NULL
318       </entry></row>
319      <row><entry>
320        implementationId</entry><entry>char*</entry><entry>"81"
321       </entry></row>
322      <row><entry>
323        implementationName</entry><entry>char*</entry><entry>"YAZ"
324       </entry></row>
325      <row><entry>
326        implementationVersion</entry><entry>char*</entry><entry>YAZ_VERSION
327       </entry></row>
328      <row><entry>
329        userInformationField</entry><entry>Z_UserInformation</entry><entry>NULL
330       </entry></row>
331      <row><entry>
332        otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
333       </entry></row>
334     </tbody>
335    </tgroup>
336   </table>
337
338   <table frame="top" id="asn.default.initialize.response">
339     <title>Default settings for PDU Initialize
340     Response</title>
341    <tgroup cols="3">
342      <colspec colwidth="7*" colname="field"></colspec>
343      <colspec colwidth="5*" colname="type"></colspec>
344      <colspec colwidth="7*" colname="value"></colspec>
345     <thead>
346       <row>
347        <entry>Field</entry>
348        <entry>Type</entry>
349        <entry>Default Value</entry>
350       </row>
351      </thead>
352      <tbody>
353       <row><entry>
354         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
355        </entry></row>
356       <row><entry>
357         protocolVersion</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
358        </entry></row>
359       <row><entry>
360         options</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
361        </entry></row>
362       <row><entry>
363         preferredMessageSize</entry><entry>int</entry><entry>30*1024
364        </entry></row>
365       <row><entry>
366         maximumRecordSize</entry><entry>int</entry><entry>30*1024
367        </entry></row>
368       <row><entry>
369         result</entry><entry>bool_t</entry><entry>TRUE
370        </entry></row>
371       <row><entry>
372         implementationId</entry><entry>char*</entry><entry>"id)"
373        </entry></row>
374       <row><entry>
375         implementationName</entry><entry>char*</entry><entry>"YAZ"
376        </entry></row>
377       <row><entry>
378         implementationVersion</entry><entry>char*</entry><entry>YAZ_VERSION
379        </entry></row>
380       <row><entry>
381         userInformationField</entry><entry>Z_UserInformation</entry><entry>NULL
382        </entry></row>
383       <row><entry>
384         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
385        </entry></row>
386      </tbody>
387     </tgroup>
388    </table>
389
390    <table frame="top" id="asn.default.search.request">
391     <title>Default settings for PDU Search Request</title>
392     <tgroup cols="3">
393      <colspec colwidth="7*" colname="field"></colspec>
394      <colspec colwidth="5*" colname="type"></colspec>
395      <colspec colwidth="7*" colname="value"></colspec>
396      <thead>
397       <row>
398        <entry>Field</entry>
399        <entry>Type</entry>
400        <entry>Default Value</entry>
401       </row>
402      </thead>
403      <tbody>
404       <row><entry>
405         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
406        </entry></row>
407       <row><entry>
408         smallSetUpperBound</entry><entry>int</entry><entry>0
409        </entry></row>
410       <row><entry>
411         largeSetLowerBound</entry><entry>int</entry><entry>1
412        </entry></row>
413       <row><entry>
414         mediumSetPresentNumber</entry><entry>int</entry><entry>0
415        </entry></row>
416       <row><entry>
417         replaceIndicator</entry><entry>bool_t</entry><entry>TRUE
418        </entry></row>
419       <row><entry>
420         resultSetName</entry><entry>char *</entry><entry>"default"
421        </entry></row>
422       <row><entry>
423         num_databaseNames</entry><entry>int</entry><entry>0
424        </entry></row>
425       <row><entry>
426         databaseNames</entry><entry>char **</entry><entry>NULL
427        </entry></row>
428       <row><entry>
429         smallSetElementSetNames</entry><entry>Z_ElementSetNames
430        </entry><entry>NULL
431        </entry></row>
432       <row><entry>
433         mediumSetElementSetNames</entry><entry>Z_ElementSetNames
434        </entry><entry>NULL
435        </entry></row>
436       <row><entry>
437         preferredRecordSyntax</entry><entry>Odr_oid</entry><entry>NULL
438        </entry></row>
439       <row><entry>
440         query</entry><entry>Z_Query</entry><entry>NULL
441        </entry></row>
442       <row><entry>
443         additionalSearchInfo</entry><entry>Z_OtherInformation
444        </entry><entry>NULL
445        </entry></row>
446       <row><entry>
447         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
448        </entry></row>
449      </tbody>
450     </tgroup>
451    </table>
452
453    <table frame="top" id="asn.default.search.response">
454     <title>Default settings for PDU Search Response</title>
455     <tgroup cols="3">
456      <colspec colwidth="7*" colname="field"></colspec>
457      <colspec colwidth="5*" colname="type"></colspec>
458      <colspec colwidth="7*" colname="value"></colspec>
459      <thead>
460       <row>
461        <entry>Field</entry>
462        <entry>Type</entry>
463        <entry>Default Value</entry>
464       </row>
465      </thead>
466      <tbody>
467       
468       <row><entry>
469         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
470        </entry></row>
471       <row><entry>
472         resultCount</entry><entry>int</entry><entry>0
473        </entry></row>
474       <row><entry>
475         numberOfRecordsReturned</entry><entry>int</entry><entry>0
476        </entry></row>
477       <row><entry>
478         nextResultSetPosition</entry><entry>int</entry><entry>0
479        </entry></row>
480       <row><entry>
481         searchStatus</entry><entry>bool_t</entry><entry>TRUE
482        </entry></row>
483       <row><entry>
484         resultSetStatus</entry><entry>int</entry><entry>NULL
485        </entry></row>
486       <row><entry>
487         presentStatus</entry><entry>int</entry><entry>NULL
488        </entry></row>
489       <row><entry>
490         records</entry><entry>Z_Records</entry><entry>NULL
491        </entry></row>
492       <row><entry>
493         additionalSearchInfo</entry>
494        <entry>Z_OtherInformation</entry><entry>NULL
495        </entry></row>
496       <row><entry>
497         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
498        </entry></row>
499      </tbody>
500     </tgroup>
501    </table>
502
503    <table frame="top" id="asn.default.present.request">
504     <title>Default settings for PDU Present Request</title>
505     <tgroup cols="3">
506      <colspec colwidth="7*" colname="field"></colspec>
507      <colspec colwidth="5*" colname="type"></colspec>
508      <colspec colwidth="7*" colname="value"></colspec>
509      <thead>
510       <row>
511        <entry>Field</entry>
512        <entry>Type</entry>
513        <entry>Default Value</entry>
514       </row>
515      </thead>
516      <tbody>
517       <row><entry>
518         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
519        </entry></row>
520       <row><entry>
521         resultSetId</entry><entry>char*</entry><entry>"default"
522        </entry></row>
523       <row><entry>
524         resultSetStartPoint</entry><entry>int</entry><entry>1
525        </entry></row>
526       <row><entry>
527         numberOfRecordsRequested</entry><entry>int</entry><entry>10
528        </entry></row>
529       <row><entry>
530         num_ranges</entry><entry>int</entry><entry>0
531        </entry></row>
532       <row><entry>
533         additionalRanges</entry><entry>Z_Range</entry><entry>NULL
534        </entry></row>
535       <row><entry>
536         recordComposition</entry><entry>Z_RecordComposition</entry><entry>NULL
537        </entry></row>
538       <row><entry>
539         preferredRecordSyntax</entry><entry>Odr_oid</entry><entry>NULL
540        </entry></row>
541       <row><entry>
542         maxSegmentCount</entry><entry>int</entry><entry>NULL
543        </entry></row>
544       <row><entry>
545         maxRecordSize</entry><entry>int</entry><entry>NULL
546        </entry></row>
547       <row><entry>
548         maxSegmentSize</entry><entry>int</entry><entry>NULL
549        </entry></row>
550       <row><entry>
551         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
552        </entry></row>
553      </tbody>
554     </tgroup>
555    </table>
556    
557    <table frame="top" id="asn.default.present.response">
558     <title>Default settings for PDU Present Response</title>
559     <tgroup cols="3">
560      <colspec colwidth="7*" colname="field"></colspec>
561      <colspec colwidth="5*" colname="type"></colspec>
562      <colspec colwidth="7*" colname="value"></colspec>
563      <thead>
564       <row>
565        <entry>Field</entry>
566        <entry>Type</entry>
567        <entry>Default Value</entry>
568       </row>
569      </thead>
570      <tbody>
571       <row><entry>
572         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
573        </entry></row>
574       <row><entry>
575         numberOfRecordsReturned</entry><entry>int</entry><entry>0
576        </entry></row>
577       <row><entry>
578         nextResultSetPosition</entry><entry>int</entry><entry>0
579        </entry></row>
580       <row><entry>
581         presentStatus</entry><entry>int</entry><entry>Z_PresentStatus_success
582        </entry></row>
583       <row><entry>
584         records</entry><entry>Z_Records</entry><entry>NULL
585        </entry></row>
586       <row><entry>
587         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
588        </entry></row>
589      </tbody>
590     </tgroup>
591    </table>
592    
593    <table frame="top" id="asn.default.delete.result.set.request">
594     <title>Default settings for Delete Result Set Request
595     </title>
596     <tgroup cols="3">
597      <colspec colwidth="7*" colname="field"></colspec>
598      <colspec colwidth="5*" colname="type"></colspec>
599      <colspec colwidth="7*" colname="value"></colspec>
600      <thead>
601       <row>
602        <entry>Field</entry>
603        <entry>Type</entry>
604        <entry>Default Value</entry>
605       </row>
606      </thead>
607      <tbody>
608       <row><entry>referenceId
609        </entry><entry>Z_ReferenceId</entry><entry>NULL
610        </entry></row>
611       <row><entry>
612         deleteFunction</entry><entry>int</entry><entry>Z_DeleteResultSetRequest_list
613        </entry></row>
614       <row><entry>
615         num_ids</entry><entry>int</entry><entry>0
616        </entry></row>
617       <row><entry>
618         resultSetList</entry><entry>char**</entry><entry>NULL
619        </entry></row>
620       <row><entry>
621         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
622        </entry></row>
623      </tbody>
624     </tgroup>
625    </table>
626
627    <table frame="top" id="asn.default.delete.result.set.response">
628     <title>Default settings for Delete Result Set Response
629     </title>
630     <tgroup cols="3">
631      <colspec colwidth="7*" colname="field"></colspec>
632      <colspec colwidth="5*" colname="type"></colspec>
633      <colspec colwidth="7*" colname="value"></colspec>
634      <thead>
635       <row>
636        <entry>Field</entry>
637        <entry>Type</entry>
638        <entry>Default Value</entry>
639       </row>
640      </thead>
641      <tbody>
642       <row><entry>
643         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
644        </entry></row>
645       <row><entry>
646         deleteOperationStatus</entry><entry>int</entry>
647        <entry>Z_DeleteStatus_success</entry></row>
648       <row><entry>
649         num_statuses</entry><entry>int</entry><entry>0
650        </entry></row>
651       <row><entry>
652         deleteListStatuses</entry><entry>Z_ListStatus**</entry><entry>NULL
653        </entry></row>
654       <row><entry>
655         numberNotDeleted</entry><entry>int</entry><entry>NULL
656        </entry></row>
657       <row><entry>
658         num_bulkStatuses</entry><entry>int</entry><entry>0
659        </entry></row>
660       <row><entry>
661         bulkStatuses</entry><entry>Z_ListStatus</entry><entry>NUL
662         L</entry></row>
663       <row><entry>
664         deleteMessage</entry><entry>char*</entry><entry>NULL
665        </entry></row>
666       <row><entry>
667         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
668        </entry></row>
669      </tbody>
670     </tgroup>
671    </table>
672
673    <table frame="top" id="asn.default.scan.request">
674     <title>Default settings for Scan Request
675     </title>
676     <tgroup cols="3">
677      <colspec colwidth="7*" colname="field"></colspec>
678      <colspec colwidth="5*" colname="type"></colspec>
679      <colspec colwidth="7*" colname="value"></colspec>
680      <thead>
681       <row>
682        <entry>Field</entry>
683        <entry>Type</entry>
684        <entry>Default Value</entry>
685       </row>
686      </thead>
687      <tbody>
688       <row><entry>
689         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
690        </entry></row>
691       <row><entry>
692         num_databaseNames</entry><entry>int</entry><entry>0
693        </entry></row>
694       <row><entry>
695         databaseNames</entry><entry>char**</entry><entry>NULL
696        </entry></row>
697       <row><entry>
698         attributeSet</entry><entry>Odr_oid</entry><entry>NULL
699        </entry></row>
700       <row><entry>
701         termListAndStartPoint</entry><entry>Z_AttributesPlus...
702        </entry><entry>NULL</entry></row>
703       <row><entry>
704         stepSize</entry><entry>int</entry><entry>NULL
705        </entry></row>
706       <row><entry>
707         numberOfTermsRequested</entry><entry>int</entry><entry>20
708        </entry></row>
709       <row><entry>
710         preferredPositionInResponse</entry><entry>int</entry><entry>NULL
711        </entry></row>
712       <row><entry>
713         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
714        </entry></row>
715      </tbody>
716     </tgroup>
717    </table>
718
719    <table frame="top" id="asn.default.scan.response">
720     <title>Default settings for Scan Response
721     </title>
722     <tgroup cols="3">
723      <colspec colwidth="7*" colname="field"></colspec>
724      <colspec colwidth="5*" colname="type"></colspec>
725      <colspec colwidth="7*" colname="value"></colspec>
726      <thead>
727       <row>
728        <entry>Field</entry>
729        <entry>Type</entry>
730        <entry>Default Value</entry>
731       </row>
732      </thead>
733      <tbody>
734       
735       <row><entry>
736         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
737        </entry></row>
738       <row><entry>
739         stepSize</entry><entry>int</entry><entry>NULL
740        </entry></row>
741       <row><entry>
742         scanStatus</entry><entry>int</entry><entry>Z_Scan_success
743        </entry></row>
744       <row><entry>
745         numberOfEntriesReturned</entry><entry>int</entry><entry>0
746        </entry></row>
747       <row><entry>
748         positionOfTerm</entry><entry>int</entry><entry>NULL
749        </entry></row>
750       <row><entry>
751         entries</entry><entry>Z_ListEntris</entry><entry>NULL
752        </entry></row>
753       <row><entry>
754         attributeSet</entry><entry>Odr_oid</entry><entry>NULL
755        </entry></row>
756       <row><entry>
757         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
758        </entry></row>
759      </tbody>
760     </tgroup>
761    </table>
762
763    <table frame="top" id="asn.default.trigger.resource.control.request">
764     <title>Default settings for Trigger Resource Control Request </title>
765     <tgroup cols="3">
766      <colspec colwidth="7*" colname="field"></colspec>
767      <colspec colwidth="5*" colname="type"></colspec>
768      <colspec colwidth="7*" colname="value"></colspec>
769      <thead>
770       <row>
771        <entry>Field</entry>
772        <entry>Type</entry>
773        <entry>Default Value</entry>
774       </row>
775      </thead>
776      <tbody>
777       
778       <row><entry>
779         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
780        </entry></row>
781       <row><entry>
782         requestedAction</entry><entry>int</entry><entry>
783         Z_TriggerResourceCtrl_resou..
784        </entry></row>
785       <row><entry>
786         prefResourceReportFormat</entry><entry>Odr_oid</entry><entry>NULL
787        </entry></row>
788       <row><entry>
789         resultSetWanted</entry><entry>bool_t</entry><entry>NULL
790        </entry></row>
791       <row><entry>
792         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
793        </entry></row>
794       
795      </tbody>
796     </tgroup>
797    </table>
798
799    <table frame="top" id="asn.default.resource.control.request">
800     <title>Default settings for Resource Control Request</title>
801     <tgroup cols="3">
802      <colspec colwidth="7*" colname="field"></colspec>
803      <colspec colwidth="5*" colname="type"></colspec>
804      <colspec colwidth="7*" colname="value"></colspec>
805      <thead>
806       <row>
807        <entry>Field</entry>
808        <entry>Type</entry>
809        <entry>Default Value</entry>
810       </row>
811      </thead>
812      <tbody>
813       
814       <row><entry>
815         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
816        </entry></row>
817       <row><entry>
818         suspendedFlag</entry><entry>bool_t</entry><entry>NULL
819        </entry></row>
820       <row><entry>
821         resourceReport</entry><entry>Z_External</entry><entry>NULL
822        </entry></row>
823       <row><entry>
824         partialResultsAvailable</entry><entry>int</entry><entry>NULL
825        </entry></row>
826       <row><entry>
827         responseRequired</entry><entry>bool_t</entry><entry>FALSE
828        </entry></row>
829       <row><entry>
830         triggeredRequestFlag</entry><entry>bool_t</entry><entry>NULL
831        </entry></row>
832       <row><entry>
833         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
834        </entry></row>
835      </tbody>
836     </tgroup>
837    </table>
838
839    <table frame="top" id="asn.default.resource.control.response">
840     <title>Default settings for Resource Control Response</title>
841     <tgroup cols="3">
842      <colspec colwidth="7*" colname="field"></colspec>
843      <colspec colwidth="5*" colname="type"></colspec>
844      <colspec colwidth="7*" colname="value"></colspec>
845      <thead>
846       <row>
847        <entry>Field</entry>
848        <entry>Type</entry>
849        <entry>Default Value</entry>
850       </row>
851      </thead>
852      <tbody>
853       
854       <row><entry>
855         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
856        </entry></row>
857       <row><entry>
858         continueFlag</entry><entry>bool_t</entry><entry>TRUE
859        </entry></row>
860       <row><entry>
861         resultSetWanted</entry><entry>bool_t</entry><entry>NULL
862        </entry></row>
863       <row><entry>
864         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
865        </entry></row>
866      </tbody>
867     </tgroup>
868    </table>
869    
870    <table frame="top" id="asn.default.access.control.request">
871     <title>Default settings for Access Control Request</title>
872     <tgroup cols="3">
873      <colspec colwidth="7*" colname="field"></colspec>
874      <colspec colwidth="5*" colname="type"></colspec>
875      <colspec colwidth="7*" colname="value"></colspec>
876      <thead>
877       <row>
878        <entry>Field</entry>
879        <entry>Type</entry>
880        <entry>Default Value</entry>
881       </row>
882      </thead>
883      <tbody>
884       
885       <row><entry>
886         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
887        </entry></row>
888       <row><entry>
889         which</entry><entry>enum</entry><entry>Z_AccessRequest_simpleForm;
890        </entry></row>
891       <row><entry>
892         u</entry><entry>union</entry><entry>NULL
893        </entry></row>
894       <row><entry>
895         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
896        </entry></row>
897      </tbody>
898     </tgroup>
899    </table>
900
901    <table frame="top" id="asn.default.access.control.response">
902     <title>Default settings for Access Control Response</title>
903     <tgroup cols="3">
904      <colspec colwidth="7*" colname="field"></colspec>
905      <colspec colwidth="5*" colname="type"></colspec>
906      <colspec colwidth="7*" colname="value"></colspec>
907      <thead>
908       <row>
909        <entry>Field</entry>
910        <entry>Type</entry>
911        <entry>Default Value</entry>
912       </row>
913      </thead>
914      <tbody>
915       
916       <row><entry>
917         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
918        </entry></row>
919       <row><entry>
920         which</entry><entry>enum</entry><entry>Z_AccessResponse_simpleForm
921        </entry></row>
922       <row><entry>
923         u</entry><entry>union</entry><entry>NULL
924        </entry></row>
925       <row><entry>
926         diagnostic</entry><entry>Z_DiagRec</entry><entry>NULL
927        </entry></row>
928       <row><entry>
929         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
930        </entry></row>
931      </tbody>
932     </tgroup>
933    </table>
934
935    <table frame="top" id="asn.default.segment">
936     <title>Default settings for Segment</title>
937     <tgroup cols="3">
938      <colspec colwidth="7*" colname="field"></colspec>
939      <colspec colwidth="5*" colname="type"></colspec>
940      <colspec colwidth="7*" colname="value"></colspec>
941      <thead>
942       <row>
943        <entry>Field</entry>
944        <entry>Type</entry>
945        <entry>Default Value</entry>
946       </row>
947      </thead>
948      <tbody>
949       
950       <row><entry>
951         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
952        </entry></row>
953       <row><entry>
954         numberOfRecordsReturned</entry><entry>int</entry><entry>value=0
955        </entry></row>
956       <row><entry>
957         num_segmentRecords</entry><entry>int</entry><entry>0
958        </entry></row>
959       <row><entry>
960         segmentRecords</entry><entry>Z_NamePlusRecord</entry><entry>NULL
961        </entry></row>
962       <row><entry>otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
963        </entry></row>
964      </tbody>
965     </tgroup>
966    </table>
967
968    <table frame="top" id="asn.default.close">
969     <title>Default settings for Close</title>
970     <tgroup cols="3">
971      <colspec colwidth="7*" colname="field"></colspec>
972      <colspec colwidth="5*" colname="type"></colspec>
973      <colspec colwidth="7*" colname="value"></colspec>
974      <thead>
975       <row>
976        <entry>Field</entry>
977        <entry>Type</entry>
978        <entry>Default Value</entry>
979       </row>
980      </thead>
981      <tbody>
982
983       <row><entry>
984         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
985        </entry></row>
986       <row><entry>
987         closeReason</entry><entry>int</entry><entry>Z_Close_finished
988        </entry></row>
989       <row><entry>
990         diagnosticInformation</entry><entry>char*</entry><entry>NULL
991        </entry></row>
992       <row><entry>
993         resourceReportFormat</entry><entry>Odr_oid</entry><entry>NULL
994        </entry></row>
995       <row><entry>
996         resourceFormat</entry><entry>Z_External</entry><entry>NULL
997        </entry></row>
998       <row><entry>
999         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
1000        </entry></row>
1001       
1002      </tbody>
1003     </tgroup>
1004    </table>
1005
1006   </sect1>
1007  </chapter>
1008
1009  <!-- Keep this comment at the end of the file
1010  Local variables:
1011  mode: sgml
1012  sgml-omittag:t
1013  sgml-shorttag:t
1014  sgml-minimize-attributes:nil
1015  sgml-always-quote-attributes:t
1016  sgml-indent-step:1
1017  sgml-indent-data:t
1018  sgml-parent-document: "yaz.xml"
1019  sgml-local-catalogs: nil
1020  sgml-namecase-general:t
1021  End:
1022  -->