Rev 1529 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1159 | hidnplayr | 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ;; ;; |
||
1514 | hidnplayr | 3 | ;; Copyright (C) KolibriOS team 2004-2010. All rights reserved. ;; |
1159 | hidnplayr | 4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
||
6 | ;; SOCKET.INC ;; |
||
7 | ;; ;; |
||
1529 | hidnplayr | 8 | ;; Written by hidnplayr@kolibrios.org, ;; |
9 | ;; and Clevermouse. ;; |
||
1159 | hidnplayr | 10 | ;; ;; |
1529 | hidnplayr | 11 | ;; Based on code by mike.dld ;; |
1159 | hidnplayr | 12 | ;; ;; |
1529 | hidnplayr | 13 | ;; GNU GENERAL PUBLIC LICENSE ;; |
14 | ;; Version 2, June 1991 ;; |
||
15 | ;; ;; |
||
1159 | hidnplayr | 16 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
17 | |||
1206 | hidnplayr | 18 | $Revision: 1533 $ |
1159 | hidnplayr | 19 | |
1514 | hidnplayr | 20 | virtual at 0 |
1249 | hidnplayr | 21 | |
1514 | hidnplayr | 22 | SOCKET: |
23 | .NextPtr dd ? ; pointer to next socket in list |
||
24 | .PrevPtr dd ? ; pointer to previous socket in list |
||
25 | .Number dd ? ; socket number |
||
1249 | hidnplayr | 26 | |
1514 | hidnplayr | 27 | .lock dd ? ; lock mutex |
1249 | hidnplayr | 28 | |
1514 | hidnplayr | 29 | .PID dd ? ; application process id |
30 | .Domain dd ? ; INET/UNIX/.. |
||
31 | .Type dd ? ; RAW/UDP/TCP/... |
||
32 | .Protocol dd ? ; ICMP/IPv4/ARP/ |
||
33 | .errorcode dd ? |
||
1249 | hidnplayr | 34 | |
1514 | hidnplayr | 35 | .options dd ? |
1529 | hidnplayr | 36 | .state dd ? |
1249 | hidnplayr | 37 | |
1514 | hidnplayr | 38 | .end: |
39 | end virtual |
||
1249 | hidnplayr | 40 | |
1514 | hidnplayr | 41 | virtual at SOCKET.end |
1254 | hidnplayr | 42 | |
1514 | hidnplayr | 43 | IP_SOCKET: |
1318 | hidnplayr | 44 | |
1514 | hidnplayr | 45 | .LocalIP dd ? |
46 | rd 3 ; for IPv6 addresses |
||
1249 | hidnplayr | 47 | |
1514 | hidnplayr | 48 | .RemoteIP dd ? |
49 | rd 3 ; for IPv6 addresses |
||
1249 | hidnplayr | 50 | |
1514 | hidnplayr | 51 | .end: |
52 | end virtual |
||
1159 | hidnplayr | 53 | |
1514 | hidnplayr | 54 | virtual at IP_SOCKET.end |
1249 | hidnplayr | 55 | |
1514 | hidnplayr | 56 | TCP_SOCKET: |
57 | |||
58 | .LocalPort dw ? ; In INET byte order |
||
59 | .RemotePort dw ? ; In INET byte order |
||
60 | |||
61 | .backlog dw ? ; Backlog |
||
62 | .backlog_cur dw ? ; current size of queue for un-accept-ed connections |
||
63 | |||
64 | .OrigRemoteIP dd ? ; original remote IP address (used to reset to LISTEN state) |
||
65 | .OrigRemotePort dw ? ; original remote port (used to reset to LISTEN state) |
||
66 | |||
67 | .t_state dd ? ; TCB state |
||
68 | .t_rxtshift dd ? |
||
69 | .t_rxtcur dd ? |
||
70 | .t_dupacks dd ? |
||
71 | .t_maxseg dd ? |
||
72 | .t_force dd ? |
||
73 | .t_flags dd ? |
||
74 | |||
75 | ;--------------- |
||
76 | ; RFC783 page 21 |
||
77 | |||
78 | ; send sequence |
||
79 | .SND_UNA dd ? ; sequence number of unack'ed sent Packets |
||
80 | .SND_NXT dd ? ; next send sequence number to use |
||
81 | .SND_UP dd ? |
||
82 | .SND_WL1 dd ? ; window minus one |
||
83 | .SND_WL2 dd ? ; |
||
84 | .ISS dd ? ; initial send sequence number |
||
85 | .SND_WND dd ? ; send window |
||
86 | |||
87 | ; receive sequence |
||
88 | .RCV_WND dw ? ; receive window |
||
89 | .RCV_NXT dd ? ; next receive sequence number to use |
||
90 | .RCV_UP dd ? |
||
91 | .IRS dd ? ; initial receive sequence number |
||
92 | |||
93 | ;--------------------- |
||
94 | ; Additional variables |
||
95 | |||
96 | ; receive variables |
||
97 | .RCV_ADV dd ? |
||
98 | |||
99 | ; retransmit variables |
||
100 | .SND_MAX dd ? |
||
101 | |||
102 | ; congestion control |
||
103 | .SND_CWND dd ? |
||
104 | .SND_SSTHRESH dd ? |
||
105 | |||
106 | ;---------------------- |
||
107 | ; Transmit timing stuff |
||
108 | .t_idle dd ? |
||
109 | .t_rtt dd ? |
||
110 | .t_rtseq dd ? |
||
111 | .t_srtt dd ? |
||
112 | .t_rttvar dd ? |
||
113 | .t_rttmin dd ? |
||
114 | .max_sndwnd dd ? |
||
115 | |||
116 | ;----------------- |
||
117 | ; Out-of-band data |
||
118 | .t_oobflags dd ? |
||
119 | .t_iobc dd ? |
||
120 | .t_softerror dd ? |
||
121 | |||
122 | |||
123 | ;--------- |
||
124 | ; RFC 1323 |
||
125 | .SND_SCALE db ? ; Scale factor |
||
126 | .RCV_SCALE db ? |
||
127 | .request_r_scale db ? |
||
128 | .requested_s_scale dd ? |
||
129 | |||
130 | .ts_recent dd ? |
||
131 | .ts_recent_age dd ? |
||
132 | .last_ack_sent dd ? |
||
133 | |||
1519 | hidnplayr | 134 | |
135 | ;------- |
||
136 | ; Timers |
||
1529 | hidnplayr | 137 | .timer_retransmission dw ? ; rexmt |
1519 | hidnplayr | 138 | .timer_ack dw ? |
139 | .timer_persist dw ? |
||
1529 | hidnplayr | 140 | .timer_keepalive dw ? ; keepalive/syn timeout |
141 | .timer_timed_wait dw ? ; also used as 2msl timer |
||
1519 | hidnplayr | 142 | |
1249 | hidnplayr | 143 | .end: |
1514 | hidnplayr | 144 | end virtual |
1249 | hidnplayr | 145 | |
1514 | hidnplayr | 146 | virtual at IP_SOCKET.end |
1249 | hidnplayr | 147 | |
1514 | hidnplayr | 148 | UDP_SOCKET: |
1249 | hidnplayr | 149 | |
1514 | hidnplayr | 150 | .LocalPort dw ? ; In INET byte order |
151 | .RemotePort dw ? ; In INET byte order |
||
152 | .firstpacket db ? |
||
1249 | hidnplayr | 153 | |
154 | .end: |
||
1514 | hidnplayr | 155 | end virtual |
1249 | hidnplayr | 156 | |
1514 | hidnplayr | 157 | virtual at IP_SOCKET.end |
1249 | hidnplayr | 158 | |
1514 | hidnplayr | 159 | ICMP_SOCKET: |
160 | |||
161 | .Identifier dw ? ; |
||
162 | |||
163 | .end: |
||
164 | end virtual |
||
165 | |||
1529 | hidnplayr | 166 | struc RING_BUFFER { |
167 | .start_ptr dd ? ; Pointer to start of buffer |
||
168 | .end_ptr dd ? ; pointer to end of buffer |
||
169 | .read_ptr dd ? ; Read pointer |
||
170 | .write_ptr dd ? ; Write pointer |
||
171 | .size dd ? ; Number of bytes buffered |
||
1533 | hidnplayr | 172 | .end: |
1529 | hidnplayr | 173 | } |
1514 | hidnplayr | 174 | |
1529 | hidnplayr | 175 | virtual at 0 |
176 | |||
177 | RING_BUFFER RING_BUFFER |
||
178 | |||
179 | end virtual |
||
180 | |||
181 | virtual at TCP_SOCKET.end |
||
182 | |||
183 | STREAM_SOCKET: |
||
1533 | hidnplayr | 184 | .rcv rd RING_BUFFER.end/4 |
185 | .snd rd RING_BUFFER.end/4 |
||
1529 | hidnplayr | 186 | .end: |
187 | |||
188 | end virtual |
||
189 | |||
190 | |||
1274 | hidnplayr | 191 | struct socket_queue_entry |
192 | .data_ptr dd ? |
||
1514 | hidnplayr | 193 | .buf_ptr dd ? |
1274 | hidnplayr | 194 | .data_size dd ? |
195 | .size: |
||
196 | ends |
||
197 | |||
1514 | hidnplayr | 198 | |
1249 | hidnplayr | 199 | SOCKETBUFFSIZE equ 4096 ; in bytes |
1514 | hidnplayr | 200 | |
1249 | hidnplayr | 201 | SOCKET_QUEUE_SIZE equ 10 ; maximum number ofincoming packets queued for 1 socket |
1514 | hidnplayr | 202 | ; the incoming packet queue for sockets is placed in the socket struct itself, at this location from start |
203 | SOCKET_QUEUE_LOCATION equ SOCKETBUFFSIZE - SOCKET_QUEUE_SIZE*socket_queue_entry.size - queue.data |
||
1249 | hidnplayr | 204 | |
1159 | hidnplayr | 205 | uglobal |
1514 | hidnplayr | 206 | net_sockets rd 4 |
1159 | hidnplayr | 207 | last_UDP_port dw ? ; These values give the number of the last used ephemeral port |
208 | last_TCP_port dw ? ; |
||
209 | endg |
||
210 | |||
211 |