|
|
1.1 ! root 1: /* tcp_var.h 6.1 83/07/29 */ ! 2: ! 3: /* ! 4: * Kernel variables for tcp. ! 5: */ ! 6: ! 7: /* ! 8: * Tcp control block, one per tcp; fields: ! 9: */ ! 10: struct tcpcb { ! 11: struct tcpiphdr *seg_next; /* sequencing queue */ ! 12: struct tcpiphdr *seg_prev; ! 13: struct socket *t_socket; ! 14: short t_state; /* state of this connection */ ! 15: short t_timer[TCPT_NTIMERS]; /* tcp timers */ ! 16: short t_rxtshift; /* log(2) of rexmt exp. backoff */ ! 17: struct mbuf *t_tcpopt; /* tcp options */ ! 18: struct mbuf *t_ipopt; /* ip options */ ! 19: short t_maxseg; /* maximum segment size */ ! 20: char t_force; /* 1 if forcing out a byte */ ! 21: u_char t_flags; ! 22: #define TF_ACKNOW 0x01 /* ack peer immediately */ ! 23: #define TF_DELACK 0x02 /* ack, but try to delay it */ ! 24: #define TF_DONTKEEP 0x04 /* don't use keep-alives */ ! 25: #define TF_NOOPT 0x08 /* don't use tcp options */ ! 26: struct tcpiphdr *t_template; /* skeletal packet for transmit */ ! 27: struct inpcb *t_inpcb; /* back pointer to internet pcb */ ! 28: /* ! 29: * The following fields are used as in the protocol specification. ! 30: * See RFC783, Dec. 1981, page 21. ! 31: */ ! 32: /* send sequence variables */ ! 33: tcp_seq snd_una; /* send unacknowledged */ ! 34: tcp_seq snd_nxt; /* send next */ ! 35: tcp_seq snd_up; /* send urgent pointer */ ! 36: tcp_seq snd_wl1; /* window update seg seq number */ ! 37: tcp_seq snd_wl2; /* window update seg ack number */ ! 38: tcp_seq iss; /* initial send sequence number */ ! 39: u_short snd_wnd; /* send window */ ! 40: /* receive sequence variables */ ! 41: short rcv_wnd; /* receive window */ ! 42: tcp_seq rcv_nxt; /* receive next */ ! 43: tcp_seq rcv_up; /* receive urgent pointer */ ! 44: tcp_seq irs; /* initial receive sequence number */ ! 45: /* ! 46: * Additional variables for this implementation. ! 47: */ ! 48: /* receive variables */ ! 49: tcp_seq rcv_adv; /* advertised window */ ! 50: /* retransmit variables */ ! 51: tcp_seq snd_max; /* highest sequence number sent ! 52: used to recognize retransmits */ ! 53: /* transmit timing stuff */ ! 54: short t_idle; /* inactivity time */ ! 55: short t_rtt; /* round trip time */ ! 56: tcp_seq t_rtseq; /* sequence number being timed */ ! 57: float t_srtt; /* smoothed round-trip time */ ! 58: /* out-of-band data */ ! 59: char t_oobflags; /* have some */ ! 60: char t_iobc; /* input character */ ! 61: #define TCPOOB_HAVEDATA 0x01 ! 62: }; ! 63: ! 64: struct tcpstat { ! 65: int tcps_badsum; ! 66: int tcps_badoff; ! 67: int tcps_hdrops; ! 68: int tcps_badsegs; ! 69: int tcps_unack; ! 70: int tcps_timeouts[4]; /* timeouts while ESTABLISHED */ ! 71: int tcps_duplicates; /* other side retransmitting */ ! 72: int tcps_delayed; /* packets out of sequence? */ ! 73: }; ! 74: ! 75: #ifdef KERNEL ! 76: struct tcpstat tcpstat; /* tcp statistics */ ! 77: struct tcpiphdr *tcp_template(); ! 78: struct tcpcb *tcp_close(), *tcp_drop(); ! 79: struct tcpcb *tcp_timers(), *tcp_disconnect(), *tcp_usrclosed(); ! 80: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.