|
|
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 r
Length: 4430 (0x114e)
Types: TextFile
Names: »rybind.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z«
└─⟦de7628f85⟧
└─⟦this⟧ »isode-6.0/dsap/net/rybind.c«
/* rybind.c - ROSY: bind */
#ifndef lint
static char *rcsid = "$Header: /f/osi/dsap/net/RCS/rybind.c,v 7.2 89/12/19 16:19:38 mrose Exp $";
#endif
/*
* $Header: /f/osi/dsap/net/RCS/rybind.c,v 7.2 89/12/19 16:19:38 mrose Exp $
*
*
* $Log: rybind.c,v $
* Revision 7.2 89/12/19 16:19:38 mrose
* sync
*
* Revision 7.1 89/11/24 16:21:50 mrose
* sync
*
* Revision 7.0 89/11/23 21:48:27 mrose
* Release 6.0
*
*/
/*
* NOTICE
*
* Acquisition, use, and distribution of this module and related
* materials are subject to the restrictions of a license agreement.
* Consult the Preface in the User's Manual for the full terms of
* this agreement.
*
*/
/* LINTLIBRARY */
#include <stdio.h>
#include "rosy.h"
#include <varargs.h>
/* \f
BIND */
/* ARGSUSED */
int RyBind (ctx, calledaddr, ctxlist, defctxname, data, sversion, acc, aci)
OID ctx;
struct PSAPaddr *calledaddr;
struct PSAPctxlist *ctxlist;
OID defctxname;
PE data;
int sversion;
struct AcSAPconnect *acc;
struct AcSAPindication *aci;
{
int result;
struct QOStype qos;
struct SSAPref sfs;
register struct SSAPref *sf;
PE user_data;
PE *user_datap = &(user_data);
int ndata;
if ((sf = addr2ref (PLocalHostName ())) == NULL) {
sf = &sfs;
(void) bzero ((char *) sf, sizeof *sf);
}
bzero ((char *) &qos, sizeof qos);
qos.qos_sversion = sversion;
/* Wrap the user data with the remote operations BIND tag */
if (data != NULLPE) {
if (build_Remote__Operations__Notation_BindArgumentValue (user_datap,
1, 0, NULLCP, data) == NOTOK) {
/* build_Remote__Operations__Notation_BindArgumentValue failed */
return NOTOK;
}
(*user_datap) -> pe_context = data->pe_context;
ndata = 1;
} else {
ndata = 0;
}
/*
The result of this procedure should be based upon parsing the result in
the case of an A-ASSOCIATE.CONFIRM and the presence of this data
*/
if ((result = AcAssocRequest (ctx, NULLAEI, NULLAEI, NULLPA, calledaddr,
ctxlist, defctxname, PR_MYREQUIRE, ROS_MYREQUIRE, SERIAL_NONE, 0,
sf, user_datap, ndata, &qos, acc, aci)) == OK) {
ParseRyBindResponse(acc);
}
return result;
}
int RyAsynBind (ctx, calledaddr, ctxlist, defctxname, data, sversion, acc, aci, stime, quipuctx)
OID ctx;
struct PSAPaddr *calledaddr;
struct PSAPctxlist *ctxlist;
OID defctxname;
PE data;
int sversion;
struct AcSAPconnect *acc;
struct AcSAPindication *aci;
int stime;
char quipuctx;
{
int result;
struct QOStype qos;
struct SSAPref sfs;
register struct SSAPref *sf;
PE user_data;
PE *user_datap = &(user_data);
int ndata;
if ((sf = addr2ref (PLocalHostName ())) == NULL) {
sf = &sfs;
(void) bzero ((char *) sf, sizeof *sf);
}
bzero ((char *) &qos, sizeof qos);
qos.qos_sversion = sversion;
qos.qos_maxtime = stime;
/* Wrap the user data with the remote operations BIND tag */
if (data != NULLPE) {
if (build_Remote__Operations__Notation_BindArgumentValue (user_datap,
1, 0, NULLCP, data) == NOTOK) {
/* build_Remote__Operations__Notation_BindArgumentValue failed */
return NOTOK;
}
(*user_datap) -> pe_context = data->pe_context;
ndata = 1;
} else {
ndata = 0;
}
/*
The result of this procedure should be based upon parsing the result in
the case of an A-ASSOCIATE.CONFIRM and the presence of this data
*/
result = AcAsynAssocRequest (ctx, NULLAEI, NULLAEI, NULLPA, calledaddr,
ctxlist, defctxname, PR_MYREQUIRE,
quipuctx ? ROS_MYREQUIRE | SR_NEGOTIATED : ROS_MYREQUIRE,
SERIAL_NONE, 0, sf, user_datap, ndata, &qos, acc, aci, ROS_ASYNC);
if (ndata)
pe_free (*user_datap);
return result;
}
ParseRyBindResponse (acc)
struct AcSAPconnect *acc;
{
PE pe;
if (acc->acc_info[0] != NULLPE) {
pe = pe_cpy (acc->acc_info[0]);
pe_free (acc->acc_info[0]);
if (acc -> acc_result == ACS_ACCEPT) {
if (parse_Remote__Operations__Notation_BindResultValue (pe,
1, NULLIP, NULLVP, &acc->acc_info[0]) != OK) {
/* parse_Remote__Operations__Notation_BindResultValue failed */
acc->acc_info[0] = pe_cpy(pe);
}
} else {
if (parse_Remote__Operations__Notation_BindErrorValue (pe,
1, NULLIP, NULLVP, &acc->acc_info[0]) != OK) {
/* parse_Remote__Operations__Notation_BindErrorValue failed */
acc->acc_info[0] = pe_cpy(pe);
}
}
pe_free (pe);
}
}