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