-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsocket.asm
More file actions
73 lines (53 loc) · 1.31 KB
/
Copy pathsocket.asm
File metadata and controls
73 lines (53 loc) · 1.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
%ifndef SOCKET_ASM
%define SOCKET_ASM
%include "error.asm"
;-----------------------------
;
; HANDLES "BLOCKING" HTTPS CONNECTION
;-----------------------------
%define MAXIMUM_QUEUE_BEFORE_AUTO_REJECT 1000
%define MAXIMUM_ALLOWED_CHARACTER_LENGTH_IN_REQ_LINE 1024
section .bss
sockaddr resb 16
section .data
socklen dq 16
section .text
;<> rax->fd <> rdi, rsi, rdx, rax
socket:
mov rdi, OPTION_AF_INET ;use IPv4
mov rsi, OPTION_SOCK_STREAM
mov rdx, OPTION_IPPROTO_TCP
mov rax, SYS_SOCKET
syscall
cmp rax, -1
jle showq_fs_error ; socket returns errors similar to fs errors
ret
;int->fd <> !->binds socket to 0.0.0.0:3009 <> rsi, rax, rdx
bind:
mov rsi, sockaddr
mov rax, 0x00000000C10B0002 ; 0.0.0.0, 3009, OPTION_AF_INET
mov [rsi], rax;
mov rdx, 16
mov rax, SYS_BIND
syscall
cmp rax, -1
jle showq_bind_error
ret
;int->fd <> !->sets socket to passive listening <> rsi, rax
listen:
mov rsi, MAXIMUM_QUEUE_BEFORE_AUTO_REJECT
mov rax, SYS_LISTEN
syscall
cmp rax, -1
jle showq_listen_error
ret
;int->fd <> rax-> client connection descriptor <> rsi, rdx, rax
accept:
mov rsi, sockaddr
mov rdx, socklen
mov rax, SYS_ACCEPT
syscall
cmp rax, -1
jle show_accept_error
ret
%endif