1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #ifndef _TCP_SOCK_H
23 #define _TCP_SOCK_H
24
25 #define SOCK_ARRAY_SIZE 64
26
27
28
29
30 struct sock
31 {
32 struct options *opt;
33 unsigned long wmem_alloc;
34 unsigned long rmem_alloc;
35 unsigned long send_seq;
36 unsigned long acked_seq;
37 unsigned long copied_seq;
38 unsigned long rcv_ack_seq;
39 unsigned long window_seq;
40 unsigned long fin_seq;
41 unsigned long inuse:1, dead:1, urginline:1,
42 intr:1, blog:1, done:1, reuse:1, keepopen:1, linger:1,
43 delay_acks:1, timeout:3, destroy:1, ack_timed:1, no_check:1,
44 exp_growth:1;
45 int proc;
46 volatile struct sock *next;
47 volatile struct sock *pair;
48 struct sk_buff *send_tail;
49 struct sk_buff *send_head;
50 struct sk_buff *back_log;
51 long retransmits;
52 struct sk_buff *wback, *wfront, *rqueue;
53 struct proto *prot;
54 struct wait_queue **sleep;
55 unsigned long daddr;
56 unsigned long saddr;
57 unsigned short max_unacked;
58 unsigned short window;
59 unsigned short bytes_rcv;
60 unsigned short mtu;
61 unsigned short num;
62 unsigned short cong_window;
63 unsigned short packets_out;
64 unsigned short urg;
65 unsigned short shutdown;
66 short rtt;
67 short err;
68 unsigned char protocol;
69 unsigned char state;
70 unsigned char ack_backlog;
71 unsigned char max_ack_backlog;
72 unsigned char priority;
73 struct tcp_header dummy_th;
74 struct timer time_wait;
75 };
76
77 struct proto
78 {
79 void *(*wmalloc)(volatile struct sock *sk, unsigned long size, int force);
80 void *(*rmalloc)(volatile struct sock *sk, unsigned long size, int force);
81 void (*wfree)(volatile struct sock *sk, void *mem, unsigned long size);
82 void (*rfree)(volatile struct sock *sk, void *mem, unsigned long size);
83 unsigned long (*rspace)(volatile struct sock *sk);
84 unsigned long (*wspace)(volatile struct sock *sk);
85 void (*close)(volatile struct sock *sk, int timeout);
86 int (*read)(volatile struct sock *sk, unsigned char *to, int len,
87 int nonblock, unsigned flags);
88 int (*write)(volatile struct sock *sk, unsigned char *to, int len,
89 int nonblock, unsigned flags);
90 int (*sendto) (volatile struct sock *sk, unsigned char *from, int len,
91 int noblock, unsigned flags, struct sockaddr_in *usin,
92 int addr_len);
93 int (*recvfrom) (volatile struct sock *sk, unsigned char *from, int len,
94 int noblock, unsigned flags, struct sockaddr_in *usin,
95 int *addr_len);
96 int (*build_header) (struct sk_buff *skb, unsigned long saddr,
97 unsigned long daddr, struct device **dev, int type,
98 struct options *opt, int len);
99 int (*connect) (volatile struct sock *sk, struct sockaddr_in *usin,
100 int addr_len);
101 volatile struct sock *(*accept) (volatile struct sock *sk, int flags);
102 void (*queue_xmit) (volatile struct sock *sk, struct device *dev,
103 struct sk_buff *skb, int free);
104 void (*retransmit) (volatile struct sock *sk, int all);
105 void (*write_wakeup) (volatile struct sock *sk);
106 void (*read_wakeup) (volatile struct sock *sk);
107 int (*rcv)(struct sk_buff *buff, struct device *dev, struct options *opt,
108 unsigned long daddr, unsigned short len,
109 unsigned long saddr, int redo, struct ip_protocol *protocol);
110 int (*select)(volatile struct sock *sk, int which, select_table *wait);
111 int (*ioctl) (volatile struct sock *sk, int cmd, unsigned long arg);
112 int (*init) (volatile struct sock *sk);
113 unsigned short max_header;
114 unsigned long retransmits;
115 volatile struct sock *sock_array[SOCK_ARRAY_SIZE];
116 };
117
118 #define TIME_WRITE 1
119 #define TIME_CLOSE 2
120 #define TIME_KEEPOPEN 3
121 #define TIME_DESTROY 4
122 #define TIME_DONE 5
123 #define SOCK_DESTROY_TIME 1000
124
125
126 #define FREE_READ 1
127 #define FREE_WRITE 0
128
129 struct sk_buff
130 {
131 struct sk_buff *next;
132 struct sk_buff *prev;
133 struct sk_buff *link3;
134 volatile struct sock *sk;
135 unsigned long when;
136 struct device *dev;
137 void *mem_addr;
138 union
139 {
140 struct tcp_header *th;
141 struct enet_header *eth;
142 struct ip_header *iph;
143 struct udp_header *uh;
144 struct arp *arp;
145 unsigned char *raw;
146 unsigned long seq;
147 } h;
148 unsigned long mem_len;
149 unsigned long len;
150 unsigned long saddr;
151 unsigned long daddr;
152 unsigned long acked:1,used:1,free:1,arp:1, urg_used:1, lock:1;
153 };
154
155 #define PROT_SOCK 1024
156 #define SK_WMEM_MAX 8192
157 #define SK_RMEM_MAX 32767
158 #define SHUTDOWN_MASK 3
159 #define RCV_SHUTDOWN 1
160 #define SEND_SHUTDOWN 2
161
162 void destroy_sock (volatile struct sock *sk);
163 unsigned short get_new_socknum (struct proto *, unsigned short);
164 void put_sock (unsigned short, volatile struct sock *);
165 void release_sock (volatile struct sock *sk);
166 volatile struct sock *get_sock(struct proto *, unsigned short, unsigned long,
167 unsigned short, unsigned long);
168 void print_sk (volatile struct sock *);
169 void print_skb (struct sk_buff *);
170 void *sock_wmalloc(volatile struct sock *sk, unsigned long size, int force);
171 void *sock_rmalloc(volatile struct sock *sk, unsigned long size, int force);
172 void sock_wfree(volatile struct sock *sk, void *mem, unsigned long size);
173 void sock_rfree(volatile struct sock *sk, void *mem, unsigned long size);
174 unsigned long sock_rspace(volatile struct sock *sk);
175 unsigned long sock_wspace(volatile struct sock *sk);
176 void free_skb (struct sk_buff *skb, int rw);
177 void lock_skb (struct sk_buff *skb);
178 void unlock_skb (struct sk_buff *skb, int rw);
179
180 void dummy_routine(void *, ... );
181
182 #endif