Rev 2300 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2300 | Rev 2301 | ||
---|---|---|---|
Line 11... | Line 11... | ||
11 | ;; GNU GENERAL PUBLIC LICENSE ;; |
11 | ;; GNU GENERAL PUBLIC LICENSE ;; |
12 | ;; Version 2, June 1991 ;; |
12 | ;; Version 2, June 1991 ;; |
13 | ;; ;; |
13 | ;; ;; |
14 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
14 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 15... | Line 15... | ||
15 | 15 | ||
Line 16... | Line 16... | ||
16 | $Revision: 2300 $ |
16 | $Revision: 2301 $ |
Line 17... | Line 17... | ||
17 | 17 | ||
Line 235... | Line 235... | ||
235 | ;----------------------------------------------------------------- |
235 | ;----------------------------------------------------------------- |
236 | ; |
236 | ; |
237 | ; Socket API (function 74) |
237 | ; Socket API (function 74) |
238 | ; |
238 | ; |
239 | ;----------------------------------------------------------------- |
239 | ;----------------------------------------------------------------- |
- | 240 | align 16 |
|
- | 241 | sock_sysfn_table: |
|
- | 242 | dd SOCKET_open ; 0 |
|
- | 243 | dd SOCKET_close ; 1 |
|
- | 244 | dd SOCKET_bind ; 2 |
|
- | 245 | dd SOCKET_listen ; 3 |
|
- | 246 | dd SOCKET_connect ; 4 |
|
- | 247 | dd SOCKET_accept ; 5 |
|
- | 248 | dd SOCKET_send ; 6 |
|
- | 249 | dd SOCKET_receive ; 7 |
|
- | 250 | dd SOCKET_set_opt ; 8 |
|
- | 251 | dd SOCKET_get_opt ; 9 |
|
- | 252 | ||
- | 253 | SOCKET_SYSFUNCS = ($ - sock_sysfn_table)/4 |
|
- | 254 | ||
- | 255 | ||
240 | align 4 |
256 | align 4 |
241 | sys_socket: |
257 | sys_socket: |
242 | cmp ebx, 9 ; highest possible number |
258 | cmp ebx, SOCKET_SYSFUNCS-1 |
243 | ja @f |
259 | ja @f |
244 | jmp dword [sock_sysfn_table + 4*ebx] |
260 | jmp dword [sock_sysfn_table + 4*ebx] |
245 | @@: |
261 | @@: |
246 | cmp ebx, 255 |
262 | cmp ebx, 255 |
247 | jz SOCKET_debug |
263 | jz SOCKET_debug |
Line 250... | Line 266... | ||
250 | DEBUGF 1,"socket error\n" |
266 | DEBUGF 1,"socket error\n" |
251 | mov dword [esp+32], -1 |
267 | mov dword [esp+32], -1 |
Line 252... | Line 268... | ||
252 | 268 | ||
Line 253... | Line 269... | ||
253 | ret |
269 | ret |
254 | - | ||
255 | align 4 |
- | |
256 | sock_sysfn_table: |
- | |
257 | dd SOCKET_open ; 0 |
- | |
258 | dd SOCKET_close ; 1 |
- | |
259 | dd SOCKET_bind ; 2 |
- | |
260 | dd SOCKET_listen ; 3 |
- | |
261 | dd SOCKET_connect ; 4 |
- | |
262 | dd SOCKET_accept ; 5 |
- | |
263 | dd SOCKET_send ; 6 |
- | |
264 | dd SOCKET_receive ; 7 |
- | |
Line 265... | Line 270... | ||
265 | dd SOCKET_set_opt ; 8 |
270 | |
266 | dd SOCKET_get_opt ; 9 |
271 | |
267 | 272 | ||
268 | ;----------------------------------------------------------------- |
273 | ;----------------------------------------------------------------- |
Line 393... | Line 398... | ||
393 | DEBUGF 1,"af_inet4\n" |
398 | DEBUGF 1,"af_inet4\n" |
Line 394... | Line 399... | ||
394 | 399 | ||
395 | cmp esi, 6 |
400 | cmp esi, 6 |
Line 396... | Line 401... | ||
396 | jb s_error |
401 | jb s_error |
397 | 402 | ||
Line 398... | Line 403... | ||
398 | push word [edx + 2] |
403 | pushw [edx + 2] |
399 | pop word [eax + UDP_SOCKET.LocalPort] |
404 | pop [eax + UDP_SOCKET.LocalPort] |
Line 400... | Line 405... | ||
400 | 405 | ||
401 | push dword [edx + 4] |
406 | pushd [edx + 4] |
402 | pop [eax + IP_SOCKET.LocalIP] |
407 | pop [eax + IP_SOCKET.LocalIP] |
Line 461... | Line 466... | ||
461 | align 4 |
466 | align 4 |
462 | .udp: |
467 | .udp: |
463 | lea ebx, [eax + SOCKET.lock] |
468 | lea ebx, [eax + SOCKET.lock] |
464 | call wait_mutex |
469 | call wait_mutex |
Line 465... | Line 470... | ||
465 | 470 | ||
466 | push word [edx + 2] |
471 | pushw [edx + 2] |
Line 467... | Line 472... | ||
467 | pop [eax + UDP_SOCKET.RemotePort] |
472 | pop [eax + UDP_SOCKET.RemotePort] |
468 | 473 | ||
Line 469... | Line 474... | ||
469 | push dword [edx + 4] |
474 | pushd [edx + 4] |
470 | pop [eax + IP_SOCKET.RemoteIP] |
475 | pop [eax + IP_SOCKET.RemoteIP] |
471 | 476 | ||
Line 487... | Line 492... | ||
487 | align 4 |
492 | align 4 |
488 | .tcp: |
493 | .tcp: |
489 | lea ebx, [eax + SOCKET.lock] |
494 | lea ebx, [eax + SOCKET.lock] |
490 | call wait_mutex |
495 | call wait_mutex |
Line 491... | Line 496... | ||
491 | 496 | ||
492 | push word [edx + 2] |
497 | pushw [edx + 2] |
Line 493... | Line 498... | ||
493 | pop [eax + TCP_SOCKET.RemotePort] |
498 | pop [eax + TCP_SOCKET.RemotePort] |
494 | 499 | ||
Line 495... | Line 500... | ||
495 | push dword [edx + 4] |
500 | pushd [edx + 4] |
496 | pop [eax + IP_SOCKET.RemoteIP] |
501 | pop [eax + IP_SOCKET.RemoteIP] |
497 | 502 | ||
Line 530... | Line 535... | ||
530 | align 4 |
535 | align 4 |
531 | .ip: |
536 | .ip: |
532 | lea ebx, [eax + SOCKET.lock] |
537 | lea ebx, [eax + SOCKET.lock] |
533 | call wait_mutex |
538 | call wait_mutex |
Line 534... | Line 539... | ||
534 | 539 | ||
535 | push dword [edx + 4] |
540 | pushd [edx + 4] |
Line 536... | Line 541... | ||
536 | pop dword [eax + IP_SOCKET.RemoteIP] |
541 | pop [eax + IP_SOCKET.RemoteIP] |
537 | 542 | ||
538 | push eax |
543 | push eax |