xref: /csrg-svn/sys/netccitt/pk_var.h (revision 41595)
1*41595Ssklower /* Copyright (c) University of British Columbia, 1984 */
2*41595Ssklower 
3*41595Ssklower 
4*41595Ssklower /*
5*41595Ssklower  *
6*41595Ssklower  *  X.25 Logical Channel Descriptor
7*41595Ssklower  *
8*41595Ssklower  */
9*41595Ssklower 
10*41595Ssklower struct pklcd {
11*41595Ssklower 	short   lcd_lcn;		/* Logical channel number */
12*41595Ssklower 	short   lcd_state;		/* Logical Channel state */
13*41595Ssklower         bool	lcd_intrconf_pending;	/* Interrupt confirmation pending */
14*41595Ssklower 	octet	lcd_intrdata;		/* Octet of incoming intr data */
15*41595Ssklower 	short   lcd_timer;		/* Various timer values */
16*41595Ssklower 	char	lcd_retry;		/* Timer retry count */
17*41595Ssklower 	char	lcd_rsn;		/* Seq no of last received packet */
18*41595Ssklower 	char	lcd_ssn;		/* Seq no of next packet to send */
19*41595Ssklower 	char	lcd_output_window;	/* Output flow control window */
20*41595Ssklower 	char	lcd_input_window;	/* Input flow control window */
21*41595Ssklower 	char	lcd_last_transmitted_pr;/* Last Pr value transmitted */
22*41595Ssklower         bool	lcd_rnr_condition;	/* Remote in busy condition */
23*41595Ssklower         bool	lcd_window_condition;	/* Output window size exceeded */
24*41595Ssklower         bool	lcd_reset_condition;	/* True, if waiting reset confirm */
25*41595Ssklower 	char	lcd_packetsize;		/* Maximum packet size */
26*41595Ssklower 	char	lcd_windowsize;		/* Window size - both directions */
27*41595Ssklower         octet	lcd_closed_user_group;	/* Closed user group specification */
28*41595Ssklower 	char	lcd_flags;		/* copy of sockaddr_x25 op_flags */
29*41595Ssklower 	struct	x25_packet *lcd_template;/* Address of current packet */
30*41595Ssklower 	struct	socket *lcd_so;		/* Socket addr for connection */
31*41595Ssklower 	struct	sockaddr_x25 *lcd_craddr;/* Calling address */
32*41595Ssklower 	struct	sockaddr_x25 *lcd_ceaddr;/* Called address */
33*41595Ssklower 	time_t	lcd_stime;		/* time circuit established */
34*41595Ssklower 	long    lcd_txcnt;		/* Data packet transmit count */
35*41595Ssklower 	long    lcd_rxcnt;		/* Data packet receive count */
36*41595Ssklower 	short   lcd_intrcnt;		/* Interrupt packet transmit count */
37*41595Ssklower 	struct	pklcd *lcd_listen;	/* Next lcd on listen queue */
38*41595Ssklower 	struct	pkcb *lcd_pkp;		/* network this lcd is attached to */
39*41595Ssklower };
40*41595Ssklower 
41*41595Ssklower /*
42*41595Ssklower  * Per network information, allocated dynamically
43*41595Ssklower  * when a new network is configured.
44*41595Ssklower  */
45*41595Ssklower 
46*41595Ssklower struct	pkcb {
47*41595Ssklower 	struct	pkcb *pk_next;
48*41595Ssklower 	short	pk_state;		/* packet level status */
49*41595Ssklower 	short	pk_maxlcn;		/* local copy of xc_maxlcn */
50*41595Ssklower 	int	(*pk_output) ();	/* link level output procedure */
51*41595Ssklower 	struct	x25config *pk_xcp;	/* network specific configuration */
52*41595Ssklower 	struct	pklcd *pk_chan[1];	/* actual size == xc_maxlcn+1 */
53*41595Ssklower };
54*41595Ssklower 
55*41595Ssklower #ifdef KERNEL
56*41595Ssklower struct	pkcb *pkcbhead;		/* head of linked list of networks */
57*41595Ssklower struct	pklcd *pk_listenhead;
58*41595Ssklower 
59*41595Ssklower char	*pk_name[], *pk_state[];
60*41595Ssklower int	pk_t20, pk_t21, pk_t22, pk_t23;
61*41595Ssklower #endif
62