xref: /csrg-svn/sys/netns/spp_var.h (revision 23978)
123216Smckusick /*
223216Smckusick  * Copyright (c) 1982 Regents of the University of California.
323216Smckusick  * All rights reserved.  The Berkeley software License Agreement
423216Smckusick  * specifies the terms and conditions for redistribution.
523216Smckusick  *
6*23978Ssklower  *	@(#)spp_var.h	6.3 (Berkeley) 07/19/85
723216Smckusick  */
821497Ssklower 
921497Ssklower /*
1021497Ssklower  * Sp control block, one per connection
1121497Ssklower  */
1221497Ssklower struct sppcb {
1321497Ssklower 	struct	spidp_q	s_q;		/* queue for out-of-order receipt */
1421497Ssklower 	struct	nspcb	*s_nspcb;	/* backpointer to internet pcb */
1521497Ssklower 	u_char	s_state;
1621497Ssklower 	u_char	s_flags;
1721497Ssklower #define SF_AK	0x01			/* Acknowledgement requested */
1821497Ssklower #define SF_DELACK 0x02			/* Ak, waiting to see if we xmit*/
1921497Ssklower #define SF_HI	0x04			/* Show headers on input */
2021497Ssklower #define SF_HO	0x08			/* Show headers on output */
2121497Ssklower #define SF_PI	0x10			/* Packet (datagram) interface */
2221497Ssklower 	u_short s_mtu;			/* Max packet size for this stream */
2321497Ssklower /* use sequence fields in headers to store sequence numbers for this
2421497Ssklower    connection */
2521497Ssklower 	struct	spidp s_shdr;		/* prototype header to transmit */
2621497Ssklower #define s_cc s_shdr.si_cc		/* connection control (for EM bit) */
2721497Ssklower #define s_dt s_shdr.si_dt		/* datastream type */
2821497Ssklower #define s_sid s_shdr.si_sid		/* source connection identifier */
2921497Ssklower #define s_did s_shdr.si_did		/* destination connection identifier */
3021497Ssklower #define s_seq s_shdr.si_seq		/* sequence number */
3121497Ssklower #define s_ack s_shdr.si_ack		/* acknowledge number */
3221497Ssklower #define s_alo s_shdr.si_alo		/* allocation number */
3321497Ssklower #define s_dport s_shdr.si_dna.x_port	/* where we are sending */
3421497Ssklower 	struct sphdr s_rhdr;		/* last received header (in effect!)*/
3521497Ssklower 	u_short s_rack;			/* their acknowledge number */
3621497Ssklower 	u_short s_ralo;			/* their allocation number */
3721497Ssklower 	u_short s_snt;			/* highest packet # we have sent */
3821497Ssklower 
3921497Ssklower /* timeout stuff */
4021497Ssklower 	short	s_idle;			/* time idle */
4121497Ssklower 	short	s_timer[TCPT_NTIMERS];	/* timers */
4221497Ssklower 	short	s_rxtshift;		/* log(2) of rexmt exp. backoff */
4321497Ssklower 	u_short	s_rtseq;		/* packet being timed */
4421497Ssklower 	short	s_rtt;			/* timer for round trips */
4521497Ssklower 	short	s_srtt;			/* averaged timer */
4621497Ssklower 	char	s_force;		/* which timer expired */
4721497Ssklower 
4821497Ssklower /* out of band data */
4921497Ssklower 	char	s_oobflags;
5021497Ssklower #define SF_SOOB	0x08			/* sending out of band data */
5121497Ssklower #define SF_IOOB 0x10			/* receiving out of band data */
5221497Ssklower 	char	s_iobc;			/* input characters */
5321497Ssklower /* debug stuff */
5421497Ssklower 	u_short	s_want;			/* Last candidate for sending */
5521497Ssklower };
5621497Ssklower 
5721497Ssklower #define	nstosppcb(np)	((struct sppcb *)(np)->nsp_pcb)
5821497Ssklower #define	sotosppcb(so)	(nstosppcb(sotonspcb(so)))
5921497Ssklower 
6021497Ssklower struct	spp_istat {
6121497Ssklower 	short	hdrops;
6221497Ssklower 	short	badsum;
6321497Ssklower 	short	badlen;
6421497Ssklower 	short	slotim;
6521497Ssklower 	short	fastim;
6621497Ssklower 	short	nonucn;
6721497Ssklower 	short	noconn;
6821497Ssklower 	short	notme;
6921497Ssklower 	short	wrncon;
7021497Ssklower 	short	bdreas;
7121497Ssklower 	short	gonawy;
72*23978Ssklower 	short	notyet;
73*23978Ssklower 	short	lstdup;
7421497Ssklower };
7521497Ssklower 
7621497Ssklower #ifdef KERNEL
7721497Ssklower struct spp_istat spp_istat;
7821497Ssklower u_short spp_iss;
7921497Ssklower extern struct sppcb *spp_close(), *spp_disconnect(),
8021497Ssklower 	*spp_usrclosed(), *spp_timers(), *spp_drop();
8121497Ssklower #endif
8221497Ssklower 
8321497Ssklower #define	SPP_ISSINCR	128
8421497Ssklower /*
8521497Ssklower  * SPP sequence numbers are 16 bit integers operated
8621497Ssklower  * on with modular arithmetic.  These macros can be
8721497Ssklower  * used to compare such integers.
8821497Ssklower  */
8921497Ssklower #define	SSEQ_LT(a,b)	(((short)((a)-(b))) < 0)
9021497Ssklower #define	SSEQ_LEQ(a,b)	(((short)((a)-(b))) <= 0)
9121497Ssklower #define	SSEQ_GT(a,b)	(((short)((a)-(b))) > 0)
9221497Ssklower #define	SSEQ_GEQ(a,b)	(((short)((a)-(b))) >= 0)
93