|
|
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.