Annotation of 43BSDReno/contrib/isode-beta/tsap/tsaplose.c, revision 1.1.1.1

1.1       root        1: /* tsaplose.c - TPM: you lose */
                      2: 
                      3: 
                      4: #ifndef        lint
                      5: static char *rcsid = "$Header: /f/osi/tsap/RCS/tsaplose.c,v 7.1 89/12/07 22:15:50 mrose Exp $";
                      6: #endif
                      7: 
                      8: /* 
                      9:  * $Header: /f/osi/tsap/RCS/tsaplose.c,v 7.1 89/12/07 22:15:50 mrose Exp $
                     10:  *
                     11:  *
                     12:  * $Log:       tsaplose.c,v $
                     13:  * Revision 7.1  89/12/07  22:15:50  mrose
                     14:  * touch-up
                     15:  * 
                     16:  * Revision 7.0  89/11/23  22:30:51  mrose
                     17:  * Release 6.0
                     18:  * 
                     19:  */
                     20: 
                     21: /*
                     22:  *                               NOTICE
                     23:  *
                     24:  *    Acquisition, use, and distribution of this module and related
                     25:  *    materials are subject to the restrictions of a license agreement.
                     26:  *    Consult the Preface in the User's Manual for the full terms of
                     27:  *    this agreement.
                     28:  *
                     29:  */
                     30: 
                     31: 
                     32: /* LINTLIBRARY */
                     33: 
                     34: #include <stdio.h>
                     35: #include <varargs.h>
                     36: #include "tpkt.h"
                     37: #include "mpkt.h"
                     38: #include "tailor.h"
                     39: 
                     40: 
                     41: #ifdef LPP
                     42: #undef MGMT
                     43: #endif
                     44: 
                     45: /*  */
                     46: 
                     47: #ifndef        lint
                     48: int    tpktlose (va_alist)
                     49: va_dcl
                     50: {
                     51:     int            reason,
                     52:            result;
                     53:     register struct tsapblk *tb;
                     54:     struct TSAPdisconnect   tds;
                     55:     register struct TSAPdisconnect  *td;
                     56:     va_list ap;
                     57: 
                     58:     va_start (ap);
                     59: 
                     60:     tb = va_arg (ap, struct tsapblk *);
                     61: 
                     62:     td = va_arg (ap, struct TSAPdisconnect *);
                     63:     if (td == NULL)
                     64:        td = &tds;
                     65: 
                     66:     reason = va_arg (ap, int);
                     67: 
                     68:     result = _tsaplose (td, reason, ap);
                     69: 
                     70:     va_end (ap);
                     71: 
                     72:     if (td -> td_cc > 0) {
                     73:        SLOG (tsap_log, LLOG_EXCEPTIONS, NULLCP,
                     74:          ("tpktlose [%s] %*.*s", TErrString (td -> td_reason), td -> td_cc,
                     75:           td -> td_cc, td -> td_data));
                     76:     }
                     77:     else
                     78:        SLOG (tsap_log, LLOG_EXCEPTIONS, NULLCP,
                     79:              ("tpktlose [%s]", TErrString (td -> td_reason)));
                     80: 
                     81: #ifdef  MGMT
                     82:     if (tb -> tb_manfnx)
                     83:        switch (reason) {
                     84:            case DR_REMOTE:
                     85:            case DR_CONGEST:
                     86:                (*tb -> tb_manfnx) (CONGEST, tb);
                     87:                break;
                     88: 
                     89:            case DR_PROTOCOL:
                     90:            case DR_MISMATCH:
                     91:                (*tb -> tb_manfnx) (PROTERR, tb);
                     92:                break;
                     93: 
                     94:            case DR_SESSION:
                     95:            case DR_ADDRESS:
                     96:            case DR_CONNECT:
                     97:            case DR_DUPLICATE:
                     98:            case DR_OVERFLOW:
                     99:            case DR_REFUSED:
                    100:                (*tb -> tb_manfnx) (CONFIGBAD, tb);
                    101:                break;
                    102: 
                    103:            default:
                    104:                (*tb -> tb_manfnx) (OPREQINBAD, tb);
                    105:        }
                    106: #endif
                    107: 
                    108:     (*tb -> tb_losePfnx) (tb, reason, td);
                    109: 
                    110:     return result;
                    111: }
                    112: #else
                    113: /* VARARGS5 */
                    114: 
                    115: int    tpktlose (tb, td, reason, what, fmt)
                    116: struct tsapblk *tb;
                    117: struct TSAPdisconnect *td;
                    118: int    reason;
                    119: char   *what,
                    120:        *fmt;
                    121: {
                    122:     return tpktlose (tb, td, reason, what, fmt);
                    123: }
                    124: #endif
                    125: 
                    126: /*  */
                    127: 
                    128: #ifndef        lint
                    129: int    tsaplose (va_alist)
                    130: va_dcl
                    131: {
                    132:     int            reason,
                    133:            result;
                    134:     struct TSAPdisconnect *td;
                    135:     va_list ap;
                    136: 
                    137:     va_start (ap);
                    138: 
                    139:     td = va_arg (ap, struct TSAPdisconnect *);
                    140:     reason = va_arg (ap, int);
                    141: 
                    142:     result = _tsaplose (td, reason, ap);
                    143: 
                    144:     va_end (ap);
                    145: 
                    146:     return result;
                    147: 
                    148: }
                    149: #else
                    150: /* VARARGS4 */
                    151: 
                    152: int    tsaplose (td, reason, what, fmt)
                    153: struct TSAPdisconnect *td;
                    154: int    reason;
                    155: char   *what,
                    156:        *fmt;
                    157: {
                    158:     return tsaplose (td, reason, what, fmt);
                    159: }
                    160: #endif
                    161: 
                    162: /*  */
                    163: 
                    164: #ifndef        lint
                    165: static int  _tsaplose (td, reason, ap) /* what, fmt, args ... */
                    166: register struct TSAPdisconnect *td;
                    167: int     reason;
                    168: va_list        ap;
                    169: {
                    170:     register char  *bp;
                    171:     char    buffer[BUFSIZ];
                    172: 
                    173:     if (td) {
                    174:        bzero ((char *) td, sizeof *td);
                    175: 
                    176:        asprintf (bp = buffer, ap);
                    177:        bp += strlen (bp);
                    178: 
                    179:        td -> td_reason = reason;
                    180:        copyTSAPdata (buffer, bp - buffer, td);
                    181:     }
                    182: 
                    183:     return NOTOK;
                    184: }
                    185: #endif

unix.superglobalmegacorp.com

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