|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T m
Length: 25033 (0x61c9)
Types: TextFile
Names: »msap.3n«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦e83f91978⟧ »EurOpenD22/isode/osimis-2.0.tar.Z«
└─⟦d846658bd⟧
└─⟦this⟧ »osimis/msap/msap.3n«
#######################################################################
# #
# Copyright (c) 1988 University College London #
# All rights reserved. #
# #
# Redistribution and use in source and binary forms are permitted #
# provided that the above copyright notice and this paragraph are #
# duplicated in all such forms and that any documentation, #
# advertising materials, and other materials related to such #
# distribution and use, acknowledge that the software was developed #
# by the Department of Computer Science, University College London. #
# The name of the University may not be used to #
# endorse or promote products derived from this software without #
# specific prior written permission. #
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR #
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED #
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. #
# #
#######################################################################
Common Management Information Service Primitives - Embryo manual page,
to be read in conjunction with the header files `msap.h' and `mpep.h'.
Programs that use the CMIS interface should be linked with the CMIS,
Directory and ISODE libraries (libmsap.a, libdsap.a and libisode.a).
NAME
M_InitialiseReq - Open a management connection
SYNOPSIS
#include <isode/rosap.h>
#include <isode/msap.h>
int M_InitialiseReq (CallingTitle, CallingAddr, CalledTitle, CalledAddr,
context, protvrsn, fununits, access, info, mc, mi)
AEI CallingTitle, CalledTitle;
struct PSAPaddr * CallingAddr, * CalledAddr;
char * context;
int protvrsn, fununits;
External * access, * info;
struct MSAPconnect * mc;
struct MSAPindication * mi;
DESCRIPTION
Attempts to open a management level connection to the entity
CalledTitle at address CalledAddr. The Calling parameters
may be left NULLAEI and NULLPA respectively. context is the
application level context for the connection (i.e. "management").
protvrsn is an integer whose bits indicate the CMIP versions
supported, at present it should be 1 for version1 (bit 0 set).
fununits is an integer whose bits are intended to indicate the
capabilities of the caller. It is passed unaltered to the called
entity.
access is an application defined external parameter, a pointer
to a struct type_UNIV_EXTERNAL as in <isode/pepy/UNIV-types.h>
(typedef'd as External). It may be created using the
routine external_create () (see manual entry) and free'd using
external_free (). NULLACCESS may be used if there are no
access control requirements.
info is user information to be sent with the association request.
It is of type External * as access. NULLEXTERN (the same as
NULLACCESS) may be used if no information is to be sent.
The mc structure is updated if the connection establishment is
successful (an M-ASSOCIATE.CONFIRMATION event) to contain information
about the connection, including an integer descriptor to be
used in all references to this connection.
The mi structure is updated iff the connection fails and contains
the reason - in particular mi->mi_abort.ma_data is a human readable
reason for the failure.
DIAGNOSTICS
OK is returned if the connection establishment is successful,
NOTOK otherwise.
SEE ALSO
Isode User's Manual Section 2.2 Vol. 1, IS 9596 (CMIP/S),
external_build ().
NAME
M_Init - Initialise a management responder
SYNOPSIS
#include <isode/rosap.h>
#include <isode/msap.h>
int M_Init (vecp, vec, ms, mi)
int vecp;
char ** vec;
struct MSAPindication * mi;
struct MSAPstart * ms;
DESCRIPTION
This routine must be called by a responder as soon as it
is invoked, passing its argv and argc as the first two
arguments. If the call is successful then the return is
equivalent to an M-ASSOCIATE.INDICATION event.
The association information is contained in the MSAPstart
structure, including the association descriptor.
DIAGNOSTICS
NOTOK is returned upon error, the reason being in the
MSAPindication structure, as above. OK otherwise.
SEE ALSO
Isode User's Manual Section 2.2 Vol. 1, IS 9596 (CMIP/S).
NAME
M_InitialiseResp - Respond to a connection request
SYNOPSIS
#include <isode/rosap.h>
#include <isode/msap.h>
int M_InitialiseResp (ms, status, resptitle, respaddr,
context, protvrsn, fununits, access, info, mi)
struct MSAPstart * ms;
int status;
AEI resptitle;
struct PSAPaddr * respaddr;
OID context;
int protvrsn, fununits;
External * access, * info;
struct MSAPindication * mi;
DESCRIPTION
ms is the structure filled by the M_Init routine.
Set status to ACS_ACCEPT to accept the connection request,
otherwise use ACS_TRANSIENT or ACS_PERMANENT for a transient
or permanent rejection respectively.
resptitle and respaddr may be set to NULLAEI and NULLPA.
context may be set to NULLOID if the requester's
application context is acceptable.
protvrsn, fununits, access, and info are as in M_InitialiseReq.
DIAGNOSTICS
OK is returned on success, otherwise NOTOK is returned
and mi->mi_abort is updated.
SEE ALSO
Isode User's Manual Section 2.2 Vol. 1, IS 9596 (CMIP/S),
external_build ().
NAME
M_TerminateReq - orderly connection release request
SYNOPSIS
#include <isode/rosap.h>
#include <isode/msap.h>
int M_TerminateReq (msd, reason, info, mi)
int msd, reason;
PE info;
struct MSAPindication * mi;
DESCRIPTION
Requests the release of a management association referred
to by the descriptor msd. The reason should be one of
ACF_NORMAL, ACF_URGENT, ACF_UNDEFINED.
info is user information to be sent with the association release
request. It is passed transparently to the service user's peer.
DIAGNOSTICS
OK is returned if the connection has been released, otherwise
NOTOK is returned and mi->mi_abort is updated.
SEE ALSO
Isode User's Manual Section 2.2 Vol. 1, IS 9596 (CMIP/S).
NAME
M_TerminateResp - Respond to a Terminate request
SYNOPSIS
#include <isode/rosap.h>
#include <isode/msap.h>
int M_TerminateResp (msd, status, reason, info, mi)
int msd, status, reason;
PE info;
struct MSAPindication * mi;
DESCRIPTION
msd is the descriptor of an association on which
a terminate request has been received.
status should be either ACS_ACCEPT if the association is to be
released, or ACS_REJECT otherwise.
reason should be one of ACR_NORMAL, ACR_NOTFINISHED or
ACR_UNDEFINED.
info is user information to be sent with the association release
response. It is passed transparently to the service user's peer.
DIAGNOSTICS
OK is returned upon success and the association is released,
otherwise NOTOK is returned and mi->mi_abort is updated.
SEE ALSO
Isode User's Manual Section 2.2 Vol. 1, IS 9596 (CMIP/S).
NAME
M_AbortReq - Request abrupt release of connection
SYNOPSIS
#include <isode/rosap.h>
#include <isode/msap.h>
int M_AbortReq (msd, info, mi)
int msd;
External * info;
struct MSAPindication * mi;
DESCRIPTION
Request the abrupt release of the association referenced by msd.
info is user information to be sent with the abort request
(as in M_InitialiseReq).
DIAGNOSTICS
OK is returned upon success and the association is immediately
released with any data queued possibly lost,
otherwise NOTOK is returned and mi->mi_abort is updated.
SEE ALSO
Isode User's Manual Section 2.2 Vol. 1, IS 9596 (CMIP/S),
external_build ().
NAME
Operations and Results - Event Report, Get, Set, Action,
Create, Delete, Linked Reply
SYNOPSIS
#include <isode/rosap.h>
#include <isode/msap.h>
int M_EventRep (msd, invoke, obj_class, obj_inst, type, time,
info, mi)
int msd, invoke;
MID obj_class, type;
MN obj_inst;
char * time;
PE info;
struct MSAPindication * mi;
int M_EventReC (msd, invoke, obj_class, obj_inst,
type, time, info, mi)
/* arguments as above */
int M_EventRepRes (msd, invoke, obj_class, obj_inst, time, reply,
error, err_info, mi)
int msd, invoke;
MID obj_class;
MN obj_inst;
char * time;
CMISparam * reply;
CMISerrors error;
CMISerrparam * err_info;
struct MSAPindication * mi;
int M_Get (msd, invoke, obj_class, obj_inst, scope, filter,
access, sync, nattrs, attrs, mi)
int msd, invoke;
MID obj_class;
MN obj_inst;
Scope * scope;
CMISfilter * filter;
External * access;
CMISsync sync;
int nattrs;
MID attrs;
struct MSAPindication * mi;
int M_GetRes (msd, invoke, linked, obj_class, obj_inst, time,
nattrs, attrs, error, err_info, mi)
int msd, invoke, linked;
MID obj_class;
MN obj_inst;
char * time;
int nattrs;
CMISparam * attrs;
CMISerrors error;
CMISerrparam * err_info;
struct MSAPindication * mi;
int M_Set (msd, invoke, obj_class, obj_inst, scope, filter,
access, sync, nattrs, attrs, mi)
int msd, invoke;
MID obj_class;
MN obj_inst;
Scope * scope;
CMISfilter * filter;
External * access;
CMISsync sync;
int nattrs;
CMISparam * attrs;
struct MSAPindication * mi;
int M_SetC (msd, invoke, obj_class, obj_inst, scope, filter,
access, sync, nattrs, attrs, mi)
/* arguments as above */
int M_SetRes (msd, invoke, linked, obj_class, obj_inst, time,
nattrs, attrs, error, err_info, mi)
int msd, invoke, linked;
MID obj_class;
MN obj_inst;
char * time;
int nattrs;
CMISparam * attrs;
CMISerrors error;
CMISerrparam * err_info;
struct MSAPindication * mi;
int M_Action (msd, invoke, obj_class, obj_inst, scope, filter,
access, sync, type, info, mi)
int msd, invoke;
MID obj_class;
MN obj_inst;
Scope * scope;
CMISfilter * filter;
External * access;
CMISsync sync;
MID type;
PE info;
struct MSAPindication * mi;
int M_ActionC (msd, invoke, obj_class, obj_inst, scope, filter,
access, sync, type, info, mi)
int M_ActionRes (msd, invoke, linked, obj_class, obj_inst,
time, reply, error, err_info, mi)
int msd, invoke, linked;
MID obj_class;
MN obj_inst;
char * time;
CMISparam * reply;
CMISerrors error;
CMISerrparam * err_info;
struct MSAPindication * mi;
int M_Create (msd, invoke, obj_class, obj_inst, inst_type, ref_inst,
access, nattrs, attrs, mi)
int msd, invoke;
MID obj_class;
MN obj_inst, ref_inst;
int inst_type;
External * access;
int nattrs;
CMISparam * attrs;
struct MSAPindication * mi;
int M_CreateRes (msd, invoke, obj_class, obj_inst, time,
nattrs, attrs, error, err_info, mi)
int msd, invoke;
MID obj_class;
MN obj_inst;
char * time;
int nattrs;
CMISparam * attrs;
CMISerrors error;
CMISerrparam * err_info;
struct MSAPindication * mi;
int M_Delete (msd, invoke, obj_class, obj_inst, scope, filter,
access, sync, mi)
int msd, invoke;
MID obj_class;
MN obj_inst;
Scope * scope;
CMISfilter * filter;
External * access;
CMISsync sync;
struct MSAPindication * mi;
int M_DeleteRes (msd, invoke, linked, obj_class, obj_inst, time,
error, err_info, mi)
int msd, invoke, linked;
MID obj_class;
MN obj_inst;
char * time;
CMISerrors error;
CMISerrparam * err_info;
struct MSAPindication * mi;
DESCRIPTION
msd is the appropriate association descriptor.
invoke is the invoke id for the operation or result.
linked is the linked identifier for linked replies.
It should have the same value as that of the request invoke id
for all the replies but the last one (end of linked replies).
NOLINKED (or NULL) may be used for the last linked reply
or a single one.
mi is a pointer to a MSAPindication structure which
is updated only if the call fails.
The remaining arguments are the parameters for the remote
operation request or reply. If a parameter is specified as
optional, then the appropriate NULL<x> may be used (e.g. NULLPE).
The call returns as soon as the operation is queued, it does not
wait for the result (if any).
M_WaitReq must be used to wait for a reply.
obj_class is of type MID, a pointer to a MIDent structure
which contains either an OID or an integer (global or local id).
NULLMID may be used if this argument is optional. In the case
where a MIDent structure exists instead of a pointer to it
(i.e. in the CMISerrparam structure), a null effect may be achieved
by setting mid_type to MID_GLOBAL and mid_global to NULLOID.
obj_inst is of type MN, a pointer to a MName structure
that contains either a distinguished name or a character string
(a 'non-specific' name). For the usage of routines that
manipulate distinguished names you may consult the ISODE manual,
Volume 5 Section 17 (Programming the Directory).
NULLMN may be used if this argument is optional. In the case
where a MName structure exists instead of a pointer to it
(i.e. in the CMISerrparam structure), a null effect may be achieved
by setting mn_type to MN_DN and mn_dn to NULLDN.
scope and sync apply to operations that may be performed on
multiple objects and may result in linked replies, namely M_Get,
M_Set(C), M_Action(C) and M_Delete.
scope->sc_type may take one of the values Sc_BaseObject,
Sc_FirstLevel, Sc_WholeSubtree, Sc_IndividualLevel or
Sc_BaseToNthLevel. If any of the last two is selected,
sc->sc_level should indicate the selected level.
NULLSCOPE may be used if scoping is not required.
sync may take one of the values s_bestEffort or s_atomic.
NULLSYNC (effectively s_bestEffort) may be used if
there are no synchronisation requirements.
access is an application defined external parameter, a pointer
to a struct type_UNIV_EXTERNAL as in <isode/pepy/UNIV-types.h>
(typedef'd as External). It may be created using the
routine external_create () (see manual entry) and free'd using
external_free (). NULLACCESS may be used if there are no
access control requirements.
filter is the CMIS Filter to be applied to the scoped managed
object(s). Consult <isode/mpep.h> and IS 9596 (CMIP/S).
NULLFILTER may be used if filtering is no required.
attrs in M_Get points to an array of MIDent structures
and nattrs is the number of elements in that array
(number of attribute identifiers).
NULLMID and 0 should be used respectively if all attributes
are to be selected.
attrs in M_GetRes, M_Set(C), M_SetRes, M_Create and M_CreateRes
points to an array of CMISparam structures and nattrs is the
number of elements in that array (number of attributes).
A CMISparam structure contains an identifier (mp_id - a MIDent
struct), a value (mp_val - a PE) and either a modify operator
(mp_modify) or an error code (mp_error).
NULLMPARM and 0 should be used respectively if no attribute
information is to be passed to the peer entity.
The information in CMISparam for the above CMIS primitives should be:
In M_GetRes, if a requested attribute value is to be returned,
mp_id should be set to the attribute id and mp_val should contain
the attribute value. If one or more attribute values cannot be
returned, mp_id should be set to the attribute id and mp_error
should contain the error code (m_accessDenied or m_noSuchAttribute).
error should be then set to m_getListError.
In M_Set(C), mp_id is the attribute id of the attribute to be
set, mp_val is its value and mp_modify is one of m_replace,
m_addValue, m_removeValue, m_setToDefault
(in the latter case the attribute value is not required).
In M_SetRes, if the set operation on an attribute was successful,
mp_id should be set to the attribute id and mp_id to the attribute
value after the set operation. If one or more set operations on
attributes could not be performed, mp_id should be set to the
attribute id, mp_val should contain the supplied value and
mp_error should contain the error code (one of m_accessDenied,
m_noSuchAttribute, m_invalidAttributeValue, m_invalidOperation,
m_invalidOperator). error should then be set to m_setListError.
In M_Create, mp_id and mp_val are the attribute id and value
of the attributes to be initialised.
In M_CreateRes, mp_id and mp_val are the attribute id and value
of the attributes that have been initialised.
inst_type in M_Create specifies the type of the object instance
and should be either CA_OBJECT_INST or CA_PARENT_INST for object
and parent instance respectively.
type in M_EventRep/M_Action is the event/action type (a MID)
and info is the event/action information (a PE).
NULLPE may be used for no event report/action information.
reply in M_EventRepRes/M_ActionRes is the event report/action reply.
reply->mp_id should contain the event report/action type id and
reply->mp_val should contain the event report/action information.
NULLMPARM may be used for a null reply.
error contains the error code if an error has occurred while
processing an operation request. Any error information should be
contained in an instance of a CMISerrparam structure, pointed
by err_info. m_getListError and m_setListError are treated
as results rather than errors (partial success).
In the case of success, error may be set to m_noError or NULLMERROR
and err_info may be set to NULLMERRPARM.
A CMISerrparam structure contains the following fields:
object class (me_class - a MIDent struct), object
instance (me_inst - a MName struct), time (me_time),
scope (me_scope - a Scope struct), synchronisation (me_sync),
an identifier (me_id - a MIDent struct), a value (me_val -
a PE) and either a modify operator (me_modify) or an
error code (me_error).
The error information that should be contained in that structure
is specified below for each error code.
m_noSuchObjectClass object class (me_class)
m_noSuchObjectInstance
m_invalidObjectInstance
m_duplicateManagedObjectInstance
m_noSuchReferenceObject object instance (me_inst)
m_accessDenied none
m_syncNotSupported synchronisation (me_sync)
m_invalidFilter filter (me_filter)
m_noSuchAttribute
m_missingAttributeValue attribute id (me_id)
m_invalidAttributeValue attribute id (me_id)
attribute val (me_val)
m_noSuchAction object class (me_class)
action type id (me_id)
m_processingFailure object class (me_class)
object instance (me_inst) optional
specific error info (me_val)
m_noSuchEventType object class (me_class)
event type id (me_id)
m_noSuchArgument object class (me_class) optional
action/event type id (me_id)
m_invalidArgumentValue action/event type id (me_id)
action/event info (me_val) optional
m_invalidScope scope (me_scope)
m_classInstanceConflict object class (me_class)
object instance (me_inst)
m_complexityLimitation scope (me_scope) optional
filter (me_filter) optional
synchronisation (me_sync) optional
In the case of a delete linked reply error other than
m_processingFailure (can only be m_accessDenied), the error
information should be the object class (me_class), object
instance (me_inst) and current time (me_time), all optional.
In the case of an action linked reply error other than
m_processingFailure (one of m_accessDenied, m_noSuchAction,
m_noSuchArgument, m_invalidArgumentValue), the error
information should be the one defined above for the
appropriate error code plus the object class (me_class),
object instance (me_inst) and current time (me_time),
the last three optional.
DIAGNOSTICS
NOTOK is returned on failure, mi->mi_preject contains
the reason (mr_data is a readable string). The most likely
error is "Bad Arguments" caused by a failure in the
pepy generated encoder.
SEE ALSO
Isode User's Manual Section 3 Vol. 1 (Remote Operations),
Isode User's Manual Section 17 Vol. 5 (Programming the Directory),
IS 9596 (CMIP/S), X.410 (ROS),
external_build ().
NAME
M_WaitReq - Wait for data on a connection
SYNOPSIS
#include <isode/rosap.h>
#include <isode/msap.h>
int M_WaitReq (msd, secs, mi)
int msd, secs;
struct MSAPindication * mi;
DESCRIPTION
Allows the service user to wait for up to secs seconds
for an event to occur on the association referred to by msd.
If secs is NOTOK the call blocks indefinitely, whereas
if secs is OK the call returns immediately (e.g. a poll).
The MSAPindication structure is ALWAYS updated:
if an operation request or reply is received, the mi->mi_type
field indicates its type and the remainder of the structure
contains the invoke id and the decoded arguments, as passed
to the operation request or reply routine.
If the mi_type field contains MI_TERM then a terminate
request has been received. The peer supplied reason is
contained in the MSAPindication structure.
DIAGNOSTICS
OK is returned on success, otherwise NOTOK is returned
and the reason for the failure is contained in mi->mi_preject.
SEE ALSO
Isode User's Manual Section 3.3.4.
NAME
xfree - Free management structures
SYNOPSIS
#include <isode/rosap.h>
#include <isode/msap.h>
mcfree (mc)
struct MSAPconnect * mc;
msfree (ms)
struct MSAPstart * ms;
mafree (ma)
struct MSAPabort * ma;
mifree (ms)
struct MSAPindication * mi;
DESCRIPTION
These routines free any data that may have been
allocated to the pointed structure by the management
routines. They do not free the structures themselves.
DIAGNOSTICS
None.
SEE ALSO
Isode User's Manual Section 3.
NAME
mfilter_free - Free CMIS filter
SYNOPSIS
#include <isode/rosap.h>
#include <isode/msap.h>
mfilter_free (filter)
CMISfilter * filter;
DESCRIPTION
It frees the structures that constitute a CMIS filter
and the data contained there in.
DIAGNOSTICS
None.
SEE ALSO
IS 9596 (CMIP/S).
NAME
external_build - Build an External (type_UNIV_EXTERNAL) structure
SYNOPSIS
#include <isode/rosap.h>
#include <isode/msap.h>
External * external_create (type, ctx, pe, oct_aligned)
int type;
char * ctx;
PE pe;
struct qbuf * oct_aligned;
DESCRIPTION
It builds an External structure containing its arguments
and returns a pointer to it. An External structure is the same
as the struct type_UNIV_EXTERNAL in <isode/pepy/UNIV-types.h>
and reprsents the ASN.1 type EXTERNAL.
type should be one of EXTERN_ASN1_TYPE, EXTERN_ARBITRARY and
EXTERN_OCTET_ALIGNED. In the case of the first two, the actual
external parameter is a pe while in the case of EXTERN_OCTET_ALIGNED
the parameter is a struct qbuf * (oct_aligned).
ctx is the ASN.1 module of the parameter in string form
e.g. "x.y.v.z".
The storage allocated for the structure may be free'd using
external_free ().
DIAGNOSTICS
An External * is returned upon success, (External *) NULL otherwise.
SEE ALSO
IS 9596 (CMIP/S).