|
|
1.1 root 1: /* dapunbind.c - DAP unbind operation */
2:
3: #ifndef lint
4: static char *rcsid = "$Header: /f/osi/dsap/net/RCS/dapunbind.c,v 7.0 90/07/26 14:45:30 mrose Exp $";
5: #endif
6:
7: /*
8: * $Header: /f/osi/dsap/net/RCS/dapunbind.c,v 7.0 90/07/26 14:45:30 mrose Exp $
9: *
10: *
11: * $Log: dapunbind.c,v $
12: * Revision 7.0 90/07/26 14:45:30 mrose
13: * *** empty log message ***
14: *
15: */
16:
17: /*
18: * NOTICE
19: *
20: * Acquisition, use, and distribution of this module and related
21: * materials are subject to the restrictions of a license agreement.
22: * Consult the Preface in the User's Manual for the full terms of
23: * this agreement.
24: *
25: */
26:
27:
28: /* LINTLIBRARY */
29:
30: #include "logger.h"
31: #include "quipu/util.h"
32: #include "quipu/dap.h"
33: #include "quipu/dap2.h"
34:
35: extern LLog * log_dsap;
36:
37: /*
38: * Seems that this should be a #define
39: */
40:
41: ds_unbind ()
42: {
43: return(dap_unbind(dsap_ad));
44: }
45:
46: dap_unbind (ad)
47: int ad;
48: {
49: int ret;
50: struct DAPrelease dr_s;
51: struct DAPrelease *dr = &dr_s;
52: struct DAPindication di_s;
53: struct DAPindication *di = &di_s;
54:
55: DLOG(log_dsap, LLOG_NOTICE, ("dap_unbind: <%d, normal, nullpe>",
56: ad));
57:
58: ret = DapUnBindRequest (ad, NOTOK, dr, di);
59:
60: if (ret != OK)
61: {
62: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapUnBindRequest() failed"));
63: return (DS_ERROR_LOCAL);
64: }
65:
66: if (!dr->dr_affirmative) {
67: LLOG(log_dsap, LLOG_EXCEPTIONS, ("DapUnBindRequest failed"));
68: return(DS_ERROR_PROVIDER);
69: }
70:
71: return(DS_OK);
72: }
73:
74: /* ARGSUSED */
75:
76: int DapUnBindRequest (sd, secs, dr, di)
77: int sd;
78: int secs;
79: struct DAPrelease * dr;
80: struct DAPindication * di;
81: {
82: int result;
83: struct AcSAPrelease acr_s;
84: struct AcSAPrelease * acr = &(acr_s);
85: struct RoNOTindication rni_s;
86: struct RoNOTindication * rni = &(rni_s);
87:
88:
89: result = RoUnBindRequest (sd, NULLPE, secs, acr, rni);
90:
91: if (result == OK)
92: {
93: dr->dr_affirmative = acr->acr_affirmative;
94: dr->dr_reason = acr->acr_reason;
95: ACRFREE(acr);
96: return (OK);
97: }
98:
99: if (result == NOTOK)
100: {
101: return (ronot2daplose (di, "D-UNBIND.REQUEST", rni));
102: }
103:
104: return (result);
105: }
106:
107: /* D-UNBIND.RETRY */
108:
109: /* ARGSUSED */
110:
111: int DapUnBindRetry (sd, secs, dr, di)
112: int sd;
113: int secs;
114: struct DAPrelease * dr;
115: struct DAPindication * di;
116: {
117: int result;
118: struct AcSAPrelease acr_s;
119: struct AcSAPrelease * acr = &(acr_s);
120: struct RoNOTindication rni_s;
121: struct RoNOTindication * rni = &(rni_s);
122:
123: result = RoUnBindRetry (sd, secs, acr, rni);
124:
125: if (result == OK)
126: {
127: dr->dr_affirmative = acr->acr_affirmative;
128: dr->dr_reason = acr->acr_reason;
129: ACRFREE (acr);
130: return (OK);
131: }
132:
133: if (result == NOTOK)
134: {
135: return (ronot2daplose (di, "D-UNBIND.RETRY", rni));
136: }
137:
138: return (result);
139: }
140:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.