|
|
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: short t_state; /* state of this connection */ ! 14: short t_timer[TCPT_NTIMERS]; /* tcp timers */ ! 15: short t_rxtshift; /* log(2) of rexmt exp. backoff */ ! 16: struct mbuf *t_tcpopt; /* tcp options */ ! 17: struct mbuf *t_ipopt; /* ip options */ ! 18: short t_maxseg; /* maximum segment size */ ! 19: char t_force; /* 1 if forcing out a byte */ ! 20: u_char t_flags; ! 21: #define TF_ACKNOW 0x01 /* ack peer immediately */ ! 22: #define TF_DELACK 0x02 /* ack, but try to delay it */ ! 23: #define TF_DONTKEEP 0x04 /* don't use keep-alives */ ! 24: #define TF_NOOPT 0x08 /* don't use tcp options */ ! 25: struct tcpiphdr *t_template; /* skeletal packet for transmit */ ! 26: struct inpcb *t_inpcb; /* back pointer to internet pcb */ ! 27: /* ! 28: * The following fields are used as in the protocol specification. ! 29: * See RFC783, Dec. 1981, page 21. ! 30: */ ! 31: /* send sequence variables */ ! 32: tcp_seq snd_una; /* send unacknowledged */ ! 33: tcp_seq snd_nxt; /* send next */ ! 34: tcp_seq snd_up; /* send urgent pointer */ ! 35: tcp_seq snd_wl1; /* window update seg seq number */ ! 36: tcp_seq snd_wl2; /* window update seg ack number */ ! 37: tcp_seq iss; /* initial send sequence number */ ! 38: u_short snd_wnd; /* send window */ ! 39: /* receive sequence variables */ ! 40: short rcv_wnd; /* receive window */ ! 41: tcp_seq rcv_nxt; /* receive next */ ! 42: tcp_seq rcv_up; /* receive urgent pointer */ ! 43: tcp_seq irs; /* initial receive sequence number */ ! 44: /* ! 45: * Additional variables for this implementation. ! 46: */ ! 47: /* receive variables */ ! 48: tcp_seq rcv_adv; /* advertised window */ ! 49: /* retransmit variables */ ! 50: tcp_seq snd_max; /* highest sequence number sent ! 51: used to recognize retransmits */ ! 52: /* transmit timing stuff */ ! 53: short t_idle; /* inactivity time */ ! 54: short t_rtt; /* round trip time */ ! 55: tcp_seq t_rtseq; /* sequence number being timed */ ! 56: float t_srtt; /* smoothed round-trip time */ ! 57: /* out-of-band data */ ! 58: char t_oobflags; /* have some */ ! 59: char t_iobc; /* input character */ ! 60: #define TCPOOB_HAVEDATA 0x01 ! 61: }; ! 62: ! 63: #define intotcpcb(ip) ((struct tcpcb *)(ip)->inp_ppcb) ! 64: #define sototcpcb(so) (intotcpcb(sotoinpcb(so))) ! 65: ! 66: struct tcpstat { ! 67: int tcps_badsum; ! 68: int tcps_badoff; ! 69: int tcps_hdrops; ! 70: int tcps_badsegs; ! 71: int tcps_unack; ! 72: }; ! 73: ! 74: #ifdef KERNEL ! 75: struct inpcb tcb; /* head of queue of active tcpcb's */ ! 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.