88 lines
2.8 KiB
C
88 lines
2.8 KiB
C
/* Upper sub-layer (LAPB) definitions */
|
|
|
|
/* Control field templates */
|
|
#define I 0x00 /* Information frames */
|
|
#define S 0x01 /* Supervisory frames */
|
|
#define RR 0x01 /* Receiver ready */
|
|
#define RNR 0x05 /* Receiver not ready */
|
|
#define REJ 0x09 /* Reject */
|
|
#define U 0x03 /* Unnumbered frames */
|
|
#define SABM 0x2f /* Set Asynchronous Balanced Mode */
|
|
#define DISC 0x43 /* Disconnect */
|
|
#define DM 0x0f /* Disconnected mode */
|
|
#define UA 0x63 /* Unnumbered acknowledge */
|
|
#define FRMR 0x87 /* Frame reject */
|
|
#define UI 0x03 /* Unnumbered information */
|
|
#define PF 0x10 /* Poll/final bit */
|
|
|
|
#define MMASK 7 /* Mask for modulo-8 sequence numbers */
|
|
|
|
/* FRMR reason bits */
|
|
#define W 1 /* Invalid control field */
|
|
#define X 2 /* Unallowed I-field */
|
|
#define Y 4 /* Too-long I-field */
|
|
#define Z 8 /* Invalid sequence number */
|
|
|
|
/* Per-connection link control block
|
|
* These are created and destroyed dynamically,
|
|
* and are indexed through a hash table.
|
|
* One exists for each logical AX.25 Level 2 connection
|
|
*/
|
|
struct ax25_cb {
|
|
struct ax25_cb *next; /* Doubly linked list pointers */
|
|
struct ax25_cb *prev;
|
|
|
|
struct mbuf *txq; /* Transmit queue */
|
|
struct mbuf *rxasm; /* Receive reassembly buffer */
|
|
struct mbuf *rxq; /* Receive queue */
|
|
|
|
struct ax25 addr; /* Address header */
|
|
|
|
struct interface *interface; /* Associated interface */
|
|
|
|
char rejsent; /* REJ frame has been sent */
|
|
char remotebusy; /* Remote sent RNR */
|
|
char response; /* Response owed to other end */
|
|
|
|
char vs; /* Our send state variable */
|
|
char vr; /* Our receive state variable */
|
|
char unack; /* Number of unacked frames */
|
|
int maxframe; /* Transmit flow control level */
|
|
int16 paclen; /* Maximum outbound packet size */
|
|
int16 window; /* Local flow control limit */
|
|
char proto; /* Protocol version */
|
|
#define V1 1 /* AX.25 Version 1 */
|
|
#define V2 2 /* AX.25 Version 2 */
|
|
int16 pthresh; /* Poll threshold */
|
|
unsigned retries; /* Retry counter */
|
|
unsigned n2; /* Retry limit */
|
|
int state; /* Link state */
|
|
#define DISCONNECTED 0
|
|
#define SETUP 1
|
|
#define DISCPENDING 2
|
|
#define CONNECTED 3
|
|
#define RECOVERY 4
|
|
#define FRAMEREJECT 5
|
|
char frmrinfo[3]; /* I-field for FRMR message */
|
|
struct timer t1; /* Retry timer */
|
|
struct timer t2; /* Acknowledgement delay timer */
|
|
struct timer t3; /* Keep-alive poll timer */
|
|
struct timer t4; /* stale circuit timer */
|
|
|
|
void (*r_upcall)(); /* Receiver upcall */
|
|
void (*t_upcall)(); /* Transmit upcall */
|
|
void (*s_upcall)(); /* State change upcall */
|
|
char *user; /* User pointer */
|
|
/* config.h is always read before lapb.h */
|
|
#ifdef SEGMENT
|
|
int segremain; /* used by segmenter */
|
|
#endif
|
|
};
|
|
#define NULLAX25 ((struct ax25_cb *)0)
|
|
extern struct ax25_cb ax25default;
|
|
extern struct ax25_cb *ax25_cb[];
|
|
#define NHASH 17
|
|
|
|
#define YES 1
|
|
#define NO 0
|