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