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

1.1       root        1: /* tsapmgmt.c - management info reporting routines */
                      2: 
                      3: #ifndef        lint
                      4: static char *rcsid = "$Header: /f/osi/tsap/RCS/tsapmgmt.c,v 7.2 90/06/12 02:19:52 mrose Exp $";
                      5: #endif
                      6: 
                      7: /* 
                      8:  * $Header: /f/osi/tsap/RCS/tsapmgmt.c,v 7.2 90/06/12 02:19:52 mrose Exp $
                      9:  *
                     10:  *
                     11:  * $Log:       tsapmgmt.c,v $
                     12:  * Revision 7.2  90/06/12  02:19:52  mrose
                     13:  * typo
                     14:  * 
                     15:  * Revision 7.1  90/03/23  17:31:45  mrose
                     16:  * 8
                     17:  * 
                     18:  * Revision 7.0  89/11/23  22:30:53  mrose
                     19:  * Release 6.0
                     20:  * 
                     21:  */
                     22: 
                     23: /*
                     24:  *                               NOTICE
                     25:  *
                     26:  *    Acquisition, use, and distribution of this module and related
                     27:  *    materials are subject to the restrictions of a license agreement.
                     28:  *    Consult the Preface in the User's Manual for the full terms of
                     29:  *    this agreement.
                     30:  *
                     31:  */
                     32: 
                     33: 
                     34: /* LINTLIBRARY */
                     35: 
                     36: #include <stdio.h>
                     37: #include <varargs.h>
                     38: #include "tpkt.h"
                     39: #include "mpkt.h"
                     40: 
                     41: 
                     42: #ifdef  MGMT
                     43: #include "internet.h"
                     44: 
                     45: #define LOCALTHLD 128          /* local threshold for reporting (bytes) */
                     46: 
                     47: /*  */
                     48: 
                     49: static long pid = OK;
                     50: static int ManSoc;
                     51: static struct MReport TsapInfo;
                     52: static struct qbuf data;
                     53: 
                     54: /*  */
                     55: 
                     56: /* VARARGS2 */
                     57: 
                     58: int    TManGen (va_alist)
                     59: va_dcl
                     60: {
                     61:     int            a,
                     62:            result;
                     63:     struct TSAPaddr *b;
                     64:     unsigned int type;
                     65:     register struct tsapblk *tb;
                     66:     va_list ap;
                     67: 
                     68:     va_start (ap);
                     69: 
                     70:     type = va_arg (ap, unsigned int);
                     71:     tb = va_arg (ap, struct tsapblk *);
                     72:     a = 0, b = NULLTA;
                     73:     switch (type) {
                     74:        case USERDT:
                     75:        case USERDR:
                     76:            a = va_arg (ap, int);
                     77:            break;
                     78: 
                     79:        case STARTLISTEN:
                     80:        case ENDLISTEN:
                     81:            b = va_arg (ap, struct TSAPaddr *);
                     82:            break;
                     83: 
                     84:        default:
                     85:            break;
                     86:     }
                     87: 
                     88:     result = TManGenAux (type, tb, a, b);
                     89: 
                     90:     va_end (ap);
                     91: 
                     92:     return result;
                     93: }
                     94: 
                     95: /*  */
                     96: 
                     97: #define SendMReport()          write_udp_socket (ManSoc, &data)
                     98: 
                     99: 
                    100: static int  TManGenAux (type, tb, a, b)
                    101: unsigned int type;
                    102: struct tsapblk * tb;
                    103: int    a;
                    104: struct TSAPaddr *b;
                    105: {
                    106:     if (pid == NOTOK)
                    107:        return NOTOK;
                    108: 
                    109:     if (pid == OK && ManInit () == NOTOK)
                    110:        return (pid = NOTOK);
                    111: 
                    112:     switch (TsapInfo.type = type) {
                    113:        case USERDT:
                    114:            tb -> tb_pdus++;
                    115:            if ((tb -> tb_bytes += a) < LOCALTHLD)
                    116:                break;
                    117:            TsapInfo.cid = tb -> tb_fd;
                    118:            TsapInfo.u.gp.a = tb -> tb_bytes;
                    119:            TsapInfo.u.gp.b = tb -> tb_pdus;
                    120:            tb -> tb_bytes = 0;
                    121:            break;
                    122: 
                    123:        case USERDR:
                    124:            tb -> tb_pdur++;
                    125:            if ((tb -> tb_byter += a) < LOCALTHLD)
                    126:                return OK;
                    127:            TsapInfo.cid = tb -> tb_fd;
                    128:            TsapInfo.u.gp.a = tb -> tb_byter;
                    129:            TsapInfo.u.gp.b = tb -> tb_pdur;
                    130:            tb -> tb_byter = 0;
                    131:            break;
                    132: 
                    133:        case OPREQIN:
                    134:        case OPREQOUT:
                    135:            TsapInfo.cid = tb -> tb_fd;
                    136:            bcopy (tb -> tb_responding.ta_selector,
                    137:                   TsapInfo.u.taddr.tsel,
                    138:                   TsapInfo.u.taddr.tsel_len =
                    139:                        tb -> tb_responding.ta_selectlen);
                    140:                                                            /* struct copy */
                    141:            TsapInfo.u.taddr.nsap = tb -> tb_responding.ta_addr;
                    142:            if (SendMReport () == NOTOK)
                    143:                return NOTOK;
                    144: 
                    145:            TsapInfo.type = SOURCEADDR;
                    146:            bcopy (tb -> tb_initiating.ta_selector,
                    147:                   TsapInfo.u.taddr.tsel,
                    148:                   TsapInfo.u.taddr.tsel_len =
                    149:                        tb -> tb_initiating.ta_selectlen);
                    150:                                                            /* struct copy */
                    151:            TsapInfo.u.taddr.nsap = tb -> tb_initiating.ta_addr;
                    152:            break;
                    153: 
                    154:        case DISCREQ:
                    155:            TsapInfo.cid = tb -> tb_fd;
                    156:            TsapInfo.u.gp.a = tb -> tb_bytes;
                    157:            TsapInfo.u.gp.b = tb -> tb_byter;
                    158:            TsapInfo.u.gp.c = tb -> tb_pdus;
                    159:            TsapInfo.u.gp.d = tb -> tb_pdur;
                    160:            break;
                    161: 
                    162:        case PROTERR:
                    163:        case CONGEST:
                    164:        case CONFIGBAD:
                    165:        case OPREQINBAD:
                    166:        case OPREQOUTBAD:
                    167:            TsapInfo.cid = tb -> tb_fd;
                    168:            break;
                    169: 
                    170:        case STARTLISTEN:
                    171:        case ENDLISTEN:
                    172:            bcopy (b -> ta_selector,
                    173:                  TsapInfo.u.taddr.tsel,
                    174:                  TsapInfo.u.taddr.tsel_len = b -> ta_selectlen);
                    175:            TsapInfo.u.taddr.nsap = b -> ta_addrs[0];   /* struct copy */
                    176:            break;
                    177: 
                    178:        default:
                    179:            return NOTOK;
                    180:     }
                    181:     return SendMReport ();
                    182: }
                    183: 
                    184: /*  */
                    185: 
                    186: static int  ManInit () {
                    187:     struct sockaddr_in sin;
                    188:     register struct sockaddr_in *sock = &sin;
                    189:     register struct servent *sp;
                    190:     register struct hostent *hp;
                    191: 
                    192:     if ((sp = getservbyname ("manager", "udp")) == NULL
                    193:             || (hp = gethostbyname ("localhost")) == NULL)
                    194:        return NOTOK;
                    195: 
                    196:     bzero((char *) sock, sizeof *sock);
                    197:     sock -> sin_family = hp -> h_addrtype;
                    198:     inaddr_copy (hp, sock);
                    199:     if ((ManSoc = start_udp_client (sock, 0, SO_DONTROUTE, 0)) == NOTOK)
                    200:        return NOTOK;
                    201: 
                    202:     sock -> sin_port = sp -> s_port;
                    203:     if (join_udp_server (ManSoc, sock) == NOTOK)
                    204:        return NOTOK;
                    205: 
                    206:     TsapInfo.id = pid = getpid();
                    207:     data.qb_data = (char *) &TsapInfo;
                    208:     data.qb_len  = sizeof TsapInfo;
                    209: 
                    210:     return OK;
                    211: }
                    212: 
                    213: #endif

unix.superglobalmegacorp.com

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