comparison src/aci2/aci/psa_l2rp.c @ 3:93999a60b835

src/aci2, src/condat2: import of g23m/condat source pieces from TCS211
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 26 Sep 2016 00:29:36 +0000
parents
children
comparison
equal deleted inserted replaced
2:c41a534f33c6 3:93999a60b835
1 /*
2 +-----------------------------------------------------------------------------
3 | Project : GSM-PS (6147)
4 | Modul : PSA_L2RP
5 +-----------------------------------------------------------------------------
6 | Copyright 2002 Texas Instruments Berlin, AG
7 | All rights reserved.
8 |
9 | This file is confidential and a trade secret of Texas
10 | Instruments Berlin, AG
11 | The receipt of or possession of this file does not convey
12 | any rights to reproduce or disclose its contents or to
13 | manufacture, use, or sell anything it may describe, in
14 | whole, or in part, without the specific written consent of
15 | Texas Instruments Berlin, AG.
16 +-----------------------------------------------------------------------------
17 | Purpose : This module defines the processing functions for the
18 | primitives send to the protocol stack adapter by layer
19 | 2 Relay.
20 +-----------------------------------------------------------------------------
21 */
22
23 #ifdef DTI
24
25 #ifndef PSA_L2RP_C
26 #define PSA_L2RP_C
27 #endif
28
29 #include "aci_all.h"
30
31 /*==== INCLUDES ===================================================*/
32
33 #include "dti.h" /* functionality of the dti library */
34 #include "aci_cmh.h"
35 #include "ati_cmd.h"
36 #include "aci_cmd.h"
37 #include "aci_fd.h"
38 #include "aci.h"
39
40 #include "dti.h"
41 #include "dti_conn_mng.h"
42 #include "dti_cntrl_mng.h"
43
44 #include "psa.h"
45 #include "cmh.h"
46 #include "cmh_ra.h"
47 #include "psa_cc.h"
48 #include "psa_l2r.h"
49 #include "cmh_l2r.h"
50
51 #if defined (FF_WAP) || defined (FF_GPF_TCPIP) || defined (FF_SAT_E)
52 #include "wap_aci.h"
53 #include "psa_ppp_w.h"
54 #include "cmh_ppp.h"
55 #endif /* defined (FF_WAP) || defined (FF_GPF_TCPIP) */
56
57 #include "psa_uart.h"
58 #include "psa_ra.h"
59 #include "psa_uart.h"
60 #include "psa_util.h"
61
62 #include "sap_dti.h"
63
64 #include "dcm_f.h"
65
66 /*==== CONSTANTS ==================================================*/
67
68
69 /*==== TYPES ======================================================*/
70
71 /*==== EXPORT =====================================================*/
72
73 /*==== VARIABLES ==================================================*/
74
75 /*==== FUNCTIONS ==================================================*/
76
77 /*
78 +-------------------------------------------------------------------+
79 | PROJECT : GSM-PS (6147) MODULE : PSA_L2R |
80 | ROUTINE : psa_l2r_activate_cnf |
81 +-------------------------------------------------------------------+
82
83 PURPOSE : processes the L2R_L2R_ACTIVATE_CNF primitive send by L2R.
84
85 */
86
87 GLOBAL const void psa_l2r_activate_cnf
88 (T_L2R_ACTIVATE_CNF *l2r_activate_cnf)
89 {
90 TRACE_FUNCTION ("psa_l2r_activate_cnf()");
91
92 if (!psaCC_ctbIsValid(raShrdPrm.cId))
93 {
94 TRACE_ERROR ("raShrdPrm.cId invalid");
95 PFREE (l2r_activate_cnf);
96 return;
97 }
98
99 switch (l2rShrdPrm.state)
100 {
101 case L2R_ACTIVATE:
102 {
103 if (l2r_activate_cnf->ack_flg EQ L2R_NAK)
104 {
105 l2rShrdPrm.state = L2R_DEACTIVATED;
106
107 cmhL2R_Failure();
108 }
109 else
110 {
111 PALLOC (l2r_connect_req, L2R_CONNECT_REQ);
112
113 l2rShrdPrm.state = L2R_CONNECT;
114
115 PSENDX (L2R, l2r_connect_req);
116 }
117
118 break;
119 }
120
121 case L2R_DEACTIVATE:
122 {
123 break;
124 }
125
126 default:
127 {
128 l2rShrdPrm.state = L2R_DEACTIVATED;
129
130 cmhL2R_Failure();
131
132 break;
133 }
134 }
135
136 PFREE (l2r_activate_cnf);
137 }
138
139 /*
140 +-------------------------------------------------------------------+
141 | PROJECT : GSM-PS (6147) MODULE : PSA_L2R |
142 | ROUTINE : psa_l2r_connect_cnf |
143 +-------------------------------------------------------------------+
144
145 PURPOSE : processes the L2R_CONNECT_CNF primitive send by L2R.
146
147 */
148
149 GLOBAL const void psa_l2r_connect_cnf
150 (T_L2R_CONNECT_CNF *l2r_connect_cnf)
151 {
152 TRACE_FUNCTION ("psa_l2r_connect_cnf()");
153
154 if (!psaCC_ctbIsValid(raShrdPrm.cId))
155 {
156 TRACE_ERROR ("raShrdPrm.cId invalid");
157 PFREE (l2r_connect_cnf);
158 return;
159 }
160
161 switch (l2rShrdPrm.state)
162 {
163 case L2R_CONNECT:
164 {
165 if (l2r_connect_cnf->ack_flg EQ L2R_NAK)
166 {
167 PALLOC (l2r_deactivate_req, L2R_DEACTIVATE_REQ);
168
169 l2rShrdPrm.state = L2R_DEACTIVATE;
170
171 cmhL2R_Failure();
172
173 PSENDX (L2R, l2r_deactivate_req);
174 }
175 else
176 {
177 l2rShrdPrm.state = L2R_CONNECTED;
178
179 cmhCC_L2R_or_TRA_Activated( DTI_ENTITY_L2R, raShrdPrm.cId );
180 }
181
182 break;
183 }
184
185 case L2R_DEACTIVATE:
186 {
187 break;
188 }
189
190 default:
191 {
192 PALLOC (l2r_deactivate_req, L2R_DEACTIVATE_REQ);
193
194 l2rShrdPrm.state = L2R_DEACTIVATE;
195
196 cmhL2R_Failure();
197
198 PSENDX (L2R, l2r_deactivate_req);
199
200 break;
201 }
202 }
203
204 PFREE (l2r_connect_cnf);
205 }
206
207 /*
208 +-------------------------------------------------------------------+
209 | PROJECT : GSM-PS (6147) MODULE : PSA_L2R |
210 | ROUTINE : psa_l2r_connect_ind |
211 +-------------------------------------------------------------------+
212
213 PURPOSE : processes the L2R_CONNECT_IND primitive send by L2R.
214
215 */
216
217 GLOBAL const void psa_l2r_connect_ind
218 (T_L2R_CONNECT_IND *l2r_connect_ind)
219 {
220 TRACE_FUNCTION ("psa_l2r_connect_ind()");
221
222 if (!psaCC_ctbIsValid(raShrdPrm.cId))
223 {
224 TRACE_ERROR ("raShrdPrm.cId invalid");
225 PFREE (l2r_connect_ind);
226 return;
227 }
228
229 switch (l2rShrdPrm.state)
230 {
231 case L2R_CONNECT:
232 {
233 l2rShrdPrm.state = L2R_CONNECTED;
234
235 cmhCC_L2R_or_TRA_Activated( DTI_ENTITY_L2R, raShrdPrm.cId );
236
237 break;
238 }
239
240 case L2R_CONNECTED:
241 case L2R_ENABLE:
242 case L2R_ENABLED:
243 /* case L2R_DISABLE:*/
244 {
245 PALLOC (l2r_disc_req, L2R_DISC_REQ);
246
247 l2rShrdPrm.state = L2R_DISCONNECT;
248
249 cmhL2R_Failure();
250
251 PSENDX (L2R, l2r_disc_req);
252
253 break;
254 }
255
256 case L2R_ACTIVATE:
257 {
258 PALLOC (l2r_deactivate_req, L2R_DEACTIVATE_REQ);
259
260 l2rShrdPrm.state = L2R_DEACTIVATE;
261
262 cmhL2R_Failure();
263
264 PSENDX (L2R, l2r_deactivate_req);
265
266 break;
267 }
268
269 default:
270 {
271 cmhL2R_Failure();
272
273 break;
274 }
275 }
276
277 PFREE (l2r_connect_ind);
278 }
279
280 /*
281 +-------------------------------------------------------------------+
282 | PROJECT : GSM-PS (6147) MODULE : PSA_L2R |
283 | ROUTINE : psa_l2r_deactivate_cnf |
284 +-------------------------------------------------------------------+
285
286 PURPOSE : processes the L2R_DEACTIVATE_CNF primitive send by L2R.
287
288 */
289
290 GLOBAL const void psa_l2r_deactivate_cnf
291 (T_L2R_DEACTIVATE_CNF *l2r_deactivate_cnf)
292 {
293 TRACE_FUNCTION ("psa_l2r_deactivate_cnf()");
294
295 switch (l2rShrdPrm.state)
296 {
297 default:
298 {
299 cmhL2R_Failure();
300 }
301 case L2R_DEACTIVATE:
302 {
303 l2rShrdPrm.state = L2R_DEACTIVATED;
304
305 cmhL2R_Deactivated();
306
307 break;
308 }
309
310 }
311
312 PFREE (l2r_deactivate_cnf);
313 }
314
315 /*
316 +-------------------------------------------------------------------+
317 | PROJECT : GSM-PS (6147) MODULE : PSA_L2R |
318 | ROUTINE : psa_l2r_disc_cnf |
319 +-------------------------------------------------------------------+
320
321 PURPOSE : processes the L2R_DISC_CNF primitive send by L2R.
322
323 */
324
325 GLOBAL const void psa_l2r_disc_cnf (T_L2R_DISC_CNF *l2r_disc_cnf)
326 {
327 TRACE_FUNCTION ("psa_l2r_disc_cnf()");
328
329 switch (l2rShrdPrm.state)
330 {
331 default:
332 {
333 cmhL2R_Failure();
334 }
335 case L2R_DISCONNECT:
336 {
337 PALLOC (l2r_deactivate_req, L2R_DEACTIVATE_REQ);
338
339 l2rShrdPrm.state = L2R_DEACTIVATE;
340
341 PSENDX (L2R, l2r_deactivate_req);
342
343 break;
344 }
345
346 }
347
348 PFREE (l2r_disc_cnf);
349 }
350
351 /*
352 +-------------------------------------------------------------------+
353 | PROJECT : GSM-PS (6147) MODULE : PSA_L2R |
354 | ROUTINE : psa_l2r_disc_ind |
355 +-------------------------------------------------------------------+
356
357 PURPOSE : processes the L2R_DISC_IND primitive send by L2R.
358
359 */
360
361 GLOBAL const void psa_l2r_disc_ind (T_L2R_DISC_IND *l2r_disc_ind)
362 {
363 TRACE_FUNCTION ("psa_l2r_disc_ind()");
364
365 #if defined (FF_WAP) || defined (FF_SAT_E)
366 if (Wap_Call)
367 {
368
369 /*
370 * Start terminate the whole PPP Stack if PPP activ
371 */
372 if((pppShrdPrm.state EQ PPP_ESTABLISHED) OR (pppShrdPrm.state EQ PPP_ESTABLISH))
373 cmhPPP_Terminate( DWN );
374 }
375 else
376 #endif /* of WAP or SAT E */
377 {
378 switch (l2rShrdPrm.state)
379 {
380 default:
381 {
382 cmhL2R_Failure();
383 }
384 case L2R_ENABLED:
385 {
386 T_DTI_CONN_LINK_ID link_id = dti_cntrl_get_link_id( DTI_ENTITY_L2R, DTI_INSTANCE_NOTPRESENT, DTI_SUB_NO_NOTPRESENT );
387 dti_cntrl_set_dti_id_to_reconnect(EXTRACT_DTI_ID(link_id));
388 dti_cntrl_entity_disconnected( link_id, DTI_ENTITY_L2R );
389 }
390 /* NO BREAK ! */
391 case L2R_CONNECTED:
392 /* case L2R_DISABLE:*/
393 {
394 PALLOC (l2r_deactivate_req, L2R_DEACTIVATE_REQ);
395
396 l2rShrdPrm.state = L2R_DEACTIVATE;
397
398 PSENDX (L2R, l2r_deactivate_req);
399
400 break;
401 }
402 }
403 }
404
405 PFREE (l2r_disc_ind);
406 }
407
408 /*
409 +-------------------------------------------------------------------+
410 | PROJECT : GSM-PS (6147) MODULE : PSA_L2R |
411 | ROUTINE : psa_l2r_error_ind |
412 +-------------------------------------------------------------------+
413
414 PURPOSE : processes the L2R_ERROR_IND primitive send by L2R.
415
416 */
417
418 GLOBAL const void psa_l2r_error_ind (T_L2R_ERROR_IND *l2r_error_ind)
419 {
420 T_DTI_CONN_LINK_ID link_id;
421
422 TRACE_FUNCTION ("psa_l2r_error_ind()");
423
424 #if defined (FF_WAP) || defined (FF_SAT_E)
425
426 if (Wap_Call)
427 {
428
429 /*
430 * Start terminate the whole PPP Stack if PPP have established call
431 * or by establish call.
432 */
433
434 if((pppShrdPrm.state EQ PPP_ESTABLISHED) OR (pppShrdPrm.state EQ PPP_ESTABLISH))
435 cmhPPP_Terminate( DWN );
436
437 PFREE (l2r_error_ind);
438 return;
439 }
440
441 #endif /* of WAP or SAT E */
442
443
444 link_id = dti_cntrl_get_link_id( DTI_ENTITY_L2R, DTI_INSTANCE_NOTPRESENT, DTI_SUB_NO_NOTPRESENT );
445
446 if (dti_cntrl_is_dti_channel_connected (DTI_ENTITY_L2R, EXTRACT_DTI_ID(link_id)) EQ TRUE)
447 {
448 dti_cntrl_entity_disconnected( link_id, DTI_ENTITY_L2R );
449 }
450 {
451 PALLOC (l2r_deactivate_req, L2R_DEACTIVATE_REQ);
452
453 l2rShrdPrm.set_prm[l2rShrdPrm.owner].err_cause = l2r_error_ind->cause;
454
455 l2rShrdPrm.state = L2R_DEACTIVATE;
456
457 cmhL2R_Failure();
458
459 PSENDX (L2R, l2r_deactivate_req);
460 }
461
462 PFREE (l2r_error_ind);
463 }
464
465 /*
466 +-------------------------------------------------------------------+
467 | PROJECT : GSM-PS (6147) MODULE : PSA_L2R |
468 | ROUTINE : psa_l2r_reset_ind |
469 +-------------------------------------------------------------------+
470
471 PURPOSE : processes the L2R_RESET_IND primitive send by L2R.
472
473 */
474
475 GLOBAL const void psa_l2r_reset_ind (T_L2R_RESET_IND *l2r_reset_ind)
476 {
477 TRACE_FUNCTION ("psa_l2r_reset_ind()");
478
479 switch (l2rShrdPrm.state)
480 {
481 case L2R_CONNECTED:
482 case L2R_ENABLE:
483 case L2R_ENABLED:
484 /* case L2R_DISABLE:*/
485 case L2R_ACTIVATE:
486 case L2R_CONNECT:
487 {
488 l2rShrdPrm.set_prm[l2rShrdPrm.owner].reset++;
489
490 break;
491 }
492 /*
493 case L2R_ACTIVATE:
494 case L2R_CONNECT:
495 {
496 PALLOC (l2r_deactivate_req, L2R_DEACTIVATE_REQ);
497
498 l2rShrdPrm.state = L2R_DEACTIVATE;
499
500 cmhL2R_Failure();
501
502 PSENDX (L2R, l2r_deactivate_req);
503
504 break;
505 }
506 */
507 default:
508 {
509 cmhL2R_Failure();
510
511 break;
512 }
513 }
514
515 PFREE (l2r_reset_ind);
516 }
517
518 /*
519 +-------------------------------------------------------------------+
520 | PROJECT : GSM-PS (6147) MODULE : PSA_L2R |
521 | ROUTINE : psa_l2r_statistic_ind |
522 +-------------------------------------------------------------------+
523
524 PURPOSE : processes the L2R_STATISTIC_IND primitive send by L2R.
525
526 */
527
528 GLOBAL const void psa_l2r_statistic_ind
529 (T_L2R_STATISTIC_IND *l2r_statistic_ind)
530 {
531 TRACE_FUNCTION ("psa_l2r_statistic_ind()");
532
533 l2rShrdPrm.set_prm_use.error_rate = l2r_statistic_ind->error_rate;
534
535 PFREE (l2r_statistic_ind);
536 }
537
538 /*
539 +-------------------------------------------------------------------+
540 | PROJECT : GSM-PS (6147) MODULE : PSA_L2R |
541 | ROUTINE : psa_l2r_dti_cnf |
542 +-------------------------------------------------------------------+
543
544 PURPOSE : processes the L2R_DTI_CNF primitive send by L2R.
545
546 */
547
548 GLOBAL const void psa_l2r_dti_cnf (T_L2R_DTI_CNF *l2r_dti_cnf)
549 {
550 TRACE_FUNCTION ("psa_l2r_dti_cnf()");
551
552 /* store the current DTI id for the case of redirection */
553 raShrdPrm.dti_id = EXTRACT_DTI_ID(l2r_dti_cnf->link_id);
554
555 switch (l2rShrdPrm.state)
556 {
557 case L2R_ESCAPE:
558 {
559 if (l2r_dti_cnf->dti_conn NEQ l2rShrdPrm.uart_conn)
560 {
561 cmhL2R_Failure();
562 }
563 l2rEntStat.isTempDisconnected = TRUE;
564 dti_cntrl_entity_disconnected( l2r_dti_cnf->link_id, DTI_ENTITY_L2R );
565
566 l2rShrdPrm.state = L2R_CONNECTED;
567 break;
568 }
569
570 case L2R_ENABLE:
571 {
572 if (l2r_dti_cnf->dti_conn NEQ l2rShrdPrm.uart_conn)
573 {
574 PALLOC (l2r_disc_req, L2R_DISC_REQ);
575
576 l2rShrdPrm.state = L2R_DISCONNECT;
577
578 cmhL2R_Failure();
579
580 PSENDX (L2R, l2r_disc_req);
581 }
582 else
583 {
584 #if defined(FF_WAP) OR defined(FF_GPF_TCPIP) OR defined (FF_SAT_E)
585 T_ACI_WAP_STATES act_state = Wap_Not_Init;
586 if(is_gpf_tcpip_call()) {
587 GPF_TCPIP_STATEMENT(act_state = TCPIP_Activation);
588 }
589 else {
590 act_state = IPA_Activated;
591 }
592 #endif
593 l2rShrdPrm.state = L2R_ENABLED;
594
595 #if defined(FF_WAP) OR defined(FF_GPF_TCPIP) OR defined (FF_SAT_E)
596 if (Wap_Call AND wap_state EQ act_state)
597 {
598 dti_cntrl_entity_connected( l2r_dti_cnf->link_id, DTI_ENTITY_L2R, DTI_OK );
599 }
600 #ifdef FF_SAT_E
601 else if (psa_search_SATSrcId() >= 0)/* sat class c connection SIM-L2R */
602 {
603 dti_cntrl_entity_connected( l2r_dti_cnf->link_id, DTI_ENTITY_L2R, DTI_OK );
604 }
605 #endif /* FF_SAT_E */
606 else
607 {
608 TRACE_EVENT(" error: wrong WAP state ");
609 }
610 #else /* WAP OR FF_GPF_TCPIP or SAT E */
611 dti_cntrl_entity_connected( l2r_dti_cnf->link_id, DTI_ENTITY_L2R, DTI_OK );
612 #endif /* of WAP OR FF_GPF_TCPIP or SAT E */
613 }
614
615 break;
616 }
617
618 /* case L2R_DISABLE:
619 {
620 if (l2r_dti_cnf->dti_conn NEQ l2rShrdPrm.uart_conn)
621 {
622 PALLOC (l2r_disc_req, L2R_DISC_REQ);
623
624 l2rShrdPrm.state = L2R_DISCONNECT;
625
626 cmhL2R_Failure();
627
628 PSENDX (L2R, l2r_disc_req);
629 }
630 else
631 {
632 l2rShrdPrm.state = L2R_CONNECTED;
633
634 cmhL2R_TRA_Disabled();
635 }
636
637 break;
638 }*/
639
640 case L2R_DETACH:
641 {
642 if (l2r_dti_cnf->dti_conn NEQ l2rShrdPrm.uart_conn)
643 {
644 cmhL2R_Failure();
645 }
646
647 {
648 PALLOC (l2r_deactivate_req, L2R_DEACTIVATE_REQ);
649 l2rShrdPrm.state = L2R_DEACTIVATE;
650 /* Set the flag to reconnect the registered device to ACI */
651 dti_cntrl_set_dti_id_to_reconnect(EXTRACT_DTI_ID(l2r_dti_cnf->link_id));
652 dti_cntrl_entity_disconnected( l2r_dti_cnf->link_id, DTI_ENTITY_L2R );
653 PSENDX (L2R, l2r_deactivate_req);
654 }
655
656 break;
657 }
658
659 case L2R_DISCONNECT:
660 case L2R_DEACTIVATE:
661 {
662 break;
663 }
664
665 default:
666 {
667 PALLOC (l2r_disc_req, L2R_DISC_REQ);
668
669 l2rShrdPrm.state = L2R_DISCONNECT;
670
671 cmhL2R_Failure();
672
673 PSENDX (L2R, l2r_disc_req);
674
675 break;
676 }
677 }
678
679 PFREE (l2r_dti_cnf);
680 }
681
682 /*
683 +-------------------------------------------------------------------+
684 | PROJECT : GSM-PS (6147) MODULE : PSA_L2R |
685 | ROUTINE : psa_l2r_dti_ind |
686 +-------------------------------------------------------------------+
687
688 PURPOSE : processes the L2R_DTI_IND primitive send by L2R.
689
690 */
691
692 GLOBAL const void psa_l2r_dti_ind (T_L2R_DTI_IND *l2r_dti_ind)
693 {
694 TRACE_FUNCTION ("psa_l2r_dti_ind()");
695
696 /* store the current DTI id for the case of redirection */
697 raShrdPrm.dti_id = EXTRACT_DTI_ID(l2r_dti_ind->link_id);
698
699 switch (l2rShrdPrm.state)
700 {
701 case L2R_ENABLED:
702 {
703 l2rEntStat.isTempDisconnected = TRUE;
704 dti_cntrl_entity_disconnected( l2r_dti_ind->link_id, DTI_ENTITY_L2R );
705
706 l2rShrdPrm.state = L2R_CONNECTED;
707
708 break;
709 }
710
711 case L2R_CONNECTED:
712 case L2R_ENABLE:
713 {
714 PALLOC (l2r_disc_req, L2R_DISC_REQ);
715
716 l2rShrdPrm.state = L2R_DISCONNECT;
717
718 cmhL2R_Failure();
719
720 PSENDX (L2R, l2r_disc_req);
721
722 break;
723 }
724
725 case L2R_ACTIVATE:
726 case L2R_CONNECT:
727 {
728 PALLOC (l2r_deactivate_req, L2R_DEACTIVATE_REQ);
729
730 l2rShrdPrm.state = L2R_DEACTIVATE;
731
732 cmhL2R_Failure();
733
734 PSENDX (L2R, l2r_deactivate_req);
735
736 break;
737 }
738
739 default:
740 {
741 cmhL2R_Failure();
742
743 break;
744 }
745 }
746
747 PFREE (l2r_dti_ind);
748 }
749
750 /*
751 +-------------------------------------------------------------------+
752 | PROJECT : GSM-PS (6147) MODULE : PSA_L2R |
753 | ROUTINE : psa_l2r_xid_ind |
754 +-------------------------------------------------------------------+
755
756 PURPOSE : processes the L2R_XID_IND primitive send by L2R.
757
758 */
759
760 GLOBAL const void psa_l2r_xid_ind (T_L2R_XID_IND *l2r_xid_ind)
761 {
762 #define X l2rShrdPrm.set_prm_use
763
764 TRACE_FUNCTION ("psa_l2r_xid_ind()");
765
766 X.rlp_vers = l2r_xid_ind->rlp_vers;
767 X.k_ms_iwf = l2r_xid_ind->k_ms_iwf;
768 X.k_iwf_ms = l2r_xid_ind->k_iwf_ms;
769 X.t1 = l2r_xid_ind->t1;
770 X.t2 = l2r_xid_ind->t2;
771 X.n2 = l2r_xid_ind->n2;
772 X.pt = l2r_xid_ind->pt;
773 X.p0 = l2r_xid_ind->p0;
774 X.p1 = l2r_xid_ind->p1;
775 X.p2 = l2r_xid_ind->p2;
776
777 PFREE (l2r_xid_ind);
778
779 #undef X
780 }
781 #endif /* DTI */
782
783 /*==== EOF =========================================================*/
784