From 189fa86838b242b5f37e5ea2db92a84935050a81 Mon Sep 17 00:00:00 2001 From: Sebastian Hammer Date: Wed, 14 Jun 1995 15:26:30 +0000 Subject: [PATCH 1/1] *** empty log message *** --- Makefile | 6 +- asn/proto.c | 216 ++++++++++++++++++++++++--- asn/zget.c | 6 +- client/client.c | 7 +- include/proto.h | 438 +++++++++++++++++++++++++++++++++++++++--------------- server/seshigh.c | 6 +- 6 files changed, 528 insertions(+), 151 deletions(-) diff --git a/Makefile b/Makefile index 6793a06..6a8df69 100644 --- a/Makefile +++ b/Makefile @@ -1,14 +1,16 @@ # Copyright (C) 1994, Index Data I/S # All rights reserved. # Sebastian Hammer, Adam Dickmeiss -# $Id: Makefile,v 1.15 1995-06-14 10:06:25 quinn Exp $ +# $Id: Makefile,v 1.16 1995-06-14 15:26:30 quinn Exp $ # Uncomment the lines below to enable mOSI communcation. -DEFS=-DUSE_XTIMOSI +ODEFS=-DUSE_XTIMOSI RFC1006=rfc1006 LIBMOSI=../../xtimosi/src/libmosi.a ../lib/librfc.a XMOSI=xmosi.o +# Take out the Z_95 if you based your app on v.21b or earlier. +DEFS=$(ODEFS) -DZ_95 #CC= SHELL=/bin/sh MAKE=make diff --git a/asn/proto.c b/asn/proto.c index 874830d..b238dd2 100644 --- a/asn/proto.c +++ b/asn/proto.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: proto.c,v $ - * Revision 1.27 1995-06-07 14:36:22 quinn + * Revision 1.28 1995-06-14 15:26:35 quinn + * *** empty log message *** + * + * Revision 1.27 1995/06/07 14:36:22 quinn * Added CLOSE * * Revision 1.26 1995/06/02 09:49:13 quinn @@ -110,7 +113,7 @@ int z_ResultSetId(ODR o, char **p, int opt) opt); } -int z_UserInformationField(ODR o, Z_UserInformationField **p, int opt) +int z_UserInformationField(ODR o, Odr_external **p, int opt) { return odr_explicit(o, odr_external, (Odr_external **)p, ODR_CONTEXT, 11, opt); @@ -284,7 +287,7 @@ int z_InitRequest(ODR o, Z_InitRequest **p, int opt) odr_implicit(o, odr_visiblestring, &pp->implementationVersion, ODR_CONTEXT, 112, 1) && z_UserInformationField(o, &pp->userInformationField, 1) && -#ifdef Z_OTHERINFO +#ifdef Z_95 z_OtherInformation(o, &(*p)->otherInfo, 1) && #endif odr_sequence_end(o); @@ -314,7 +317,7 @@ int z_InitResponse(ODR o, Z_InitResponse **p, int opt) odr_implicit(o, odr_visiblestring, &pp->implementationVersion, ODR_CONTEXT, 112, 1) && z_UserInformationField(o, &pp->userInformationField, 1) && -#ifdef Z_OTHERINFO +#ifdef Z_95 z_OtherInformation(o, &(*p)->otherInfo, 1) && #endif odr_sequence_end(o); @@ -385,11 +388,6 @@ int z_ElementSetName(ODR o, char **p, int opt) opt); } -int z_PreferredRecordSyntax(ODR o, Z_PreferredRecordSyntax **p, int opt) -{ - return odr_implicit(o, odr_oid, (Odr_oid**) p, ODR_CONTEXT, 104, opt); -} - int z_DatabaseSpecificUnit(ODR o, Z_DatabaseSpecificUnit **p, int opt) { if (!odr_sequence_begin(o, p, sizeof(**p))) @@ -441,20 +439,50 @@ int z_ElementSetNames(ODR o, Z_ElementSetNames **p, int opt) /* ----------------------- RPN QUERY -----------------------*/ +int z_ComplexAttribute(ODR o, Z_ComplexAttribute **p, int opt) +{ + if (!odr_sequence_begin(o, p, sizeof(**p))) + return opt && odr_ok(o); + return + odr_implicit_settag(o, ODR_CONTEXT, 1) && + odr_sequence_of(o, z_StringOrNumeric, &(*p)->list, + &(*p)->num_list) && + odr_implicit_settag(o, ODR_CONTEXT, 2) && + (odr_sequence_of(o, odr_integer, &(*p)->semanticAction, + &(*p)->num_semanticAction) || odr_ok(o)) && + odr_sequence_end(o); +} + int z_AttributeElement(ODR o, Z_AttributeElement **p, int opt) { +#ifdef Z_95 + static Odr_arm arm[] = + { + {ODR_IMPLICIT, ODR_CONTEXT, 121, Z_AttributeValue_numeric, + odr_integer}, + {ODR_IMPLICIT, ODR_CONTEXT, 224, Z_AttributeValue_complex, + z_ComplexAttribute}, + {-1, -1, -1, -1, 0} + }; +#endif + if (!odr_sequence_begin(o, p, sizeof(**p))) return opt && odr_ok(o); return +#ifdef Z_95 + odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 1, 1) && +#endif odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 120, 0) && +#ifdef Z_95 + odr_choice(o, arm, &(*p)->u, &(*p)->which) && +#else odr_implicit(o, odr_integer, &(*p)->attributeValue, ODR_CONTEXT, 121, 0) && +#endif odr_sequence_end(o); } -#ifdef Z_V3 - int z_Term(ODR o, Z_Term **p, int opt) { static Odr_arm arm[] = @@ -481,8 +509,6 @@ int z_Term(ODR o, Z_Term **p, int opt) return opt && odr_ok(o); } -#endif - int z_AttributesPlusTerm(ODR o, Z_AttributesPlusTerm **p, int opt) { if (!(odr_implicit_settag(o, ODR_CONTEXT, 102) && @@ -496,6 +522,19 @@ int z_AttributesPlusTerm(ODR o, Z_AttributesPlusTerm **p, int opt) odr_sequence_end(o); } +int z_ResultSetPlusAttributes(ODR o, Z_ResultSetPlusAttributes **p, int opt) +{ + if (!(odr_implicit_settag(o, ODR_CONTEXT, 214) && + odr_sequence_begin(o, p, sizeof(**p)))) + return opt && odr_ok(o); + return + z_ResultSetId(o, &(*p)->resultSet, 0) && + odr_implicit_settag(o, ODR_CONTEXT, 44) && + odr_sequence_of(o, z_AttributeElement, &(*p)->attributeList, + &(*p)->num_attributes) && + odr_sequence_end(o); +} + int z_ProximityOperator(ODR o, Z_ProximityOperator **p, int opt) { static Odr_arm arm[] = @@ -551,6 +590,7 @@ int z_Operand(ODR o, Z_Operand **p, int opt) { {-1, -1, -1, Z_Operand_APT, z_AttributesPlusTerm}, {-1, -1, -1, Z_Operand_resultSetId, z_ResultSetId}, + {-1, -1, -1, Z_Operand_resultAttr, z_ResultSetPlusAttributes}, {-1, -1, -1, -1, 0} }; @@ -614,6 +654,7 @@ int z_Query(ODR o, Z_Query **p, int opt) { {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Query_type_1, z_RPNQuery}, {ODR_EXPLICIT, ODR_CONTEXT, 2, Z_Query_type_2, odr_octetstring}, + {ODR_EXPLICIT, ODR_CONTEXT, 101, Z_Query_type_101, z_RPNQuery}, {-1, -1, -1, -1, 0} }; @@ -652,10 +693,10 @@ int z_SearchRequest(ODR o, Z_SearchRequest **p, int opt) ODR_CONTEXT, 100, 1) && odr_explicit(o, z_ElementSetNames, &pp->mediumSetElementSetNames, ODR_CONTEXT, 101, 1) && - odr_implicit(o, z_PreferredRecordSyntax, &pp->preferredRecordSyntax, + odr_implicit(o, odr_oid, &pp->preferredRecordSyntax, ODR_CONTEXT, 104, 1) && odr_explicit(o, z_Query, &pp->query, ODR_CONTEXT, 21, 0) && -#ifdef Z_OTHERINFO +#ifdef Z_95 odr_implicit(o, z_OtherInformation, &(*p)->additionalSearchInfo, ODR_CONTEXT, 203, 1) && z_OtherInformation(o, &(*p)->otherInfo, 1) && @@ -675,10 +716,17 @@ int z_DiagRec(ODR o, Z_DiagRec **p, int opt) if (!odr_sequence_begin(o, p, sizeof(**p))) return opt && odr_ok(o); return - odr_oid(o, &(*p)->diagnosticSetId, 1) && /* SHOULD NOT BE OPT */ + odr_oid(o, &(*p)->diagnosticSetId, 1) && /* SHOULD NOT BE OPT! */ odr_integer(o, &(*p)->condition, 0) && + /* + * I no longer recall what server tagged the addinfo.. but it isn't + * hurting anyone, so... + * We need to turn it into a choice, or something, because of + * that damn generalstring in v3. + */ (odr_visiblestring(o, &(*p)->addinfo, 0) || - odr_implicit(o, odr_cstring, &(*p)->addinfo, ODR_CONTEXT, ODR_VISIBLESTRING, 1)) && + odr_implicit(o, odr_cstring, &(*p)->addinfo, ODR_CONTEXT, + ODR_VISIBLESTRING, 1)) && odr_sequence_end(o); } @@ -1011,10 +1059,11 @@ int z_SearchResponse(ODR o, Z_SearchResponse **p, int opt) z_NumberOfRecordsReturned(o, &pp->numberOfRecordsReturned, 0) && z_NextResultSetPosition(o, &pp->nextResultSetPosition, 0) && odr_implicit(o, odr_bool, &pp->searchStatus, ODR_CONTEXT, 22, 0) && - odr_implicit(o, odr_integer, &pp->resultSetStatus, ODR_CONTEXT, 26, 1) && + odr_implicit(o, odr_integer, &pp->resultSetStatus, ODR_CONTEXT, 26, + 1) && z_PresentStatus(o, &pp->presentStatus, 1) && z_Records(o, &pp->records, 1) && -#ifdef Z_OTHERINFO +#ifdef Z_95 odr_implicit(o, z_OtherInformation, &(*p)->additionalSearchInfo, ODR_CONTEXT, 203, 1) && z_OtherInformation(o, &(*p)->otherInfo, 1) && @@ -1024,6 +1073,95 @@ int z_SearchResponse(ODR o, Z_SearchResponse **p, int opt) /* --------------------- PRESENT SERVICE ---------------------- */ +int z_ElementSpec(ODR o, Z_ElementSpec **p, int opt) +{ + static Odr_arm arm[] = + { + {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ElementSpec_elementSetName, + odr_visiblestring}, + {ODR_IMPLICIT; ODR_CONTEXT, 2, Z_ElementSpec_externalSpec, + odr_external}, + {-1, -1, -1, -1, 0} + }; + + if (o->direction == ODR_DECODE) + *p = odr_malloc(o, sizeof(**p)); + + if (odr_choice(o, arm, &(*p)->u, &(*p)->which)) + return 1; + *p = 0; + return opt && odr_ok(o); +} + +int z_Specification(ODR o, Z_Specification **p, int opt) +{ + if (!odr_sequence_begin(o, p, sizeof(**p))) + return opt && odr_ok(o); + return + odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 1, 1) && + z_ElementSpec(o, &(*p)->elementSpec, 1) && + odr_sequence_end(o); +} + +int z_DbSpecific(ODR o, Z_DbSpecific **p, int opt) +{ + if (!odr_sequence_begin(o, p, sizeof(**p))) + return opt && odr_ok(o); + return + odr_explicit(o, z_DatabaseName, &(*p)->db, ODR_CONTEXT, 1, 0) && + odr_implicit(o, z_Specification, &(*p)->spec, ODR_CONTEXT, 2, 0) && + odr_sequence_end(o); +} + +int z_CompSpec(ODR o, Z_CompSpec **p, int opt) +{ + if (!odr_sequence_begin(o, p, sizeof(**p))) + return opt && odr_ok(o); + return + odr_implicit(o, odr_bool, &(*p)->selectAlternativeSyntax, ODR_CONTEXT, + 1, 0) && + odr_implicit(o, z_Specification, &(*p)->generic, ODR_CONTEXT, 2, 1) && + odr_implicit_settag(o, ODR_CONTEXT, 3) && + (odr_sequence_of(o, z_DbSpecific, &(*p)->num_dbSpecific, + &(*p)->dbSpecific) || odr_ok(o)) && + odr_implicit_settag(o, ODR_CONTEXT, 4) && + (odr_sequence_of(o, odr_oid, &(*p)->num_recordSyntax, + &(*p)->recordSyntax) || odr_ok(o)) && + odr_sequence_end(o); +} + +int z_RecordComposition(ODR o, Z_RecordComposition **p, int opt) +{ + static Odr_arm arm[] = + { + {ODR_EXPLICIT, ODR_CONTEXT, 1, Z_RecordComp_simple, + z_ElementSetNames}, + {ODR_IMPLICIT, ODR_CONTEXT, 209, Z_RecordComp_complex, + z_CompSpec}, + {-1, -1, -1, -1, 0} + }; + + if (o->direction == ODR_DECODE) + *p = odr_malloc(o, sizeof(**p)); + + if (odr_choice(o, arm, &(*p)->u, &(*p)->which)) + return 1; + *p = 0; + return opt && odr_ok(o); +} + +int z_Range(ODR o, Z_Range **p, int opt) +{ + if (!odr_sequence_begin(o, p, sizeof(**p))) + return opt && odr_ok(o); + return + odr_implicit(o, odr_integer, &(*p)->startingPosition, ODR_CONTEXT, + 1, 0) && + odr_implicit(o, odr_integer, &(*p)->numberOfRecords, ODR_CONTEXT, + 2, 0) && + odr_sequence_end(o); +} + int z_PresentRequest(ODR o, Z_PresentRequest **p, int opt) { Z_PresentRequest *pp; @@ -1038,8 +1176,25 @@ int z_PresentRequest(ODR o, Z_PresentRequest **p, int opt) 30, 0) && odr_implicit(o, odr_integer, &pp->numberOfRecordsRequested, ODR_CONTEXT, 29, 0) && +#ifdef Z_95 + odr_implicit_settag(o, ODR_CONTEXT, 212) && + (odr_sequence_of(o, z_Range, &(*p)->num_ranges, + &(*p)->additionalRanges) || odr_ok(o)) && + z_RecordComposition(o, &(*p)->recordComposition, 1) && +#else z_ElementSetNames(o, &pp->elementSetNames, 1) && - z_PreferredRecordSyntax(o, &pp->preferredRecordSyntax, 1) && +#endif + odr_implicit(o, odr_oid, &(*p)->preferredRecordSyntax, ODR_CONTEXT, + 104, 1) && +#ifdef Z_95 + odr_implicit(o, odr_integer, &(*p)->maxSegmentCount, ODR_CONTEXT, + 204, 1) && + odr_implicit(o, odr_integer, &(*p)->maxRecordSize, ODR_CONTEXT, + 206, 1) && + odr_impplicit(o, odr_integer, &(*p)->maxSegmentSize, ODR_CONTEXT, + 207, 1) && + z_OtherInformation(o, &(*p)->otherInfo, 1) && +#endif odr_sequence_end(o); } @@ -1056,6 +1211,9 @@ int z_PresentResponse(ODR o, Z_PresentResponse **p, int opt) z_NextResultSetPosition(o, &pp->nextResultSetPosition, 0) && z_PresentStatus(o, &pp->presentStatus, 0) && z_Records(o, &pp->records, 1) && +#ifdef Z_95 + Z_OtherInformation(o, &(*p)->otherInfo, 1) && +#endif odr_sequence_end(o); } @@ -1116,6 +1274,23 @@ int z_DeleteResultSetResponse(ODR o, Z_DeleteResultSetResponse **p, int opt) odr_sequence_end(o); } +/* ------------------------ SEGMENT SERVICE -------------- */ + +int z_Segment(ODR o, Z_Segment **p, int opt) +{ + if (!odr_sequence_begin(o, p, sizeof(**p))) + return opt && odr_ok(o); + return + z_ReferenceId(o, &(*p)->referenceId, 1) && + odr_implicit(o, odr_integer, &(*p)->numberOfRecordsReturned, + ODR_CONTEXT, 24, 0) && + odr_implicit_settag(o, ODR_CONTEXT, 0) && + odr_sequence_of(o, z_NamePlusRecord, &(*p)->num_segmentRecords, + &(*p)->segmentRecords) && + z_OtherInformation(o, &(*p)->otherInfo, 1) && + odr_sequence_end(o); +} + /* ------------------------ CLOSE SERVICE ---------------- */ int z_Close(ODR o, Z_Close **p, int opt) @@ -1164,6 +1339,7 @@ int z_APDU(ODR o, Z_APDU **p, int opt) z_TriggerResourceControlRequest}, {ODR_IMPLICIT, ODR_CONTEXT, 35, Z_APDU_scanRequest, z_ScanRequest}, {ODR_IMPLICIT, ODR_CONTEXT, 36, Z_APDU_scanResponse, z_ScanResponse}, + {ODR_IMPLICIT, ODR_CONTEXT, 45, Z_APDU_segmentRequest, z_Segment}, {ODR_IMPLICIT, ODR_CONTEXT, 48, Z_APDU_close, z_Close}, {-1, -1, -1, -1, 0} diff --git a/asn/zget.c b/asn/zget.c index d4991e9..016adbb 100644 --- a/asn/zget.c +++ b/asn/zget.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: zget.c,v $ - * Revision 1.5 1995-06-07 14:42:30 quinn + * Revision 1.6 1995-06-14 15:26:37 quinn + * *** empty log message *** + * + * Revision 1.5 1995/06/07 14:42:30 quinn * Fixed CLOSE * * Revision 1.4 1995/06/07 14:36:25 quinn @@ -23,7 +26,6 @@ */ #include -#include "../version.h" Z_InitRequest *zget_InitRequest(ODR o) { diff --git a/client/client.c b/client/client.c index a408484..199af39 100644 --- a/client/client.c +++ b/client/client.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: client.c,v $ - * Revision 1.10 1995-06-06 14:56:58 quinn + * Revision 1.11 1995-06-14 15:26:40 quinn + * *** empty log message *** + * + * Revision 1.10 1995/06/06 14:56:58 quinn * Better diagnostics. * * Revision 1.9 1995/06/06 08:15:19 quinn @@ -68,8 +71,6 @@ #endif #endif -#include "../version.h" - #define C_PROMPT "Z> " static ODR out, in, print; /* encoding and decoding streams */ diff --git a/include/proto.h b/include/proto.h index 48f63f9..a34002b 100644 --- a/include/proto.h +++ b/include/proto.h @@ -24,7 +24,10 @@ * OF THIS SOFTWARE. * * $Log: proto.h,v $ - * Revision 1.14 1995-06-07 14:42:34 quinn + * Revision 1.15 1995-06-14 15:26:43 quinn + * *** empty log message *** + * + * Revision 1.14 1995/06/07 14:42:34 quinn * Fixed CLOSE * * Revision 1.13 1995/06/07 14:36:47 quinn @@ -105,6 +108,18 @@ #include #include #include +#include + +/* + * Because we didn't have time to put all of the extra v3 elements in here + * before the first applications were written, we have to place them + * in #ifdefs in places where they would break existing code. If you are + * developing new stuff, we urge you to leave them in, even if you don't + * intend to use any v3 features. When we are comfortable that the old + * apps have been updated, we'll remove the #ifdefs. + */ + +#define Z_V3 /* ----------------- GLOBAL AUXILIARY DEFS ----------------*/ @@ -112,7 +127,6 @@ typedef Odr_oct Z_ReferenceId; typedef char Z_DatabaseName; typedef char Z_ResultSetId; typedef Odr_oct Z_ResultsetId; -typedef Odr_external Z_UserInformationField; typedef struct Z_InfoCategory { @@ -200,52 +214,58 @@ typedef struct Z_IdAuthentication } u; } Z_IdAuthentication; -#define Z_ProtocolVersion_1 0 -#define Z_ProtocolVersion_2 1 -#define Z_ProtocolVersion_3 2 - -#define Z_Options_search 0 -#define Z_Options_present 1 -#define Z_Options_delSet 2 -#define Z_Options_resourceReport 3 -#define Z_Options_triggerResourceCtrl 4 -#define Z_Options_resourceCtrl 5 -#define Z_Options_accessCtrl 6 -#define Z_Options_scan 7 -#define Z_Options_sort 8 -#define Z_Options_reserved 9 -#define Z_Options_extendedServices 10 -#define Z_Options_level_1Segmentation 11 -#define Z_Options_level_2Segmentation 12 -#define Z_Options_concurrentOperations 13 -#define Z_Options_namedResultSets 14 +#define Z_ProtocolVersion_1 0 +#define Z_ProtocolVersion_2 1 +#define Z_ProtocolVersion_3 2 + +#define Z_Options_search 0 +#define Z_Options_present 1 +#define Z_Options_delSet 2 +#define Z_Options_resourceReport 3 +#define Z_Options_triggerResourceCtrl 4 +#define Z_Options_resourceCtrl 5 +#define Z_Options_accessCtrl 6 +#define Z_Options_scan 7 +#define Z_Options_sort 8 +#define Z_Options_reserved 9 +#define Z_Options_extendedServices 10 +#define Z_Options_level_1Segmentation 11 +#define Z_Options_level_2Segmentation 12 +#define Z_Options_concurrentOperations 13 +#define Z_Options_namedResultSets 14 typedef struct Z_InitRequest { Z_ReferenceId *referenceId; /* OPTIONAL */ - Odr_bitmask *options; Odr_bitmask *protocolVersion; + Odr_bitmask *options; int *preferredMessageSize; int *maximumRecordSize; Z_IdAuthentication* idAuthentication; /* OPTIONAL */ char *implementationId; /* OPTIONAL */ char *implementationName; /* OPTIONAL */ char *implementationVersion; /* OPTIONAL */ - Z_UserInformationField *userInformationField; /* OPTIONAL */ + Odr_external *userInformationField; /* OPTIONAL */ +#ifdef Z_95 + Z_OtherInformation *otherInfo; /* OPTIONAL */ +#endif } Z_InitRequest; typedef struct Z_InitResponse { Z_ReferenceId *referenceId; /* OPTIONAL */ - Odr_bitmask *options; Odr_bitmask *protocolVersion; + Odr_bitmask *options; int *preferredMessageSize; int *maximumRecordSize; bool_t *result; char *implementationId; /* OPTIONAL */ char *implementationName; /* OPTIONAL */ char *implementationVersion; /* OPTIONAL */ - Z_UserInformationField *userInformationField; /* OPTIONAL */ + Odr_external *userInformationField; /* OPTIONAL */ +#ifdef Z_95 + Z_OtherInformation *otherInfo; /* OPTIONAL */ +#endif } Z_InitResponse; typedef struct Z_NSRAuthentication @@ -259,44 +279,8 @@ int z_NSRAuthentication(ODR o, Z_NSRAuthentication **p, int opt); int z_StrAuthentication(ODR o, char **p, int opt); - -/* ------------------ RESOURCE CONTROL ----------------*/ - -typedef struct Z_TriggerResourceControlRequest -{ - Z_ReferenceId *referenceId; /* OPTIONAL */ - int *requestedAction; -#define Z_TriggerResourceCtrl_resourceReport 1 -#define Z_TriggerResourceCtrl_resourceControl 2 -#define Z_TriggerResourceCtrl_cancel 3 - Odr_oid *prefResourceReportFormat; /* OPTIONAL */ - bool_t *resultSetWanted; /* OPTIONAL */ -} Z_TriggerResourceControlRequest; - -typedef struct Z_ResourceControlRequest -{ - Z_ReferenceId *referenceId; /* OPTIONAL */ - bool_t *suspendedFlag; /* OPTIONAL */ - Odr_external *resourceReport; /* OPTIONAL */ - int *partialResultsAvailable; /* OPTIONAL */ -#define Z_ResourceControlRequest_subset 1 -#define Z_ResourceControlRequest_interim 2 -#define Z_ResourceControlRequest_none 3 - bool_t *responseRequired; - bool_t *triggeredRequestFlag; /* OPTIONAL */ -} Z_ResourceControlRequest; - -typedef struct Z_ResourceControlResponse -{ - Z_ReferenceId *referenceId; /* OPTIONAL */ - bool_t *continueFlag; - bool_t *resultSetWanted; /* OPTIONAL */ -} Z_ResourceControlResponse; - /* ------------------ SEARCH SERVICE ----------------*/ -typedef Odr_oid Z_PreferredRecordSyntax; - typedef struct Z_DatabaseSpecificUnit { char *databaseName; @@ -323,13 +307,36 @@ typedef struct Z_ElementSetNames /* ---------------------- RPN QUERY --------------------------- */ +typedef struct Z_ComplexAttribute +{ + int num_list; + Z_StringOrNumeric **list; + int num_semanticAction; + int **semanticAction; /* OPTIONAL */ +} Z_ComplexAttribute; + typedef struct Z_AttributeElement { +#ifdef Z_95 + Odr_oid *attributeSet; /* OPTIONAL - v3 only */ +#endif int *attributeType; +#ifdef Z_95 + enum + { + Z_AttributeValue_numeric, + Z_AttributeValue_complex + } which; + union + { + int *numeric; + Z_ComplexAttribute *complex; + } u; +#else int *attributeValue; +#endif } Z_AttributeElement; -#define Z_V3 #ifdef Z_V3 typedef struct Z_Term @@ -371,6 +378,13 @@ typedef struct Z_AttributesPlusTerm #endif } Z_AttributesPlusTerm; +typedef struct Z_ResultSetPlusAttributes +{ + char *resultSet; + int num_attributes; + Z_AttributeElement **attributeList; +} Z_ResultSetPlusAttributes; + typedef struct Z_ProximityOperator { bool_t *exclusion; /* OPTIONAL */ @@ -422,13 +436,17 @@ typedef struct Z_Operator typedef struct Z_Operand { - int which; -#define Z_Operand_APT 0 -#define Z_Operand_resultSetId 1 + enum + { + Z_Operand_APT, + Z_Operand_resultSetId, + Z_Operand_resultAttr /* v3 only */ + } which; union { Z_AttributesPlusTerm *attributesPlusTerm; Z_ResultSetId *resultSetId; + Z_ResultSetPlusAttributes *resultAttr; } u; } Z_Operand; @@ -441,9 +459,11 @@ typedef struct Z_Complex typedef struct Z_RPNStructure { - int which; -#define Z_RPNStructure_simple 0 -#define Z_RPNStructure_complex 1 + enum + { + Z_RPNStructure_simple, + Z_RPNStructure_complex + } which; union { Z_Operand *simple; @@ -461,13 +481,18 @@ typedef struct Z_RPNQuery typedef struct Z_Query { - int which; -#define Z_Query_type_1 1 -#define Z_Query_type_2 2 + enum + { + Z_Query_type_1 = 1, + Z_Query_type_2, + Z_Query_type_101 + } + which; union { Z_RPNQuery *type_1; Odr_oct *type_2; + Z_RPNQuery *type_101; } u; } Z_Query; @@ -483,31 +508,73 @@ typedef struct Z_SearchRequest char **databaseNames; Z_ElementSetNames *smallSetElementSetNames; /* OPTIONAL */ Z_ElementSetNames *mediumSetElementSetNames; /* OPTIONAL */ - Z_PreferredRecordSyntax *preferredRecordSyntax; /* OPTIONAL */ + Odr_oid *preferredRecordSyntax; /* OPTIONAL */ Z_Query *query; +#ifdef Z_95 + Z_OtherInformation *additionalSearchInfo; /* OPTIONAL */ + Z_OtherInformation *otherInfo; /* OPTIONAL */ +#endif } Z_SearchRequest; /* ------------------------ RECORD -------------------------- */ typedef Odr_external Z_DatabaseRecord; +#ifdef Z_95 + +typedef struct Z_DefaultDiagFormat +{ + Odr_oid *diagnosticSetId; /* This is opt'l to interwork with bad targets */ + int *condition; + char *addinfo; +} Z_DefaultDiagFormat; + typedef struct Z_DiagRec { - Odr_oid *diagnosticSetId; + enum + { + Z_DiagRec_defaultFormat, + Z_DiagRec_externallyDefined + } which; + union + { + Z_DefaultDiagFormat *defaultFormat; + Odr_external *externallyDefined; + } u; +} Z_DiagRec; + +#else + +typedef struct Z_DiagRec +{ + Odr_oid *diagnosticSetId; /* This is opt'l to interwork with bad targets */ int *condition; char *addinfo; } Z_DiagRec; +#endif + +typedef struct Z_DiagRecList +{ + int num; + Z_DiagRec **list; +} Z_DiagRecList; + typedef struct Z_NamePlusRecord { char *databaseName; /* OPTIONAL */ - int which; -#define Z_NamePlusRecord_databaseRecord 0 -#define Z_NamePlusRecord_surrogateDiagnostic 1 + enum + { + Z_NamePlusRecord_databaseRecord, + Z_NamePlusRecord_surrogateDiagnostic, + Z_NamePlusRecord_multipleNonSurDiagnostics + } + which; union { Z_DatabaseRecord *databaseRecord; Z_DiagRec *surrogateDiagnostic; + Z_DiagRecList *multipleNonSurDiagnostics; } u; } Z_NamePlusRecord; @@ -519,16 +586,173 @@ typedef struct Z_NamePlusRecordList typedef struct Z_Records { - int which; -#define Z_Records_DBOSD 0 -#define Z_Records_NSD 1 + enum + { + Z_Records_DBOSD, + Z_Records_NSD, + Z_Records_multipleNSD + } which; union { Z_NamePlusRecordList *databaseOrSurDiagnostics; Z_DiagRec *nonSurrogateDiagnostic; + Z_DiagRecList *multipleNonSurDiagnostics; } u; } Z_Records; +/* ------------------------ SEARCHRESPONSE ------------------ */ + +typedef struct Z_SearchResponse +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + int *resultCount; + int *numberOfRecordsReturned; + int *nextResultSetPosition; + bool_t *searchStatus; + int *resultSetStatus; /* OPTIONAL */ +#define Z_RES_SUBSET 1 +#define Z_RES_INTERIM 2 +#define Z_RES_NONE 3 + int *presentStatus; /* OPTIONAL */ +#define Z_PRES_SUCCESS 0 +#define Z_PRES_PARTIAL_1 1 +#define Z_PRES_PARTIAL_2 2 +#define Z_PRES_PARTIAL_3 3 +#define Z_PRES_PARTIAL_4 4 +#define Z_PRES_FAILURE 5 + Z_Records *records; /* OPTIONAL */ +#ifdef Z_95 + Z_OtherInformation *additionalSearchInfo; + Z_OtherInformation *otherInfo; +#endif +} Z_SearchResponse; + +/* ------------------------- PRESENT SERVICE -----------------*/ + +typedef struct Z_ElementSpec +{ + enum + { + Z_ElementSpec_elementSetName, + Z_ElementSpec_externalSpec + } which; + union + { + char *elementSetName; + Odr_external *externalSpec; + } u; +} Z_ElementSpec; + +typedef struct Z_Specification +{ + Odr_oid *schema; /* OPTIONAL */ + Z_ElementSpec *elementSpec; /* OPTIONAL */ +} Z_Specification; + +typedef struct Z_DbSpecific +{ + char *databaseName; + Z_Specification *spec; +} Z_DbSpecific; + +typedef struct Z_CompSpec +{ + bool_t *selectAlternativeSyntax; + Z_Specification *generic; /* OPTIONAL */ + int num_dbSpecific; + Z_DbSpecific **dbSpecific; /* OPTIONAL */ + int num_recordSyntax; + Odr_oid **recordSyntax; /* OPTIONAL */ +} Z_CompSpec; + +typedef struct Z_RecordComposition +{ + enum + { + Z_RecordComp_simple, + Z_RecordComp_complex + } which; + union + { + Z_ElementSetNames *simple; + Z_CompSpec *complex; + } u; +} Z_RecordComposition; + +typedef struct Z_Range +{ + int *startingPosition; + int *numberOfRecords; +} Z_Range; + +typedef struct Z_PresentRequest +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + Z_ResultSetId *resultSetId; + int *resultSetStartPoint; + int *numberOfRecordsRequested; +#ifdef Z_95 + int num_ranges; + Z_Range **additionalRanges; /* OPTIONAL */ + Z_RecordComposition *recordComposition; /* OPTIONAL */ +#else + Z_ElementSetNames *elementSetNames; /* OPTIONAL */ +#endif + Odr_oid *preferredRecordSyntax; /* OPTIONAL */ +#ifdef Z_95 + int *maxSegmentCount; /* OPTIONAL */ + int *maxRecordSize; /* OPTIONAL */ + int *maxSegmentSize; /* OPTIONAL */ + Z_OtherInformation *otherInfo; /* OPTIONAL */ +#endif +} Z_PresentRequest; + +typedef struct Z_PresentResponse +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + int *numberOfRecordsReturned; + int *nextResultSetPosition; + int *presentStatus; + Z_Records *records; +#ifdef Z_95 + Z_OtherInformation *otherInfo; /* OPTIONAL */ +#endif +} Z_PresentResponse; + +/* ------------------ RESOURCE CONTROL ----------------*/ + +typedef struct Z_TriggerResourceControlRequest +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + int *requestedAction; +#define Z_TriggerResourceCtrl_resourceReport 1 +#define Z_TriggerResourceCtrl_resourceControl 2 +#define Z_TriggerResourceCtrl_cancel 3 + Odr_oid *prefResourceReportFormat; /* OPTIONAL */ + bool_t *resultSetWanted; /* OPTIONAL */ +} Z_TriggerResourceControlRequest; + +typedef struct Z_ResourceControlRequest +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + bool_t *suspendedFlag; /* OPTIONAL */ + Odr_external *resourceReport; /* OPTIONAL */ + int *partialResultsAvailable; /* OPTIONAL */ +#define Z_ResourceControlRequest_subset 1 +#define Z_ResourceControlRequest_interim 2 +#define Z_ResourceControlRequest_none 3 + bool_t *responseRequired; + bool_t *triggeredRequestFlag; /* OPTIONAL */ +} Z_ResourceControlRequest; + +typedef struct Z_ResourceControlResponse +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + bool_t *continueFlag; + bool_t *resultSetWanted; /* OPTIONAL */ +} Z_ResourceControlResponse; + + /* ------------------ ACCESS CTRL SERVICE ----------------*/ typedef struct Z_AccessControlRequest @@ -680,49 +904,6 @@ typedef struct Z_ScanResponse Odr_oid *attributeSet; /* OPTIONAL */ } Z_ScanResponse; -/* ------------------------ SEARCHRESPONSE ------------------ */ - -typedef struct Z_SearchResponse -{ - Z_ReferenceId *referenceId; /* OPTIONAL */ - int *resultCount; - int *numberOfRecordsReturned; - int *nextResultSetPosition; - bool_t *searchStatus; - int *resultSetStatus; /* OPTIONAL */ -#define Z_RES_SUBSET 1 -#define Z_RES_INTERIM 2 -#define Z_RES_NONE 3 - int *presentStatus; /* OPTIONAL */ -#define Z_PRES_SUCCESS 0 -#define Z_PRES_PARTIAL_1 1 -#define Z_PRES_PARTIAL_2 2 -#define Z_PRES_PARTIAL_3 3 -#define Z_PRES_PARTIAL_4 4 -#define Z_PRES_FAILURE 5 - Z_Records *records; /* OPTIONAL */ -} Z_SearchResponse; - -/* ------------------------- PRESENT SERVICE -----------------*/ - -typedef struct Z_PresentRequest -{ - Z_ReferenceId *referenceId; /* OPTIONAL */ - Z_ResultSetId *resultSetId; - int *resultSetStartPoint; - int *numberOfRecordsRequested; - Z_ElementSetNames *elementSetNames; /* OPTIONAL */ - Z_PreferredRecordSyntax *preferredRecordSyntax; /* OPTIONAL */ -} Z_PresentRequest; - -typedef struct Z_PresentResponse -{ - Z_ReferenceId *referenceId; /* OPTIONAL */ - int *numberOfRecordsReturned; - int *nextResultSetPosition; - int *presentStatus; - Z_Records *records; -} Z_PresentResponse; /* ------------------------ DELETE -------------------------- */ @@ -796,6 +977,17 @@ typedef struct Z_Close #endif } Z_Close; +/* ------------------------ SEGMENTATION -------------------- */ + +typedef struct Z_Segment +{ + Z_ReferenceId *referenceid; /* OPTIONAL */ + int *numberOfRecordsReturned; + Z_NamePlusRecord *segmentRecords; + Z_OtherInformation *otherInfo; /* OPTIONAL */ +} Z_Segment; + + /* ------------------------ APDU ---------------------------- */ typedef struct Z_APDU @@ -815,6 +1007,7 @@ typedef struct Z_APDU Z_APDU_triggerResourceControlRequest, Z_APDU_scanRequest, Z_APDU_scanResponse, + Z_APDU_segmentRequest, Z_APDU_close } which; union @@ -832,6 +1025,7 @@ typedef struct Z_APDU Z_TriggerResourceControlRequest *triggerResourceControlRequest; Z_ScanRequest *scanRequest; Z_ScanResponse *scanResponse; + Z_Segment *segmentRequest; Z_Close *close; } u; } Z_APDU; diff --git a/server/seshigh.c b/server/seshigh.c index d1ad45c..ddad040 100644 --- a/server/seshigh.c +++ b/server/seshigh.c @@ -4,7 +4,10 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: seshigh.c,v $ - * Revision 1.33 1995-06-06 14:57:05 quinn + * Revision 1.34 1995-06-14 15:26:46 quinn + * *** empty log message *** + * + * Revision 1.33 1995/06/06 14:57:05 quinn * Better diagnostics. * * Revision 1.32 1995/06/06 08:41:44 quinn @@ -150,7 +153,6 @@ #include #include #include -#include "../version.h" #include -- 1.7.10.4