OID documentation update.
[yaz-moved-to-github.git] / doc / asn.xml
1 <!-- $Id: asn.xml,v 1.19 2007-05-04 12:24:15 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 (YAZ 2)</title>
136
137   <note>
138    <para>
139     This material only applies to version 2 series of YAZ. You need not
140     read this material if you are working with YAZ 3. 
141     See <xref linkend="tools.oid"/> for more information on OIDs.
142    </para>
143   </note>
144
145   <para>
146     When you refer to object identifiers in your application, you need to
147     be aware that SR and Z39.50 use two different set of OIDs to refer to
148     the same objects. To handle this easily, &yaz; provides a utility module
149     to &asn; which provides an internal representation of the OIDs used in
150     both protocols. Each oid is described by a structure:
151    </para>
152    
153    <screen>
154 typedef struct oident
155 {
156     enum oid_proto proto;
157     enum oid_class class;
158     enum oid_value value;
159     int oidsuffix[OID_SIZE];
160     char *desc;
161 } oident;
162    </screen>
163    
164    <para>
165     The <literal>proto</literal> field can be set to either
166     <literal>PROTO_SR</literal> or <literal>PROTO_Z3950</literal>.
167     The <literal>class</literal> might be, say,
168     <literal>CLASS_RECSYN</literal>, and the <literal>value</literal> might be
169     <literal>VAL_USMARC</literal> for the USMARC record format. Functions
170    </para>
171    
172    <screen>
173 int *oid_ent_to_oid(struct oident *ent, int *dst);
174 struct oident *oid_getentbyoid(int *o);
175    </screen>
176    
177    <para>
178     are provided to map between object identifiers and database entries.
179     If you store a member of the <literal>oid_proto</literal> type in
180     your association state information, it's a simple matter, at runtime,
181     to generate the correct OID when you need it. For decoding, you can
182     simply ignore the proto field, or if you're strict, you can verify
183     that your peer is using the OID family from the correct protocol.
184     The <literal>desc</literal> field is a short, human-readable name
185     for the PDU, useful mainly for diagnostic output.
186    </para>
187    
188    <note>
189     <para>
190      The old function <function>oid_getoidbyent</function> still exists but
191      is not thread safe. Use <function>oid_ent_to_oid</function> instead
192      and pass an array of size <literal>OID_SIZE</literal>.
193     </para>
194    </note>
195    
196    <note>
197     <para>
198      Plans are underway to merge the two protocols into a single
199      definition, with one set of object identifiers. When this happens, the
200      oid module will no longer be required to support protocol
201      independence, but it should still be useful as a simple OID database.
202     </para>
203    </note>
204   
205   </sect1>
206   <sect1 id="asn.external"><title>EXTERNAL Data</title>
207    
208    <para>
209     In order to achieve extensibility and adaptability to different
210     application domains, the new version of the protocol defines many
211     structures outside of the main ASN.1 specification, referencing them
212     through ASN.1 EXTERNAL constructs. To simplify the construction and
213     access to the externally referenced data, the &asn; module defines a
214     specialized version of the EXTERNAL construct, called
215     <literal>Z_External</literal>.It is defined thus:
216    </para>
217    
218    <screen>
219 typedef struct Z_External
220 {
221     Odr_oid *direct_reference;
222     int *indirect_reference;
223     char *descriptor;
224     enum
225     {
226         /* Generic types */
227         Z_External_single = 0,
228         Z_External_octet,
229         Z_External_arbitrary,
230
231         /* Specific types */
232         Z_External_SUTRS,
233         Z_External_explainRecord,
234         Z_External_resourceReport1,
235         Z_External_resourceReport2
236
237     ...
238
239     } which;
240     union
241     {
242         /* Generic types */
243         Odr_any *single_ASN1_type;
244         Odr_oct *octet_aligned;
245         Odr_bitmask *arbitrary;
246
247         /* Specific types */
248         Z_SUTRS *sutrs;
249         Z_ExplainRecord *explainRecord;
250         Z_ResourceReport1 *resourceReport1;
251         Z_ResourceReport2 *resourceReport2;
252
253         ...
254
255     } u;
256 } Z_External;
257    </screen>
258    
259    <para>
260     When decoding, the &asn; module will attempt to determine which
261     syntax describes the data by looking at the reference fields
262     (currently only the direct-reference). For ASN.1 structured data, you
263     need only consult the <literal>which</literal> field to determine the
264     type of data. You can the access  the data directly through the union.
265     When constructing data for encoding, you set the union pointer to point
266     to the data, and set the <literal>which</literal> field accordingly.
267     Remember also to set the direct (or indirect) reference to the correct
268     OID for the data type.
269     For non-ASN.1 data such as MARC records, use the
270     <literal>octet_aligned</literal> arm of the union.
271    </para>
272    
273    <para>
274     Some servers return ASN.1 structured data values (eg. database
275     records) as BER-encoded records placed in the
276     <literal>octet-aligned</literal> branch of the EXTERNAL CHOICE.
277     The ASN-module will <emphasis>not</emphasis> automatically decode
278     these records. To help you decode the records in the application, the
279     function
280    </para>
281    
282    <screen>
283    Z_ext_typeent *z_ext_gettypebyref(const oid *oid);
284    </screen>
285
286    <para>
287     Can be used to retrieve information about the known, external data
288     types. The function return a pointer to a static area, or NULL, if no
289     match for the given direct reference is found. The
290     <literal>Z_ext_typeent</literal>
291     is defined as:
292    </para>
293   
294    <screen>
295 typedef struct Z_ext_typeent
296 {
297     int oid[OID_SIZE]; /* the direct-reference OID. */
298     int what;          /* discriminator value for the external CHOICE */
299     Odr_fun fun;       /* decoder function */
300 } Z_ext_typeent;
301    </screen>
302    
303    <para>
304     The <literal>what</literal> member contains the
305     <literal>Z_External</literal> union discriminator value for the
306     given type: For the SUTRS record syntax, the value would be
307     <literal>Z_External_sutrs</literal>.
308     The <literal>fun</literal> member contains a pointer to the
309     function which encodes/decodes the given type. Again, for the SUTRS
310     record syntax, the value of <literal>fun</literal> would be
311     <literal>z_SUTRS</literal> (a function pointer).
312    </para>
313    
314    <para>
315     If you receive an EXTERNAL which contains an octet-string value that
316     you suspect of being an ASN.1-structured data value, you can use
317     <literal>z_ext_gettypebyref</literal> to look for the provided
318     direct-reference.
319     If the return value is different from NULL, you can use the provided
320     function to decode the BER string (see <xref linkend="odr.use"/>
321     ).
322    </para>
323    
324    <para>
325     If you want to <emphasis>send</emphasis> EXTERNALs containing
326     ASN.1-structured values in the occtet-aligned branch of the CHOICE, this
327     is possible too. However, on the encoding phase, it requires a somewhat
328     involved juggling around of the various buffers involved.
329    </para>
330    <para>
331     If you need to add new, externally defined data types, you must update
332     the struct above, in the source file <filename>prt-ext.h</filename>, as
333     well as the encoder/decoder in the file <filename>prt-ext.c</filename>.
334     When changing the latter, remember to update both the
335     <literal>arm</literal> arrary and the list
336     <literal>type_table</literal>, which drives the CHOICE biasing that
337     is necessary to tell the different, structured types apart
338     on decoding.
339    </para>
340    
341    <note>
342     <para>
343      Eventually, the EXTERNAL processing will most likely
344      automatically insert the correct OIDs or indirect-refs. First,
345      however, we need to determine how application-context management
346      (specifically the presentation-context-list) should fit into the
347      various modules.
348     </para>
349    </note>
350   
351   </sect1>
352   <sect1 id="asn.pdu"><title>PDU Contents Table</title>
353    
354   <para>
355     We include, for reference, a listing of the fields of each top-level
356     PDU, as well as their default settings.
357    </para>
358    
359    <table frame="top" id="asn.default.initialize.request">
360     <title>Default settings for PDU Initialize Request</title>
361     <tgroup cols="3">
362      <colspec colwidth="7*" colname="field"></colspec>
363      <colspec colwidth="5*" colname="type"></colspec>
364      <colspec colwidth="7*" colname="value"></colspec>
365     <thead>
366      <row>
367       <entry>Field</entry>
368       <entry>Type</entry>
369       <entry>Default Value</entry>
370      </row>
371     </thead>
372     <tbody>
373      <row><entry>
374        referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
375       </entry></row>
376      <row><entry>
377        protocolVersion</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
378       </entry></row>
379      <row><entry>
380        options</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
381       </entry></row>
382      <row><entry>
383        preferredMessageSize</entry><entry>int</entry><entry>30*1024
384       </entry></row>
385      <row><entry>
386        maximumRecordSize</entry><entry>int</entry><entry>30*1024
387       </entry></row>
388      <row><entry>
389        idAuthentication</entry><entry>Z_IdAuthentication</entry><entry>NULL
390       </entry></row>
391      <row><entry>
392        implementationId</entry><entry>char*</entry><entry>"81"
393       </entry></row>
394      <row><entry>
395        implementationName</entry><entry>char*</entry><entry>"YAZ"
396       </entry></row>
397      <row><entry>
398        implementationVersion</entry><entry>char*</entry><entry>YAZ_VERSION
399       </entry></row>
400      <row><entry>
401        userInformationField</entry><entry>Z_UserInformation</entry><entry>NULL
402       </entry></row>
403      <row><entry>
404        otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
405       </entry></row>
406     </tbody>
407    </tgroup>
408   </table>
409
410   <table frame="top" id="asn.default.initialize.response">
411     <title>Default settings for PDU Initialize
412     Response</title>
413    <tgroup cols="3">
414      <colspec colwidth="7*" colname="field"></colspec>
415      <colspec colwidth="5*" colname="type"></colspec>
416      <colspec colwidth="7*" colname="value"></colspec>
417     <thead>
418       <row>
419        <entry>Field</entry>
420        <entry>Type</entry>
421        <entry>Default Value</entry>
422       </row>
423      </thead>
424      <tbody>
425       <row><entry>
426         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
427        </entry></row>
428       <row><entry>
429         protocolVersion</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
430        </entry></row>
431       <row><entry>
432         options</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
433        </entry></row>
434       <row><entry>
435         preferredMessageSize</entry><entry>int</entry><entry>30*1024
436        </entry></row>
437       <row><entry>
438         maximumRecordSize</entry><entry>int</entry><entry>30*1024
439        </entry></row>
440       <row><entry>
441         result</entry><entry>bool_t</entry><entry>TRUE
442        </entry></row>
443       <row><entry>
444         implementationId</entry><entry>char*</entry><entry>"id)"
445        </entry></row>
446       <row><entry>
447         implementationName</entry><entry>char*</entry><entry>"YAZ"
448        </entry></row>
449       <row><entry>
450         implementationVersion</entry><entry>char*</entry><entry>YAZ_VERSION
451        </entry></row>
452       <row><entry>
453         userInformationField</entry><entry>Z_UserInformation</entry><entry>NULL
454        </entry></row>
455       <row><entry>
456         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
457        </entry></row>
458      </tbody>
459     </tgroup>
460    </table>
461
462    <table frame="top" id="asn.default.search.request">
463     <title>Default settings for PDU Search Request</title>
464     <tgroup cols="3">
465      <colspec colwidth="7*" colname="field"></colspec>
466      <colspec colwidth="5*" colname="type"></colspec>
467      <colspec colwidth="7*" colname="value"></colspec>
468      <thead>
469       <row>
470        <entry>Field</entry>
471        <entry>Type</entry>
472        <entry>Default Value</entry>
473       </row>
474      </thead>
475      <tbody>
476       <row><entry>
477         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
478        </entry></row>
479       <row><entry>
480         smallSetUpperBound</entry><entry>int</entry><entry>0
481        </entry></row>
482       <row><entry>
483         largeSetLowerBound</entry><entry>int</entry><entry>1
484        </entry></row>
485       <row><entry>
486         mediumSetPresentNumber</entry><entry>int</entry><entry>0
487        </entry></row>
488       <row><entry>
489         replaceIndicator</entry><entry>bool_t</entry><entry>TRUE
490        </entry></row>
491       <row><entry>
492         resultSetName</entry><entry>char *</entry><entry>"default"
493        </entry></row>
494       <row><entry>
495         num_databaseNames</entry><entry>int</entry><entry>0
496        </entry></row>
497       <row><entry>
498         databaseNames</entry><entry>char **</entry><entry>NULL
499        </entry></row>
500       <row><entry>
501         smallSetElementSetNames</entry><entry>Z_ElementSetNames
502        </entry><entry>NULL
503        </entry></row>
504       <row><entry>
505         mediumSetElementSetNames</entry><entry>Z_ElementSetNames
506        </entry><entry>NULL
507        </entry></row>
508       <row><entry>
509         preferredRecordSyntax</entry><entry>Odr_oid</entry><entry>NULL
510        </entry></row>
511       <row><entry>
512         query</entry><entry>Z_Query</entry><entry>NULL
513        </entry></row>
514       <row><entry>
515         additionalSearchInfo</entry><entry>Z_OtherInformation
516        </entry><entry>NULL
517        </entry></row>
518       <row><entry>
519         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
520        </entry></row>
521      </tbody>
522     </tgroup>
523    </table>
524
525    <table frame="top" id="asn.default.search.response">
526     <title>Default settings for PDU Search Response</title>
527     <tgroup cols="3">
528      <colspec colwidth="7*" colname="field"></colspec>
529      <colspec colwidth="5*" colname="type"></colspec>
530      <colspec colwidth="7*" colname="value"></colspec>
531      <thead>
532       <row>
533        <entry>Field</entry>
534        <entry>Type</entry>
535        <entry>Default Value</entry>
536       </row>
537      </thead>
538      <tbody>
539       
540       <row><entry>
541         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
542        </entry></row>
543       <row><entry>
544         resultCount</entry><entry>int</entry><entry>0
545        </entry></row>
546       <row><entry>
547         numberOfRecordsReturned</entry><entry>int</entry><entry>0
548        </entry></row>
549       <row><entry>
550         nextResultSetPosition</entry><entry>int</entry><entry>0
551        </entry></row>
552       <row><entry>
553         searchStatus</entry><entry>bool_t</entry><entry>TRUE
554        </entry></row>
555       <row><entry>
556         resultSetStatus</entry><entry>int</entry><entry>NULL
557        </entry></row>
558       <row><entry>
559         presentStatus</entry><entry>int</entry><entry>NULL
560        </entry></row>
561       <row><entry>
562         records</entry><entry>Z_Records</entry><entry>NULL
563        </entry></row>
564       <row><entry>
565         additionalSearchInfo</entry>
566        <entry>Z_OtherInformation</entry><entry>NULL
567        </entry></row>
568       <row><entry>
569         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
570        </entry></row>
571      </tbody>
572     </tgroup>
573    </table>
574
575    <table frame="top" id="asn.default.present.request">
576     <title>Default settings for PDU Present Request</title>
577     <tgroup cols="3">
578      <colspec colwidth="7*" colname="field"></colspec>
579      <colspec colwidth="5*" colname="type"></colspec>
580      <colspec colwidth="7*" colname="value"></colspec>
581      <thead>
582       <row>
583        <entry>Field</entry>
584        <entry>Type</entry>
585        <entry>Default Value</entry>
586       </row>
587      </thead>
588      <tbody>
589       <row><entry>
590         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
591        </entry></row>
592       <row><entry>
593         resultSetId</entry><entry>char*</entry><entry>"default"
594        </entry></row>
595       <row><entry>
596         resultSetStartPoint</entry><entry>int</entry><entry>1
597        </entry></row>
598       <row><entry>
599         numberOfRecordsRequested</entry><entry>int</entry><entry>10
600        </entry></row>
601       <row><entry>
602         num_ranges</entry><entry>int</entry><entry>0
603        </entry></row>
604       <row><entry>
605         additionalRanges</entry><entry>Z_Range</entry><entry>NULL
606        </entry></row>
607       <row><entry>
608         recordComposition</entry><entry>Z_RecordComposition</entry><entry>NULL
609        </entry></row>
610       <row><entry>
611         preferredRecordSyntax</entry><entry>Odr_oid</entry><entry>NULL
612        </entry></row>
613       <row><entry>
614         maxSegmentCount</entry><entry>int</entry><entry>NULL
615        </entry></row>
616       <row><entry>
617         maxRecordSize</entry><entry>int</entry><entry>NULL
618        </entry></row>
619       <row><entry>
620         maxSegmentSize</entry><entry>int</entry><entry>NULL
621        </entry></row>
622       <row><entry>
623         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
624        </entry></row>
625      </tbody>
626     </tgroup>
627    </table>
628    
629    <table frame="top" id="asn.default.present.response">
630     <title>Default settings for PDU Present Response</title>
631     <tgroup cols="3">
632      <colspec colwidth="7*" colname="field"></colspec>
633      <colspec colwidth="5*" colname="type"></colspec>
634      <colspec colwidth="7*" colname="value"></colspec>
635      <thead>
636       <row>
637        <entry>Field</entry>
638        <entry>Type</entry>
639        <entry>Default Value</entry>
640       </row>
641      </thead>
642      <tbody>
643       <row><entry>
644         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
645        </entry></row>
646       <row><entry>
647         numberOfRecordsReturned</entry><entry>int</entry><entry>0
648        </entry></row>
649       <row><entry>
650         nextResultSetPosition</entry><entry>int</entry><entry>0
651        </entry></row>
652       <row><entry>
653         presentStatus</entry><entry>int</entry><entry>Z_PresentStatus_success
654        </entry></row>
655       <row><entry>
656         records</entry><entry>Z_Records</entry><entry>NULL
657        </entry></row>
658       <row><entry>
659         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
660        </entry></row>
661      </tbody>
662     </tgroup>
663    </table>
664    
665    <table frame="top" id="asn.default.delete.result.set.request">
666     <title>Default settings for Delete Result Set Request
667     </title>
668     <tgroup cols="3">
669      <colspec colwidth="7*" colname="field"></colspec>
670      <colspec colwidth="5*" colname="type"></colspec>
671      <colspec colwidth="7*" colname="value"></colspec>
672      <thead>
673       <row>
674        <entry>Field</entry>
675        <entry>Type</entry>
676        <entry>Default Value</entry>
677       </row>
678      </thead>
679      <tbody>
680       <row><entry>referenceId
681        </entry><entry>Z_ReferenceId</entry><entry>NULL
682        </entry></row>
683       <row><entry>
684         deleteFunction</entry><entry>int</entry><entry>Z_DeleteResultSetRequest_list
685        </entry></row>
686       <row><entry>
687         num_ids</entry><entry>int</entry><entry>0
688        </entry></row>
689       <row><entry>
690         resultSetList</entry><entry>char**</entry><entry>NULL
691        </entry></row>
692       <row><entry>
693         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
694        </entry></row>
695      </tbody>
696     </tgroup>
697    </table>
698
699    <table frame="top" id="asn.default.delete.result.set.response">
700     <title>Default settings for Delete Result Set Response
701     </title>
702     <tgroup cols="3">
703      <colspec colwidth="7*" colname="field"></colspec>
704      <colspec colwidth="5*" colname="type"></colspec>
705      <colspec colwidth="7*" colname="value"></colspec>
706      <thead>
707       <row>
708        <entry>Field</entry>
709        <entry>Type</entry>
710        <entry>Default Value</entry>
711       </row>
712      </thead>
713      <tbody>
714       <row><entry>
715         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
716        </entry></row>
717       <row><entry>
718         deleteOperationStatus</entry><entry>int</entry>
719        <entry>Z_DeleteStatus_success</entry></row>
720       <row><entry>
721         num_statuses</entry><entry>int</entry><entry>0
722        </entry></row>
723       <row><entry>
724         deleteListStatuses</entry><entry>Z_ListStatus**</entry><entry>NULL
725        </entry></row>
726       <row><entry>
727         numberNotDeleted</entry><entry>int</entry><entry>NULL
728        </entry></row>
729       <row><entry>
730         num_bulkStatuses</entry><entry>int</entry><entry>0
731        </entry></row>
732       <row><entry>
733         bulkStatuses</entry><entry>Z_ListStatus</entry><entry>NUL
734         L</entry></row>
735       <row><entry>
736         deleteMessage</entry><entry>char*</entry><entry>NULL
737        </entry></row>
738       <row><entry>
739         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
740        </entry></row>
741      </tbody>
742     </tgroup>
743    </table>
744
745    <table frame="top" id="asn.default.scan.request">
746     <title>Default settings for Scan Request
747     </title>
748     <tgroup cols="3">
749      <colspec colwidth="7*" colname="field"></colspec>
750      <colspec colwidth="5*" colname="type"></colspec>
751      <colspec colwidth="7*" colname="value"></colspec>
752      <thead>
753       <row>
754        <entry>Field</entry>
755        <entry>Type</entry>
756        <entry>Default Value</entry>
757       </row>
758      </thead>
759      <tbody>
760       <row><entry>
761         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
762        </entry></row>
763       <row><entry>
764         num_databaseNames</entry><entry>int</entry><entry>0
765        </entry></row>
766       <row><entry>
767         databaseNames</entry><entry>char**</entry><entry>NULL
768        </entry></row>
769       <row><entry>
770         attributeSet</entry><entry>Odr_oid</entry><entry>NULL
771        </entry></row>
772       <row><entry>
773         termListAndStartPoint</entry><entry>Z_AttributesPlus...
774        </entry><entry>NULL</entry></row>
775       <row><entry>
776         stepSize</entry><entry>int</entry><entry>NULL
777        </entry></row>
778       <row><entry>
779         numberOfTermsRequested</entry><entry>int</entry><entry>20
780        </entry></row>
781       <row><entry>
782         preferredPositionInResponse</entry><entry>int</entry><entry>NULL
783        </entry></row>
784       <row><entry>
785         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
786        </entry></row>
787      </tbody>
788     </tgroup>
789    </table>
790
791    <table frame="top" id="asn.default.scan.response">
792     <title>Default settings for Scan Response
793     </title>
794     <tgroup cols="3">
795      <colspec colwidth="7*" colname="field"></colspec>
796      <colspec colwidth="5*" colname="type"></colspec>
797      <colspec colwidth="7*" colname="value"></colspec>
798      <thead>
799       <row>
800        <entry>Field</entry>
801        <entry>Type</entry>
802        <entry>Default Value</entry>
803       </row>
804      </thead>
805      <tbody>
806       
807       <row><entry>
808         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
809        </entry></row>
810       <row><entry>
811         stepSize</entry><entry>int</entry><entry>NULL
812        </entry></row>
813       <row><entry>
814         scanStatus</entry><entry>int</entry><entry>Z_Scan_success
815        </entry></row>
816       <row><entry>
817         numberOfEntriesReturned</entry><entry>int</entry><entry>0
818        </entry></row>
819       <row><entry>
820         positionOfTerm</entry><entry>int</entry><entry>NULL
821        </entry></row>
822       <row><entry>
823         entries</entry><entry>Z_ListEntris</entry><entry>NULL
824        </entry></row>
825       <row><entry>
826         attributeSet</entry><entry>Odr_oid</entry><entry>NULL
827        </entry></row>
828       <row><entry>
829         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
830        </entry></row>
831      </tbody>
832     </tgroup>
833    </table>
834
835    <table frame="top" id="asn.default.trigger.resource.control.request">
836     <title>Default settings for Trigger Resource Control Request </title>
837     <tgroup cols="3">
838      <colspec colwidth="7*" colname="field"></colspec>
839      <colspec colwidth="5*" colname="type"></colspec>
840      <colspec colwidth="7*" colname="value"></colspec>
841      <thead>
842       <row>
843        <entry>Field</entry>
844        <entry>Type</entry>
845        <entry>Default Value</entry>
846       </row>
847      </thead>
848      <tbody>
849       
850       <row><entry>
851         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
852        </entry></row>
853       <row><entry>
854         requestedAction</entry><entry>int</entry><entry>
855         Z_TriggerResourceCtrl_resou..
856        </entry></row>
857       <row><entry>
858         prefResourceReportFormat</entry><entry>Odr_oid</entry><entry>NULL
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       
867      </tbody>
868     </tgroup>
869    </table>
870
871    <table frame="top" id="asn.default.resource.control.request">
872     <title>Default settings for Resource Control Request</title>
873     <tgroup cols="3">
874      <colspec colwidth="7*" colname="field"></colspec>
875      <colspec colwidth="5*" colname="type"></colspec>
876      <colspec colwidth="7*" colname="value"></colspec>
877      <thead>
878       <row>
879        <entry>Field</entry>
880        <entry>Type</entry>
881        <entry>Default Value</entry>
882       </row>
883      </thead>
884      <tbody>
885       
886       <row><entry>
887         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
888        </entry></row>
889       <row><entry>
890         suspendedFlag</entry><entry>bool_t</entry><entry>NULL
891        </entry></row>
892       <row><entry>
893         resourceReport</entry><entry>Z_External</entry><entry>NULL
894        </entry></row>
895       <row><entry>
896         partialResultsAvailable</entry><entry>int</entry><entry>NULL
897        </entry></row>
898       <row><entry>
899         responseRequired</entry><entry>bool_t</entry><entry>FALSE
900        </entry></row>
901       <row><entry>
902         triggeredRequestFlag</entry><entry>bool_t</entry><entry>NULL
903        </entry></row>
904       <row><entry>
905         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
906        </entry></row>
907      </tbody>
908     </tgroup>
909    </table>
910
911    <table frame="top" id="asn.default.resource.control.response">
912     <title>Default settings for Resource Control Response</title>
913     <tgroup cols="3">
914      <colspec colwidth="7*" colname="field"></colspec>
915      <colspec colwidth="5*" colname="type"></colspec>
916      <colspec colwidth="7*" colname="value"></colspec>
917      <thead>
918       <row>
919        <entry>Field</entry>
920        <entry>Type</entry>
921        <entry>Default Value</entry>
922       </row>
923      </thead>
924      <tbody>
925       
926       <row><entry>
927         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
928        </entry></row>
929       <row><entry>
930         continueFlag</entry><entry>bool_t</entry><entry>TRUE
931        </entry></row>
932       <row><entry>
933         resultSetWanted</entry><entry>bool_t</entry><entry>NULL
934        </entry></row>
935       <row><entry>
936         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
937        </entry></row>
938      </tbody>
939     </tgroup>
940    </table>
941    
942    <table frame="top" id="asn.default.access.control.request">
943     <title>Default settings for Access Control Request</title>
944     <tgroup cols="3">
945      <colspec colwidth="7*" colname="field"></colspec>
946      <colspec colwidth="5*" colname="type"></colspec>
947      <colspec colwidth="7*" colname="value"></colspec>
948      <thead>
949       <row>
950        <entry>Field</entry>
951        <entry>Type</entry>
952        <entry>Default Value</entry>
953       </row>
954      </thead>
955      <tbody>
956       
957       <row><entry>
958         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
959        </entry></row>
960       <row><entry>
961         which</entry><entry>enum</entry><entry>Z_AccessRequest_simpleForm;
962        </entry></row>
963       <row><entry>
964         u</entry><entry>union</entry><entry>NULL
965        </entry></row>
966       <row><entry>
967         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
968        </entry></row>
969      </tbody>
970     </tgroup>
971    </table>
972
973    <table frame="top" id="asn.default.access.control.response">
974     <title>Default settings for Access Control Response</title>
975     <tgroup cols="3">
976      <colspec colwidth="7*" colname="field"></colspec>
977      <colspec colwidth="5*" colname="type"></colspec>
978      <colspec colwidth="7*" colname="value"></colspec>
979      <thead>
980       <row>
981        <entry>Field</entry>
982        <entry>Type</entry>
983        <entry>Default Value</entry>
984       </row>
985      </thead>
986      <tbody>
987       
988       <row><entry>
989         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
990        </entry></row>
991       <row><entry>
992         which</entry><entry>enum</entry><entry>Z_AccessResponse_simpleForm
993        </entry></row>
994       <row><entry>
995         u</entry><entry>union</entry><entry>NULL
996        </entry></row>
997       <row><entry>
998         diagnostic</entry><entry>Z_DiagRec</entry><entry>NULL
999        </entry></row>
1000       <row><entry>
1001         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
1002        </entry></row>
1003      </tbody>
1004     </tgroup>
1005    </table>
1006
1007    <table frame="top" id="asn.default.segment">
1008     <title>Default settings for Segment</title>
1009     <tgroup cols="3">
1010      <colspec colwidth="7*" colname="field"></colspec>
1011      <colspec colwidth="5*" colname="type"></colspec>
1012      <colspec colwidth="7*" colname="value"></colspec>
1013      <thead>
1014       <row>
1015        <entry>Field</entry>
1016        <entry>Type</entry>
1017        <entry>Default Value</entry>
1018       </row>
1019      </thead>
1020      <tbody>
1021       
1022       <row><entry>
1023         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
1024        </entry></row>
1025       <row><entry>
1026         numberOfRecordsReturned</entry><entry>int</entry><entry>value=0
1027        </entry></row>
1028       <row><entry>
1029         num_segmentRecords</entry><entry>int</entry><entry>0
1030        </entry></row>
1031       <row><entry>
1032         segmentRecords</entry><entry>Z_NamePlusRecord</entry><entry>NULL
1033        </entry></row>
1034       <row><entry>otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
1035        </entry></row>
1036      </tbody>
1037     </tgroup>
1038    </table>
1039
1040    <table frame="top" id="asn.default.close">
1041     <title>Default settings for Close</title>
1042     <tgroup cols="3">
1043      <colspec colwidth="7*" colname="field"></colspec>
1044      <colspec colwidth="5*" colname="type"></colspec>
1045      <colspec colwidth="7*" colname="value"></colspec>
1046      <thead>
1047       <row>
1048        <entry>Field</entry>
1049        <entry>Type</entry>
1050        <entry>Default Value</entry>
1051       </row>
1052      </thead>
1053      <tbody>
1054
1055       <row><entry>
1056         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
1057        </entry></row>
1058       <row><entry>
1059         closeReason</entry><entry>int</entry><entry>Z_Close_finished
1060        </entry></row>
1061       <row><entry>
1062         diagnosticInformation</entry><entry>char*</entry><entry>NULL
1063        </entry></row>
1064       <row><entry>
1065         resourceReportFormat</entry><entry>Odr_oid</entry><entry>NULL
1066        </entry></row>
1067       <row><entry>
1068         resourceFormat</entry><entry>Z_External</entry><entry>NULL
1069        </entry></row>
1070       <row><entry>
1071         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
1072        </entry></row>
1073       
1074      </tbody>
1075     </tgroup>
1076    </table>
1077
1078   </sect1>
1079  </chapter>
1080
1081  <!-- Keep this comment at the end of the file
1082  Local variables:
1083  mode: sgml
1084  sgml-omittag:t
1085  sgml-shorttag:t
1086  sgml-minimize-attributes:nil
1087  sgml-always-quote-attributes:t
1088  sgml-indent-step:1
1089  sgml-indent-data:t
1090  sgml-parent-document: "yaz.xml"
1091  sgml-local-catalogs: nil
1092  sgml-namecase-general:t
1093  End:
1094  -->