/* rosaplose.c - ROPM: you lose */
static char *rcsid
= "$Header: /f/osi/rosap/RCS/rosaplose.c,v 7.1 91/02/22 09:41:32 mrose Interim $";
* $Header: /f/osi/rosap/RCS/rosaplose.c,v 7.1 91/02/22 09:41:32 mrose Interim $
* Based on an TCP-based implementation by George Michaelson of University
* Revision 7.1 91/02/22 09:41:32 mrose
* Revision 6.0 89/03/18 23:42:27 mrose
* 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
register struct assocblk
*acb
;
register struct RoSAPindication
*roi
;
register struct RoSAPpreject
*rop
;
acb
= va_arg (ap
, struct assocblk
*);
roi
= va_arg (ap
, struct RoSAPindication
*);
reason
= va_arg (ap
, int);
result
= _rosaplose (roi
, reason
, ap
);
if ((rop
= &roi
-> roi_preject
) -> rop_cc
> 0) {
SLOG (rosap_log
, LLOG_EXCEPTIONS
, NULLCP
,
("ropktlose [%s] %*.*s", RoErrString (rop
-> rop_reason
),
rop
-> rop_cc
, rop
-> rop_cc
, rop
-> rop_data
));
SLOG (rosap_log
, LLOG_EXCEPTIONS
, NULLCP
,
("ropktlose [%s]", RoErrString (rop
-> rop_reason
)));
|| acb
-> acb_fd
== NOTOK
|| acb
-> acb_ropktlose
== NULLIFP
)
(*acb
-> acb_ropktlose
) (acb
, value
);
int ropktlose (acb
, roi
, reason
, what
, fmt
)
struct RoSAPindication
*roi
;
return ropktlose (acb
, roi
, reason
, what
, fmt
);
int rosapreject (va_alist
)
register struct assocblk
*acb
;
struct RoSAPindication rois
;
register struct RoSAPindication
*roi
;
acb
= va_arg (ap
, struct assocblk
*);
roi
= va_arg (ap
, struct RoSAPindication
*);
reason
= va_arg (ap
, int);
result
= _rosaplose (roi
, reason
, ap
);
if (RoURejectRequestAux (acb
, NULLIP
, reason
- REJECT_GENERAL_BASE
,
REJECT_GENERAL
, 0, &rois
) == NOTOK
&& ROS_FATAL (rois
.roi_preject
.rop_reason
)) {
*roi
= rois
; /* struct copy */
int rosapreject (acb
, roi
, reason
, what
, fmt
)
struct RoSAPindication
*roi
;
return rosapreject (acb
, roi
, reason
, what
, fmt
);
struct RoSAPindication
*roi
;
roi
= va_arg (ap
, struct RoSAPindication
*);
reason
= va_arg (ap
, int);
result
= _rosaplose (roi
, reason
, ap
);
int rosaplose (roi
, reason
, what
, fmt
)
struct RoSAPindication
*roi
;
return rosaplose (roi
, reason
, what
, fmt
);
static int _rosaplose (roi
, reason
, ap
) /* what, fmt, args ... */
register struct RoSAPindication
*roi
;
register struct RoSAPpreject
*rop
;
bzero ((char *) roi
, sizeof *roi
);
roi
-> roi_type
= ROI_PREJECT
;
rop
= &roi
-> roi_preject
;
asprintf (bp
= buffer
, ap
);
rop
-> rop_reason
= reason
;
copyRoSAPdata (buffer
, bp
- buffer
, rop
);