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