2 * Copyright (C) 1994, Index Data I/S
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.1 1995-02-06 16:44:47 quinn
8 * First hack at Z/SR protocol
16 int z_ReferenceId(ODR o, Z_ReferenceId **p, int opt)
18 return odr_implicit(o, odr_octetstring, (Odr_oct**) p, ODR_CONTEXT, 2, opt);
21 int z_DatabaseName(Odr o, Z_DatabaseName **p, int opt)
23 return odr_implicit(o, odr_visiblestring, (char **) p, ODR_CONTEXT, 105,
27 int z_InitRequest(ODR o, Z_InitRequest **p, int opt)
31 if (!odr_sequence_begin(o, p, sizeof(**p)))
35 z_ReferenceId(o, &pp->referenceId, 1) &&
36 odr_implicit(o, odr_bitstring, &pp->protocolVersion, ODR_CONTEXT,
38 odr_implicit(o, odr_bitstring, &pp->options, ODR_CONTEXT, 4, 0) &&
39 odr_implicit(o, odr_integer, &pp->preferredMessageSize, ODR_CONTEXT,
41 odr_implicit(o, odr_integer, &pp->maximumRecordSize, ODR_CONTEXT,
43 odr_implicit(o, odr_visiblestring, &pp->idAuthentication, ODR_CONTEXT,
45 odr_implicit(o, odr_visiblestring, &pp->implementationId, ODR_CONTEXT,
47 odr_implicit(o, odr_visiblestring, &pp->implementationName, ODR_CONTEXT,
49 odr_implicit(o, odr_visiblestring, &pp->implementationVersion,
50 ODR_CONTEXT, 112, 1) &&
54 int z_InitResponse(ODR o, Z_InitResponse **p, int opt)
58 if (!odr_sequence_begin(o, p, sizeof(**p)))
62 z_ReferenceId(o, &pp->referenceId, 1) &&
63 odr_implicit(o, odr_bitstring, &pp->protocolVersion, ODR_CONTEXT,
65 odr_implicit(o, odr_bitstring, &pp->options, ODR_CONTEXT, 4, 0) &&
66 odr_implicit(o, odr_integer, &pp->preferredMessageSize, ODR_CONTEXT,
68 odr_implicit(o, odr_integer, &pp->maximumRecordSize, ODR_CONTEXT,
70 odr_implicit(o, odr_bool, &pp->result, ODR_CONTEXT, 12, 0) &&
71 odr_implicit(o, odr_visiblestring, &pp->idAuthentication, ODR_CONTEXT,
73 odr_implicit(o, odr_visiblestring, &pp->implementationId, ODR_CONTEXT,
75 odr_implicit(o, odr_visiblestring, &pp->implementationName, ODR_CONTEXT,
77 odr_implicit(o, odr_visiblestring, &pp->implementationVersion,
78 ODR_CONTEXT, 112, 1) &&
82 int z_SearchRequest(ODR o, Z_SearchRequest **p, int opt)
86 if (!odr_sequence_begin(o, p, sizeof(**p)))
90 z_ReferenceId(o, &pp->referenceId, 1) &&
91 odr_implicit(o, odr_integer, &pp->smallSetUpperBound, ODR_CONTEXT,
93 odr_implicit(o, odr_integer, &pp->largeSetLowerBound, ODR_CONTEXT,
95 odr_implicit(o, odr_integer, &pp->mediumSetPresentNumber, ODR_CONTEXT,
97 odr_implicit(o, odr_bool, &pp->replaceIndicator, ODR_CONTEXT, 16, 1) &&
98 odr_implicit(o, odr_visiblestring, &pp->resultSetName, ODR_CONTEXT,
106 int z_APDU(ODR o, Z_APDU **p, int opt)
108 static Odr_arm arm[] =
110 {ODR_IMPLICIT, ODR_CONTEXT, 20, Z_APDU_InitRequest, z_InitRequest},
111 {ODR_IMPLICIT, ODR_CONTEXT, 21, Z_APDU_InitResponse, z_InitResponse},
112 {ODR_IMPLICIT, ODR_CONTEXT, 22, Z_APDU_SearchRequest, z_SearchRequest},
117 if (o->direction == ODR_DECODE && !*p)
118 *p = nalloc(o, sizeof(**p));
119 if (!odr_choice(o, arm, &(*p)->u, &(*p)->which))
121 if (o->direction == ODR_DECODE)