|
|
1.1 ! root 1: #ifdef XT ! 2: #ifndef NPCBUFS ! 3: #include "sys/xtproto.h" ! 4: #endif ! 5: #define freepkts outen ! 6: #define user flags ! 7: #else XT ! 8: ! 9: /* ! 10: ** Definition of a structure to hold status information ! 11: ** for a conversation with a channel. ! 12: */ ! 13: ! 14: #define NPCBUFS 2 /* Double buffered protocol */ ! 15: ! 16: struct Pktstate ! 17: { ! 18: struct Packet pkt; /* The packet */ ! 19: short timo; /* Timeout count */ ! 20: unsigned char state; /* Protocol state */ ! 21: unsigned char size; /* Packet size */ ! 22: }; ! 23: ! 24: typedef struct Pktstate *Pks_p; ! 25: ! 26: struct Pchannel ! 27: { ! 28: struct Pktstate pkts[NPCBUFS]; /* The packets */ ! 29: Pks_p nextpkt; /* Next packet to be acknowledged */ ! 30: unsigned char cdata[SEQMOD]; /* Remember control data */ ! 31: unsigned char rseq; /* Next receive sequence number */ ! 32: unsigned char xseq; /* Next transmit sequence number */ ! 33: char freepkts; /* Number of free buffers */ ! 34: char user; /* Spare byte for users */ ! 35: }; ! 36: ! 37: typedef struct Pchannel * Pch_p; ! 38: ! 39: /** Transmit packet states **/ ! 40: ! 41: enum pxenum /* required to have name for m32 sgs */ { px_null, px_wait, px_ok }; ! 42: ! 43: #define PX_NULL (int)px_null /* Empty packet */ ! 44: #define PX_WAIT (int)px_wait /* Packet awaiting acknowledgement */ ! 45: #define PX_OK (int)px_ok /* Packet has been acknowledged */ ! 46: ! 47: /** Receive packet states **/ ! 48: ! 49: enum prenum /* required to have name for m32 sgs */ { pr_null, pr_size, pr_data }; ! 50: ! 51: #define PR_NULL (int)pr_null /* New packet expected */ ! 52: #define PR_SIZE (int)pr_size /* Size byte next */ ! 53: #define PR_DATA (int)pr_data /* Receiving data */ ! 54: #endif XT ! 55: ! 56: /* ! 57: ** Interface routines ! 58: */ ! 59: ! 60: extern int psend(); /* Send data to channel */ ! 61: extern void precv(); /* Receive data/control from channel */ ! 62: extern void ptimeout(); /* Catch alarm timeouts */ ! 63: extern int pinit(); /* Initialise conversations */ ! 64: ! 65: /* ! 66: ** Pointers to externally declared data and functions ! 67: */ ! 68: ! 69: extern struct Pchannel pconvs[]; /* Array of conversations */ ! 70: extern Pch_p pconvsend; /* Pointer to end of pconvs */ ! 71: ! 72: /* ! 73: ** Receiver data ! 74: */ ! 75: ! 76: extern struct Pktstate precvpkt; /* Current receive packet */ ! 77: extern Pbyte pseqtable[]; /* Table of ordered sequence numbers */ ! 78: ! 79: #ifdef EBUG ! 80: /* ! 81: ** Debugging ! 82: */ ! 83: ! 84: #define PDEBUG 1 ! 85: #ifndef PSTATISTICS ! 86: #define PSTATISTICS 1 ! 87: #endif ! 88: #ifndef PSTATSDESC ! 89: #define PSTATSDESC 1 ! 90: #endif ! 91: #define PKTHIST 40 ! 92: #define PLOGIN 0 ! 93: #define PLOGOUT 1 ! 94: ! 95: #include <stdio.h> ! 96: ! 97: extern FILE * ptracefd; ! 98: extern void ptracepkt(); ! 99: extern void plogpkt(); ! 100: extern void pdumphist(); ! 101: ! 102: #define ptrace(A) fprintf(ptracefd,"trace: %s\n",A) ! 103: ! 104: #else EBUG ! 105: ! 106: #define ptrace(A) ! 107: #define ptracepkt(A,B) ! 108: #define plogpkt(A,B) ! 109: #define pdumphist(A) ! 110: ! 111: #endif EBUG
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.