|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1982, 1986 Regents of the University of California. ! 3: * All rights reserved. The Berkeley software License Agreement ! 4: * specifies the terms and conditions for redistribution. ! 5: * ! 6: * @(#)tcp_var.h 7.1 (Berkeley) 6/5/86 ! 7: */ ! 8: ! 9: /* ! 10: * Kernel variables for tcp. ! 11: */ ! 12: ! 13: /* ! 14: * Tcp control block, one per tcp; fields: ! 15: */ ! 16: struct tcpcb { ! 17: struct tcpiphdr *seg_next; /* sequencing queue */ ! 18: struct tcpiphdr *seg_prev; ! 19: short t_state; /* state of this connection */ ! 20: short t_timer[TCPT_NTIMERS]; /* tcp timers */ ! 21: short t_rxtshift; /* log(2) of rexmt exp. backoff */ ! 22: struct mbuf *t_tcpopt; /* tcp options */ ! 23: u_short t_maxseg; /* maximum segment size */ ! 24: char t_force; /* 1 if forcing out a byte */ ! 25: u_char t_flags; ! 26: #define TF_ACKNOW 0x01 /* ack peer immediately */ ! 27: #define TF_DELACK 0x02 /* ack, but try to delay it */ ! 28: #define TF_NODELAY 0x04 /* don't delay packets to coalesce */ ! 29: #define TF_NOOPT 0x08 /* don't use tcp options */ ! 30: #define TF_SENTFIN 0x10 /* have sent FIN */ ! 31: struct tcpiphdr *t_template; /* skeletal packet for transmit */ ! 32: struct inpcb *t_inpcb; /* back pointer to internet pcb */ ! 33: /* ! 34: * The following fields are used as in the protocol specification. ! 35: * See RFC783, Dec. 1981, page 21. ! 36: */ ! 37: /* send sequence variables */ ! 38: tcp_seq snd_una; /* send unacknowledged */ ! 39: tcp_seq snd_nxt; /* send next */ ! 40: tcp_seq snd_up; /* send urgent pointer */ ! 41: tcp_seq snd_wl1; /* window update seg seq number */ ! 42: tcp_seq snd_wl2; /* window update seg ack number */ ! 43: tcp_seq iss; /* initial send sequence number */ ! 44: u_short snd_wnd; /* send window */ ! 45: /* receive sequence variables */ ! 46: u_short rcv_wnd; /* receive window */ ! 47: tcp_seq rcv_nxt; /* receive next */ ! 48: tcp_seq rcv_up; /* receive urgent pointer */ ! 49: tcp_seq irs; /* initial receive sequence number */ ! 50: /* ! 51: * Additional variables for this implementation. ! 52: */ ! 53: /* receive variables */ ! 54: tcp_seq rcv_adv; /* advertised window */ ! 55: /* retransmit variables */ ! 56: tcp_seq snd_max; /* highest sequence number sent ! 57: * used to recognize retransmits ! 58: */ ! 59: /* congestion control (for source quench) */ ! 60: u_short snd_cwnd; /* congestion-controlled window */ ! 61: /* transmit timing stuff */ ! 62: short t_idle; /* inactivity time */ ! 63: short t_rtt; /* round trip time */ ! 64: u_short max_rcvd; /* most peer has sent into window */ ! 65: tcp_seq t_rtseq; /* sequence number being timed */ ! 66: float t_srtt; /* smoothed round-trip time */ ! 67: u_short max_sndwnd; /* largest window peer has offered */ ! 68: /* out-of-band data */ ! 69: char t_oobflags; /* have some */ ! 70: char t_iobc; /* input character */ ! 71: #define TCPOOB_HAVEDATA 0x01 ! 72: #define TCPOOB_HADDATA 0x02 ! 73: }; ! 74: ! 75: #define intotcpcb(ip) ((struct tcpcb *)(ip)->inp_ppcb) ! 76: #define sototcpcb(so) (intotcpcb(sotoinpcb(so))) ! 77: ! 78: struct tcpstat { ! 79: int tcps_badsum; ! 80: int tcps_badoff; ! 81: int tcps_hdrops; ! 82: int tcps_badsegs; ! 83: int tcps_unack; ! 84: }; ! 85: ! 86: #ifdef KERNEL ! 87: struct inpcb tcb; /* head of queue of active tcpcb's */ ! 88: struct tcpstat tcpstat; /* tcp statistics */ ! 89: struct tcpiphdr *tcp_template(); ! 90: struct tcpcb *tcp_close(), *tcp_drop(); ! 91: struct tcpcb *tcp_timers(), *tcp_disconnect(), *tcp_usrclosed(); ! 92: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.