Annotation of 43BSDReno/contrib/isode-beta/vt/actions5.c, revision 1.1.1.1

1.1       root        1: /* actions5.c - VTPM: FSM sector 5 actions */
                      2: 
                      3: #ifndef        lint
                      4: static char *rcsid = "$Header: /f/osi/vt/RCS/actions5.c,v 7.0 89/11/23 22:31:27 mrose Rel $";
                      5: #endif
                      6: 
                      7: /* 
                      8:  * $Header: /f/osi/vt/RCS/actions5.c,v 7.0 89/11/23 22:31:27 mrose Rel $
                      9:  *
                     10:  *
                     11:  * $Log:       actions5.c,v $
                     12:  * Revision 7.0  89/11/23  22:31:27  mrose
                     13:  * Release 6.0
                     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: #include "vtpm.h"
                     29: #include "sector1.h"
                     30: 
                     31: /************************************************************************/
                     32: /*     This file contains the functions that are executed when the     */
                     33: /*     VT Protocol machine is in a Sector 5 state and a protocol       */
                     34: /*     event occurs.  The state transition matrix is specified in      */
                     35: /*     Table 32 of ISO 9041 (July 1987 version).  The actions which    */
                     36: /*     this collection of functions perform are specified in Table 40  */
                     37: /*     of ISO 9041.                                                    */
                     38: /************************************************************************/
                     39: 
                     40: extern int sd;         /*Global Session Descriptor (ISODE) */
                     41: 
                     42:                /*  xx1x xxxx = awaiting ack from peer i.e., 420 */
                     43:                /*  xxxx xx1x = awaiting ack from user */
                     44: 
                     45:                /* T = got token, N = no got token */
                     46: 
                     47: 
                     48:                /* 
                     49:                   req: usr==>vtpm
                     50:                   ind: vtpm==>usr
                     51:                */
                     52: int
                     53: ce_104(pe)     /* common event 104 */
                     54: PE pe;
                     55: {
                     56:                /* if (vnt > 0) */
                     57:                if(pe != NULLPE) vdatind(SEQUENCED,pe);
                     58:                vnt = 0;
                     59:                return(OK);
                     60: }
                     61: 
                     62: int
                     63: ce_105()       /* common event 105 */
                     64: {
                     65:                /* if (vns > 0)  for(... */
                     66:                if(p_ondq != NULLPE) 
                     67:                        (void)p_data(p_ondq);  /* send NDQ      */
                     68:                vns = 0;
                     69:                return(OK);
                     70: }
                     71: 
                     72: 
                     73: /* ARGSUSED */
                     74: int
                     75: a5_0(pe)       /*VDATreq-sqtr in states 400B or 402B */
                     76:                /* V data request addressing sequenced trigger co */
                     77: PE pe;
                     78: {
                     79:        return(ce_105());
                     80: /*
                     81:        ==> SAMESTATE;
                     82: */
                     83: }
                     84: 
                     85: 
                     86: /* ARGSUSED */
                     87: int
                     88: a5_1(pe)       /*VDATreq-n in states 400B, 402B or 40T */
                     89:                /* V data request addressing sequenced trigger co */
                     90: PE pe;
                     91: {
                     92: 
                     93:        /*
                     94:        vns++;
                     95:        ==> SAMESTATE
                     96:        */
                     97:        return(ce_105());       /*Autonomous Event to Ship it*/
                     98: }
                     99: 
                    100: 
                    101: int
                    102: a5_2(pe)       /*NDQ-tr in states 400B, 420B */
                    103: PE pe;
                    104: {
                    105:        /*
                    106:        vnt++;
                    107:        */
                    108:        
                    109:        return(ce_104(pe));
                    110:        /*
                    111:        ==> SAMESTATE
                    112:        */
                    113: }
                    114: 
                    115: 
                    116: int
                    117: a5_3(pe)       /*NDQ-ntr in states 400B, 420B */
                    118: PE pe;
                    119: {
                    120:        /*
                    121:        vnt++;
                    122:        */
                    123:        /*
                    124:        ==> SAMESTATE
                    125:        */
                    126:        return(ce_104(pe));     /*Autonomous Event to Deliver to User*/
                    127: }
                    128: 
                    129: int
                    130: a5_5(pe)       /* VBRKreq  */
                    131: PE pe;
                    132: {
                    133:        vtok = 0; /* giving the token away */
                    134:        vnt = 0;
                    135:        vns = 0;
                    136:        /* vtkp was set in vbrkreq so it could be coded in to the pe */
                    137:        (void)p_resync_req(pe,SYNC_RESTART); /* send break request */
                    138:        state = S5_61;
                    139:        return(OK);
                    140: }
                    141: 
                    142: int
                    143: a5_6(pe)       /* VBRKrsp in state 62 */
                    144: PE pe;
                    145: {
                    146:        (void)p_resync_resp(pe); /* send out break response */
                    147:        if (vsmd && vtok) 
                    148:                state = S5_40T;
                    149:        else 
                    150:                if (vsmd) 
                    151:                        state = S5_40N;
                    152:                else {
                    153:                        vtkp = INITIATOR;
                    154:                        if (vtok) 
                    155:                                vtkp = ACCEPTOR;
                    156:                        state = S5_400B;
                    157:                }
                    158:        return(OK);
                    159: }
                    160: 
                    161: int
                    162: a5_9(pe)       /*VDELreq in states 400B, 402B */
                    163: PE pe;
                    164: {
                    165:        if (dcno) /* no delivery control */
                    166:        {
                    167:           advise(LLOG_DEBUG,NULLCP,"a5_9: dcno hasn't been set");
                    168:           /* ==> SAMESTATE */
                    169:           return(NOTOK);
                    170:        }
                    171:        (void)ce_105();
                    172:        /* send out dlq */
                    173:        /* this will be replace by the new-fangled pepy schtuff;
                    174:                will use this now for compatability */
                    175:        
                    176:        (void)p_data(pe);
                    177:        state = (vra) ? state + 2 : state; /* pretty neeto eh? */
                    178:        return(OK);
                    179: }
                    180: 
                    181: int
                    182: a5_11(pe)      /*HDQ request in 400B*/
                    183: PE pe;
                    184: {
                    185:        (void) p_typed_data(pe);
                    186:        return(OK);
                    187: }
                    188: 
                    189: /*ARGSUSED*/
                    190: int
                    191: a5_17(pe)      /*VRELreq in states 400B */
                    192: PE pe;
                    193: {
                    194: /*     ce_105(); */
                    195:        sector = 1;
                    196:        if(vtok)
                    197:        {
                    198:                state = S1_51Q;         /*Must change state first because
                    199:                                          vt_disconnect gets RLR & calls
                    200:                                          state machine again. */
                    201:                vt_disconnect();        /*May be only TEMP*/
                    202:        }
                    203:        else
                    204:        {
                    205:                request_token();
                    206:                        /*Need call to ISODE to request token*/
                    207:                state = S1_50B;
                    208:        }
                    209: 
                    210:        return(OK);
                    211: }
                    212: 
                    213: int
                    214: a5_28(pe)      /*UDQ request in 400B*/
                    215: PE pe;
                    216: {
                    217:        (void) p_typed_data(pe);
                    218:        return(OK);
                    219: }
                    220: 
                    221: int
                    222: a5_31(pe)      /* BKR in 61 */
                    223: PE pe;
                    224: {
                    225:        if (vsmd && vtok) state = S5_40T;
                    226:                else if (vsmd) state = S5_40N;
                    227:                        else state = S5_400B;
                    228:        vbrkcnf(pe);
                    229:        return(OK);
                    230: }
                    231: 
                    232: int
                    233: a5_32(pe)      /* BKQ could occur in any state except 62 */
                    234: PE pe;
                    235: {
                    236:        vnt = 0;
                    237:        vns = 0;
                    238:        /*
                    239:           vbrkind clears queues etc.
                    240:           and then map the break character to user
                    241:           and sets vtok to 1
                    242:           (we should have received the token) 
                    243:        */
                    244:        state = S5_62;
                    245:        vbrkind(pe);
                    246:        return(OK);
                    247: }
                    248: 
                    249: int
                    250: a5_34(pe)      /*UDQ in 400B*/
                    251: PE pe;
                    252: {
                    253:        if(pe != NULLPE) vudatind(pe);
                    254:        return(OK);
                    255: }
                    256: 
                    257: int
                    258: a5_35(pe)      /* DEL in states 400B, 420B */
                    259: PE pe;
                    260: {
                    261: 
                    262:        if ((vra = prim2flag(pe)) == NOTOK)
                    263:                adios("a5_35: bogus PDU (%s)", pe_error (pe -> pe_errno));
                    264:        (void)ce_104(NULLPE);
                    265:        vdelind(pe,vra);
                    266:        state = (vra) ? state + 2 : state;
                    267:        return(OK);
                    268: }
                    269: 
                    270: 
                    271: int
                    272: a5_38(pe)      /* RLQ in states 400B */
                    273: PE pe;
                    274: {
                    275: 
                    276:        (void)ce_104(pe);
                    277:        sector = 1;
                    278:        state = S1_51R;
                    279:        (void)vrelind();
                    280:        return(OK);
                    281: }
                    282: 
                    283: int
                    284: a5_106(pe)
                    285: PE pe;
                    286: {
                    287:        if(pe != NULLPE) vhdatind(pe);
                    288:        return(OK);
                    289: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.