|
|
1.1 root 1: /* dapinvoke.c - DAP : Invoke DAP operations */
2:
3: #ifndef lint
4: static char *rcsid = "$Header: /f/osi/dsap/net/RCS/dapinvoke.c,v 7.0 90/07/26 14:45:21 mrose Exp $";
5: #endif
6:
7: /*
8: * $Header: /f/osi/dsap/net/RCS/dapinvoke.c,v 7.0 90/07/26 14:45:21 mrose Exp $
9: *
10: *
11: * $Log: dapinvoke.c,v $
12: * Revision 7.0 90/07/26 14:45:21 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 <stdio.h>
31: #include "logger.h"
32: #include "quipu/util.h"
33: #include "quipu/dap2.h"
34:
35: extern LLog * log_dsap;
36: extern void ros_log();
37:
38: #ifdef PDU_DUMP
39: #define DUMP_ARG "arg"
40: #define DUMP_RES "res"
41: #define DUMP_ERR "err"
42: #endif
43:
44: int DapInvokeReqAux (sd, id, op, pe, di, asyn)
45: int sd;
46: int id;
47: int op;
48: PE pe;
49: struct DAPindication * di;
50: int asyn;
51: {
52:
53: #ifdef PDU_DUMP
54: pdu_dump (pe,DUMP_ARG,op);
55: #endif
56:
57: #ifdef HEAVY_DEBUG
58: pdu_arg_log (pe, op);
59: #endif
60:
61: switch (asyn)
62: {
63: case ROS_SYNC:
64: return (DapSyncInvokeRequest (sd, id, op, pe, di));
65:
66: case ROS_INTR:
67: return (DapIntrInvokeRequest (sd, id, op, pe, di));
68:
69: case ROS_ASYNC:
70: return (DapAsynInvokeRequest (sd, id, op, pe, di));
71:
72: default:
73: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapInvokeReqAux(): asyn has unknown value: %d", asyn));
74: return (daplose (di, DP_INVOKE, NULLCP, "Unknown synchronicity"));
75: }
76: }
77:
78: int DapSyncInvokeRequest (sd, id, op, pe, di)
79: int sd;
80: int id;
81: int op;
82: PE pe;
83: struct DAPindication * di;
84: {
85: int result;
86: struct RoSAPindication roi_s;
87: struct RoSAPindication * roi = &(roi_s);
88: struct RoSAPpreject * rop = &(roi->roi_preject);
89:
90: DLOG (log_dsap,LLOG_TRACE,( "DapSyncInvokeRequest()"));
91:
92: result = RoInvokeRequest (sd, op, ROS_SYNC, pe,
93: id, NULLIP, ROS_NOPRIO, roi);
94:
95: if (result != OK)
96: {
97: if (roi->roi_type != ROI_PREJECT)
98: {
99: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapSyncInvokeRequest(): Failed without rejection"));
100: return (daplose (di, DP_INVOKE, NULLCP, "RoInvokeRequest inconsistent result"));
101: }
102:
103: if (ROS_FATAL (rop->rop_reason) || (rop->rop_reason == ROS_PARAMETER))
104: {
105: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapSyncInvokeRequest(): Fatal rejection"));
106: return (daplose (di, DP_INVOKE, NULLCP, "RoInvokeRequest failed"));
107: }
108: else
109: {
110: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapSyncInvokeRequest(): Non-Fatal rejection"));
111: return (dapreject (di, DP_INVOKE, id, NULLCP, "RoInvokeRequest failed"));
112: }
113: }
114:
115: switch(roi->roi_type)
116: {
117: case ROI_INVOKE:
118: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapSyncInvokeRequest: Invocation received"));
119: DRejectRequest (sd, ROS_IP_UNRECOG, roi->roi_invoke.rox_id);
120: return (daplose (di, DP_ROS, NULLCP, "DAP initiator cannot accept invokes"));
121:
122: case ROI_RESULT:
123: return (DapDecodeResult (sd, &(roi->roi_result), di));
124:
125: case ROI_ERROR:
126: return (DapDecodeError (sd, &(roi->roi_error), di));
127:
128: case ROI_UREJECT:
129: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapSyncInvokeRequest: Operation (%d) user rejected (%d)", roi->roi_ureject.rou_id, roi->roi_ureject.rou_reason));
130: return (ros2dapreject (di, "ROI_UREJECT", &(roi->roi_ureject)));
131:
132: case ROI_PREJECT:
133: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapSyncInvokeRequest: Operation (%d) provider rejected", roi->roi_preject.rop_id));
134: return (ros2daplose (di, "ROI_PREJECT", &(roi->roi_preject)));
135:
136: case ROI_FINISH:
137: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapSyncInvokeRequest: Unbind request received"));
138: return (daplose (di, DP_ROS, NULLCP, "DAP initiator cannot accept unbind requests"));
139:
140: default:
141: LLOG (log_dsap,LLOG_EXCEPTIONS,( "Unknown indication type : %d", roi->roi_type));
142: break;
143: }
144:
145: return (OK);
146: }
147:
148: int DapIntrInvokeRequest (sd, id, op, pe, di)
149: int sd;
150: int id;
151: int op;
152: PE pe;
153: struct DAPindication * di;
154: {
155: int result;
156: struct RoSAPindication roi_s;
157: struct RoSAPindication * roi = &(roi_s);
158: struct RoSAPpreject * rop = &(roi->roi_preject);
159:
160: DLOG (log_dsap,LLOG_TRACE,( "DapIntrInvokeRequest()"));
161:
162: result = RoIntrRequest (sd, op, pe, id, NULLIP, ROS_NOPRIO, roi);
163:
164: if (result != OK)
165: {
166: if (roi->roi_type != ROI_PREJECT)
167: {
168: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapIntrInvokeRequest(): Failed without rejection"));
169: return (daplose (di, DP_INVOKE, NULLCP, "RoInvokeRequest inconsistent result"));
170: }
171:
172: if (rop->rop_reason == ROS_INTERRUPTED)
173: {
174: return (DapInterrupt(sd, id, op, di));
175: }
176:
177: if (ROS_FATAL (rop->rop_reason) || (rop->rop_reason == ROS_PARAMETER))
178: {
179: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapIntrInvokeRequest(): Fatal rejection"));
180: return (daplose (di, DP_INVOKE, NULLCP, "RoInvokeRequest failed"));
181: }
182: else
183: {
184: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapIntrInvokeRequest(): Non-Fatal rejection"));
185: return (dapreject (di, DP_INVOKE, id, NULLCP, "RoInvokeRequest failed"));
186: }
187: }
188:
189: switch(roi->roi_type)
190: {
191: case ROI_INVOKE:
192: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapIntrInvokeRequest: Invocation received"));
193: DRejectRequest (sd, ROS_IP_UNRECOG, roi->roi_invoke.rox_id);
194: return (daplose (di, DP_ROS, NULLCP, "DAP initiator cannot accept invokes"));
195:
196: case ROI_RESULT:
197: return (DapDecodeResult (sd, &(roi->roi_result), di));
198:
199: case ROI_ERROR:
200: return (DapDecodeError (sd, &(roi->roi_error), di));
201:
202: case ROI_UREJECT:
203: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapIntrInvokeRequest: Operation (%d) user rejected (%d)", roi->roi_ureject.rou_id, roi->roi_ureject.rou_reason));
204: return (ros2dapreject (di, "ROI_UREJECT", &(roi->roi_ureject)));
205:
206: case ROI_PREJECT:
207: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapIntrInvokeRequest: Operation (%d) provider rejected", roi->roi_preject.rop_id));
208: return (ros2daplose (di, "ROI_PREJECT", &(roi->roi_preject)));
209:
210: case ROI_FINISH:
211: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapIntrInvokeRequest: Unbind request received"));
212: return (daplose (di, DP_ROS, NULLCP, "DAP initiator cannot accept unbind requests"));
213:
214: default:
215: LLOG (log_dsap,LLOG_EXCEPTIONS,( "Unknown indication type : %d", roi->roi_type));
216: break;
217: }
218:
219: return (OK);
220: }
221:
222: int DapAsynInvokeRequest (sd, id, op, pe, di)
223: int sd;
224: int id;
225: int op;
226: PE pe;
227: struct DAPindication * di;
228: {
229: int result;
230: struct RoSAPindication roi_s;
231: struct RoSAPindication * roi = &(roi_s);
232: struct RoSAPpreject * rop = &(roi->roi_preject);
233:
234: result = RoInvokeRequest (sd, op, ROS_ASYNC, pe,
235: id, NULLIP, ROS_NOPRIO, roi);
236:
237: if (result != OK)
238: {
239: if (roi->roi_type != ROI_PREJECT)
240: {
241: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapAsynInvokeRequest(): Failed without rejection"));
242: return (daplose (di, DP_INVOKE, NULLCP, "RoInvokeRequest inconsistent result"));
243: }
244:
245: if (ROS_FATAL (rop->rop_reason) || (rop->rop_reason == ROS_PARAMETER))
246: {
247: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapAsynInvokeRequest(): Fatal rejection"));
248: return (daplose (di, DP_INVOKE, NULLCP, "RoInvokeRequest failed"));
249: }
250: else
251: {
252: LLOG (log_dsap, LLOG_EXCEPTIONS, ("DapAsynInvokeRequest(): Non-Fatal rejection"));
253: return (dapreject (di, DP_INVOKE, id, NULLCP, "RoInvokeRequest failed"));
254: }
255: }
256:
257: return (OK);
258: }
259:
260: int DapInterrupt(sd, id, op, di)
261: int sd;
262: int id;
263: int op;
264: struct DAPindication * di;
265: {
266: /*
267: * Abandoning. Trickier than it looks!
268: * Need to RoInvoke an abandon op, which will receive
269: * One of the following:
270: * Result/Error for op being abandoned sent before
271: * this abandon arrived at the DSA;
272: * Abandoned error for op being abandoned;
273: * Result for abandon op which has overtaken the
274: * abandoned error for previous op between DSA and DUA
275: * Error for abandon because DSA has screwed up.
276: *
277: * Unless something goes wrong there should be 2 Ro events to
278: * collect before returning.
279: */
280:
281: /* abandon operation */
282: struct ds_abandon_arg ab_arg;
283: struct DSError ab_err;
284: PE ab_req_pe;
285: int old_id;
286: int new_id;
287: int ret1;
288: int ret2;
289: struct RoSAPindication roi1_s;
290: struct RoSAPindication * roi1 = &(roi1_s);
291: struct RoSAPpreject * rop1 = &(roi1->roi_preject);
292: struct RoSAPindication roi2_s;
293: struct RoSAPindication * roi2 = &(roi2_s);
294: struct RoSAPpreject * rop2 = &(roi2->roi_preject);
295: struct RoSAPindication * result_roi;
296:
297: ab_arg.aba_invokeid = old_id = id;
298: new_id = ++id;
299:
300: if(encode_DAS_AbandonArgument(&ab_req_pe,1,0,NULLCP,&ab_arg) != OK)
301: {
302: LLOG(log_dsap, LLOG_EXCEPTIONS, ("Failed to encode an abandon operation"));
303: /* Go on listening for result or dump out ?? */
304: return(dapreject (di, DP_INVOKE, old_id, NULLCP, "DapInterrupt: Abandon argument encoding failed"));
305: }
306: else
307: {
308: DLOG(log_dsap, LLOG_DEBUG, ("Abandon invoke request"));
309:
310: ret1 = RoInvokeRequest(sd,OP_ABANDON,ROS_SYNC,ab_req_pe,new_id,NULLIP,ROS_NOPRIO,roi1);
311:
312: DLOG(log_dsap, LLOG_DEBUG, ("Abandon RoInvoke returns: %d", ret1));
313:
314: if (ab_req_pe != NULLPE)
315: pe_free(ab_req_pe);
316:
317: switch(ret1)
318: {
319: case OK:
320: /* What have we got? */
321: switch(roi1->roi_type)
322: {
323: case ROI_RESULT:
324: if(roi1->roi_result.ror_id == old_id)
325: {
326: /* Ferret result away for later */
327: result_roi = roi1;
328: }
329: else if(roi1->roi_result.ror_id == (old_id + 1))
330: {
331: RORFREE (&(roi1->roi_result));
332: }
333: else
334: {
335: LLOG(log_dsap, LLOG_EXCEPTIONS, ("ARRGH! Abandon sent: event for neither op nor abandon op returned!!"));
336: return(dapreject (di, DP_INVOKE, roi1->roi_result.ror_id, NULLCP, "Unexpected operation identifier"));
337: }
338: break;
339:
340: case ROI_ERROR:
341: #ifdef PDU_DUMP
342: pdu_dump (roi1->roi_error.roe_param,DUMP_ERR,op);
343: #endif
344:
345: if(roi1->roi_error.roe_id == old_id)
346: {
347: /* Ferret error away for later */
348: result_roi = roi1;
349: }
350: else if(roi1->roi_error.roe_id == (old_id + 1))
351: {
352: if (roi1->roi_error.roe_error != DSE_ABANDON_FAILED)
353: {
354: LLOG(log_dsap, LLOG_EXCEPTIONS, ("Failed to abandon correctly"));
355: return(dapreject (di, DP_INVOKE, roi1->roi_error.roe_id, NULLCP, "Error mistyped for abandon"));
356: }
357: else
358: {
359: if(decode_DAS_AbandonFailedParm (roi1->roi_error.roe_param, 1, NULLIP, NULLVP, &(ab_err.dse_un.dse_un_abandon_fail)) != OK)
360: {
361: LLOG(log_dsap, LLOG_EXCEPTIONS, ("Failed to decode abandonFailed"));
362: return(dapreject (di, DP_INVOKE, old_id, NULLCP, "Abandon error decoding failed"));
363: }
364: else
365: {
366: LLOG(log_dsap, LLOG_NOTICE, ("Abandon failed error!!!"));
367: ab_err.dse_type = DSE_ABANDON_FAILED;
368: log_ds_error(&ab_err);
369: ds_error_free(&ab_err);
370: }
371: }
372: }
373: else
374: {
375: LLOG(log_dsap, LLOG_EXCEPTIONS, ("Abandon sent : event for neither op nor abandon op returned!!"));
376: return(dapreject (di, DP_INVOKE, roi1->roi_error.roe_id, NULLCP, "Unrecognised op id"));
377: }
378: break;
379:
380: default:
381: LLOG(log_dsap, LLOG_FATAL, ("Unexpected roi_type : %d", roi1->roi_type));
382: return(dapreject (di, DP_INVOKE, -1, NULLCP, "Unrecognised event"));
383: }
384: break;
385:
386: case NOTOK:
387: ros_log(rop1, "RO-INVOKE.REQUEST");
388: if (ROS_FATAL (rop2->rop_reason))
389: {
390: return (ros2daplose (di, "DapInterrupt", rop2));
391: }
392: else
393: {
394: return (dapreject (di, DP_ROS, -1, NULLCP, "DapInterrupt: Non-fatal reject"));
395: }
396:
397: case DONE:
398: LLOG(log_dsap, LLOG_EXCEPTIONS, ("Responder has sent Finish!"));
399: return(daplose (di, DP_ROS, NULLCP, "Received Finish"));
400:
401: default:
402: LLOG(log_dsap, LLOG_FATAL, ("Unknown return from RoInvokeRequest : %d", ret1));
403: return(daplose (di, DP_ROS, NULLCP, "RoInvokeRequest error"));
404: }
405:
406: ret2 = RoWaitRequest(sd, NOTOK, roi2);
407:
408: DLOG(log_dsap, LLOG_DEBUG, ("Abandon RoInvoke returns: %d", ret1));
409:
410: switch(ret2)
411: {
412: case OK:
413: /* What have we got? */
414: switch(roi2->roi_type)
415: {
416: case ROI_RESULT:
417: if(roi2->roi_result.ror_id == old_id)
418: {
419: /* Ferret result away for later */
420: result_roi = roi2;
421: }
422: else if(roi2->roi_result.ror_id == (old_id + 1))
423: {
424: RORFREE (&(roi2->roi_result));
425: }
426: else
427: {
428: LLOG(log_dsap, LLOG_EXCEPTIONS, ("ARRGH! Abandon sent and event for neither op nor abandon op returned!!"));
429: return(dapreject (di, DP_INVOKE, roi1->roi_result.ror_id, NULLCP, "Unexpected operation identifier"));
430: }
431: break;
432:
433: case ROI_ERROR:
434: #ifdef PDU_DUMP
435: pdu_dump (roi1->roi_error.roe_param,DUMP_ERR,op);
436: #endif
437:
438: if(roi2->roi_error.roe_id == old_id)
439: {
440: /* Ferret error away for later */
441: result_roi = roi2;
442: }
443: else if(roi2->roi_error.roe_id == (old_id + 1))
444: {
445: if (roi2->roi_error.roe_error != DSE_ABANDON_FAILED)
446: {
447: LLOG(log_dsap, LLOG_EXCEPTIONS, ("Failed to abandon correctly"));
448: return(dapreject (di, DP_INVOKE, roi2->roi_error.roe_id, NULLCP, "Error mistyped for abandon"));
449: }
450: else
451: {
452: if(decode_DAS_AbandonFailedParm (roi2->roi_error.roe_param, 1, NULLIP, NULLVP, &(ab_err.dse_un.dse_un_abandon_fail)) != OK)
453: {
454: LLOG(log_dsap, LLOG_EXCEPTIONS, ("Failed to decode abandonFailed"));
455: return(dapreject (di, DP_INVOKE, old_id, NULLCP, "Abandon error decoding failed"));
456: }
457: else
458: {
459: LLOG(log_dsap, LLOG_NOTICE, ("Abandon failed error!!!"));
460: ab_err.dse_type = DSE_ABANDON_FAILED;
461: log_ds_error(&ab_err);
462: ds_error_free(&ab_err);
463: }
464: }
465: }
466: else
467: {
468: LLOG(log_dsap, LLOG_EXCEPTIONS, ("Abandon sent : event for neither op nor abandon op returned!!"));
469: return(dapreject (di, DP_INVOKE, roi1->roi_error.roe_id, NULLCP, "Unrecognised op id"));
470: }
471: break;
472:
473: default:
474: LLOG(log_dsap, LLOG_FATAL, ("Unexpected roi_type : %d", roi2->roi_type));
475: return(dapreject (di, DP_INVOKE, -1, NULLCP, "Unrecognised event"));
476: }
477: break;
478:
479: case NOTOK:
480: ros_log(rop2, "RO-WAIT.REQUEST (Abandon)");
481: if (ROS_FATAL (rop1->rop_reason))
482: {
483: return (ros2daplose (di, "DapInterrupt", rop2));
484: }
485: else
486: {
487: return (dapreject (di, DP_ROS, -1, NULLCP, "DapInterrupt: Non-fatal reject"));
488: }
489:
490: case DONE:
491: LLOG(log_dsap, LLOG_EXCEPTIONS, ("Responder has sent Finish!"));
492: return(daplose (di, DP_ROS, NULLCP, "Received Finish"));
493:
494: default:
495: LLOG(log_dsap, LLOG_FATAL, ("Unknown return from RoInvokeRequest : %d", ret2));
496: return(daplose (di, DP_ROS, NULLCP, "RoInvokeRequest error"));
497: }
498: }
499:
500: switch(result_roi->roi_type)
501: {
502: case ROI_RESULT:
503: return (DapDecodeResult (sd, &(result_roi->roi_result), di));
504:
505: case ROI_ERROR:
506: return (DapDecodeError (sd, &(result_roi->roi_error), di));
507:
508: default:
509: return (dapreject (di, DP_ROS, old_id, NULLCP, "DapInterrupt erroneous"));
510: }
511: }
512:
513: #ifdef PDU_DUMP
514:
515: static int pdu_count = -1;
516: static char * pdu_dir = NULLCP;
517:
518: pdu_dump_init (dir)
519: char * dir;
520: {
521: pdu_count = 0;
522: pdu_dir = strdup (dir);
523: LLOG (log_dsap, LLOG_NOTICE, ("PDU Tracing enabled - %s",dir));
524:
525: (void) mkdir (pdu_dir,0755);
526: }
527:
528: pdu_dump (pe,type,op)
529: PE pe;
530: char * type;
531: int op;
532: {
533: char filename [BUFSIZE];
534: char * oper;
535: PS ps;
536: FILE * fptr;
537:
538: if ( pdu_count == -1)
539: return;
540:
541: if (strcmp (type,DUMP_ARG) == 0)
542: pdu_count++;
543:
544: switch (op) {
545: case OP_READ:
546: oper = "read";
547: break;
548: case OP_COMPARE:
549: oper = "compare";
550: break;
551: case OP_ABANDON: /* Humm ... */
552: oper = "abandon";
553: break;
554: case OP_LIST:
555: oper = "list";
556: break;
557: case OP_SEARCH:
558: oper = "search";
559: break;
560: case OP_ADDENTRY:
561: oper = "add";
562: break;
563: case OP_REMOVEENTRY:
564: oper = "remove";
565: break;
566: case OP_MODIFYENTRY:
567: oper = "modify";
568: break;
569: case OP_MODIFYRDN:
570: oper = "modifyrdn";
571: break;
572: case OP_GETEDB:
573: oper = "getedb";
574: break;
575: case 100: /* special case for bind */
576: oper = "bind";
577: break;
578: }
579:
580: (void) sprintf (filename, "%s/%s_%s.%d",pdu_dir,oper,type,pdu_count);
581: DLOG (log_dsap,LLOG_DEBUG,("Writing PDU to file %s",filename));
582:
583: if ((fptr = fopen (filename,"w")) == (FILE *) NULL) {
584: LLOG(log_dsap,LLOG_EXCEPTIONS,("Cant open PDU file %s",filename));
585: return;
586: }
587:
588: ps = ps_alloc (std_open);
589: if (std_setup (ps,fptr) != OK) {
590: (void) fclose (fptr);
591: return;
592: }
593:
594: (void) pe2pl (ps,pe);
595:
596: (void) fclose (fptr);
597: ps_free (ps);
598:
599: }
600: #endif
601:
602: #ifdef HEAVY_DEBUG
603: pdu_arg_log (pe,op)
604: PE pe;
605: int op;
606: {
607: /* PDU Level Logging */
608: switch (op) {
609: case OP_READ:
610: PLOG (log_dsap, print_DAS_ReadArgument, pe, "Read", 0);
611: break;
612: case OP_COMPARE:
613: PLOG (log_dsap, print_DAS_CompareArgument, pe, "Compare", 0);
614: break;
615: case OP_ABANDON:
616: PLOG (log_dsap, print_DAS_AbandonArgument, pe, "Abandon", 0);
617: break;
618: case OP_LIST:
619: PLOG (log_dsap, print_DAS_ListArgument, pe, "List", 0);
620: break;
621: case OP_SEARCH:
622: PLOG (log_dsap, print_DAS_SearchArgument, pe, "Search", 0);
623: break;
624: case OP_ADDENTRY:
625: PLOG (log_dsap, print_DAS_AddEntryArgument, pe, "AddEntry", 0);
626: break;
627: case OP_REMOVEENTRY:
628: PLOG (log_dsap, print_DAS_RemoveEntryArgument, pe, "RemoveEntry", 0);
629: break;
630: case OP_MODIFYENTRY:
631: PLOG (log_dsap, print_DAS_ModifyEntryArgument, pe, "ModifyEntry", 0);
632: break;
633: case OP_MODIFYRDN:
634: PLOG (log_dsap, print_DAS_ModifyRDNArgument, pe, "ModifyRDN", 0);
635: break;
636: case OP_GETEDB:
637: PLOG (log_dsap, print_Quipu_GetEntryDataBlockArgument, pe, "GetEDB", 0);
638: break;
639: default:
640: LLOG (log_dsap, LLOG_PDUS, ("Unknown operation (%d) - no argument PDU logged",op));
641: }
642: }
643:
644: pdu_res_log (pe, op)
645: PE pe;
646: int op;
647: {
648: /* PDU Level Logging */
649: switch (op)
650: {
651: case OP_READ:
652: PLOG (log_dsap, print_DAS_ReadResult, pe, "Read", 1);
653: break;
654:
655: case OP_COMPARE:
656: PLOG (log_dsap, print_DAS_CompareResult, pe, "Compare", 1);
657: break;
658: case OP_ABANDON:
659: PLOG (log_dsap, print_DAS_AbandonResult, pe, "Abandon", 1);
660: break;
661: case OP_LIST:
662: PLOG (log_dsap, print_DAS_ListResult, pe, "List", 1);
663: break;
664: case OP_SEARCH:
665: PLOG (log_dsap, print_DAS_SearchResult, pe, "Search", 1);
666: break;
667: case OP_ADDENTRY:
668: PLOG (log_dsap, print_DAS_AddEntryResult, pe, "AddEntry", 1);
669: break;
670: case OP_REMOVEENTRY:
671: PLOG (log_dsap, print_DAS_RemoveEntryResult, pe, "RemoveEntry",1);
672: break;
673: case OP_MODIFYENTRY:
674: PLOG (log_dsap, print_DAS_ModifyEntryResult, pe, "ModifyEntry",1);
675: break;
676: case OP_MODIFYRDN:
677: PLOG (log_dsap, print_DAS_ModifyRDNResult, pe, "ModifyRDN", 1);
678: break;
679: case OP_GETEDB:
680: PLOG (log_dsap, print_Quipu_GetEntryDataBlockResult, pe, "GetEDB", 1);
681: break;
682: default:
683: LLOG (log_dsap, LLOG_PDUS, ("Unknown operation (%d) - no result PDU logged",op));
684: }
685: }
686: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.