@salang/sa 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/sa.js +19 -1
- package/package.json +8 -7
- package/sa_std/alloc/layout.sal +12 -0
- package/sa_std/alloc/prelude.sa +1 -0
- package/sa_std/alloc/prelude.sal +1 -0
- package/sa_std/alloc/string.sa +3 -0
- package/sa_std/alloc/vec.sa +684 -0
- package/sa_std/alloc/vec.sal +4 -0
- package/sa_std/any.sa +130 -0
- package/sa_std/any.sal +23 -0
- package/sa_std/array.sa +1876 -0
- package/sa_std/ascii.sa +2 -0
- package/sa_std/ascii.sal +1 -0
- package/sa_std/async.sla +116 -0
- package/sa_std/binary_heap.sa +3003 -0
- package/sa_std/binary_heap.sal +7 -0
- package/sa_std/borrow.sa +171 -0
- package/sa_std/borrow.sal +13 -0
- package/sa_std/btree_map.sa +2210 -0
- package/sa_std/btree_map.sal +11 -0
- package/sa_std/btree_set.sa +1072 -0
- package/sa_std/btree_set.sal +6 -0
- package/sa_std/char.sa +1309 -0
- package/sa_std/char.sal +50 -0
- package/sa_std/cmp.sa +554 -0
- package/sa_std/cmp.sal +14 -0
- package/sa_std/collections/binary_heap.sa +1 -0
- package/sa_std/collections/btree_map.sa +1 -0
- package/sa_std/collections/btree_set.sa +1 -0
- package/sa_std/collections/hashmap.sa +1 -0
- package/sa_std/collections/hashset.sa +1 -0
- package/sa_std/collections/linked_list.sa +1120 -0
- package/sa_std/collections/linked_list.sal +10 -0
- package/sa_std/collections/prelude.sa +7 -0
- package/sa_std/collections/prelude.sal +1 -0
- package/sa_std/collections/vec_deque.sa +1 -0
- package/sa_std/collections.sal +13 -0
- package/sa_std/convert.sa +1115 -0
- package/sa_std/convert.sal +24 -0
- package/sa_std/core/arc.sa +233 -0
- package/sa_std/core/arc.sal +4 -0
- package/sa_std/core/ascii.sa +784 -0
- package/sa_std/core/ascii.sal +34 -0
- package/sa_std/core/bit.sa +41 -0
- package/sa_std/core/box.sa +1 -0
- package/sa_std/core/box.sal +2 -0
- package/sa_std/core/cell.sa +108 -0
- package/sa_std/core/cell.sal +5 -0
- package/sa_std/core/cleanup.sa +26 -0
- package/sa_std/core/control.sa +20 -0
- package/sa_std/core/derive.sa +60 -0
- package/sa_std/core/derive.sal +1 -0
- package/sa_std/core/dispatch.sa +7 -0
- package/sa_std/core/dispatch.sal +5 -0
- package/sa_std/core/future.sa +777 -0
- package/sa_std/core/future.sal +73 -0
- package/sa_std/core/hash.sa +48 -0
- package/sa_std/core/iter.sa +2805 -0
- package/sa_std/core/iter.sal +4 -0
- package/sa_std/core/loop.sa +60 -0
- package/sa_std/core/mem.sa +220 -0
- package/sa_std/core/option.sa +825 -0
- package/sa_std/core/option.sal +11 -0
- package/sa_std/core/panic.sa +23 -0
- package/sa_std/core/panic.sal +12 -0
- package/sa_std/core/prelude.sa +18 -0
- package/sa_std/core/prelude.sal +18 -0
- package/sa_std/core/rc.sa +225 -0
- package/sa_std/core/rc.sal +4 -0
- package/sa_std/core/refcell.sa +283 -0
- package/sa_std/core/refcell.sal +13 -0
- package/sa_std/core/result.sa +708 -0
- package/sa_std/core/result.sal +6 -0
- package/sa_std/core/rust_patterns.sal +295 -0
- package/sa_std/core/sa_core.sa +84 -0
- package/sa_std/core/slice.sa +4021 -0
- package/sa_std/core/slice.sal +7 -0
- package/sa_std/core/task.sa +112 -0
- package/sa_std/core/task.sal +15 -0
- package/sa_std/core/trait_object.sa +26 -0
- package/sa_std/core/trait_object.sal +4 -0
- package/sa_std/core/waker.sa +289 -0
- package/sa_std/core/waker.sal +31 -0
- package/sa_std/core/weak.sa +2 -0
- package/sa_std/core/weak.sal +4 -0
- package/sa_std/cow.sa +3 -0
- package/sa_std/cow.sal +2 -0
- package/sa_std/cstring.sa +3 -0
- package/sa_std/cstring.sal +2 -0
- package/sa_std/default.sa +99 -0
- package/sa_std/duration.sa +3 -0
- package/sa_std/duration.sal +2 -0
- package/sa_std/encoding/json.sa +259 -0
- package/sa_std/encoding/json.sai +54 -0
- package/sa_std/encoding/json.sal +35 -0
- package/sa_std/encoding/prelude.sa +1 -0
- package/sa_std/encoding/prelude.sal +0 -0
- package/sa_std/env.sa +390 -0
- package/sa_std/env.sai +25 -0
- package/sa_std/error.sa +253 -0
- package/sa_std/error.sal +44 -0
- package/sa_std/ffi/cstring.sa +3 -0
- package/sa_std/ffi/cstring.sal +1 -0
- package/sa_std/ffi/prelude.sa +2 -0
- package/sa_std/ffi/prelude.sal +2 -0
- package/sa_std/ffi.sa +635 -0
- package/sa_std/ffi.sal +51 -0
- package/sa_std/fmt.sa +2 -0
- package/sa_std/fmt.sai +18 -0
- package/sa_std/fmt.sal +35 -0
- package/sa_std/fs.sa +1023 -0
- package/sa_std/fs.sai +127 -0
- package/sa_std/fs.sal +51 -0
- package/sa_std/future.sa +2 -0
- package/sa_std/future.sal +1 -0
- package/sa_std/hash.sa +1486 -0
- package/sa_std/hash.sal +13 -0
- package/sa_std/hashmap.sa +1962 -0
- package/sa_std/hashmap.sal +20 -0
- package/sa_std/hashset.sa +1004 -0
- package/sa_std/hashset.sal +18 -0
- package/sa_std/http2.sa +78 -0
- package/sa_std/http2.sai +26 -0
- package/sa_std/http2.sal +36 -0
- package/sa_std/instant.sa +3 -0
- package/sa_std/instant.sal +2 -0
- package/sa_std/io/buf_reader.sa +43 -0
- package/sa_std/io/buf_writer.sa +35 -0
- package/sa_std/io/bufio.sa +4 -0
- package/sa_std/io/bufio.sal +4 -0
- package/sa_std/io/prelude.sa +1 -0
- package/sa_std/io/prelude.sal +1 -0
- package/sa_std/io/print.sa +2 -0
- package/sa_std/io/print.sai +3 -0
- package/sa_std/io.sa +925 -0
- package/sa_std/io.sai +25 -0
- package/sa_std/io.sal +84 -0
- package/sa_std/iter.sa +2 -0
- package/sa_std/iter.sal +1 -0
- package/sa_std/join_handle.sa +3 -0
- package/sa_std/join_handle.sal +2 -0
- package/sa_std/libsa_async.sa +80 -0
- package/sa_std/m_async.sa +137 -0
- package/sa_std/m_async.sal +30 -0
- package/sa_std/m_async.sla +2 -0
- package/sa_std/manually_drop.sa +3 -0
- package/sa_std/manually_drop.sal +2 -0
- package/sa_std/marker/phantom_data.sa +3 -0
- package/sa_std/marker/phantom_data.sal +1 -0
- package/sa_std/marker/prelude.sa +4 -0
- package/sa_std/marker/prelude.sal +4 -0
- package/sa_std/marker.sa +220 -0
- package/sa_std/marker.sal +15 -0
- package/sa_std/math.sa +84 -0
- package/sa_std/math.sai +10 -0
- package/sa_std/mem/manually_drop.sa +3 -0
- package/sa_std/mem/manually_drop.sal +1 -0
- package/sa_std/mem/prelude.sa +2 -0
- package/sa_std/mem/prelude.sal +2 -0
- package/sa_std/mem.sa +564 -0
- package/sa_std/mem.sal +40 -0
- package/sa_std/modstate.sai +19 -0
- package/sa_std/net.sa +4227 -0
- package/sa_std/net.sai +239 -0
- package/sa_std/net.sal +159 -0
- package/sa_std/netx.sa +85 -0
- package/sa_std/netx.sai +11 -0
- package/sa_std/netx.sal +39 -0
- package/sa_std/nonzero.sa +3 -0
- package/sa_std/nonzero.sal +2 -0
- package/sa_std/num/nonzero.sa +3 -0
- package/sa_std/num/nonzero.sal +1 -0
- package/sa_std/num/prelude.sa +3 -0
- package/sa_std/num/prelude.sal +3 -0
- package/sa_std/num.sa +17302 -0
- package/sa_std/num.sai +11 -0
- package/sa_std/num.sal +341 -0
- package/sa_std/ops.sa +1884 -0
- package/sa_std/ops.sal +68 -0
- package/sa_std/option.sa +2 -0
- package/sa_std/option.sal +1 -0
- package/sa_std/os/fd.sa +96 -0
- package/sa_std/os/fd.sai +7 -0
- package/sa_std/os/fd.sal +11 -0
- package/sa_std/os/prelude.sa +2 -0
- package/sa_std/os/prelude.sal +1 -0
- package/sa_std/os/unix_ffi.sa +271 -0
- package/sa_std/panic.sa +1 -0
- package/sa_std/panic.sal +1 -0
- package/sa_std/path.sa +3170 -0
- package/sa_std/path.sal +12 -0
- package/sa_std/phantom_data.sa +3 -0
- package/sa_std/phantom_data.sal +2 -0
- package/sa_std/pin.sa +79 -0
- package/sa_std/pin.sal +5 -0
- package/sa_std/plugin_async.sa +90 -0
- package/sa_std/plugin_async.sal +29 -0
- package/sa_std/plugin_async.sla +4 -0
- package/sa_std/plugin_http_async.sa +46 -0
- package/sa_std/plugin_http_server.sa +61 -0
- package/sa_std/plugin_http_server.sla +2 -0
- package/sa_std/plugin_sqlite.sa +106 -0
- package/sa_std/plugin_sqlite.sla +2 -0
- package/sa_std/prelude.sa +60 -0
- package/sa_std/prelude.sal +55 -0
- package/sa_std/process.sa +916 -0
- package/sa_std/process.sai +57 -0
- package/sa_std/process.sal +27 -0
- package/sa_std/ptr.sa +503 -0
- package/sa_std/ptr.sal +2 -0
- package/sa_std/result.sa +2 -0
- package/sa_std/result.sal +1 -0
- package/sa_std/rust_core.sa +51 -0
- package/sa_std/rust_core.sal +26 -0
- package/sa_std/sa.mod +7 -0
- package/sa_std/sort.sa +156 -0
- package/sa_std/str.sla +13 -0
- package/sa_std/string.sa +12240 -0
- package/sa_std/string.sai +25 -0
- package/sa_std/string.sal +17 -0
- package/sa_std/string_format.sa +269 -0
- package/sa_std/sync/atomic.sa +1500 -0
- package/sa_std/sync/atomic.sal +45 -0
- package/sa_std/sync/barrier.sa +105 -0
- package/sa_std/sync/barrier.sal +7 -0
- package/sa_std/sync/condvar.sa +240 -0
- package/sa_std/sync/condvar.sal +4 -0
- package/sa_std/sync/mpsc.sa +758 -0
- package/sa_std/sync/mpsc.sal +42 -0
- package/sa_std/sync/mpsc_list.sa +255 -0
- package/sa_std/sync/mpsc_list.sal +3 -0
- package/sa_std/sync/mutex.sa +182 -0
- package/sa_std/sync/mutex.sal +7 -0
- package/sa_std/sync/once.sa +371 -0
- package/sa_std/sync/once.sal +31 -0
- package/sa_std/sync/poison.sa +36 -0
- package/sa_std/sync/poison.sal +11 -0
- package/sa_std/sync/prelude.sa +8 -0
- package/sa_std/sync/prelude.sal +7 -0
- package/sa_std/sync/rwlock.sa +369 -0
- package/sa_std/sync/rwlock.sal +13 -0
- package/sa_std/task.sa +2 -0
- package/sa_std/task.sal +1 -0
- package/sa_std/term.sa +2 -0
- package/sa_std/term.sai +10 -0
- package/sa_std/term.sal +33 -0
- package/sa_std/testing/assert.sai +4 -0
- package/sa_std/testing/mock_io.sa +174 -0
- package/sa_std/testing/mock_io.sal +5 -0
- package/sa_std/testing/prelude.sa +2 -0
- package/sa_std/testing/prelude.sal +1 -0
- package/sa_std/text/prelude.sa +1 -0
- package/sa_std/text/prelude.sal +1 -0
- package/sa_std/text/regex.sa +2 -0
- package/sa_std/text/regex.sai +9 -0
- package/sa_std/text/regex.sal +33 -0
- package/sa_std/thread/join_handle.sa +3 -0
- package/sa_std/thread/join_handle.sal +1 -0
- package/sa_std/thread/prelude.sa +4 -0
- package/sa_std/thread/prelude.sal +3 -0
- package/sa_std/thread.sa +160 -0
- package/sa_std/thread.sai +11 -0
- package/sa_std/thread.sal +4 -0
- package/sa_std/thread_local.sa +45 -0
- package/sa_std/thread_local.sai +9 -0
- package/sa_std/time/duration.sa +3 -0
- package/sa_std/time/duration.sal +1 -0
- package/sa_std/time/instant.sa +3 -0
- package/sa_std/time/instant.sal +1 -0
- package/sa_std/time/prelude.sa +4 -0
- package/sa_std/time/prelude.sal +4 -0
- package/sa_std/time.sa +850 -0
- package/sa_std/time.sai +37 -0
- package/sa_std/time.sal +35 -0
- package/sa_std/time.sla +67 -0
- package/sa_std/tls_client.sai +39 -0
- package/sa_std/vec.sa +5754 -0
- package/sa_std/vec.sal +1 -0
- package/sa_std/vec_deque.sa +4925 -0
- package/sa_std/vec_deque.sal +8 -0
- package/sa_std/vec_runtime_macros.sa +11 -0
- package/sa_std/ws_client.sai +57 -0
package/sa_std/net.sa
ADDED
|
@@ -0,0 +1,4227 @@
|
|
|
1
|
+
@import "net.sal"
|
|
2
|
+
@import "net.sai"
|
|
3
|
+
@import "hash.sa"
|
|
4
|
+
@import "io.sal"
|
|
5
|
+
@import "os/fd.sa"
|
|
6
|
+
|
|
7
|
+
[MACRO] NET_LAST_ERROR %out_error
|
|
8
|
+
%out_error = call @sa_std_last_error()
|
|
9
|
+
[END_MACRO]
|
|
10
|
+
|
|
11
|
+
[MACRO] NET_HOSTNAME %out_status, %out_ptr, %out_cap, %out_len
|
|
12
|
+
%out_status = call @sa_std_net_hostname(%out_ptr, %out_cap, %out_len)
|
|
13
|
+
[END_MACRO]
|
|
14
|
+
|
|
15
|
+
[MACRO] NET_TCP_CONNECT %out_status, %out_stream, %host, %host_len, %port
|
|
16
|
+
__net_tcp_connect_handle_%out_status = stack_alloc 8
|
|
17
|
+
%out_status = call @sa_std_net_tcp_connect(&%host, %host_len, %port, &__net_tcp_connect_handle_%out_status)
|
|
18
|
+
%out_stream = load __net_tcp_connect_handle_%out_status+0 as u64
|
|
19
|
+
[END_MACRO]
|
|
20
|
+
|
|
21
|
+
[MACRO] NET_TCP_LISTENER_BIND %out_status, %out_listener, %host, %host_len, %port
|
|
22
|
+
__net_tcp_bind_handle_%out_status = stack_alloc 8
|
|
23
|
+
__net_tcp_bind_port_%out_status = stack_alloc 4
|
|
24
|
+
%out_status = call @sa_std_net_tcp_listen(&%host, %host_len, %port, &__net_tcp_bind_handle_%out_status, &__net_tcp_bind_port_%out_status)
|
|
25
|
+
%out_listener = load __net_tcp_bind_handle_%out_status+0 as u64
|
|
26
|
+
[END_MACRO]
|
|
27
|
+
|
|
28
|
+
[MACRO] NET_TCP_LISTENER_BIND_PORT %out_status, %out_listener, %out_port, %host, %host_len, %port
|
|
29
|
+
__net_tcp_bind_handle_%out_status = stack_alloc 8
|
|
30
|
+
__net_tcp_bind_port_%out_status = stack_alloc 4
|
|
31
|
+
%out_status = call @sa_std_net_tcp_listen(&%host, %host_len, %port, &__net_tcp_bind_handle_%out_status, &__net_tcp_bind_port_%out_status)
|
|
32
|
+
%out_listener = load __net_tcp_bind_handle_%out_status+0 as u64
|
|
33
|
+
%out_port = load __net_tcp_bind_port_%out_status+0 as u32
|
|
34
|
+
[END_MACRO]
|
|
35
|
+
|
|
36
|
+
[MACRO] NET_TCP_LISTENER_ACCEPT %out_status, %out_stream, %listener
|
|
37
|
+
__net_tcp_accept_handle_%out_status = stack_alloc 8
|
|
38
|
+
%out_status = call @sa_std_net_tcp_accept(%listener, &__net_tcp_accept_handle_%out_status)
|
|
39
|
+
%out_stream = load __net_tcp_accept_handle_%out_status+0 as u64
|
|
40
|
+
[END_MACRO]
|
|
41
|
+
|
|
42
|
+
[MACRO] NET_TCP_LISTENER_LOCAL_ADDR %out_status, %out_addr, %listener
|
|
43
|
+
__net_tcp_listener_addr_%out_status = stack_alloc 8
|
|
44
|
+
%out_status = call @sa_std_net_tcp_listener_local_addr(%listener, &__net_tcp_listener_addr_%out_status)
|
|
45
|
+
%out_addr = load __net_tcp_listener_addr_%out_status+0 as u64
|
|
46
|
+
[END_MACRO]
|
|
47
|
+
|
|
48
|
+
[MACRO] NET_TCP_LISTENER_SET_NONBLOCKING %out_status, %listener, %enabled
|
|
49
|
+
%out_status = call @sa_std_net_tcp_listener_set_nonblocking(%listener, %enabled)
|
|
50
|
+
[END_MACRO]
|
|
51
|
+
|
|
52
|
+
[MACRO] NET_TCP_LISTENER_SET_ONLY_V6 %out_status, %listener, %enabled
|
|
53
|
+
%out_status = call @sa_std_net_tcp_listener_set_only_v6(%listener, %enabled)
|
|
54
|
+
[END_MACRO]
|
|
55
|
+
|
|
56
|
+
[MACRO] NET_TCP_LISTENER_ONLY_V6 %out_status, %out_enabled, %listener
|
|
57
|
+
__net_tcp_listener_only_v6_%out_status = stack_alloc 4
|
|
58
|
+
%out_status = call @sa_std_net_tcp_listener_only_v6(%listener, &__net_tcp_listener_only_v6_%out_status)
|
|
59
|
+
%out_enabled = load __net_tcp_listener_only_v6_%out_status+0 as i32
|
|
60
|
+
[END_MACRO]
|
|
61
|
+
[MACRO] NET_TCP_LISTENER_SET_TTL %out_status, %listener, %ttl
|
|
62
|
+
%out_status = call @sa_std_net_tcp_listener_set_ttl(%listener, %ttl)
|
|
63
|
+
[END_MACRO]
|
|
64
|
+
|
|
65
|
+
[MACRO] NET_TCP_LISTENER_TTL %out_status, %out_ttl, %listener
|
|
66
|
+
__net_tcp_listener_ttl_%out_status = stack_alloc 4
|
|
67
|
+
%out_status = call @sa_std_net_tcp_listener_ttl(%listener, &__net_tcp_listener_ttl_%out_status)
|
|
68
|
+
%out_ttl = load __net_tcp_listener_ttl_%out_status+0 as u32
|
|
69
|
+
[END_MACRO]
|
|
70
|
+
|
|
71
|
+
[MACRO] NET_TCP_LISTENER_TAKE_ERROR %out_status, %out_error, %listener
|
|
72
|
+
__net_tcp_listener_error_%out_status = stack_alloc 4
|
|
73
|
+
%out_status = call @sa_std_net_tcp_listener_take_error(%listener, &__net_tcp_listener_error_%out_status)
|
|
74
|
+
%out_error = load __net_tcp_listener_error_%out_status+0 as i32
|
|
75
|
+
[END_MACRO]
|
|
76
|
+
|
|
77
|
+
[MACRO] NET_TCP_LISTENER_AS_RAW_FD %out_status, %out_fd, %listener
|
|
78
|
+
EXPAND FD_AS_RAW %out_status, %out_fd, %listener
|
|
79
|
+
[END_MACRO]
|
|
80
|
+
|
|
81
|
+
[MACRO] NET_TCP_LISTENER_AS_FD %out_status, %out_fd, %listener
|
|
82
|
+
EXPAND NET_TCP_LISTENER_AS_RAW_FD %out_status, %out_fd, %listener
|
|
83
|
+
[END_MACRO]
|
|
84
|
+
|
|
85
|
+
[MACRO] NET_TCP_LISTENER_INTO_RAW_FD %out_status, %out_fd, %listener
|
|
86
|
+
EXPAND FD_INTO_RAW %out_status, %out_fd, %listener
|
|
87
|
+
[END_MACRO]
|
|
88
|
+
|
|
89
|
+
[MACRO] NET_TCP_LISTENER_FROM_RAW_FD %out_status, %out_listener, %fd
|
|
90
|
+
__net_tcp_listener_from_raw_%out_status = stack_alloc 8
|
|
91
|
+
%out_status = call @sa_std_net_tcp_listener_from_raw_fd(%fd, &__net_tcp_listener_from_raw_%out_status)
|
|
92
|
+
%out_listener = load __net_tcp_listener_from_raw_%out_status+0 as u64
|
|
93
|
+
[END_MACRO]
|
|
94
|
+
|
|
95
|
+
[MACRO] NET_TCP_LISTENER_INTO_OWNED_FD %out_status, %out_fd_handle, %listener
|
|
96
|
+
EXPAND NET_TCP_LISTENER_INTO_RAW_FD %out_status, __net_tcp_listener_owned_raw_%out_status, %listener
|
|
97
|
+
!%out_status
|
|
98
|
+
EXPAND FD_FROM_RAW %out_status, %out_fd_handle, __net_tcp_listener_owned_raw_%out_status
|
|
99
|
+
!__net_tcp_listener_owned_raw_%out_status
|
|
100
|
+
[END_MACRO]
|
|
101
|
+
|
|
102
|
+
[MACRO] NET_TCP_LISTENER_FROM_OWNED_FD %out_status, %out_listener, %fd_handle
|
|
103
|
+
EXPAND FD_INTO_RAW %out_status, __net_tcp_listener_from_owned_raw_%out_status, %fd_handle
|
|
104
|
+
!%out_status
|
|
105
|
+
EXPAND NET_TCP_LISTENER_FROM_RAW_FD %out_status, %out_listener, __net_tcp_listener_from_owned_raw_%out_status
|
|
106
|
+
!__net_tcp_listener_from_owned_raw_%out_status
|
|
107
|
+
[END_MACRO]
|
|
108
|
+
|
|
109
|
+
[MACRO] NET_TCP_LISTENER_CLOSE %out_status, %listener
|
|
110
|
+
__net_tcp_listener_close_%out_status = call @sa_net_tcp_listener_close(%listener)
|
|
111
|
+
%out_status = load __net_tcp_listener_close_%out_status+0 as i32
|
|
112
|
+
!__net_tcp_listener_close_%out_status
|
|
113
|
+
[END_MACRO]
|
|
114
|
+
|
|
115
|
+
[MACRO] NET_TCP_INCOMING_NEW %incoming_ptr, %listener
|
|
116
|
+
store %incoming_ptr+NetTcpIncoming_listener, %listener as u64
|
|
117
|
+
[END_MACRO]
|
|
118
|
+
|
|
119
|
+
[MACRO] NET_TCP_INCOMING_LISTENER %out_listener, %incoming_ptr
|
|
120
|
+
%out_listener = load %incoming_ptr+NetTcpIncoming_listener as u64
|
|
121
|
+
[END_MACRO]
|
|
122
|
+
|
|
123
|
+
[MACRO] NET_TCP_INCOMING_NEXT %out_status, %out_ok, %out_stream, %incoming_ptr
|
|
124
|
+
__net_tcp_incoming_listener_%out_status = load %incoming_ptr+NetTcpIncoming_listener as u64
|
|
125
|
+
EXPAND NET_TCP_LISTENER_ACCEPT %out_status, %out_stream, __net_tcp_incoming_listener_%out_status
|
|
126
|
+
%out_ok = eq %out_status, SA_NET_OK
|
|
127
|
+
!__net_tcp_incoming_listener_%out_status
|
|
128
|
+
[END_MACRO]
|
|
129
|
+
|
|
130
|
+
[MACRO] NET_TCP_LISTENER_INCOMING %incoming_ptr, %listener
|
|
131
|
+
EXPAND NET_TCP_INCOMING_NEW %incoming_ptr, %listener
|
|
132
|
+
[END_MACRO]
|
|
133
|
+
|
|
134
|
+
[MACRO] NET_TCP_STREAM_READ %out_status, %out_len, %stream, %buf, %cap
|
|
135
|
+
__net_tcp_read_len_%out_status = stack_alloc 8
|
|
136
|
+
%out_status = call @sa_std_net_tcp_stream_read(%stream, &%buf, %cap, &__net_tcp_read_len_%out_status)
|
|
137
|
+
%out_len = load __net_tcp_read_len_%out_status+0 as u64
|
|
138
|
+
[END_MACRO]
|
|
139
|
+
|
|
140
|
+
[MACRO] NET_TCP_STREAM_PEEK %out_status, %out_len, %stream, %buf, %cap
|
|
141
|
+
__net_tcp_peek_len_%out_status = stack_alloc 8
|
|
142
|
+
%out_status = call @sa_std_net_tcp_stream_peek(%stream, &%buf, %cap, &__net_tcp_peek_len_%out_status)
|
|
143
|
+
%out_len = load __net_tcp_peek_len_%out_status+0 as u64
|
|
144
|
+
[END_MACRO]
|
|
145
|
+
|
|
146
|
+
[MACRO] NET_TCP_STREAM_WRITE %out_status, %out_len, %stream, %buf, %len
|
|
147
|
+
__net_tcp_write_len_%out_status = stack_alloc 8
|
|
148
|
+
%out_status = call @sa_std_net_tcp_stream_write(%stream, &%buf, %len, &__net_tcp_write_len_%out_status)
|
|
149
|
+
%out_len = load __net_tcp_write_len_%out_status+0 as u64
|
|
150
|
+
[END_MACRO]
|
|
151
|
+
|
|
152
|
+
[MACRO] NET_TCP_STREAM_READ_VECTORED %out_status, %out_len, %stream, %iovs, %iov_count
|
|
153
|
+
__net_tcp_read_vec_len_%out_status = stack_alloc 8
|
|
154
|
+
%out_status = call @sa_std_net_tcp_stream_read_vectored(%stream, &%iovs, %iov_count, &__net_tcp_read_vec_len_%out_status)
|
|
155
|
+
%out_len = load __net_tcp_read_vec_len_%out_status+0 as u64
|
|
156
|
+
[END_MACRO]
|
|
157
|
+
|
|
158
|
+
[MACRO] NET_TCP_STREAM_WRITE_VECTORED %out_status, %out_len, %stream, %iovs, %iov_count
|
|
159
|
+
__net_tcp_write_vec_len_%out_status = stack_alloc 8
|
|
160
|
+
%out_status = call @sa_std_net_tcp_stream_write_vectored(%stream, &%iovs, %iov_count, &__net_tcp_write_vec_len_%out_status)
|
|
161
|
+
%out_len = load __net_tcp_write_vec_len_%out_status+0 as u64
|
|
162
|
+
[END_MACRO]
|
|
163
|
+
|
|
164
|
+
[MACRO] NET_TCP_STREAM_WRITE_ALL %out_status, %stream, %buf, %len
|
|
165
|
+
__net_tcp_write_all_%out_status = call @sa_net_tcp_stream_write_all(%stream, &%buf, %len)
|
|
166
|
+
%out_status = load __net_tcp_write_all_%out_status+0 as i32
|
|
167
|
+
!__net_tcp_write_all_%out_status
|
|
168
|
+
[END_MACRO]
|
|
169
|
+
|
|
170
|
+
[MACRO] NET_TCP_STREAM_READ_EXACT %out_status, %stream, %buf, %len
|
|
171
|
+
__net_tcp_read_exact_%out_status = call @sa_net_tcp_stream_read_exact(%stream, &%buf, %len)
|
|
172
|
+
%out_status = load __net_tcp_read_exact_%out_status+0 as i32
|
|
173
|
+
!__net_tcp_read_exact_%out_status
|
|
174
|
+
[END_MACRO]
|
|
175
|
+
|
|
176
|
+
[MACRO] NET_TCP_STREAM_FLUSH %out_status, %stream
|
|
177
|
+
%out_status = call @sa_net_tcp_stream_flush(%stream)
|
|
178
|
+
[END_MACRO]
|
|
179
|
+
|
|
180
|
+
[MACRO] NET_TCP_STREAM_PEER_ADDR %out_status, %out_addr, %stream
|
|
181
|
+
__net_tcp_peer_addr_%out_status = stack_alloc 8
|
|
182
|
+
%out_status = call @sa_std_net_tcp_stream_peer_addr(%stream, &__net_tcp_peer_addr_%out_status)
|
|
183
|
+
%out_addr = load __net_tcp_peer_addr_%out_status+0 as u64
|
|
184
|
+
[END_MACRO]
|
|
185
|
+
|
|
186
|
+
[MACRO] NET_TCP_STREAM_LOCAL_ADDR %out_status, %out_addr, %stream
|
|
187
|
+
__net_tcp_local_addr_%out_status = stack_alloc 8
|
|
188
|
+
%out_status = call @sa_std_net_tcp_stream_local_addr(%stream, &__net_tcp_local_addr_%out_status)
|
|
189
|
+
%out_addr = load __net_tcp_local_addr_%out_status+0 as u64
|
|
190
|
+
[END_MACRO]
|
|
191
|
+
|
|
192
|
+
[MACRO] NET_TCP_STREAM_SHUTDOWN %out_status, %stream, %how
|
|
193
|
+
%out_status = call @sa_net_tcp_stream_shutdown(%stream, %how)
|
|
194
|
+
[END_MACRO]
|
|
195
|
+
|
|
196
|
+
[MACRO] NET_TCP_STREAM_CLOSE %out_status, %stream
|
|
197
|
+
__net_tcp_stream_close_%out_status = call @sa_net_tcp_stream_close(%stream)
|
|
198
|
+
%out_status = load __net_tcp_stream_close_%out_status+0 as i32
|
|
199
|
+
!__net_tcp_stream_close_%out_status
|
|
200
|
+
[END_MACRO]
|
|
201
|
+
|
|
202
|
+
[MACRO] NET_TCP_STREAM_SET_READ_TIMEOUT %out_status, %stream, %timeout_ns
|
|
203
|
+
%out_status = call @sa_std_net_tcp_stream_set_read_timeout(%stream, %timeout_ns)
|
|
204
|
+
[END_MACRO]
|
|
205
|
+
|
|
206
|
+
[MACRO] NET_TCP_STREAM_SET_WRITE_TIMEOUT %out_status, %stream, %timeout_ns
|
|
207
|
+
%out_status = call @sa_std_net_tcp_stream_set_write_timeout(%stream, %timeout_ns)
|
|
208
|
+
[END_MACRO]
|
|
209
|
+
|
|
210
|
+
[MACRO] NET_TCP_STREAM_TRY_CLONE %out_status, %out_stream, %stream
|
|
211
|
+
__net_tcp_stream_clone_%out_status = stack_alloc 8
|
|
212
|
+
%out_status = call @sa_std_net_tcp_stream_try_clone(%stream, &__net_tcp_stream_clone_%out_status)
|
|
213
|
+
%out_stream = load __net_tcp_stream_clone_%out_status+0 as u64
|
|
214
|
+
[END_MACRO]
|
|
215
|
+
|
|
216
|
+
[MACRO] NET_TCP_LISTENER_TRY_CLONE %out_status, %out_listener, %listener
|
|
217
|
+
__net_tcp_listener_clone_%out_status = stack_alloc 8
|
|
218
|
+
%out_status = call @sa_std_net_tcp_listener_try_clone(%listener, &__net_tcp_listener_clone_%out_status)
|
|
219
|
+
%out_listener = load __net_tcp_listener_clone_%out_status+0 as u64
|
|
220
|
+
[END_MACRO]
|
|
221
|
+
[MACRO] NET_TCP_STREAM_SET_NONBLOCKING %out_status, %stream, %enabled
|
|
222
|
+
%out_status = call @sa_std_net_tcp_stream_set_nonblocking(%stream, %enabled)
|
|
223
|
+
[END_MACRO]
|
|
224
|
+
|
|
225
|
+
[MACRO] NET_TCP_STREAM_SET_LINGER %out_status, %stream, %enabled, %timeout_ns
|
|
226
|
+
%out_status = call @sa_std_net_tcp_stream_set_linger(%stream, %enabled, %timeout_ns)
|
|
227
|
+
[END_MACRO]
|
|
228
|
+
|
|
229
|
+
[MACRO] NET_TCP_STREAM_LINGER %out_status, %out_enabled, %out_timeout_ns, %stream
|
|
230
|
+
__net_tcp_linger_enabled_%out_status = stack_alloc 4
|
|
231
|
+
__net_tcp_linger_timeout_%out_status = stack_alloc 8
|
|
232
|
+
%out_status = call @sa_std_net_tcp_stream_linger(%stream, &__net_tcp_linger_enabled_%out_status, &__net_tcp_linger_timeout_%out_status)
|
|
233
|
+
%out_enabled = load __net_tcp_linger_enabled_%out_status+0 as i32
|
|
234
|
+
%out_timeout_ns = load __net_tcp_linger_timeout_%out_status+0 as u64
|
|
235
|
+
[END_MACRO]
|
|
236
|
+
[MACRO] NET_TCP_STREAM_SET_NODELAY %out_status, %stream, %enabled
|
|
237
|
+
%out_status = call @sa_std_net_tcp_stream_set_nodelay(%stream, %enabled)
|
|
238
|
+
[END_MACRO]
|
|
239
|
+
|
|
240
|
+
[MACRO] NET_TCP_STREAM_SET_QUICKACK %out_status, %stream, %enabled
|
|
241
|
+
%out_status = call @sa_std_net_tcp_stream_set_quickack(%stream, %enabled)
|
|
242
|
+
[END_MACRO]
|
|
243
|
+
|
|
244
|
+
[MACRO] NET_TCP_STREAM_QUICKACK %out_status, %out_enabled, %stream
|
|
245
|
+
__net_tcp_quickack_%out_status = stack_alloc 4
|
|
246
|
+
%out_status = call @sa_std_net_tcp_stream_quickack(%stream, &__net_tcp_quickack_%out_status)
|
|
247
|
+
%out_enabled = load __net_tcp_quickack_%out_status+0 as i32
|
|
248
|
+
[END_MACRO]
|
|
249
|
+
|
|
250
|
+
[MACRO] NET_TCP_STREAM_SET_DEFERACCEPT %out_status, %stream, %seconds
|
|
251
|
+
%out_status = call @sa_std_net_tcp_stream_set_deferaccept(%stream, %seconds)
|
|
252
|
+
[END_MACRO]
|
|
253
|
+
|
|
254
|
+
[MACRO] NET_TCP_STREAM_DEFERACCEPT %out_status, %out_seconds, %stream
|
|
255
|
+
__net_tcp_deferaccept_%out_status = stack_alloc 4
|
|
256
|
+
%out_status = call @sa_std_net_tcp_stream_deferaccept(%stream, &__net_tcp_deferaccept_%out_status)
|
|
257
|
+
%out_seconds = load __net_tcp_deferaccept_%out_status+0 as u32
|
|
258
|
+
[END_MACRO]
|
|
259
|
+
|
|
260
|
+
[MACRO] NET_TCP_STREAM_SET_TTL %out_status, %stream, %ttl
|
|
261
|
+
%out_status = call @sa_std_net_tcp_stream_set_ttl(%stream, %ttl)
|
|
262
|
+
[END_MACRO]
|
|
263
|
+
|
|
264
|
+
[MACRO] NET_TCP_STREAM_READ_TIMEOUT %out_status, %out_timeout_ns, %stream
|
|
265
|
+
__net_tcp_read_timeout_%out_status = stack_alloc 8
|
|
266
|
+
%out_status = call @sa_std_net_tcp_stream_read_timeout(%stream, &__net_tcp_read_timeout_%out_status)
|
|
267
|
+
%out_timeout_ns = load __net_tcp_read_timeout_%out_status+0 as u64
|
|
268
|
+
[END_MACRO]
|
|
269
|
+
|
|
270
|
+
[MACRO] NET_TCP_STREAM_WRITE_TIMEOUT %out_status, %out_timeout_ns, %stream
|
|
271
|
+
__net_tcp_write_timeout_%out_status = stack_alloc 8
|
|
272
|
+
%out_status = call @sa_std_net_tcp_stream_write_timeout(%stream, &__net_tcp_write_timeout_%out_status)
|
|
273
|
+
%out_timeout_ns = load __net_tcp_write_timeout_%out_status+0 as u64
|
|
274
|
+
[END_MACRO]
|
|
275
|
+
|
|
276
|
+
[MACRO] NET_TCP_STREAM_NODELAY %out_status, %out_enabled, %stream
|
|
277
|
+
__net_tcp_nodelay_%out_status = stack_alloc 4
|
|
278
|
+
%out_status = call @sa_std_net_tcp_stream_nodelay(%stream, &__net_tcp_nodelay_%out_status)
|
|
279
|
+
%out_enabled = load __net_tcp_nodelay_%out_status+0 as i32
|
|
280
|
+
[END_MACRO]
|
|
281
|
+
|
|
282
|
+
[MACRO] NET_TCP_STREAM_TTL %out_status, %out_ttl, %stream
|
|
283
|
+
__net_tcp_ttl_%out_status = stack_alloc 4
|
|
284
|
+
%out_status = call @sa_std_net_tcp_stream_ttl(%stream, &__net_tcp_ttl_%out_status)
|
|
285
|
+
%out_ttl = load __net_tcp_ttl_%out_status+0 as u32
|
|
286
|
+
[END_MACRO]
|
|
287
|
+
|
|
288
|
+
[MACRO] NET_TCP_STREAM_TAKE_ERROR %out_status, %out_error, %stream
|
|
289
|
+
__net_tcp_error_%out_status = stack_alloc 4
|
|
290
|
+
%out_status = call @sa_std_net_tcp_stream_take_error(%stream, &__net_tcp_error_%out_status)
|
|
291
|
+
%out_error = load __net_tcp_error_%out_status+0 as i32
|
|
292
|
+
[END_MACRO]
|
|
293
|
+
|
|
294
|
+
[MACRO] NET_TCP_STREAM_AS_RAW_FD %out_status, %out_fd, %stream
|
|
295
|
+
EXPAND FD_AS_RAW %out_status, %out_fd, %stream
|
|
296
|
+
[END_MACRO]
|
|
297
|
+
|
|
298
|
+
[MACRO] NET_TCP_STREAM_AS_FD %out_status, %out_fd, %stream
|
|
299
|
+
EXPAND NET_TCP_STREAM_AS_RAW_FD %out_status, %out_fd, %stream
|
|
300
|
+
[END_MACRO]
|
|
301
|
+
|
|
302
|
+
[MACRO] NET_TCP_STREAM_INTO_RAW_FD %out_status, %out_fd, %stream
|
|
303
|
+
EXPAND FD_INTO_RAW %out_status, %out_fd, %stream
|
|
304
|
+
[END_MACRO]
|
|
305
|
+
|
|
306
|
+
[MACRO] NET_TCP_STREAM_FROM_RAW_FD %out_status, %out_stream, %fd
|
|
307
|
+
__net_tcp_stream_from_raw_%out_status = stack_alloc 8
|
|
308
|
+
%out_status = call @sa_std_net_tcp_stream_from_raw_fd(%fd, &__net_tcp_stream_from_raw_%out_status)
|
|
309
|
+
%out_stream = load __net_tcp_stream_from_raw_%out_status+0 as u64
|
|
310
|
+
[END_MACRO]
|
|
311
|
+
|
|
312
|
+
[MACRO] NET_TCP_STREAM_INTO_OWNED_FD %out_status, %out_fd_handle, %stream
|
|
313
|
+
EXPAND NET_TCP_STREAM_INTO_RAW_FD %out_status, __net_tcp_stream_owned_raw_%out_status, %stream
|
|
314
|
+
!%out_status
|
|
315
|
+
EXPAND FD_FROM_RAW %out_status, %out_fd_handle, __net_tcp_stream_owned_raw_%out_status
|
|
316
|
+
!__net_tcp_stream_owned_raw_%out_status
|
|
317
|
+
[END_MACRO]
|
|
318
|
+
|
|
319
|
+
[MACRO] NET_TCP_STREAM_FROM_OWNED_FD %out_status, %out_stream, %fd_handle
|
|
320
|
+
EXPAND FD_INTO_RAW %out_status, __net_tcp_stream_from_owned_raw_%out_status, %fd_handle
|
|
321
|
+
!%out_status
|
|
322
|
+
EXPAND NET_TCP_STREAM_FROM_RAW_FD %out_status, %out_stream, __net_tcp_stream_from_owned_raw_%out_status
|
|
323
|
+
!__net_tcp_stream_from_owned_raw_%out_status
|
|
324
|
+
[END_MACRO]
|
|
325
|
+
|
|
326
|
+
[MACRO] NET_TCP_STREAM_SET_KEEPALIVE %out_status, %stream, %enabled
|
|
327
|
+
%out_status = call @sa_std_net_tcp_stream_set_keepalive(%stream, %enabled)
|
|
328
|
+
[END_MACRO]
|
|
329
|
+
|
|
330
|
+
[MACRO] NET_TCP_LISTENER_ACCEPT_ADDR %out_status, %out_stream, %out_addr, %listener
|
|
331
|
+
__net_tcp_accept_addr_stream_%out_status = stack_alloc 8
|
|
332
|
+
__net_tcp_accept_addr_addr_%out_status = stack_alloc 8
|
|
333
|
+
%out_status = call @sa_std_net_tcp_accept_addr(%listener, &__net_tcp_accept_addr_stream_%out_status, &__net_tcp_accept_addr_addr_%out_status)
|
|
334
|
+
%out_stream = load __net_tcp_accept_addr_stream_%out_status+0 as u64
|
|
335
|
+
%out_addr = load __net_tcp_accept_addr_addr_%out_status+0 as u64
|
|
336
|
+
[END_MACRO]
|
|
337
|
+
|
|
338
|
+
[MACRO] NET_TCP_STREAM_KEEPALIVE %out_status, %out_enabled, %stream
|
|
339
|
+
__net_tcp_keepalive_%out_status = stack_alloc 4
|
|
340
|
+
%out_status = call @sa_std_net_tcp_stream_keepalive(%stream, &__net_tcp_keepalive_%out_status)
|
|
341
|
+
%out_enabled = load __net_tcp_keepalive_%out_status+0 as i32
|
|
342
|
+
[END_MACRO]
|
|
343
|
+
|
|
344
|
+
[MACRO] NET_TCP_STREAM_SET_KEEPALIVE_PARAMS %out_status, %stream, %idle_secs, %intvl_secs, %cnt
|
|
345
|
+
%out_status = call @sa_std_net_tcp_stream_set_keepalive_params(%stream, %idle_secs, %intvl_secs, %cnt)
|
|
346
|
+
[END_MACRO]
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
[MACRO] NET_TCP_STREAM_SET_RECV_BUFFER_SIZE %out_status, %stream, %size
|
|
350
|
+
%out_status = call @sa_std_net_tcp_stream_set_recv_buffer_size(%stream, %size)
|
|
351
|
+
[END_MACRO]
|
|
352
|
+
[MACRO] NET_TCP_STREAM_RECV_BUFFER_SIZE %out_status, %out_size, %stream
|
|
353
|
+
__net_tcp_stream_recv_buffer_size_%out_status = stack_alloc 4
|
|
354
|
+
%out_status = call @sa_std_net_tcp_stream_recv_buffer_size(%stream, &__net_tcp_stream_recv_buffer_size_%out_status)
|
|
355
|
+
%out_size = load __net_tcp_stream_recv_buffer_size_%out_status+0 as u32
|
|
356
|
+
[END_MACRO]
|
|
357
|
+
[MACRO] NET_TCP_STREAM_SET_SEND_BUFFER_SIZE %out_status, %stream, %size
|
|
358
|
+
%out_status = call @sa_std_net_tcp_stream_set_send_buffer_size(%stream, %size)
|
|
359
|
+
[END_MACRO]
|
|
360
|
+
[MACRO] NET_TCP_STREAM_SEND_BUFFER_SIZE %out_status, %out_size, %stream
|
|
361
|
+
__net_tcp_stream_send_buffer_size_%out_status = stack_alloc 4
|
|
362
|
+
%out_status = call @sa_std_net_tcp_stream_send_buffer_size(%stream, &__net_tcp_stream_send_buffer_size_%out_status)
|
|
363
|
+
%out_size = load __net_tcp_stream_send_buffer_size_%out_status+0 as u32
|
|
364
|
+
[END_MACRO]
|
|
365
|
+
|
|
366
|
+
[MACRO] NET_TCP_LISTENER_SET_REUSEADDR %out_status, %listener, %enabled
|
|
367
|
+
%out_status = call @sa_std_net_tcp_listener_set_reuseaddr(%listener, %enabled)
|
|
368
|
+
[END_MACRO]
|
|
369
|
+
|
|
370
|
+
[MACRO] NET_TCP_LISTENER_SET_REUSEPORT %out_status, %listener, %enabled
|
|
371
|
+
%out_status = call @sa_std_net_tcp_listener_set_reuseport(%listener, %enabled)
|
|
372
|
+
[END_MACRO]
|
|
373
|
+
|
|
374
|
+
[MACRO] NET_UNIX_LISTEN %out_status, %out_listener, %path, %path_len
|
|
375
|
+
__net_unix_listen_handle_%out_status = stack_alloc 8
|
|
376
|
+
%out_status = call @sa_std_net_unix_listen(&%path, %path_len, &__net_unix_listen_handle_%out_status)
|
|
377
|
+
%out_listener = load __net_unix_listen_handle_%out_status+0 as u64
|
|
378
|
+
[END_MACRO]
|
|
379
|
+
|
|
380
|
+
[MACRO] NET_UNIX_CONNECT %out_status, %out_stream, %path, %path_len
|
|
381
|
+
__net_unix_connect_handle_%out_status = stack_alloc 8
|
|
382
|
+
%out_status = call @sa_std_net_unix_connect(&%path, %path_len, &__net_unix_connect_handle_%out_status)
|
|
383
|
+
%out_stream = load __net_unix_connect_handle_%out_status+0 as u64
|
|
384
|
+
[END_MACRO]
|
|
385
|
+
|
|
386
|
+
[MACRO] NET_UNIX_ADDR_FROM_ABSTRACT_NAME %out_status, %out_addr, %name, %name_len
|
|
387
|
+
__net_unix_abstract_addr_%out_status = stack_alloc 8
|
|
388
|
+
%out_status = call @sa_std_net_unix_addr_from_abstract_name(&%name, %name_len, &__net_unix_abstract_addr_%out_status)
|
|
389
|
+
%out_addr = load __net_unix_abstract_addr_%out_status+0 as u64
|
|
390
|
+
[END_MACRO]
|
|
391
|
+
|
|
392
|
+
[MACRO] NET_UNIX_ADDR_FROM_PATHNAME %out_status, %out_addr, %path, %path_len
|
|
393
|
+
__net_unix_path_addr_%out_status = stack_alloc 8
|
|
394
|
+
%out_status = call @sa_std_net_unix_addr_from_pathname(&%path, %path_len, &__net_unix_path_addr_%out_status)
|
|
395
|
+
%out_addr = load __net_unix_path_addr_%out_status+0 as u64
|
|
396
|
+
[END_MACRO]
|
|
397
|
+
|
|
398
|
+
[MACRO] NET_UNIX_LISTEN_ADDR %out_status, %out_listener, %addr
|
|
399
|
+
__net_unix_listen_addr_handle_%out_status = stack_alloc 8
|
|
400
|
+
%out_status = call @sa_std_net_unix_listen_addr(%addr, &__net_unix_listen_addr_handle_%out_status)
|
|
401
|
+
%out_listener = load __net_unix_listen_addr_handle_%out_status+0 as u64
|
|
402
|
+
[END_MACRO]
|
|
403
|
+
|
|
404
|
+
[MACRO] NET_UNIX_CONNECT_ADDR %out_status, %out_stream, %addr
|
|
405
|
+
__net_unix_connect_addr_handle_%out_status = stack_alloc 8
|
|
406
|
+
%out_status = call @sa_std_net_unix_connect_addr(%addr, &__net_unix_connect_addr_handle_%out_status)
|
|
407
|
+
%out_stream = load __net_unix_connect_addr_handle_%out_status+0 as u64
|
|
408
|
+
[END_MACRO]
|
|
409
|
+
|
|
410
|
+
[MACRO] NET_UNIX_ACCEPT %out_status, %out_stream, %listener
|
|
411
|
+
__net_unix_accept_handle_%out_status = stack_alloc 8
|
|
412
|
+
%out_status = call @sa_std_net_unix_accept(%listener, &__net_unix_accept_handle_%out_status)
|
|
413
|
+
%out_stream = load __net_unix_accept_handle_%out_status+0 as u64
|
|
414
|
+
[END_MACRO]
|
|
415
|
+
|
|
416
|
+
[MACRO] NET_UNIX_ACCEPT_ADDR %out_status, %out_stream, %out_addr, %listener
|
|
417
|
+
__net_unix_accept_stream_%out_status = stack_alloc 8
|
|
418
|
+
__net_unix_accept_addr_%out_status = stack_alloc 8
|
|
419
|
+
%out_status = call @sa_std_net_unix_accept_addr(%listener, &__net_unix_accept_stream_%out_status, &__net_unix_accept_addr_%out_status)
|
|
420
|
+
%out_stream = load __net_unix_accept_stream_%out_status+0 as u64
|
|
421
|
+
%out_addr = load __net_unix_accept_addr_%out_status+0 as u64
|
|
422
|
+
[END_MACRO]
|
|
423
|
+
|
|
424
|
+
[MACRO] NET_UNIX_PAIR %out_status, %out_left, %out_right
|
|
425
|
+
__net_unix_pair_left_%out_status = stack_alloc 8
|
|
426
|
+
__net_unix_pair_right_%out_status = stack_alloc 8
|
|
427
|
+
%out_status = call @sa_std_net_unix_pair(&__net_unix_pair_left_%out_status, &__net_unix_pair_right_%out_status)
|
|
428
|
+
%out_left = load __net_unix_pair_left_%out_status+0 as u64
|
|
429
|
+
%out_right = load __net_unix_pair_right_%out_status+0 as u64
|
|
430
|
+
[END_MACRO]
|
|
431
|
+
|
|
432
|
+
[MACRO] NET_UNIX_LISTENER_LOCAL_ADDR %out_status, %out_addr, %listener
|
|
433
|
+
__net_unix_listener_addr_%out_status = stack_alloc 8
|
|
434
|
+
%out_status = call @sa_std_net_unix_listener_local_addr(%listener, &__net_unix_listener_addr_%out_status)
|
|
435
|
+
%out_addr = load __net_unix_listener_addr_%out_status+0 as u64
|
|
436
|
+
[END_MACRO]
|
|
437
|
+
|
|
438
|
+
[MACRO] NET_UNIX_LISTENER_TRY_CLONE %out_status, %out_listener, %listener
|
|
439
|
+
__net_unix_listener_clone_%out_status = stack_alloc 8
|
|
440
|
+
%out_status = call @sa_std_net_unix_listener_try_clone(%listener, &__net_unix_listener_clone_%out_status)
|
|
441
|
+
%out_listener = load __net_unix_listener_clone_%out_status+0 as u64
|
|
442
|
+
[END_MACRO]
|
|
443
|
+
|
|
444
|
+
// Rust method-name alias over NET_UNIX_LISTENER_TRY_CLONE.
|
|
445
|
+
[MACRO] NET_UNIX_LISTENER_CLONE %out_status, %out_listener, %listener
|
|
446
|
+
EXPAND NET_UNIX_LISTENER_TRY_CLONE %out_status, %out_listener, %listener
|
|
447
|
+
[END_MACRO]
|
|
448
|
+
|
|
449
|
+
[MACRO] NET_UNIX_LISTENER_AS_RAW_FD %out_status, %out_fd, %listener
|
|
450
|
+
EXPAND FD_AS_RAW %out_status, %out_fd, %listener
|
|
451
|
+
[END_MACRO]
|
|
452
|
+
|
|
453
|
+
[MACRO] NET_UNIX_LISTENER_AS_FD %out_status, %out_fd, %listener
|
|
454
|
+
EXPAND NET_UNIX_LISTENER_AS_RAW_FD %out_status, %out_fd, %listener
|
|
455
|
+
[END_MACRO]
|
|
456
|
+
|
|
457
|
+
[MACRO] NET_UNIX_LISTENER_INTO_RAW_FD %out_status, %out_fd, %listener
|
|
458
|
+
EXPAND FD_INTO_RAW %out_status, %out_fd, %listener
|
|
459
|
+
[END_MACRO]
|
|
460
|
+
|
|
461
|
+
[MACRO] NET_UNIX_LISTENER_FROM_RAW_FD %out_status, %out_listener, %fd
|
|
462
|
+
__net_unix_listener_from_raw_%out_status = stack_alloc 8
|
|
463
|
+
%out_status = call @sa_std_net_unix_listener_from_raw_fd(%fd, &__net_unix_listener_from_raw_%out_status)
|
|
464
|
+
%out_listener = load __net_unix_listener_from_raw_%out_status+0 as u64
|
|
465
|
+
[END_MACRO]
|
|
466
|
+
|
|
467
|
+
[MACRO] NET_UNIX_LISTENER_INTO_OWNED_FD %out_status, %out_fd_handle, %listener
|
|
468
|
+
EXPAND NET_UNIX_LISTENER_INTO_RAW_FD %out_status, __net_unix_listener_owned_raw_%out_status, %listener
|
|
469
|
+
!%out_status
|
|
470
|
+
EXPAND FD_FROM_RAW %out_status, %out_fd_handle, __net_unix_listener_owned_raw_%out_status
|
|
471
|
+
!__net_unix_listener_owned_raw_%out_status
|
|
472
|
+
[END_MACRO]
|
|
473
|
+
|
|
474
|
+
[MACRO] NET_UNIX_LISTENER_FROM_OWNED_FD %out_status, %out_listener, %fd_handle
|
|
475
|
+
EXPAND FD_INTO_RAW %out_status, __net_unix_listener_from_owned_raw_%out_status, %fd_handle
|
|
476
|
+
!%out_status
|
|
477
|
+
EXPAND NET_UNIX_LISTENER_FROM_RAW_FD %out_status, %out_listener, __net_unix_listener_from_owned_raw_%out_status
|
|
478
|
+
!__net_unix_listener_from_owned_raw_%out_status
|
|
479
|
+
[END_MACRO]
|
|
480
|
+
|
|
481
|
+
[MACRO] NET_UNIX_LISTENER_SET_NONBLOCKING %out_status, %listener, %enabled
|
|
482
|
+
EXPAND NET_TCP_LISTENER_SET_NONBLOCKING %out_status, %listener, %enabled
|
|
483
|
+
[END_MACRO]
|
|
484
|
+
|
|
485
|
+
[MACRO] NET_UNIX_LISTENER_TAKE_ERROR %out_status, %out_error, %listener
|
|
486
|
+
EXPAND NET_TCP_LISTENER_TAKE_ERROR %out_status, %out_error, %listener
|
|
487
|
+
[END_MACRO]
|
|
488
|
+
|
|
489
|
+
[MACRO] NET_UNIX_INCOMING_NEW %incoming_ptr, %listener
|
|
490
|
+
EXPAND NET_TCP_INCOMING_NEW %incoming_ptr, %listener
|
|
491
|
+
[END_MACRO]
|
|
492
|
+
|
|
493
|
+
[MACRO] NET_UNIX_INCOMING_LISTENER %out_listener, %incoming_ptr
|
|
494
|
+
EXPAND NET_TCP_INCOMING_LISTENER %out_listener, %incoming_ptr
|
|
495
|
+
[END_MACRO]
|
|
496
|
+
|
|
497
|
+
[MACRO] NET_UNIX_INCOMING_NEXT %out_status, %out_ok, %out_stream, %incoming_ptr
|
|
498
|
+
EXPAND NET_TCP_INCOMING_NEXT %out_status, %out_ok, %out_stream, %incoming_ptr
|
|
499
|
+
[END_MACRO]
|
|
500
|
+
|
|
501
|
+
[MACRO] NET_UNIX_LISTENER_INCOMING %incoming_ptr, %listener
|
|
502
|
+
EXPAND NET_UNIX_INCOMING_NEW %incoming_ptr, %listener
|
|
503
|
+
[END_MACRO]
|
|
504
|
+
|
|
505
|
+
[MACRO] NET_UNIX_STREAM_LOCAL_ADDR %out_status, %out_addr, %stream
|
|
506
|
+
__net_unix_local_addr_%out_status = stack_alloc 8
|
|
507
|
+
%out_status = call @sa_std_net_unix_stream_local_addr(%stream, &__net_unix_local_addr_%out_status)
|
|
508
|
+
%out_addr = load __net_unix_local_addr_%out_status+0 as u64
|
|
509
|
+
[END_MACRO]
|
|
510
|
+
|
|
511
|
+
[MACRO] NET_UNIX_STREAM_TRY_CLONE %out_status, %out_stream, %stream
|
|
512
|
+
__net_unix_stream_clone_%out_status = stack_alloc 8
|
|
513
|
+
%out_status = call @sa_std_net_unix_stream_try_clone(%stream, &__net_unix_stream_clone_%out_status)
|
|
514
|
+
%out_stream = load __net_unix_stream_clone_%out_status+0 as u64
|
|
515
|
+
[END_MACRO]
|
|
516
|
+
|
|
517
|
+
// Rust method-name alias over NET_UNIX_STREAM_TRY_CLONE.
|
|
518
|
+
[MACRO] NET_UNIX_STREAM_CLONE %out_status, %out_stream, %stream
|
|
519
|
+
EXPAND NET_UNIX_STREAM_TRY_CLONE %out_status, %out_stream, %stream
|
|
520
|
+
[END_MACRO]
|
|
521
|
+
|
|
522
|
+
[MACRO] NET_UNIX_STREAM_AS_RAW_FD %out_status, %out_fd, %stream
|
|
523
|
+
EXPAND FD_AS_RAW %out_status, %out_fd, %stream
|
|
524
|
+
[END_MACRO]
|
|
525
|
+
|
|
526
|
+
[MACRO] NET_UNIX_STREAM_AS_FD %out_status, %out_fd, %stream
|
|
527
|
+
EXPAND NET_UNIX_STREAM_AS_RAW_FD %out_status, %out_fd, %stream
|
|
528
|
+
[END_MACRO]
|
|
529
|
+
|
|
530
|
+
[MACRO] NET_UNIX_STREAM_INTO_RAW_FD %out_status, %out_fd, %stream
|
|
531
|
+
EXPAND FD_INTO_RAW %out_status, %out_fd, %stream
|
|
532
|
+
[END_MACRO]
|
|
533
|
+
|
|
534
|
+
[MACRO] NET_UNIX_STREAM_FROM_RAW_FD %out_status, %out_stream, %fd
|
|
535
|
+
__net_unix_stream_from_raw_%out_status = stack_alloc 8
|
|
536
|
+
%out_status = call @sa_std_net_unix_stream_from_raw_fd(%fd, &__net_unix_stream_from_raw_%out_status)
|
|
537
|
+
%out_stream = load __net_unix_stream_from_raw_%out_status+0 as u64
|
|
538
|
+
[END_MACRO]
|
|
539
|
+
|
|
540
|
+
[MACRO] NET_UNIX_STREAM_INTO_OWNED_FD %out_status, %out_fd_handle, %stream
|
|
541
|
+
EXPAND NET_UNIX_STREAM_INTO_RAW_FD %out_status, __net_unix_stream_owned_raw_%out_status, %stream
|
|
542
|
+
!%out_status
|
|
543
|
+
EXPAND FD_FROM_RAW %out_status, %out_fd_handle, __net_unix_stream_owned_raw_%out_status
|
|
544
|
+
!__net_unix_stream_owned_raw_%out_status
|
|
545
|
+
[END_MACRO]
|
|
546
|
+
|
|
547
|
+
[MACRO] NET_UNIX_STREAM_FROM_OWNED_FD %out_status, %out_stream, %fd_handle
|
|
548
|
+
EXPAND FD_INTO_RAW %out_status, __net_unix_stream_from_owned_raw_%out_status, %fd_handle
|
|
549
|
+
!%out_status
|
|
550
|
+
EXPAND NET_UNIX_STREAM_FROM_RAW_FD %out_status, %out_stream, __net_unix_stream_from_owned_raw_%out_status
|
|
551
|
+
!__net_unix_stream_from_owned_raw_%out_status
|
|
552
|
+
[END_MACRO]
|
|
553
|
+
|
|
554
|
+
[MACRO] NET_UNIX_STREAM_PEER_ADDR %out_status, %out_addr, %stream
|
|
555
|
+
__net_unix_peer_addr_%out_status = stack_alloc 8
|
|
556
|
+
%out_status = call @sa_std_net_unix_stream_peer_addr(%stream, &__net_unix_peer_addr_%out_status)
|
|
557
|
+
%out_addr = load __net_unix_peer_addr_%out_status+0 as u64
|
|
558
|
+
[END_MACRO]
|
|
559
|
+
|
|
560
|
+
[MACRO] NET_UNIX_STREAM_SET_PASSCRED %out_status, %stream, %enabled
|
|
561
|
+
%out_status = call @sa_std_net_unix_stream_set_passcred(%stream, %enabled)
|
|
562
|
+
[END_MACRO]
|
|
563
|
+
|
|
564
|
+
[MACRO] NET_UNIX_STREAM_PASSCRED %out_status, %out_enabled, %stream
|
|
565
|
+
__net_unix_passcred_%out_status = stack_alloc 4
|
|
566
|
+
%out_status = call @sa_std_net_unix_stream_passcred(%stream, &__net_unix_passcred_%out_status)
|
|
567
|
+
%out_enabled = load __net_unix_passcred_%out_status+0 as i32
|
|
568
|
+
[END_MACRO]
|
|
569
|
+
|
|
570
|
+
[MACRO] NET_UNIX_STREAM_SET_MARK %out_status, %stream, %mark
|
|
571
|
+
%out_status = call @sa_std_net_unix_stream_set_mark(%stream, %mark)
|
|
572
|
+
[END_MACRO]
|
|
573
|
+
|
|
574
|
+
[MACRO] NET_UNIX_STREAM_PEER_CRED %out_status, %out_pid, %out_uid, %out_gid, %stream
|
|
575
|
+
__net_unix_peer_pid_%out_status = stack_alloc 4
|
|
576
|
+
__net_unix_peer_uid_%out_status = stack_alloc 4
|
|
577
|
+
__net_unix_peer_gid_%out_status = stack_alloc 4
|
|
578
|
+
%out_status = call @sa_std_net_unix_stream_peer_cred(%stream, &__net_unix_peer_pid_%out_status, &__net_unix_peer_uid_%out_status, &__net_unix_peer_gid_%out_status)
|
|
579
|
+
%out_pid = load __net_unix_peer_pid_%out_status+0 as i32
|
|
580
|
+
%out_uid = load __net_unix_peer_uid_%out_status+0 as u32
|
|
581
|
+
%out_gid = load __net_unix_peer_gid_%out_status+0 as u32
|
|
582
|
+
[END_MACRO]
|
|
583
|
+
|
|
584
|
+
[MACRO] NET_UNIX_STREAM_SET_READ_TIMEOUT %out_status, %stream, %timeout_ns
|
|
585
|
+
EXPAND NET_TCP_STREAM_SET_READ_TIMEOUT %out_status, %stream, %timeout_ns
|
|
586
|
+
[END_MACRO]
|
|
587
|
+
|
|
588
|
+
[MACRO] NET_UNIX_STREAM_SET_WRITE_TIMEOUT %out_status, %stream, %timeout_ns
|
|
589
|
+
EXPAND NET_TCP_STREAM_SET_WRITE_TIMEOUT %out_status, %stream, %timeout_ns
|
|
590
|
+
[END_MACRO]
|
|
591
|
+
|
|
592
|
+
[MACRO] NET_UNIX_STREAM_READ_TIMEOUT %out_status, %out_timeout_ns, %stream
|
|
593
|
+
EXPAND NET_TCP_STREAM_READ_TIMEOUT %out_status, %out_timeout_ns, %stream
|
|
594
|
+
[END_MACRO]
|
|
595
|
+
|
|
596
|
+
[MACRO] NET_UNIX_STREAM_WRITE_TIMEOUT %out_status, %out_timeout_ns, %stream
|
|
597
|
+
EXPAND NET_TCP_STREAM_WRITE_TIMEOUT %out_status, %out_timeout_ns, %stream
|
|
598
|
+
[END_MACRO]
|
|
599
|
+
|
|
600
|
+
[MACRO] NET_UNIX_STREAM_SET_NONBLOCKING %out_status, %stream, %enabled
|
|
601
|
+
EXPAND NET_TCP_STREAM_SET_NONBLOCKING %out_status, %stream, %enabled
|
|
602
|
+
[END_MACRO]
|
|
603
|
+
|
|
604
|
+
[MACRO] NET_UNIX_STREAM_TAKE_ERROR %out_status, %out_error, %stream
|
|
605
|
+
EXPAND NET_TCP_STREAM_TAKE_ERROR %out_status, %out_error, %stream
|
|
606
|
+
[END_MACRO]
|
|
607
|
+
|
|
608
|
+
[MACRO] NET_UNIX_STREAM_PEEK %out_status, %out_len, %stream, %buf, %cap
|
|
609
|
+
EXPAND NET_TCP_STREAM_PEEK %out_status, %out_len, %stream, %buf, %cap
|
|
610
|
+
[END_MACRO]
|
|
611
|
+
|
|
612
|
+
[MACRO] NET_UNIX_STREAM_SHUTDOWN %out_status, %stream, %how
|
|
613
|
+
EXPAND NET_TCP_STREAM_SHUTDOWN %out_status, %stream, %how
|
|
614
|
+
[END_MACRO]
|
|
615
|
+
|
|
616
|
+
[MACRO] NET_UNIX_DATAGRAM_UNBOUND %out_status, %out_socket
|
|
617
|
+
__net_unix_datagram_unbound_%out_status = stack_alloc 8
|
|
618
|
+
%out_status = call @sa_std_net_unix_datagram_unbound(&__net_unix_datagram_unbound_%out_status)
|
|
619
|
+
%out_socket = load __net_unix_datagram_unbound_%out_status+0 as u64
|
|
620
|
+
[END_MACRO]
|
|
621
|
+
|
|
622
|
+
[MACRO] NET_UNIX_DATAGRAM_BIND %out_status, %out_socket, %path, %path_len
|
|
623
|
+
__net_unix_datagram_bind_%out_status = stack_alloc 8
|
|
624
|
+
%out_status = call @sa_std_net_unix_datagram_bind(&%path, %path_len, &__net_unix_datagram_bind_%out_status)
|
|
625
|
+
%out_socket = load __net_unix_datagram_bind_%out_status+0 as u64
|
|
626
|
+
[END_MACRO]
|
|
627
|
+
|
|
628
|
+
[MACRO] NET_UNIX_DATAGRAM_BIND_ADDR %out_status, %out_socket, %addr
|
|
629
|
+
__net_unix_datagram_bind_addr_%out_status = stack_alloc 8
|
|
630
|
+
%out_status = call @sa_std_net_unix_datagram_bind_addr(%addr, &__net_unix_datagram_bind_addr_%out_status)
|
|
631
|
+
%out_socket = load __net_unix_datagram_bind_addr_%out_status+0 as u64
|
|
632
|
+
[END_MACRO]
|
|
633
|
+
|
|
634
|
+
[MACRO] NET_UNIX_DATAGRAM_PAIR %out_status, %out_left, %out_right
|
|
635
|
+
__net_unix_datagram_pair_left_%out_status = stack_alloc 8
|
|
636
|
+
__net_unix_datagram_pair_right_%out_status = stack_alloc 8
|
|
637
|
+
%out_status = call @sa_std_net_unix_datagram_pair(&__net_unix_datagram_pair_left_%out_status, &__net_unix_datagram_pair_right_%out_status)
|
|
638
|
+
%out_left = load __net_unix_datagram_pair_left_%out_status+0 as u64
|
|
639
|
+
%out_right = load __net_unix_datagram_pair_right_%out_status+0 as u64
|
|
640
|
+
[END_MACRO]
|
|
641
|
+
|
|
642
|
+
[MACRO] NET_UNIX_DATAGRAM_CONNECT %out_status, %socket, %path, %path_len
|
|
643
|
+
%out_status = call @sa_std_net_unix_datagram_connect(%socket, &%path, %path_len)
|
|
644
|
+
[END_MACRO]
|
|
645
|
+
|
|
646
|
+
[MACRO] NET_UNIX_DATAGRAM_CONNECT_ADDR %out_status, %socket, %addr
|
|
647
|
+
%out_status = call @sa_std_net_unix_datagram_connect_addr(%socket, %addr)
|
|
648
|
+
[END_MACRO]
|
|
649
|
+
|
|
650
|
+
[MACRO] NET_UNIX_DATAGRAM_TRY_CLONE %out_status, %out_socket, %socket
|
|
651
|
+
__net_unix_datagram_clone_%out_status = stack_alloc 8
|
|
652
|
+
%out_status = call @sa_std_net_unix_datagram_try_clone(%socket, &__net_unix_datagram_clone_%out_status)
|
|
653
|
+
%out_socket = load __net_unix_datagram_clone_%out_status+0 as u64
|
|
654
|
+
[END_MACRO]
|
|
655
|
+
|
|
656
|
+
// Rust method-name alias over NET_UNIX_DATAGRAM_TRY_CLONE.
|
|
657
|
+
[MACRO] NET_UNIX_DATAGRAM_CLONE %out_status, %out_socket, %socket
|
|
658
|
+
EXPAND NET_UNIX_DATAGRAM_TRY_CLONE %out_status, %out_socket, %socket
|
|
659
|
+
[END_MACRO]
|
|
660
|
+
|
|
661
|
+
[MACRO] NET_UNIX_DATAGRAM_AS_RAW_FD %out_status, %out_fd, %socket
|
|
662
|
+
EXPAND FD_AS_RAW %out_status, %out_fd, %socket
|
|
663
|
+
[END_MACRO]
|
|
664
|
+
|
|
665
|
+
[MACRO] NET_UNIX_DATAGRAM_AS_FD %out_status, %out_fd, %socket
|
|
666
|
+
EXPAND NET_UNIX_DATAGRAM_AS_RAW_FD %out_status, %out_fd, %socket
|
|
667
|
+
[END_MACRO]
|
|
668
|
+
|
|
669
|
+
[MACRO] NET_UNIX_DATAGRAM_INTO_RAW_FD %out_status, %out_fd, %socket
|
|
670
|
+
EXPAND FD_INTO_RAW %out_status, %out_fd, %socket
|
|
671
|
+
[END_MACRO]
|
|
672
|
+
|
|
673
|
+
[MACRO] NET_UNIX_DATAGRAM_FROM_RAW_FD %out_status, %out_socket, %fd
|
|
674
|
+
__net_unix_datagram_from_raw_%out_status = stack_alloc 8
|
|
675
|
+
%out_status = call @sa_std_net_unix_datagram_from_raw_fd(%fd, &__net_unix_datagram_from_raw_%out_status)
|
|
676
|
+
%out_socket = load __net_unix_datagram_from_raw_%out_status+0 as u64
|
|
677
|
+
[END_MACRO]
|
|
678
|
+
|
|
679
|
+
[MACRO] NET_UNIX_DATAGRAM_INTO_OWNED_FD %out_status, %out_fd_handle, %socket
|
|
680
|
+
EXPAND NET_UNIX_DATAGRAM_INTO_RAW_FD %out_status, __net_unix_datagram_owned_raw_%out_status, %socket
|
|
681
|
+
!%out_status
|
|
682
|
+
EXPAND FD_FROM_RAW %out_status, %out_fd_handle, __net_unix_datagram_owned_raw_%out_status
|
|
683
|
+
!__net_unix_datagram_owned_raw_%out_status
|
|
684
|
+
[END_MACRO]
|
|
685
|
+
|
|
686
|
+
[MACRO] NET_UNIX_DATAGRAM_FROM_OWNED_FD %out_status, %out_socket, %fd_handle
|
|
687
|
+
EXPAND FD_INTO_RAW %out_status, __net_unix_datagram_from_owned_raw_%out_status, %fd_handle
|
|
688
|
+
!%out_status
|
|
689
|
+
EXPAND NET_UNIX_DATAGRAM_FROM_RAW_FD %out_status, %out_socket, __net_unix_datagram_from_owned_raw_%out_status
|
|
690
|
+
!__net_unix_datagram_from_owned_raw_%out_status
|
|
691
|
+
[END_MACRO]
|
|
692
|
+
|
|
693
|
+
[MACRO] NET_UNIX_DATAGRAM_LOCAL_ADDR %out_status, %out_addr, %socket
|
|
694
|
+
__net_unix_datagram_local_addr_%out_status = stack_alloc 8
|
|
695
|
+
%out_status = call @sa_std_net_unix_datagram_local_addr(%socket, &__net_unix_datagram_local_addr_%out_status)
|
|
696
|
+
%out_addr = load __net_unix_datagram_local_addr_%out_status+0 as u64
|
|
697
|
+
[END_MACRO]
|
|
698
|
+
|
|
699
|
+
[MACRO] NET_UNIX_DATAGRAM_PEER_ADDR %out_status, %out_addr, %socket
|
|
700
|
+
__net_unix_datagram_peer_addr_%out_status = stack_alloc 8
|
|
701
|
+
%out_status = call @sa_std_net_unix_datagram_peer_addr(%socket, &__net_unix_datagram_peer_addr_%out_status)
|
|
702
|
+
%out_addr = load __net_unix_datagram_peer_addr_%out_status+0 as u64
|
|
703
|
+
[END_MACRO]
|
|
704
|
+
|
|
705
|
+
[MACRO] NET_UNIX_DATAGRAM_SET_PASSCRED %out_status, %socket, %enabled
|
|
706
|
+
%out_status = call @sa_std_net_unix_datagram_set_passcred(%socket, %enabled)
|
|
707
|
+
[END_MACRO]
|
|
708
|
+
|
|
709
|
+
[MACRO] NET_UNIX_DATAGRAM_PASSCRED %out_status, %out_enabled, %socket
|
|
710
|
+
__net_unix_datagram_passcred_%out_status = stack_alloc 4
|
|
711
|
+
%out_status = call @sa_std_net_unix_datagram_passcred(%socket, &__net_unix_datagram_passcred_%out_status)
|
|
712
|
+
%out_enabled = load __net_unix_datagram_passcred_%out_status+0 as i32
|
|
713
|
+
[END_MACRO]
|
|
714
|
+
|
|
715
|
+
[MACRO] NET_UNIX_DATAGRAM_SET_MARK %out_status, %socket, %mark
|
|
716
|
+
%out_status = call @sa_std_net_unix_datagram_set_mark(%socket, %mark)
|
|
717
|
+
[END_MACRO]
|
|
718
|
+
|
|
719
|
+
[MACRO] NET_UNIX_DATAGRAM_SET_READ_TIMEOUT %out_status, %socket, %timeout_ns
|
|
720
|
+
EXPAND NET_UDP_SET_READ_TIMEOUT %out_status, %socket, %timeout_ns
|
|
721
|
+
[END_MACRO]
|
|
722
|
+
|
|
723
|
+
[MACRO] NET_UNIX_DATAGRAM_SET_WRITE_TIMEOUT %out_status, %socket, %timeout_ns
|
|
724
|
+
EXPAND NET_UDP_SET_WRITE_TIMEOUT %out_status, %socket, %timeout_ns
|
|
725
|
+
[END_MACRO]
|
|
726
|
+
|
|
727
|
+
[MACRO] NET_UNIX_DATAGRAM_READ_TIMEOUT %out_status, %out_timeout_ns, %socket
|
|
728
|
+
EXPAND NET_UDP_READ_TIMEOUT %out_status, %out_timeout_ns, %socket
|
|
729
|
+
[END_MACRO]
|
|
730
|
+
|
|
731
|
+
[MACRO] NET_UNIX_DATAGRAM_WRITE_TIMEOUT %out_status, %out_timeout_ns, %socket
|
|
732
|
+
EXPAND NET_UDP_WRITE_TIMEOUT %out_status, %out_timeout_ns, %socket
|
|
733
|
+
[END_MACRO]
|
|
734
|
+
|
|
735
|
+
[MACRO] NET_UNIX_DATAGRAM_SET_NONBLOCKING %out_status, %socket, %enabled
|
|
736
|
+
EXPAND NET_UDP_SET_NONBLOCKING %out_status, %socket, %enabled
|
|
737
|
+
[END_MACRO]
|
|
738
|
+
|
|
739
|
+
[MACRO] NET_UNIX_DATAGRAM_TAKE_ERROR %out_status, %out_error, %socket
|
|
740
|
+
EXPAND NET_UDP_TAKE_ERROR %out_status, %out_error, %socket
|
|
741
|
+
[END_MACRO]
|
|
742
|
+
|
|
743
|
+
[MACRO] NET_UNIX_DATAGRAM_SEND %out_status, %out_len, %socket, %buf, %len
|
|
744
|
+
EXPAND NET_UDP_SEND %out_status, %out_len, %socket, %buf, %len
|
|
745
|
+
[END_MACRO]
|
|
746
|
+
|
|
747
|
+
[MACRO] NET_UNIX_DATAGRAM_SEND_TO %out_status, %out_len, %socket, %buf, %len, %path, %path_len
|
|
748
|
+
__net_unix_datagram_send_to_len_%out_status = stack_alloc 8
|
|
749
|
+
%out_status = call @sa_std_net_unix_datagram_send_to(%socket, &%buf, %len, &%path, %path_len, &__net_unix_datagram_send_to_len_%out_status)
|
|
750
|
+
%out_len = load __net_unix_datagram_send_to_len_%out_status+0 as u64
|
|
751
|
+
[END_MACRO]
|
|
752
|
+
|
|
753
|
+
[MACRO] NET_UNIX_DATAGRAM_SEND_TO_ADDR %out_status, %out_len, %socket, %buf, %len, %addr
|
|
754
|
+
__net_unix_datagram_send_to_addr_len_%out_status = stack_alloc 8
|
|
755
|
+
%out_status = call @sa_std_net_unix_datagram_send_to_addr(%socket, &%buf, %len, %addr, &__net_unix_datagram_send_to_addr_len_%out_status)
|
|
756
|
+
%out_len = load __net_unix_datagram_send_to_addr_len_%out_status+0 as u64
|
|
757
|
+
[END_MACRO]
|
|
758
|
+
|
|
759
|
+
[MACRO] NET_UNIX_DATAGRAM_RECV %out_status, %out_len, %socket, %buf, %cap
|
|
760
|
+
EXPAND NET_UDP_RECV %out_status, %out_len, %socket, %buf, %cap
|
|
761
|
+
[END_MACRO]
|
|
762
|
+
|
|
763
|
+
[MACRO] NET_UNIX_DATAGRAM_RECV_FROM %out_status, %out_len, %out_addr, %socket, %buf, %cap
|
|
764
|
+
__net_unix_datagram_recv_from_len_%out_status = stack_alloc 8
|
|
765
|
+
__net_unix_datagram_recv_from_addr_%out_status = stack_alloc 8
|
|
766
|
+
%out_status = call @sa_std_net_unix_datagram_recv_from(%socket, &%buf, %cap, &__net_unix_datagram_recv_from_len_%out_status, &__net_unix_datagram_recv_from_addr_%out_status)
|
|
767
|
+
%out_len = load __net_unix_datagram_recv_from_len_%out_status+0 as u64
|
|
768
|
+
%out_addr = load __net_unix_datagram_recv_from_addr_%out_status+0 as u64
|
|
769
|
+
[END_MACRO]
|
|
770
|
+
|
|
771
|
+
[MACRO] NET_UNIX_DATAGRAM_PEEK %out_status, %out_len, %socket, %buf, %cap
|
|
772
|
+
EXPAND NET_UDP_PEEK %out_status, %out_len, %socket, %buf, %cap
|
|
773
|
+
[END_MACRO]
|
|
774
|
+
|
|
775
|
+
[MACRO] NET_UNIX_DATAGRAM_PEEK_FROM %out_status, %out_len, %out_addr, %socket, %buf, %cap
|
|
776
|
+
__net_unix_datagram_peek_from_len_%out_status = stack_alloc 8
|
|
777
|
+
__net_unix_datagram_peek_from_addr_%out_status = stack_alloc 8
|
|
778
|
+
%out_status = call @sa_std_net_unix_datagram_peek_from(%socket, &%buf, %cap, &__net_unix_datagram_peek_from_len_%out_status, &__net_unix_datagram_peek_from_addr_%out_status)
|
|
779
|
+
%out_len = load __net_unix_datagram_peek_from_len_%out_status+0 as u64
|
|
780
|
+
%out_addr = load __net_unix_datagram_peek_from_addr_%out_status+0 as u64
|
|
781
|
+
[END_MACRO]
|
|
782
|
+
|
|
783
|
+
[MACRO] NET_UNIX_DATAGRAM_SHUTDOWN %out_status, %socket, %how
|
|
784
|
+
%out_status = call @sa_std_net_unix_datagram_shutdown(%socket, %how)
|
|
785
|
+
[END_MACRO]
|
|
786
|
+
|
|
787
|
+
[MACRO] NET_UNIX_DATAGRAM_CLOSE %out_status, %socket
|
|
788
|
+
EXPAND NET_UDP_CLOSE %out_status, %socket
|
|
789
|
+
[END_MACRO]
|
|
790
|
+
|
|
791
|
+
// TLS ClientHello fingerprints. Given a caller-built JA3 string (decimal
|
|
792
|
+
// TLSVersion,Ciphers,Extensions,EllipticCurves,ECPointFormats), NET_JA3_HASH
|
|
793
|
+
// writes the 32-char lowercase MD5 hex into %buf. NET_JA4_HASH12 writes the
|
|
794
|
+
// 12-char truncated SHA256 hex used by JA4's cipher/extension sub-hashes.
|
|
795
|
+
[MACRO] NET_JA3_HASH %out_status, %out_len, %ja3, %ja3_len, %buf, %cap
|
|
796
|
+
__net_ja3_len_%out_status = stack_alloc 8
|
|
797
|
+
%out_status = call @sa_std_net_ja3_hash(&%ja3, %ja3_len, &%buf, %cap, &__net_ja3_len_%out_status)
|
|
798
|
+
%out_len = load __net_ja3_len_%out_status+0 as u64
|
|
799
|
+
[END_MACRO]
|
|
800
|
+
|
|
801
|
+
[MACRO] NET_JA4_HASH12 %out_status, %out_len, %data, %data_len, %buf, %cap
|
|
802
|
+
__net_ja4_len_%out_status = stack_alloc 8
|
|
803
|
+
%out_status = call @sa_std_net_ja4_hash12(&%data, %data_len, &%buf, %cap, &__net_ja4_len_%out_status)
|
|
804
|
+
%out_len = load __net_ja4_len_%out_status+0 as u64
|
|
805
|
+
[END_MACRO]
|
|
806
|
+
|
|
807
|
+
// Shared WebSocket and URL helpers. These macros intentionally keep the
|
|
808
|
+
// protocol codecs in the sci runtime so plugins can wrap one implementation.
|
|
809
|
+
[MACRO] NET_WS_ACCEPT_KEY %out_status, %out_len, %key, %key_len, %buf, %cap
|
|
810
|
+
__net_ws_accept_len_%out_status = stack_alloc 8
|
|
811
|
+
%out_status = call @sa_std_ws_accept_key(&%key, %key_len, &%buf, %cap, &__net_ws_accept_len_%out_status)
|
|
812
|
+
%out_len = load __net_ws_accept_len_%out_status+0 as u64
|
|
813
|
+
[END_MACRO]
|
|
814
|
+
|
|
815
|
+
[MACRO] NET_WS_FRAME_PARSE %out_status, %out_fin, %out_opcode, %out_masked, %out_payload_offset, %out_payload_len, %out_frame_len, %mask_buf, %data, %data_len
|
|
816
|
+
__net_ws_fin_%out_status = stack_alloc 1
|
|
817
|
+
__net_ws_opcode_%out_status = stack_alloc 1
|
|
818
|
+
__net_ws_masked_%out_status = stack_alloc 1
|
|
819
|
+
__net_ws_payload_offset_%out_status = stack_alloc 8
|
|
820
|
+
__net_ws_payload_len_%out_status = stack_alloc 8
|
|
821
|
+
__net_ws_frame_len_%out_status = stack_alloc 8
|
|
822
|
+
%out_status = call @sa_std_ws_frame_parse(&%data, %data_len, &__net_ws_fin_%out_status, &__net_ws_opcode_%out_status, &__net_ws_masked_%out_status, &__net_ws_payload_offset_%out_status, &__net_ws_payload_len_%out_status, &__net_ws_frame_len_%out_status, &%mask_buf)
|
|
823
|
+
%out_fin = load __net_ws_fin_%out_status+0 as u8
|
|
824
|
+
%out_opcode = load __net_ws_opcode_%out_status+0 as u8
|
|
825
|
+
%out_masked = load __net_ws_masked_%out_status+0 as u8
|
|
826
|
+
%out_payload_offset = load __net_ws_payload_offset_%out_status+0 as u64
|
|
827
|
+
%out_payload_len = load __net_ws_payload_len_%out_status+0 as u64
|
|
828
|
+
%out_frame_len = load __net_ws_frame_len_%out_status+0 as u64
|
|
829
|
+
[END_MACRO]
|
|
830
|
+
|
|
831
|
+
[MACRO] NET_WS_UNMASK %out_status, %payload, %payload_len, %mask
|
|
832
|
+
%out_status = call @sa_std_ws_unmask(&%payload, %payload_len, &%mask)
|
|
833
|
+
[END_MACRO]
|
|
834
|
+
|
|
835
|
+
[MACRO] NET_WS_FRAME_BUILD %out_status, %out_len, %opcode, %fin, %payload, %payload_len, %mask, %buf, %cap
|
|
836
|
+
__net_ws_build_len_%out_status = stack_alloc 8
|
|
837
|
+
%out_status = call @sa_std_ws_frame_build(%opcode, %fin, &%payload, %payload_len, &%mask, &%buf, %cap, &__net_ws_build_len_%out_status)
|
|
838
|
+
%out_len = load __net_ws_build_len_%out_status+0 as u64
|
|
839
|
+
[END_MACRO]
|
|
840
|
+
|
|
841
|
+
[MACRO] NET_WS_FRAME_BUILD_UNMASKED %out_status, %out_len, %opcode, %fin, %payload, %payload_len, %buf, %cap
|
|
842
|
+
__net_ws_build_unmasked_len_%out_status = stack_alloc 8
|
|
843
|
+
%out_status = call @sa_std_ws_frame_build_unmasked(%opcode, %fin, &%payload, %payload_len, &%buf, %cap, &__net_ws_build_unmasked_len_%out_status)
|
|
844
|
+
%out_len = load __net_ws_build_unmasked_len_%out_status+0 as u64
|
|
845
|
+
[END_MACRO]
|
|
846
|
+
|
|
847
|
+
[MACRO] NET_URL_PARSE %out_status, %out_port, %url, %url_len, %scheme_buf, %scheme_cap, %scheme_len, %host_buf, %host_cap, %host_len, %path_buf, %path_cap, %path_len
|
|
848
|
+
__net_url_scheme_len_%out_status = stack_alloc 8
|
|
849
|
+
__net_url_host_len_%out_status = stack_alloc 8
|
|
850
|
+
__net_url_path_len_%out_status = stack_alloc 8
|
|
851
|
+
__net_url_port_%out_status = stack_alloc 4
|
|
852
|
+
%out_status = call @sa_std_url_parse(&%url, %url_len, &%scheme_buf, %scheme_cap, &__net_url_scheme_len_%out_status, &%host_buf, %host_cap, &__net_url_host_len_%out_status, &%path_buf, %path_cap, &__net_url_path_len_%out_status, &__net_url_port_%out_status)
|
|
853
|
+
%scheme_len = load __net_url_scheme_len_%out_status+0 as u64
|
|
854
|
+
%host_len = load __net_url_host_len_%out_status+0 as u64
|
|
855
|
+
%path_len = load __net_url_path_len_%out_status+0 as u64
|
|
856
|
+
%out_port = load __net_url_port_%out_status+0 as u32
|
|
857
|
+
[END_MACRO]
|
|
858
|
+
|
|
859
|
+
[MACRO] NET_UDP_BIND %out_status, %out_socket, %host, %host_len, %port
|
|
860
|
+
__net_udp_bind_handle_%out_status = stack_alloc 8
|
|
861
|
+
%out_status = call @sa_std_net_udp_bind(&%host, %host_len, %port, &__net_udp_bind_handle_%out_status)
|
|
862
|
+
%out_socket = load __net_udp_bind_handle_%out_status+0 as u64
|
|
863
|
+
[END_MACRO]
|
|
864
|
+
|
|
865
|
+
[MACRO] NET_UDP_AS_RAW_FD %out_status, %out_fd, %socket
|
|
866
|
+
EXPAND FD_AS_RAW %out_status, %out_fd, %socket
|
|
867
|
+
[END_MACRO]
|
|
868
|
+
|
|
869
|
+
[MACRO] NET_UDP_AS_FD %out_status, %out_fd, %socket
|
|
870
|
+
EXPAND NET_UDP_AS_RAW_FD %out_status, %out_fd, %socket
|
|
871
|
+
[END_MACRO]
|
|
872
|
+
|
|
873
|
+
[MACRO] NET_UDP_INTO_RAW_FD %out_status, %out_fd, %socket
|
|
874
|
+
EXPAND FD_INTO_RAW %out_status, %out_fd, %socket
|
|
875
|
+
[END_MACRO]
|
|
876
|
+
|
|
877
|
+
[MACRO] NET_UDP_FROM_RAW_FD %out_status, %out_socket, %fd
|
|
878
|
+
__net_udp_from_raw_%out_status = stack_alloc 8
|
|
879
|
+
%out_status = call @sa_std_net_udp_from_raw_fd(%fd, &__net_udp_from_raw_%out_status)
|
|
880
|
+
%out_socket = load __net_udp_from_raw_%out_status+0 as u64
|
|
881
|
+
[END_MACRO]
|
|
882
|
+
|
|
883
|
+
[MACRO] NET_UDP_INTO_OWNED_FD %out_status, %out_fd_handle, %socket
|
|
884
|
+
EXPAND NET_UDP_INTO_RAW_FD %out_status, __net_udp_owned_raw_%out_status, %socket
|
|
885
|
+
!%out_status
|
|
886
|
+
EXPAND FD_FROM_RAW %out_status, %out_fd_handle, __net_udp_owned_raw_%out_status
|
|
887
|
+
!__net_udp_owned_raw_%out_status
|
|
888
|
+
[END_MACRO]
|
|
889
|
+
|
|
890
|
+
[MACRO] NET_UDP_FROM_OWNED_FD %out_status, %out_socket, %fd_handle
|
|
891
|
+
EXPAND FD_INTO_RAW %out_status, __net_udp_from_owned_raw_%out_status, %fd_handle
|
|
892
|
+
!%out_status
|
|
893
|
+
EXPAND NET_UDP_FROM_RAW_FD %out_status, %out_socket, __net_udp_from_owned_raw_%out_status
|
|
894
|
+
!__net_udp_from_owned_raw_%out_status
|
|
895
|
+
[END_MACRO]
|
|
896
|
+
|
|
897
|
+
[MACRO] NET_UDP_LOCAL_ADDR %out_status, %out_addr, %socket
|
|
898
|
+
__net_udp_addr_%out_status = stack_alloc 8
|
|
899
|
+
%out_status = call @sa_std_net_udp_local_addr(%socket, &__net_udp_addr_%out_status)
|
|
900
|
+
%out_addr = load __net_udp_addr_%out_status+0 as u64
|
|
901
|
+
[END_MACRO]
|
|
902
|
+
|
|
903
|
+
[MACRO] NET_UDP_PEER_ADDR %out_status, %out_addr, %socket
|
|
904
|
+
__net_udp_peer_addr_%out_status = stack_alloc 8
|
|
905
|
+
%out_status = call @sa_std_net_udp_peer_addr(%socket, &__net_udp_peer_addr_%out_status)
|
|
906
|
+
%out_addr = load __net_udp_peer_addr_%out_status+0 as u64
|
|
907
|
+
[END_MACRO]
|
|
908
|
+
|
|
909
|
+
[MACRO] NET_UDP_TRY_CLONE %out_status, %out_socket, %socket
|
|
910
|
+
__net_udp_clone_%out_status = stack_alloc 8
|
|
911
|
+
%out_status = call @sa_std_net_udp_try_clone(%socket, &__net_udp_clone_%out_status)
|
|
912
|
+
%out_socket = load __net_udp_clone_%out_status+0 as u64
|
|
913
|
+
[END_MACRO]
|
|
914
|
+
[MACRO] NET_UDP_CONNECT %out_status, %socket, %host, %host_len, %port
|
|
915
|
+
%out_status = call @sa_std_net_udp_connect(%socket, &%host, %host_len, %port)
|
|
916
|
+
[END_MACRO]
|
|
917
|
+
|
|
918
|
+
[MACRO] NET_UDP_CONNECT_ADDR %out_status, %socket, %addr
|
|
919
|
+
%out_status = call @sa_std_net_udp_connect_addr(%socket, %addr)
|
|
920
|
+
[END_MACRO]
|
|
921
|
+
|
|
922
|
+
[MACRO] NET_UDP_SET_READ_TIMEOUT %out_status, %socket, %timeout_ns
|
|
923
|
+
%out_status = call @sa_std_net_udp_set_read_timeout(%socket, %timeout_ns)
|
|
924
|
+
[END_MACRO]
|
|
925
|
+
|
|
926
|
+
[MACRO] NET_UDP_SET_WRITE_TIMEOUT %out_status, %socket, %timeout_ns
|
|
927
|
+
%out_status = call @sa_std_net_udp_set_write_timeout(%socket, %timeout_ns)
|
|
928
|
+
[END_MACRO]
|
|
929
|
+
|
|
930
|
+
[MACRO] NET_UDP_SET_NONBLOCKING %out_status, %socket, %enabled
|
|
931
|
+
%out_status = call @sa_std_net_udp_set_nonblocking(%socket, %enabled)
|
|
932
|
+
[END_MACRO]
|
|
933
|
+
|
|
934
|
+
[MACRO] NET_UDP_SET_BROADCAST %out_status, %socket, %enabled
|
|
935
|
+
%out_status = call @sa_std_net_udp_set_broadcast(%socket, %enabled)
|
|
936
|
+
[END_MACRO]
|
|
937
|
+
|
|
938
|
+
|
|
939
|
+
[MACRO] NET_UDP_SET_RECV_BUFFER_SIZE %out_status, %socket, %size
|
|
940
|
+
%out_status = call @sa_std_net_udp_set_recv_buffer_size(%socket, %size)
|
|
941
|
+
[END_MACRO]
|
|
942
|
+
[MACRO] NET_UDP_RECV_BUFFER_SIZE %out_status, %out_size, %socket
|
|
943
|
+
__net_udp_recv_buffer_size_%out_status = stack_alloc 4
|
|
944
|
+
%out_status = call @sa_std_net_udp_recv_buffer_size(%socket, &__net_udp_recv_buffer_size_%out_status)
|
|
945
|
+
%out_size = load __net_udp_recv_buffer_size_%out_status+0 as u32
|
|
946
|
+
[END_MACRO]
|
|
947
|
+
[MACRO] NET_UDP_SET_SEND_BUFFER_SIZE %out_status, %socket, %size
|
|
948
|
+
%out_status = call @sa_std_net_udp_set_send_buffer_size(%socket, %size)
|
|
949
|
+
[END_MACRO]
|
|
950
|
+
[MACRO] NET_UDP_SEND_BUFFER_SIZE %out_status, %out_size, %socket
|
|
951
|
+
__net_udp_send_buffer_size_%out_status = stack_alloc 4
|
|
952
|
+
%out_status = call @sa_std_net_udp_send_buffer_size(%socket, &__net_udp_send_buffer_size_%out_status)
|
|
953
|
+
%out_size = load __net_udp_send_buffer_size_%out_status+0 as u32
|
|
954
|
+
[END_MACRO]
|
|
955
|
+
|
|
956
|
+
[MACRO] NET_UDP_SET_ONLY_V6 %out_status, %socket, %enabled
|
|
957
|
+
%out_status = call @sa_std_net_udp_set_only_v6(%socket, %enabled)
|
|
958
|
+
[END_MACRO]
|
|
959
|
+
|
|
960
|
+
[MACRO] NET_UDP_ONLY_V6 %out_status, %out_enabled, %socket
|
|
961
|
+
__net_udp_only_v6_%out_status = stack_alloc 4
|
|
962
|
+
%out_status = call @sa_std_net_udp_only_v6(%socket, &__net_udp_only_v6_%out_status)
|
|
963
|
+
%out_enabled = load __net_udp_only_v6_%out_status+0 as i32
|
|
964
|
+
[END_MACRO]
|
|
965
|
+
[MACRO] NET_UDP_SET_TTL %out_status, %socket, %ttl
|
|
966
|
+
%out_status = call @sa_std_net_udp_set_ttl(%socket, %ttl)
|
|
967
|
+
[END_MACRO]
|
|
968
|
+
|
|
969
|
+
[MACRO] NET_UDP_SET_MULTICAST_LOOP_V4 %out_status, %socket, %enabled
|
|
970
|
+
%out_status = call @sa_std_net_udp_set_multicast_loop_v4(%socket, %enabled)
|
|
971
|
+
[END_MACRO]
|
|
972
|
+
|
|
973
|
+
[MACRO] NET_UDP_SET_MULTICAST_TTL_V4 %out_status, %socket, %ttl
|
|
974
|
+
%out_status = call @sa_std_net_udp_set_multicast_ttl_v4(%socket, %ttl)
|
|
975
|
+
[END_MACRO]
|
|
976
|
+
|
|
977
|
+
[MACRO] NET_UDP_SET_MULTICAST_LOOP_V6 %out_status, %socket, %enabled
|
|
978
|
+
%out_status = call @sa_std_net_udp_set_multicast_loop_v6(%socket, %enabled)
|
|
979
|
+
[END_MACRO]
|
|
980
|
+
|
|
981
|
+
[MACRO] NET_UDP_SET_MULTICAST_HOPS_V6 %out_status, %socket, %hops
|
|
982
|
+
%out_status = call @sa_std_net_udp_set_multicast_hops_v6(%socket, %hops)
|
|
983
|
+
[END_MACRO]
|
|
984
|
+
|
|
985
|
+
[MACRO] NET_UDP_READ_TIMEOUT %out_status, %out_timeout_ns, %socket
|
|
986
|
+
__net_udp_read_timeout_%out_status = stack_alloc 8
|
|
987
|
+
%out_status = call @sa_std_net_udp_read_timeout(%socket, &__net_udp_read_timeout_%out_status)
|
|
988
|
+
%out_timeout_ns = load __net_udp_read_timeout_%out_status+0 as u64
|
|
989
|
+
[END_MACRO]
|
|
990
|
+
|
|
991
|
+
[MACRO] NET_UDP_WRITE_TIMEOUT %out_status, %out_timeout_ns, %socket
|
|
992
|
+
__net_udp_write_timeout_%out_status = stack_alloc 8
|
|
993
|
+
%out_status = call @sa_std_net_udp_write_timeout(%socket, &__net_udp_write_timeout_%out_status)
|
|
994
|
+
%out_timeout_ns = load __net_udp_write_timeout_%out_status+0 as u64
|
|
995
|
+
[END_MACRO]
|
|
996
|
+
|
|
997
|
+
[MACRO] NET_UDP_BROADCAST %out_status, %out_enabled, %socket
|
|
998
|
+
__net_udp_broadcast_%out_status = stack_alloc 4
|
|
999
|
+
%out_status = call @sa_std_net_udp_broadcast(%socket, &__net_udp_broadcast_%out_status)
|
|
1000
|
+
%out_enabled = load __net_udp_broadcast_%out_status+0 as i32
|
|
1001
|
+
[END_MACRO]
|
|
1002
|
+
|
|
1003
|
+
[MACRO] NET_UDP_TTL %out_status, %out_ttl, %socket
|
|
1004
|
+
__net_udp_ttl_%out_status = stack_alloc 4
|
|
1005
|
+
%out_status = call @sa_std_net_udp_ttl(%socket, &__net_udp_ttl_%out_status)
|
|
1006
|
+
%out_ttl = load __net_udp_ttl_%out_status+0 as u32
|
|
1007
|
+
[END_MACRO]
|
|
1008
|
+
|
|
1009
|
+
[MACRO] NET_UDP_MULTICAST_LOOP_V4 %out_status, %out_enabled, %socket
|
|
1010
|
+
__net_udp_multicast_loop_v4_%out_status = stack_alloc 4
|
|
1011
|
+
%out_status = call @sa_std_net_udp_multicast_loop_v4(%socket, &__net_udp_multicast_loop_v4_%out_status)
|
|
1012
|
+
%out_enabled = load __net_udp_multicast_loop_v4_%out_status+0 as i32
|
|
1013
|
+
[END_MACRO]
|
|
1014
|
+
|
|
1015
|
+
[MACRO] NET_UDP_MULTICAST_TTL_V4 %out_status, %out_ttl, %socket
|
|
1016
|
+
__net_udp_multicast_ttl_v4_%out_status = stack_alloc 4
|
|
1017
|
+
%out_status = call @sa_std_net_udp_multicast_ttl_v4(%socket, &__net_udp_multicast_ttl_v4_%out_status)
|
|
1018
|
+
%out_ttl = load __net_udp_multicast_ttl_v4_%out_status+0 as u32
|
|
1019
|
+
[END_MACRO]
|
|
1020
|
+
|
|
1021
|
+
[MACRO] NET_UDP_MULTICAST_LOOP_V6 %out_status, %out_enabled, %socket
|
|
1022
|
+
__net_udp_multicast_loop_v6_%out_status = stack_alloc 4
|
|
1023
|
+
%out_status = call @sa_std_net_udp_multicast_loop_v6(%socket, &__net_udp_multicast_loop_v6_%out_status)
|
|
1024
|
+
%out_enabled = load __net_udp_multicast_loop_v6_%out_status+0 as i32
|
|
1025
|
+
[END_MACRO]
|
|
1026
|
+
|
|
1027
|
+
[MACRO] NET_UDP_MULTICAST_HOPS_V6 %out_status, %out_hops, %socket
|
|
1028
|
+
__net_udp_multicast_hops_v6_%out_status = stack_alloc 4
|
|
1029
|
+
%out_status = call @sa_std_net_udp_multicast_hops_v6(%socket, &__net_udp_multicast_hops_v6_%out_status)
|
|
1030
|
+
%out_hops = load __net_udp_multicast_hops_v6_%out_status+0 as u32
|
|
1031
|
+
[END_MACRO]
|
|
1032
|
+
|
|
1033
|
+
[MACRO] NET_UDP_SET_MULTICAST_IF_V4 %out_status, %socket, %interface_addr
|
|
1034
|
+
%out_status = call @sa_std_net_udp_set_multicast_if_v4(%socket, &%interface_addr)
|
|
1035
|
+
[END_MACRO]
|
|
1036
|
+
|
|
1037
|
+
[MACRO] NET_UDP_MULTICAST_IF_V4 %out_status, %out_interface_addr, %socket
|
|
1038
|
+
%out_status = call @sa_std_net_udp_multicast_if_v4(%socket, &%out_interface_addr)
|
|
1039
|
+
[END_MACRO]
|
|
1040
|
+
|
|
1041
|
+
[MACRO] NET_UDP_SET_MULTICAST_IF_V6 %out_status, %socket, %interface_index
|
|
1042
|
+
%out_status = call @sa_std_net_udp_set_multicast_if_v6(%socket, %interface_index)
|
|
1043
|
+
[END_MACRO]
|
|
1044
|
+
|
|
1045
|
+
[MACRO] NET_UDP_MULTICAST_IF_V6 %out_status, %out_interface_index, %socket
|
|
1046
|
+
__net_udp_multicast_if_v6_%out_status = stack_alloc 4
|
|
1047
|
+
%out_status = call @sa_std_net_udp_multicast_if_v6(%socket, &__net_udp_multicast_if_v6_%out_status)
|
|
1048
|
+
%out_interface_index = load __net_udp_multicast_if_v6_%out_status+0 as u32
|
|
1049
|
+
[END_MACRO]
|
|
1050
|
+
|
|
1051
|
+
[MACRO] NET_UDP_TAKE_ERROR %out_status, %out_error, %socket
|
|
1052
|
+
__net_udp_error_%out_status = stack_alloc 4
|
|
1053
|
+
%out_status = call @sa_std_net_udp_take_error(%socket, &__net_udp_error_%out_status)
|
|
1054
|
+
%out_error = load __net_udp_error_%out_status+0 as i32
|
|
1055
|
+
[END_MACRO]
|
|
1056
|
+
|
|
1057
|
+
[MACRO] NET_UDP_JOIN_MULTICAST_V4 %out_status, %socket, %multi_host, %multi_host_len, %interface_host, %interface_host_len
|
|
1058
|
+
%out_status = call @sa_std_net_udp_join_multicast_v4(%socket, &%multi_host, %multi_host_len, &%interface_host, %interface_host_len)
|
|
1059
|
+
[END_MACRO]
|
|
1060
|
+
|
|
1061
|
+
[MACRO] NET_UDP_LEAVE_MULTICAST_V4 %out_status, %socket, %multi_host, %multi_host_len, %interface_host, %interface_host_len
|
|
1062
|
+
%out_status = call @sa_std_net_udp_leave_multicast_v4(%socket, &%multi_host, %multi_host_len, &%interface_host, %interface_host_len)
|
|
1063
|
+
[END_MACRO]
|
|
1064
|
+
|
|
1065
|
+
[MACRO] NET_UDP_JOIN_MULTICAST_V6 %out_status, %socket, %multi_host, %multi_host_len, %interface_index
|
|
1066
|
+
%out_status = call @sa_std_net_udp_join_multicast_v6(%socket, &%multi_host, %multi_host_len, %interface_index)
|
|
1067
|
+
[END_MACRO]
|
|
1068
|
+
|
|
1069
|
+
[MACRO] NET_UDP_LEAVE_MULTICAST_V6 %out_status, %socket, %multi_host, %multi_host_len, %interface_index
|
|
1070
|
+
%out_status = call @sa_std_net_udp_leave_multicast_v6(%socket, &%multi_host, %multi_host_len, %interface_index)
|
|
1071
|
+
[END_MACRO]
|
|
1072
|
+
|
|
1073
|
+
[MACRO] NET_UDP_SEND %out_status, %out_len, %socket, %buf, %len
|
|
1074
|
+
__net_udp_send_len_%out_status = stack_alloc 8
|
|
1075
|
+
%out_status = call @sa_std_net_udp_send(%socket, &%buf, %len, &__net_udp_send_len_%out_status)
|
|
1076
|
+
%out_len = load __net_udp_send_len_%out_status+0 as u64
|
|
1077
|
+
[END_MACRO]
|
|
1078
|
+
|
|
1079
|
+
[MACRO] NET_UDP_RECV %out_status, %out_len, %socket, %buf, %cap
|
|
1080
|
+
__net_udp_recv_len_%out_status = stack_alloc 8
|
|
1081
|
+
%out_status = call @sa_std_net_udp_recv(%socket, &%buf, %cap, &__net_udp_recv_len_%out_status)
|
|
1082
|
+
%out_len = load __net_udp_recv_len_%out_status+0 as u64
|
|
1083
|
+
[END_MACRO]
|
|
1084
|
+
|
|
1085
|
+
[MACRO] NET_UDP_PEEK %out_status, %out_len, %socket, %buf, %cap
|
|
1086
|
+
__net_udp_peek_len_%out_status = stack_alloc 8
|
|
1087
|
+
%out_status = call @sa_std_net_udp_peek(%socket, &%buf, %cap, &__net_udp_peek_len_%out_status)
|
|
1088
|
+
%out_len = load __net_udp_peek_len_%out_status+0 as u64
|
|
1089
|
+
[END_MACRO]
|
|
1090
|
+
|
|
1091
|
+
[MACRO] NET_UDP_SEND_TO %out_status, %out_len, %socket, %buf, %len, %host, %host_len, %port
|
|
1092
|
+
__net_udp_send_to_len_%out_status = stack_alloc 8
|
|
1093
|
+
%out_status = call @sa_std_net_udp_send_to(%socket, &%buf, %len, &%host, %host_len, %port, &__net_udp_send_to_len_%out_status)
|
|
1094
|
+
%out_len = load __net_udp_send_to_len_%out_status+0 as u64
|
|
1095
|
+
[END_MACRO]
|
|
1096
|
+
|
|
1097
|
+
[MACRO] NET_UDP_RECV_FROM %out_status, %out_len, %out_addr, %socket, %buf, %cap
|
|
1098
|
+
__net_udp_recv_from_len_%out_status = stack_alloc 8
|
|
1099
|
+
__net_udp_recv_from_addr_%out_status = stack_alloc 8
|
|
1100
|
+
%out_status = call @sa_std_net_udp_recv_from(%socket, &%buf, %cap, &__net_udp_recv_from_len_%out_status, &__net_udp_recv_from_addr_%out_status)
|
|
1101
|
+
%out_len = load __net_udp_recv_from_len_%out_status+0 as u64
|
|
1102
|
+
%out_addr = load __net_udp_recv_from_addr_%out_status+0 as u64
|
|
1103
|
+
[END_MACRO]
|
|
1104
|
+
|
|
1105
|
+
[MACRO] NET_UDP_PEEK_FROM %out_status, %out_len, %out_addr, %socket, %buf, %cap
|
|
1106
|
+
__net_udp_peek_from_len_%out_status = stack_alloc 8
|
|
1107
|
+
__net_udp_peek_from_addr_%out_status = stack_alloc 8
|
|
1108
|
+
%out_status = call @sa_std_net_udp_peek_from(%socket, &%buf, %cap, &__net_udp_peek_from_len_%out_status, &__net_udp_peek_from_addr_%out_status)
|
|
1109
|
+
%out_len = load __net_udp_peek_from_len_%out_status+0 as u64
|
|
1110
|
+
%out_addr = load __net_udp_peek_from_addr_%out_status+0 as u64
|
|
1111
|
+
[END_MACRO]
|
|
1112
|
+
|
|
1113
|
+
[MACRO] NET_UDP_SEND_VECTORED %out_status, %out_len, %socket, %iovs, %iov_count
|
|
1114
|
+
__net_udp_send_vec_len_%out_status = stack_alloc 8
|
|
1115
|
+
%out_status = call @sa_std_net_udp_send_vectored(%socket, &%iovs, %iov_count, &__net_udp_send_vec_len_%out_status)
|
|
1116
|
+
%out_len = load __net_udp_send_vec_len_%out_status+0 as u64
|
|
1117
|
+
[END_MACRO]
|
|
1118
|
+
|
|
1119
|
+
[MACRO] NET_UDP_SEND_TO_VECTORED %out_status, %out_len, %socket, %iovs, %iov_count, %host, %host_len, %port
|
|
1120
|
+
__net_udp_send_to_vec_len_%out_status = stack_alloc 8
|
|
1121
|
+
%out_status = call @sa_std_net_udp_send_to_vectored(%socket, &%iovs, %iov_count, &%host, %host_len, %port, &__net_udp_send_to_vec_len_%out_status)
|
|
1122
|
+
%out_len = load __net_udp_send_to_vec_len_%out_status+0 as u64
|
|
1123
|
+
[END_MACRO]
|
|
1124
|
+
|
|
1125
|
+
[MACRO] NET_UDP_RECV_FROM_VECTORED %out_status, %out_len, %out_addr, %socket, %iovs, %iov_count
|
|
1126
|
+
__net_udp_recv_from_vec_len_%out_status = stack_alloc 8
|
|
1127
|
+
__net_udp_recv_from_vec_addr_%out_status = stack_alloc 8
|
|
1128
|
+
%out_status = call @sa_std_net_udp_recv_from_vectored(%socket, &%iovs, %iov_count, &__net_udp_recv_from_vec_len_%out_status, &__net_udp_recv_from_vec_addr_%out_status)
|
|
1129
|
+
%out_len = load __net_udp_recv_from_vec_len_%out_status+0 as u64
|
|
1130
|
+
%out_addr = load __net_udp_recv_from_vec_addr_%out_status+0 as u64
|
|
1131
|
+
[END_MACRO]
|
|
1132
|
+
|
|
1133
|
+
[MACRO] NET_UDP_CLOSE %out_status, %socket
|
|
1134
|
+
%out_status = call @sa_net_udp_close(%socket)
|
|
1135
|
+
[END_MACRO]
|
|
1136
|
+
|
|
1137
|
+
[MACRO] NET_TO_SOCKET_ADDR_LIST %out_status, %out_list, %host, %host_len, %port
|
|
1138
|
+
__net_addr_list_handle_%out_status = stack_alloc 8
|
|
1139
|
+
%out_status = call @sa_std_net_to_socket_addr_list(&%host, %host_len, %port, &__net_addr_list_handle_%out_status)
|
|
1140
|
+
%out_list = load __net_addr_list_handle_%out_status+0 as u64
|
|
1141
|
+
[END_MACRO]
|
|
1142
|
+
|
|
1143
|
+
[MACRO] NET_ADDR_LIST_NEXT %out_status, %out_ok, %out_addr, %list
|
|
1144
|
+
__net_addr_list_next_ok_%out_status = stack_alloc 4
|
|
1145
|
+
__net_addr_list_next_addr_%out_status = stack_alloc 8
|
|
1146
|
+
%out_status = call @sa_std_net_addr_list_next(%list, &__net_addr_list_next_ok_%out_status, &__net_addr_list_next_addr_%out_status)
|
|
1147
|
+
%out_ok = load __net_addr_list_next_ok_%out_status+0 as i32
|
|
1148
|
+
%out_addr = load __net_addr_list_next_addr_%out_status+0 as u64
|
|
1149
|
+
[END_MACRO]
|
|
1150
|
+
|
|
1151
|
+
[MACRO] NET_ADDR_LIST_REMAINING %out_status, %out_remaining, %list
|
|
1152
|
+
__net_addr_list_remaining_%out_status = stack_alloc 8
|
|
1153
|
+
%out_status = call @sa_std_net_addr_list_remaining(%list, &__net_addr_list_remaining_%out_status)
|
|
1154
|
+
%out_remaining = load __net_addr_list_remaining_%out_status+0 as u64
|
|
1155
|
+
[END_MACRO]
|
|
1156
|
+
|
|
1157
|
+
[MACRO] NET_ADDR_LIST_RESET %out_status, %list
|
|
1158
|
+
%out_status = call @sa_std_net_addr_list_reset(%list)
|
|
1159
|
+
[END_MACRO]
|
|
1160
|
+
|
|
1161
|
+
[MACRO] NET_ADDR_LIST_FREE %out_status, %list
|
|
1162
|
+
%out_status = call @sa_std_net_addr_list_free(%list)
|
|
1163
|
+
[END_MACRO]
|
|
1164
|
+
[MACRO] NET_TO_SOCKET_ADDR_FIRST %out_status, %out_addr, %host, %host_len, %port
|
|
1165
|
+
__net_to_socket_addr_%out_status = stack_alloc 8
|
|
1166
|
+
%out_status = call @sa_std_net_to_socket_addr_first(&%host, %host_len, %port, &__net_to_socket_addr_%out_status)
|
|
1167
|
+
%out_addr = load __net_to_socket_addr_%out_status+0 as u64
|
|
1168
|
+
[END_MACRO]
|
|
1169
|
+
|
|
1170
|
+
[MACRO] NET_ADDR_HOST %out_ptr, %addr
|
|
1171
|
+
%out_ptr = call @sa_net_addr_host(%addr)
|
|
1172
|
+
[END_MACRO]
|
|
1173
|
+
|
|
1174
|
+
[MACRO] NET_ADDR_HOST_LEN %out_len, %addr
|
|
1175
|
+
%out_len = call @sa_net_addr_host_len(%addr)
|
|
1176
|
+
[END_MACRO]
|
|
1177
|
+
|
|
1178
|
+
[MACRO] NET_ADDR_PORT %out_port, %addr
|
|
1179
|
+
%out_port = call @sa_net_addr_port(%addr)
|
|
1180
|
+
[END_MACRO]
|
|
1181
|
+
|
|
1182
|
+
[MACRO] NET_ADDR_FAMILY %out_family, %addr
|
|
1183
|
+
%out_family = call @sa_net_addr_family(%addr)
|
|
1184
|
+
[END_MACRO]
|
|
1185
|
+
|
|
1186
|
+
[MACRO] NET_ADDR_SCOPE_ID %out_scope_id, %addr
|
|
1187
|
+
%out_scope_id = call @sa_net_addr_scope_id(%addr)
|
|
1188
|
+
[END_MACRO]
|
|
1189
|
+
|
|
1190
|
+
[MACRO] NET_ADDR_FORMAT %out_status, %out_len, %addr, %buf, %cap
|
|
1191
|
+
__net_addr_format_len_%out_status = stack_alloc 8
|
|
1192
|
+
%out_status = call @sa_std_net_addr_format(%addr, &%buf, %cap, &__net_addr_format_len_%out_status)
|
|
1193
|
+
%out_len = load __net_addr_format_len_%out_status+0 as u64
|
|
1194
|
+
[END_MACRO]
|
|
1195
|
+
|
|
1196
|
+
[MACRO] NET_ADDR_IS_IPV4 %out_flag, %addr
|
|
1197
|
+
__net_addr_family_%out_flag = call @sa_net_addr_family(%addr)
|
|
1198
|
+
%out_flag = eq __net_addr_family_%out_flag, SA_NET_AF_INET
|
|
1199
|
+
!__net_addr_family_%out_flag
|
|
1200
|
+
[END_MACRO]
|
|
1201
|
+
|
|
1202
|
+
[MACRO] NET_ADDR_IS_IPV6 %out_flag, %addr
|
|
1203
|
+
__net_addr_family_%out_flag = call @sa_net_addr_family(%addr)
|
|
1204
|
+
%out_flag = eq __net_addr_family_%out_flag, SA_NET_AF_INET6
|
|
1205
|
+
!__net_addr_family_%out_flag
|
|
1206
|
+
[END_MACRO]
|
|
1207
|
+
|
|
1208
|
+
[MACRO] NET_ADDR_FREE %out_status, %addr
|
|
1209
|
+
__net_addr_free_%out_status = call @sa_net_addr_free(%addr)
|
|
1210
|
+
%out_status = load __net_addr_free_%out_status+0 as i32
|
|
1211
|
+
!__net_addr_free_%out_status
|
|
1212
|
+
[END_MACRO]
|
|
1213
|
+
|
|
1214
|
+
[MACRO] NET_UNIX_ADDR_KIND %out_kind, %addr
|
|
1215
|
+
%out_kind = call @sa_net_unix_addr_kind(%addr)
|
|
1216
|
+
[END_MACRO]
|
|
1217
|
+
|
|
1218
|
+
[MACRO] NET_UNIX_ADDR_IS_UNNAMED %out_flag, %addr
|
|
1219
|
+
%out_flag = call @sa_net_unix_addr_is_unnamed(%addr)
|
|
1220
|
+
[END_MACRO]
|
|
1221
|
+
|
|
1222
|
+
[MACRO] NET_UNIX_ADDR_PATH_PTR %out_ptr, %addr
|
|
1223
|
+
%out_ptr = call @sa_net_unix_addr_path_ptr(%addr)
|
|
1224
|
+
[END_MACRO]
|
|
1225
|
+
|
|
1226
|
+
[MACRO] NET_UNIX_ADDR_PATH_LEN %out_len, %addr
|
|
1227
|
+
%out_len = call @sa_net_unix_addr_path_len(%addr)
|
|
1228
|
+
[END_MACRO]
|
|
1229
|
+
|
|
1230
|
+
[MACRO] NET_UNIX_ADDR_AS_PATHNAME_PTR %out_ptr, %addr
|
|
1231
|
+
EXPAND NET_UNIX_ADDR_PATH_PTR %out_ptr, %addr
|
|
1232
|
+
[END_MACRO]
|
|
1233
|
+
|
|
1234
|
+
[MACRO] NET_UNIX_ADDR_AS_PATHNAME_LEN %out_len, %addr
|
|
1235
|
+
EXPAND NET_UNIX_ADDR_PATH_LEN %out_len, %addr
|
|
1236
|
+
[END_MACRO]
|
|
1237
|
+
|
|
1238
|
+
[MACRO] NET_UNIX_ADDR_ABSTRACT_PTR %out_ptr, %addr
|
|
1239
|
+
%out_ptr = call @sa_net_unix_addr_abstract_ptr(%addr)
|
|
1240
|
+
[END_MACRO]
|
|
1241
|
+
|
|
1242
|
+
[MACRO] NET_UNIX_ADDR_ABSTRACT_LEN %out_len, %addr
|
|
1243
|
+
%out_len = call @sa_net_unix_addr_abstract_len(%addr)
|
|
1244
|
+
[END_MACRO]
|
|
1245
|
+
|
|
1246
|
+
[MACRO] NET_UNIX_ADDR_AS_ABSTRACT_NAME_PTR %out_ptr, %addr
|
|
1247
|
+
EXPAND NET_UNIX_ADDR_ABSTRACT_PTR %out_ptr, %addr
|
|
1248
|
+
[END_MACRO]
|
|
1249
|
+
|
|
1250
|
+
[MACRO] NET_UNIX_ADDR_AS_ABSTRACT_NAME_LEN %out_len, %addr
|
|
1251
|
+
EXPAND NET_UNIX_ADDR_ABSTRACT_LEN %out_len, %addr
|
|
1252
|
+
[END_MACRO]
|
|
1253
|
+
|
|
1254
|
+
[MACRO] NET_UNIX_ADDR_FREE %out_status, %addr
|
|
1255
|
+
__net_unix_addr_free_%out_status = call @sa_net_unix_addr_free(%addr)
|
|
1256
|
+
%out_status = load __net_unix_addr_free_%out_status+0 as i32
|
|
1257
|
+
!__net_unix_addr_free_%out_status
|
|
1258
|
+
[END_MACRO]
|
|
1259
|
+
|
|
1260
|
+
[MACRO] NET_IPV4_NEW %addr, %a, %b, %c, %d
|
|
1261
|
+
store %addr+NetIpv4Addr_a, %a as u8
|
|
1262
|
+
store %addr+NetIpv4Addr_b, %b as u8
|
|
1263
|
+
store %addr+NetIpv4Addr_c, %c as u8
|
|
1264
|
+
store %addr+NetIpv4Addr_d, %d as u8
|
|
1265
|
+
[END_MACRO]
|
|
1266
|
+
|
|
1267
|
+
[MACRO] NET_IPV4_UNSPECIFIED %addr
|
|
1268
|
+
EXPAND NET_IPV4_NEW %addr, 0, 0, 0, 0
|
|
1269
|
+
[END_MACRO]
|
|
1270
|
+
|
|
1271
|
+
// Rust-style Default for Ipv4Addr: UNSPECIFIED.
|
|
1272
|
+
[MACRO] NET_IPV4_DEFAULT %addr
|
|
1273
|
+
EXPAND NET_IPV4_UNSPECIFIED %addr
|
|
1274
|
+
[END_MACRO]
|
|
1275
|
+
|
|
1276
|
+
[MACRO] NET_IPV4_LOCALHOST %addr
|
|
1277
|
+
EXPAND NET_IPV4_NEW %addr, 127, 0, 0, 1
|
|
1278
|
+
[END_MACRO]
|
|
1279
|
+
|
|
1280
|
+
[MACRO] NET_IPV4_BROADCAST %addr
|
|
1281
|
+
EXPAND NET_IPV4_NEW %addr, 255, 255, 255, 255
|
|
1282
|
+
[END_MACRO]
|
|
1283
|
+
|
|
1284
|
+
[MACRO] NET_IPV4_BITS %out_bits
|
|
1285
|
+
%out_bits = add 0, NET_IPV4_BITS_VALUE
|
|
1286
|
+
[END_MACRO]
|
|
1287
|
+
|
|
1288
|
+
[MACRO] NET_IPV4_OCTETS %out_a, %out_b, %out_c, %out_d, %addr
|
|
1289
|
+
%out_a = load %addr+NetIpv4Addr_a as u8
|
|
1290
|
+
%out_b = load %addr+NetIpv4Addr_b as u8
|
|
1291
|
+
%out_c = load %addr+NetIpv4Addr_c as u8
|
|
1292
|
+
%out_d = load %addr+NetIpv4Addr_d as u8
|
|
1293
|
+
[END_MACRO]
|
|
1294
|
+
|
|
1295
|
+
[MACRO] NET_IPV4_AS_OCTETS_PTR %out_ptr, %addr
|
|
1296
|
+
%out_ptr = ptr_add %addr, 0
|
|
1297
|
+
[END_MACRO]
|
|
1298
|
+
|
|
1299
|
+
[MACRO] NET_IPV4_WRITE_OCTETS %out_ok, %dst_ptr, %dst_len, %addr
|
|
1300
|
+
__net_ipv4_write_fits_%out_ok = uge %dst_len, 4
|
|
1301
|
+
br __net_ipv4_write_fits_%out_ok -> L_NET_IPV4_WRITE_OCTETS_OK_%out_ok, L_NET_IPV4_WRITE_OCTETS_FAIL_%out_ok
|
|
1302
|
+
|
|
1303
|
+
L_NET_IPV4_WRITE_OCTETS_OK_%out_ok:
|
|
1304
|
+
__net_ipv4_write_a_%out_ok = load %addr+NetIpv4Addr_a as u8
|
|
1305
|
+
__net_ipv4_write_b_%out_ok = load %addr+NetIpv4Addr_b as u8
|
|
1306
|
+
__net_ipv4_write_c_%out_ok = load %addr+NetIpv4Addr_c as u8
|
|
1307
|
+
__net_ipv4_write_d_%out_ok = load %addr+NetIpv4Addr_d as u8
|
|
1308
|
+
store %dst_ptr+0, __net_ipv4_write_a_%out_ok as u8
|
|
1309
|
+
__net_ipv4_write_p1_%out_ok = ptr_add %dst_ptr, 1
|
|
1310
|
+
__net_ipv4_write_p2_%out_ok = ptr_add %dst_ptr, 2
|
|
1311
|
+
__net_ipv4_write_p3_%out_ok = ptr_add %dst_ptr, 3
|
|
1312
|
+
store __net_ipv4_write_p1_%out_ok+0, __net_ipv4_write_b_%out_ok as u8
|
|
1313
|
+
store __net_ipv4_write_p2_%out_ok+0, __net_ipv4_write_c_%out_ok as u8
|
|
1314
|
+
store __net_ipv4_write_p3_%out_ok+0, __net_ipv4_write_d_%out_ok as u8
|
|
1315
|
+
%out_ok = add 0, 1
|
|
1316
|
+
!__net_ipv4_write_p3_%out_ok
|
|
1317
|
+
!__net_ipv4_write_p2_%out_ok
|
|
1318
|
+
!__net_ipv4_write_p1_%out_ok
|
|
1319
|
+
!__net_ipv4_write_d_%out_ok
|
|
1320
|
+
!__net_ipv4_write_c_%out_ok
|
|
1321
|
+
!__net_ipv4_write_b_%out_ok
|
|
1322
|
+
!__net_ipv4_write_a_%out_ok
|
|
1323
|
+
!__net_ipv4_write_fits_%out_ok
|
|
1324
|
+
jmp L_NET_IPV4_WRITE_OCTETS_END_%out_ok
|
|
1325
|
+
|
|
1326
|
+
L_NET_IPV4_WRITE_OCTETS_FAIL_%out_ok:
|
|
1327
|
+
%out_ok = add 0, 0
|
|
1328
|
+
!__net_ipv4_write_fits_%out_ok
|
|
1329
|
+
|
|
1330
|
+
L_NET_IPV4_WRITE_OCTETS_END_%out_ok:
|
|
1331
|
+
[END_MACRO]
|
|
1332
|
+
|
|
1333
|
+
[MACRO] NET_IPV4_FROM_OCTETS %addr, %a, %b, %c, %d
|
|
1334
|
+
EXPAND NET_IPV4_NEW %addr, %a, %b, %c, %d
|
|
1335
|
+
[END_MACRO]
|
|
1336
|
+
|
|
1337
|
+
[MACRO] NET_IPV4_COPY %dst_addr, %src_addr
|
|
1338
|
+
__net_ipv4_copy_a_%dst_addr = load %src_addr+NetIpv4Addr_a as u8
|
|
1339
|
+
__net_ipv4_copy_b_%dst_addr = load %src_addr+NetIpv4Addr_b as u8
|
|
1340
|
+
__net_ipv4_copy_c_%dst_addr = load %src_addr+NetIpv4Addr_c as u8
|
|
1341
|
+
__net_ipv4_copy_d_%dst_addr = load %src_addr+NetIpv4Addr_d as u8
|
|
1342
|
+
EXPAND NET_IPV4_NEW %dst_addr, __net_ipv4_copy_a_%dst_addr, __net_ipv4_copy_b_%dst_addr, __net_ipv4_copy_c_%dst_addr, __net_ipv4_copy_d_%dst_addr
|
|
1343
|
+
!__net_ipv4_copy_d_%dst_addr
|
|
1344
|
+
!__net_ipv4_copy_c_%dst_addr
|
|
1345
|
+
!__net_ipv4_copy_b_%dst_addr
|
|
1346
|
+
!__net_ipv4_copy_a_%dst_addr
|
|
1347
|
+
[END_MACRO]
|
|
1348
|
+
|
|
1349
|
+
[MACRO] NET_IPV4_TO_BITS %out_bits, %addr
|
|
1350
|
+
__net_ipv4_bits_a_%out_bits = load %addr+NetIpv4Addr_a as u8
|
|
1351
|
+
__net_ipv4_bits_b_%out_bits = load %addr+NetIpv4Addr_b as u8
|
|
1352
|
+
__net_ipv4_bits_c_%out_bits = load %addr+NetIpv4Addr_c as u8
|
|
1353
|
+
__net_ipv4_bits_d_%out_bits = load %addr+NetIpv4Addr_d as u8
|
|
1354
|
+
__net_ipv4_bits_a_shift_%out_bits = shl __net_ipv4_bits_a_%out_bits, 24
|
|
1355
|
+
__net_ipv4_bits_b_shift_%out_bits = shl __net_ipv4_bits_b_%out_bits, 16
|
|
1356
|
+
__net_ipv4_bits_c_shift_%out_bits = shl __net_ipv4_bits_c_%out_bits, 8
|
|
1357
|
+
__net_ipv4_bits_ab_%out_bits = or __net_ipv4_bits_a_shift_%out_bits, __net_ipv4_bits_b_shift_%out_bits
|
|
1358
|
+
__net_ipv4_bits_cd_%out_bits = or __net_ipv4_bits_c_shift_%out_bits, __net_ipv4_bits_d_%out_bits
|
|
1359
|
+
%out_bits = or __net_ipv4_bits_ab_%out_bits, __net_ipv4_bits_cd_%out_bits
|
|
1360
|
+
!__net_ipv4_bits_cd_%out_bits
|
|
1361
|
+
!__net_ipv4_bits_ab_%out_bits
|
|
1362
|
+
!__net_ipv4_bits_c_shift_%out_bits
|
|
1363
|
+
!__net_ipv4_bits_b_shift_%out_bits
|
|
1364
|
+
!__net_ipv4_bits_a_shift_%out_bits
|
|
1365
|
+
!__net_ipv4_bits_d_%out_bits
|
|
1366
|
+
!__net_ipv4_bits_c_%out_bits
|
|
1367
|
+
!__net_ipv4_bits_b_%out_bits
|
|
1368
|
+
!__net_ipv4_bits_a_%out_bits
|
|
1369
|
+
[END_MACRO]
|
|
1370
|
+
|
|
1371
|
+
[MACRO] DEFAULT_HASHER_WRITE_NET_IPV4 %hasher, %addr
|
|
1372
|
+
__net_ipv4_hash_bits_%hasher = load %addr+NetIpv4Addr_a as u32
|
|
1373
|
+
EXPAND DEFAULT_HASHER_WRITE_U32 %hasher, __net_ipv4_hash_bits_%hasher
|
|
1374
|
+
!__net_ipv4_hash_bits_%hasher
|
|
1375
|
+
[END_MACRO]
|
|
1376
|
+
|
|
1377
|
+
[MACRO] NET_IPV4_HASH %out_hash, %addr
|
|
1378
|
+
__net_ipv4_hash_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1379
|
+
EXPAND DEFAULT_HASHER_NEW __net_ipv4_hash_hasher_%out_hash
|
|
1380
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_IPV4 __net_ipv4_hash_hasher_%out_hash, %addr
|
|
1381
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __net_ipv4_hash_hasher_%out_hash
|
|
1382
|
+
[END_MACRO]
|
|
1383
|
+
|
|
1384
|
+
[MACRO] BUILD_HASHER_DEFAULT_HASH_ONE_NET_IPV4 %out_hash, %builder, %addr
|
|
1385
|
+
__build_hash_one_ipv4_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1386
|
+
EXPAND BUILD_HASHER_DEFAULT_BUILD __build_hash_one_ipv4_hasher_%out_hash, %builder
|
|
1387
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_IPV4 __build_hash_one_ipv4_hasher_%out_hash, %addr
|
|
1388
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __build_hash_one_ipv4_hasher_%out_hash
|
|
1389
|
+
[END_MACRO]
|
|
1390
|
+
|
|
1391
|
+
[MACRO] RANDOM_STATE_HASH_ONE_NET_IPV4 %out_hash, %state, %addr
|
|
1392
|
+
__random_state_hash_one_ipv4_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1393
|
+
EXPAND RANDOM_STATE_BUILD __random_state_hash_one_ipv4_hasher_%out_hash, %state
|
|
1394
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_IPV4 __random_state_hash_one_ipv4_hasher_%out_hash, %addr
|
|
1395
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __random_state_hash_one_ipv4_hasher_%out_hash
|
|
1396
|
+
[END_MACRO]
|
|
1397
|
+
|
|
1398
|
+
[MACRO] DEFAULT_HASHER_WRITE_NET_SOCKET_ADDR_V4 %hasher, %socket_addr
|
|
1399
|
+
EXPAND NET_SOCKET_ADDR_V4_IP_PTR __net_sock_v4_hash_ip_%hasher, %socket_addr
|
|
1400
|
+
__net_sock_v4_hash_port_%hasher = load %socket_addr+NetSocketAddrV4_port as u16
|
|
1401
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_IPV4 %hasher, __net_sock_v4_hash_ip_%hasher
|
|
1402
|
+
EXPAND DEFAULT_HASHER_WRITE_U16 %hasher, __net_sock_v4_hash_port_%hasher
|
|
1403
|
+
!__net_sock_v4_hash_port_%hasher
|
|
1404
|
+
!__net_sock_v4_hash_ip_%hasher
|
|
1405
|
+
[END_MACRO]
|
|
1406
|
+
|
|
1407
|
+
[MACRO] NET_SOCKET_ADDR_V4_HASH %out_hash, %socket_addr
|
|
1408
|
+
__net_sock_v4_hash_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1409
|
+
EXPAND DEFAULT_HASHER_NEW __net_sock_v4_hash_hasher_%out_hash
|
|
1410
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_SOCKET_ADDR_V4 __net_sock_v4_hash_hasher_%out_hash, %socket_addr
|
|
1411
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __net_sock_v4_hash_hasher_%out_hash
|
|
1412
|
+
[END_MACRO]
|
|
1413
|
+
|
|
1414
|
+
[MACRO] BUILD_HASHER_DEFAULT_HASH_ONE_NET_SOCKET_ADDR_V4 %out_hash, %builder, %socket_addr
|
|
1415
|
+
__build_hash_one_sock_v4_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1416
|
+
EXPAND BUILD_HASHER_DEFAULT_BUILD __build_hash_one_sock_v4_hasher_%out_hash, %builder
|
|
1417
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_SOCKET_ADDR_V4 __build_hash_one_sock_v4_hasher_%out_hash, %socket_addr
|
|
1418
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __build_hash_one_sock_v4_hasher_%out_hash
|
|
1419
|
+
[END_MACRO]
|
|
1420
|
+
|
|
1421
|
+
[MACRO] RANDOM_STATE_HASH_ONE_NET_SOCKET_ADDR_V4 %out_hash, %state, %socket_addr
|
|
1422
|
+
__random_state_hash_one_sock_v4_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1423
|
+
EXPAND RANDOM_STATE_BUILD __random_state_hash_one_sock_v4_hasher_%out_hash, %state
|
|
1424
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_SOCKET_ADDR_V4 __random_state_hash_one_sock_v4_hasher_%out_hash, %socket_addr
|
|
1425
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __random_state_hash_one_sock_v4_hasher_%out_hash
|
|
1426
|
+
[END_MACRO]
|
|
1427
|
+
|
|
1428
|
+
[MACRO] DEFAULT_HASHER_WRITE_NET_IPV6 %hasher, %addr
|
|
1429
|
+
__net_ipv6_hash_s0_%hasher = load %addr+NetIpv6Addr_s0 as u16
|
|
1430
|
+
__net_ipv6_hash_s1_%hasher = load %addr+NetIpv6Addr_s1 as u16
|
|
1431
|
+
__net_ipv6_hash_s2_%hasher = load %addr+NetIpv6Addr_s2 as u16
|
|
1432
|
+
__net_ipv6_hash_s3_%hasher = load %addr+NetIpv6Addr_s3 as u16
|
|
1433
|
+
__net_ipv6_hash_s4_%hasher = load %addr+NetIpv6Addr_s4 as u16
|
|
1434
|
+
__net_ipv6_hash_s5_%hasher = load %addr+NetIpv6Addr_s5 as u16
|
|
1435
|
+
__net_ipv6_hash_s6_%hasher = load %addr+NetIpv6Addr_s6 as u16
|
|
1436
|
+
__net_ipv6_hash_s7_%hasher = load %addr+NetIpv6Addr_s7 as u16
|
|
1437
|
+
EXPAND DEFAULT_HASHER_WRITE_U16 %hasher, __net_ipv6_hash_s0_%hasher
|
|
1438
|
+
EXPAND DEFAULT_HASHER_WRITE_U16 %hasher, __net_ipv6_hash_s1_%hasher
|
|
1439
|
+
EXPAND DEFAULT_HASHER_WRITE_U16 %hasher, __net_ipv6_hash_s2_%hasher
|
|
1440
|
+
EXPAND DEFAULT_HASHER_WRITE_U16 %hasher, __net_ipv6_hash_s3_%hasher
|
|
1441
|
+
EXPAND DEFAULT_HASHER_WRITE_U16 %hasher, __net_ipv6_hash_s4_%hasher
|
|
1442
|
+
EXPAND DEFAULT_HASHER_WRITE_U16 %hasher, __net_ipv6_hash_s5_%hasher
|
|
1443
|
+
EXPAND DEFAULT_HASHER_WRITE_U16 %hasher, __net_ipv6_hash_s6_%hasher
|
|
1444
|
+
EXPAND DEFAULT_HASHER_WRITE_U16 %hasher, __net_ipv6_hash_s7_%hasher
|
|
1445
|
+
!__net_ipv6_hash_s7_%hasher
|
|
1446
|
+
!__net_ipv6_hash_s6_%hasher
|
|
1447
|
+
!__net_ipv6_hash_s5_%hasher
|
|
1448
|
+
!__net_ipv6_hash_s4_%hasher
|
|
1449
|
+
!__net_ipv6_hash_s3_%hasher
|
|
1450
|
+
!__net_ipv6_hash_s2_%hasher
|
|
1451
|
+
!__net_ipv6_hash_s1_%hasher
|
|
1452
|
+
!__net_ipv6_hash_s0_%hasher
|
|
1453
|
+
[END_MACRO]
|
|
1454
|
+
|
|
1455
|
+
[MACRO] NET_IPV6_HASH %out_hash, %addr
|
|
1456
|
+
__net_ipv6_hash_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1457
|
+
EXPAND DEFAULT_HASHER_NEW __net_ipv6_hash_hasher_%out_hash
|
|
1458
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_IPV6 __net_ipv6_hash_hasher_%out_hash, %addr
|
|
1459
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __net_ipv6_hash_hasher_%out_hash
|
|
1460
|
+
[END_MACRO]
|
|
1461
|
+
|
|
1462
|
+
[MACRO] BUILD_HASHER_DEFAULT_HASH_ONE_NET_IPV6 %out_hash, %builder, %addr
|
|
1463
|
+
__build_hash_one_ipv6_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1464
|
+
EXPAND BUILD_HASHER_DEFAULT_BUILD __build_hash_one_ipv6_hasher_%out_hash, %builder
|
|
1465
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_IPV6 __build_hash_one_ipv6_hasher_%out_hash, %addr
|
|
1466
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __build_hash_one_ipv6_hasher_%out_hash
|
|
1467
|
+
[END_MACRO]
|
|
1468
|
+
|
|
1469
|
+
[MACRO] RANDOM_STATE_HASH_ONE_NET_IPV6 %out_hash, %state, %addr
|
|
1470
|
+
__random_state_hash_one_ipv6_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1471
|
+
EXPAND RANDOM_STATE_BUILD __random_state_hash_one_ipv6_hasher_%out_hash, %state
|
|
1472
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_IPV6 __random_state_hash_one_ipv6_hasher_%out_hash, %addr
|
|
1473
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __random_state_hash_one_ipv6_hasher_%out_hash
|
|
1474
|
+
[END_MACRO]
|
|
1475
|
+
|
|
1476
|
+
[MACRO] DEFAULT_HASHER_WRITE_NET_SOCKET_ADDR_V6 %hasher, %socket_addr
|
|
1477
|
+
EXPAND NET_SOCKET_ADDR_V6_IP_PTR __net_sock_v6_hash_ip_%hasher, %socket_addr
|
|
1478
|
+
__net_sock_v6_hash_port_%hasher = load %socket_addr+NetSocketAddrV6_port as u16
|
|
1479
|
+
__net_sock_v6_hash_flow_%hasher = load %socket_addr+NetSocketAddrV6_flowinfo as u32
|
|
1480
|
+
__net_sock_v6_hash_scope_%hasher = load %socket_addr+NetSocketAddrV6_scope_id as u32
|
|
1481
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_IPV6 %hasher, __net_sock_v6_hash_ip_%hasher
|
|
1482
|
+
EXPAND DEFAULT_HASHER_WRITE_U16 %hasher, __net_sock_v6_hash_port_%hasher
|
|
1483
|
+
EXPAND DEFAULT_HASHER_WRITE_U32 %hasher, __net_sock_v6_hash_flow_%hasher
|
|
1484
|
+
EXPAND DEFAULT_HASHER_WRITE_U32 %hasher, __net_sock_v6_hash_scope_%hasher
|
|
1485
|
+
!__net_sock_v6_hash_scope_%hasher
|
|
1486
|
+
!__net_sock_v6_hash_flow_%hasher
|
|
1487
|
+
!__net_sock_v6_hash_port_%hasher
|
|
1488
|
+
!__net_sock_v6_hash_ip_%hasher
|
|
1489
|
+
[END_MACRO]
|
|
1490
|
+
|
|
1491
|
+
[MACRO] NET_SOCKET_ADDR_V6_HASH %out_hash, %socket_addr
|
|
1492
|
+
__net_sock_v6_hash_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1493
|
+
EXPAND DEFAULT_HASHER_NEW __net_sock_v6_hash_hasher_%out_hash
|
|
1494
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_SOCKET_ADDR_V6 __net_sock_v6_hash_hasher_%out_hash, %socket_addr
|
|
1495
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __net_sock_v6_hash_hasher_%out_hash
|
|
1496
|
+
[END_MACRO]
|
|
1497
|
+
|
|
1498
|
+
[MACRO] BUILD_HASHER_DEFAULT_HASH_ONE_NET_SOCKET_ADDR_V6 %out_hash, %builder, %socket_addr
|
|
1499
|
+
__build_hash_one_sock_v6_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1500
|
+
EXPAND BUILD_HASHER_DEFAULT_BUILD __build_hash_one_sock_v6_hasher_%out_hash, %builder
|
|
1501
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_SOCKET_ADDR_V6 __build_hash_one_sock_v6_hasher_%out_hash, %socket_addr
|
|
1502
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __build_hash_one_sock_v6_hasher_%out_hash
|
|
1503
|
+
[END_MACRO]
|
|
1504
|
+
|
|
1505
|
+
[MACRO] RANDOM_STATE_HASH_ONE_NET_SOCKET_ADDR_V6 %out_hash, %state, %socket_addr
|
|
1506
|
+
__random_state_hash_one_sock_v6_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1507
|
+
EXPAND RANDOM_STATE_BUILD __random_state_hash_one_sock_v6_hasher_%out_hash, %state
|
|
1508
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_SOCKET_ADDR_V6 __random_state_hash_one_sock_v6_hasher_%out_hash, %socket_addr
|
|
1509
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __random_state_hash_one_sock_v6_hasher_%out_hash
|
|
1510
|
+
[END_MACRO]
|
|
1511
|
+
[MACRO] DEFAULT_HASHER_WRITE_NET_IP_ADDR %hasher, %ipaddr
|
|
1512
|
+
__net_ip_hash_tag_%hasher = load %ipaddr+NetIpAddr_tag as u64
|
|
1513
|
+
EXPAND DEFAULT_HASHER_WRITE_U64 %hasher, __net_ip_hash_tag_%hasher
|
|
1514
|
+
__net_ip_hash_payload_%hasher = ptr_add %ipaddr, 8
|
|
1515
|
+
__net_ip_hash_is_v4_%hasher = eq __net_ip_hash_tag_%hasher, NET_IP_ADDR_V4
|
|
1516
|
+
br __net_ip_hash_is_v4_%hasher -> L_NET_IP_HASH_V4_%hasher, L_NET_IP_HASH_V6_%hasher
|
|
1517
|
+
L_NET_IP_HASH_V4_%hasher:
|
|
1518
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_IPV4 %hasher, __net_ip_hash_payload_%hasher
|
|
1519
|
+
jmp L_NET_IP_HASH_DONE_%hasher
|
|
1520
|
+
L_NET_IP_HASH_V6_%hasher:
|
|
1521
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_IPV6 %hasher, __net_ip_hash_payload_%hasher
|
|
1522
|
+
L_NET_IP_HASH_DONE_%hasher:
|
|
1523
|
+
!__net_ip_hash_is_v4_%hasher
|
|
1524
|
+
!__net_ip_hash_payload_%hasher
|
|
1525
|
+
!__net_ip_hash_tag_%hasher
|
|
1526
|
+
[END_MACRO]
|
|
1527
|
+
|
|
1528
|
+
[MACRO] NET_IP_ADDR_HASH %out_hash, %ipaddr
|
|
1529
|
+
__net_ip_hash_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1530
|
+
EXPAND DEFAULT_HASHER_NEW __net_ip_hash_hasher_%out_hash
|
|
1531
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_IP_ADDR __net_ip_hash_hasher_%out_hash, %ipaddr
|
|
1532
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __net_ip_hash_hasher_%out_hash
|
|
1533
|
+
[END_MACRO]
|
|
1534
|
+
|
|
1535
|
+
[MACRO] BUILD_HASHER_DEFAULT_HASH_ONE_NET_IP_ADDR %out_hash, %builder, %ipaddr
|
|
1536
|
+
__build_hash_one_ip_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1537
|
+
EXPAND BUILD_HASHER_DEFAULT_BUILD __build_hash_one_ip_hasher_%out_hash, %builder
|
|
1538
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_IP_ADDR __build_hash_one_ip_hasher_%out_hash, %ipaddr
|
|
1539
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __build_hash_one_ip_hasher_%out_hash
|
|
1540
|
+
[END_MACRO]
|
|
1541
|
+
|
|
1542
|
+
[MACRO] RANDOM_STATE_HASH_ONE_NET_IP_ADDR %out_hash, %state, %ipaddr
|
|
1543
|
+
__random_state_hash_one_ip_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1544
|
+
EXPAND RANDOM_STATE_BUILD __random_state_hash_one_ip_hasher_%out_hash, %state
|
|
1545
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_IP_ADDR __random_state_hash_one_ip_hasher_%out_hash, %ipaddr
|
|
1546
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __random_state_hash_one_ip_hasher_%out_hash
|
|
1547
|
+
[END_MACRO]
|
|
1548
|
+
|
|
1549
|
+
[MACRO] DEFAULT_HASHER_WRITE_NET_SOCKET_ADDR %hasher, %socket_addr
|
|
1550
|
+
__net_socket_hash_tag_%hasher = load %socket_addr+NetSocketAddr_tag as u64
|
|
1551
|
+
EXPAND DEFAULT_HASHER_WRITE_U64 %hasher, __net_socket_hash_tag_%hasher
|
|
1552
|
+
__net_socket_hash_payload_%hasher = ptr_add %socket_addr, 8
|
|
1553
|
+
__net_socket_hash_is_v4_%hasher = eq __net_socket_hash_tag_%hasher, NET_IP_ADDR_V4
|
|
1554
|
+
br __net_socket_hash_is_v4_%hasher -> L_NET_SOCKET_HASH_V4_%hasher, L_NET_SOCKET_HASH_V6_%hasher
|
|
1555
|
+
L_NET_SOCKET_HASH_V4_%hasher:
|
|
1556
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_SOCKET_ADDR_V4 %hasher, __net_socket_hash_payload_%hasher
|
|
1557
|
+
jmp L_NET_SOCKET_HASH_DONE_%hasher
|
|
1558
|
+
L_NET_SOCKET_HASH_V6_%hasher:
|
|
1559
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_SOCKET_ADDR_V6 %hasher, __net_socket_hash_payload_%hasher
|
|
1560
|
+
L_NET_SOCKET_HASH_DONE_%hasher:
|
|
1561
|
+
!__net_socket_hash_is_v4_%hasher
|
|
1562
|
+
!__net_socket_hash_payload_%hasher
|
|
1563
|
+
!__net_socket_hash_tag_%hasher
|
|
1564
|
+
[END_MACRO]
|
|
1565
|
+
|
|
1566
|
+
[MACRO] NET_SOCKET_ADDR_HASH %out_hash, %socket_addr
|
|
1567
|
+
__net_socket_hash_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1568
|
+
EXPAND DEFAULT_HASHER_NEW __net_socket_hash_hasher_%out_hash
|
|
1569
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_SOCKET_ADDR __net_socket_hash_hasher_%out_hash, %socket_addr
|
|
1570
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __net_socket_hash_hasher_%out_hash
|
|
1571
|
+
[END_MACRO]
|
|
1572
|
+
|
|
1573
|
+
[MACRO] BUILD_HASHER_DEFAULT_HASH_ONE_NET_SOCKET_ADDR %out_hash, %builder, %socket_addr
|
|
1574
|
+
__build_hash_one_socket_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1575
|
+
EXPAND BUILD_HASHER_DEFAULT_BUILD __build_hash_one_socket_hasher_%out_hash, %builder
|
|
1576
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_SOCKET_ADDR __build_hash_one_socket_hasher_%out_hash, %socket_addr
|
|
1577
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __build_hash_one_socket_hasher_%out_hash
|
|
1578
|
+
[END_MACRO]
|
|
1579
|
+
|
|
1580
|
+
[MACRO] RANDOM_STATE_HASH_ONE_NET_SOCKET_ADDR %out_hash, %state, %socket_addr
|
|
1581
|
+
__random_state_hash_one_socket_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1582
|
+
EXPAND RANDOM_STATE_BUILD __random_state_hash_one_socket_hasher_%out_hash, %state
|
|
1583
|
+
EXPAND DEFAULT_HASHER_WRITE_NET_SOCKET_ADDR __random_state_hash_one_socket_hasher_%out_hash, %socket_addr
|
|
1584
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __random_state_hash_one_socket_hasher_%out_hash
|
|
1585
|
+
[END_MACRO]
|
|
1586
|
+
|
|
1587
|
+
[MACRO] NET_IPV4_FROM_BITS %addr, %bits
|
|
1588
|
+
__net_ipv4_from_a_%addr = lshr %bits, 24
|
|
1589
|
+
__net_ipv4_from_b_raw_%addr = lshr %bits, 16
|
|
1590
|
+
__net_ipv4_from_b_%addr = and __net_ipv4_from_b_raw_%addr, 255
|
|
1591
|
+
__net_ipv4_from_c_raw_%addr = lshr %bits, 8
|
|
1592
|
+
__net_ipv4_from_c_%addr = and __net_ipv4_from_c_raw_%addr, 255
|
|
1593
|
+
__net_ipv4_from_d_%addr = and %bits, 255
|
|
1594
|
+
EXPAND NET_IPV4_NEW %addr, __net_ipv4_from_a_%addr, __net_ipv4_from_b_%addr, __net_ipv4_from_c_%addr, __net_ipv4_from_d_%addr
|
|
1595
|
+
!__net_ipv4_from_d_%addr
|
|
1596
|
+
!__net_ipv4_from_c_%addr
|
|
1597
|
+
!__net_ipv4_from_c_raw_%addr
|
|
1598
|
+
!__net_ipv4_from_b_%addr
|
|
1599
|
+
!__net_ipv4_from_b_raw_%addr
|
|
1600
|
+
!__net_ipv4_from_a_%addr
|
|
1601
|
+
[END_MACRO]
|
|
1602
|
+
|
|
1603
|
+
[MACRO] NET_IPV4_TRY_PARSE_ASCII %out_ok, %addr, %ptr, %len
|
|
1604
|
+
%out_ok = call @sa_net_ipv4_parse_ascii(&%ptr, %len, &%addr)
|
|
1605
|
+
[END_MACRO]
|
|
1606
|
+
|
|
1607
|
+
[MACRO] NET_IPV4_TRY_PARSE_ASCII_DETAIL %out_ok, %out_kind, %addr, %ptr, %len
|
|
1608
|
+
%out_kind = add 0, ADDR_PARSE_ERROR_IPV4
|
|
1609
|
+
EXPAND NET_IPV4_TRY_PARSE_ASCII %out_ok, %addr, %ptr, %len
|
|
1610
|
+
[END_MACRO]
|
|
1611
|
+
|
|
1612
|
+
[MACRO] NET_IPV4_PARSE_ASCII %out_ok, %addr, %ptr, %len
|
|
1613
|
+
EXPAND NET_IPV4_TRY_PARSE_ASCII %out_ok, %addr, %ptr, %len
|
|
1614
|
+
[END_MACRO]
|
|
1615
|
+
|
|
1616
|
+
[MACRO] NET_IPV4_PARSE_ASCII_DETAIL %out_ok, %out_kind, %addr, %ptr, %len
|
|
1617
|
+
EXPAND NET_IPV4_TRY_PARSE_ASCII_DETAIL %out_ok, %out_kind, %addr, %ptr, %len
|
|
1618
|
+
[END_MACRO]
|
|
1619
|
+
|
|
1620
|
+
[MACRO] NET_IPV6_TRY_PARSE_ASCII %out_ok, %addr, %ptr, %len
|
|
1621
|
+
%out_ok = call @sa_net_ipv6_parse_ascii(&%ptr, %len, &%addr)
|
|
1622
|
+
[END_MACRO]
|
|
1623
|
+
|
|
1624
|
+
[MACRO] NET_IPV6_TRY_PARSE_ASCII_DETAIL %out_ok, %out_kind, %addr, %ptr, %len
|
|
1625
|
+
%out_kind = add 0, ADDR_PARSE_ERROR_IPV6
|
|
1626
|
+
EXPAND NET_IPV6_TRY_PARSE_ASCII %out_ok, %addr, %ptr, %len
|
|
1627
|
+
[END_MACRO]
|
|
1628
|
+
|
|
1629
|
+
[MACRO] NET_IPV6_PARSE_ASCII %out_ok, %addr, %ptr, %len
|
|
1630
|
+
EXPAND NET_IPV6_TRY_PARSE_ASCII %out_ok, %addr, %ptr, %len
|
|
1631
|
+
[END_MACRO]
|
|
1632
|
+
|
|
1633
|
+
[MACRO] NET_IPV6_PARSE_ASCII_DETAIL %out_ok, %out_kind, %addr, %ptr, %len
|
|
1634
|
+
EXPAND NET_IPV6_TRY_PARSE_ASCII_DETAIL %out_ok, %out_kind, %addr, %ptr, %len
|
|
1635
|
+
[END_MACRO]
|
|
1636
|
+
|
|
1637
|
+
|
|
1638
|
+
[MACRO] NET_IPV4_FORMAT_ASCII %out_ok, %out_len, %addr, %dst_ptr, %dst_cap
|
|
1639
|
+
__net_ipv4_fmt_len_slot_%out_ok = stack_alloc 8
|
|
1640
|
+
store __net_ipv4_fmt_len_slot_%out_ok+0, 0 as u64
|
|
1641
|
+
%out_ok = call @sa_net_ipv4_format_ascii(&%addr, &%dst_ptr, %dst_cap, &__net_ipv4_fmt_len_slot_%out_ok)
|
|
1642
|
+
%out_len = load __net_ipv4_fmt_len_slot_%out_ok+0 as u64
|
|
1643
|
+
[END_MACRO]
|
|
1644
|
+
|
|
1645
|
+
[MACRO] NET_IPV6_FORMAT_ASCII %out_ok, %out_len, %addr, %dst_ptr, %dst_cap
|
|
1646
|
+
__net_ipv6_fmt_len_slot_%out_ok = stack_alloc 8
|
|
1647
|
+
store __net_ipv6_fmt_len_slot_%out_ok+0, 0 as u64
|
|
1648
|
+
%out_ok = call @sa_net_ipv6_format_ascii(&%addr, &%dst_ptr, %dst_cap, &__net_ipv6_fmt_len_slot_%out_ok)
|
|
1649
|
+
%out_len = load __net_ipv6_fmt_len_slot_%out_ok+0 as u64
|
|
1650
|
+
[END_MACRO]
|
|
1651
|
+
|
|
1652
|
+
[MACRO] NET_SOCKET_ADDR_V4_FORMAT_ASCII %out_ok, %out_len, %socket_addr, %dst_ptr, %dst_cap
|
|
1653
|
+
__net_sock_v4_fmt_len_slot_%out_ok = stack_alloc 8
|
|
1654
|
+
store __net_sock_v4_fmt_len_slot_%out_ok+0, 0 as u64
|
|
1655
|
+
%out_ok = call @sa_net_socket_addr_v4_format_ascii(&%socket_addr, &%dst_ptr, %dst_cap, &__net_sock_v4_fmt_len_slot_%out_ok)
|
|
1656
|
+
%out_len = load __net_sock_v4_fmt_len_slot_%out_ok+0 as u64
|
|
1657
|
+
[END_MACRO]
|
|
1658
|
+
|
|
1659
|
+
[MACRO] NET_SOCKET_ADDR_V6_FORMAT_ASCII %out_ok, %out_len, %socket_addr, %dst_ptr, %dst_cap
|
|
1660
|
+
__net_sock_v6_fmt_len_slot_%out_ok = stack_alloc 8
|
|
1661
|
+
store __net_sock_v6_fmt_len_slot_%out_ok+0, 0 as u64
|
|
1662
|
+
%out_ok = call @sa_net_socket_addr_v6_format_ascii(&%socket_addr, &%dst_ptr, %dst_cap, &__net_sock_v6_fmt_len_slot_%out_ok)
|
|
1663
|
+
%out_len = load __net_sock_v6_fmt_len_slot_%out_ok+0 as u64
|
|
1664
|
+
[END_MACRO]
|
|
1665
|
+
|
|
1666
|
+
[MACRO] NET_IP_ADDR_FORMAT_ASCII %out_ok, %out_len, %ipaddr, %dst_ptr, %dst_cap
|
|
1667
|
+
__net_ip_fmt_tag_%out_ok = load %ipaddr+NetIpAddr_tag as u64
|
|
1668
|
+
__net_ip_fmt_payload_%out_ok = ptr_add %ipaddr, 8
|
|
1669
|
+
__net_ip_fmt_is_v4_%out_ok = eq __net_ip_fmt_tag_%out_ok, NET_IP_ADDR_V4
|
|
1670
|
+
br __net_ip_fmt_is_v4_%out_ok -> L_NET_IP_FMT_V4_%out_ok, L_NET_IP_FMT_V6_%out_ok
|
|
1671
|
+
L_NET_IP_FMT_V4_%out_ok:
|
|
1672
|
+
EXPAND NET_IPV4_FORMAT_ASCII %out_ok, %out_len, __net_ip_fmt_payload_%out_ok, %dst_ptr, %dst_cap
|
|
1673
|
+
jmp L_NET_IP_FMT_DONE_%out_ok
|
|
1674
|
+
L_NET_IP_FMT_V6_%out_ok:
|
|
1675
|
+
EXPAND NET_IPV6_FORMAT_ASCII %out_ok, %out_len, __net_ip_fmt_payload_%out_ok, %dst_ptr, %dst_cap
|
|
1676
|
+
jmp L_NET_IP_FMT_DONE_%out_ok
|
|
1677
|
+
L_NET_IP_FMT_DONE_%out_ok:
|
|
1678
|
+
!__net_ip_fmt_is_v4_%out_ok
|
|
1679
|
+
!__net_ip_fmt_payload_%out_ok
|
|
1680
|
+
!__net_ip_fmt_tag_%out_ok
|
|
1681
|
+
[END_MACRO]
|
|
1682
|
+
|
|
1683
|
+
[MACRO] NET_SOCKET_ADDR_FORMAT_ASCII %out_ok, %out_len, %socket_addr, %dst_ptr, %dst_cap
|
|
1684
|
+
__net_sock_fmt_tag_%out_ok = load %socket_addr+NetSocketAddr_tag as u64
|
|
1685
|
+
__net_sock_fmt_payload_%out_ok = ptr_add %socket_addr, 8
|
|
1686
|
+
__net_sock_fmt_is_v4_%out_ok = eq __net_sock_fmt_tag_%out_ok, NET_IP_ADDR_V4
|
|
1687
|
+
br __net_sock_fmt_is_v4_%out_ok -> L_NET_SOCK_FMT_V4_%out_ok, L_NET_SOCK_FMT_V6_%out_ok
|
|
1688
|
+
L_NET_SOCK_FMT_V4_%out_ok:
|
|
1689
|
+
EXPAND NET_SOCKET_ADDR_V4_FORMAT_ASCII %out_ok, %out_len, __net_sock_fmt_payload_%out_ok, %dst_ptr, %dst_cap
|
|
1690
|
+
jmp L_NET_SOCK_FMT_DONE_%out_ok
|
|
1691
|
+
L_NET_SOCK_FMT_V6_%out_ok:
|
|
1692
|
+
EXPAND NET_SOCKET_ADDR_V6_FORMAT_ASCII %out_ok, %out_len, __net_sock_fmt_payload_%out_ok, %dst_ptr, %dst_cap
|
|
1693
|
+
jmp L_NET_SOCK_FMT_DONE_%out_ok
|
|
1694
|
+
L_NET_SOCK_FMT_DONE_%out_ok:
|
|
1695
|
+
!__net_sock_fmt_is_v4_%out_ok
|
|
1696
|
+
!__net_sock_fmt_payload_%out_ok
|
|
1697
|
+
!__net_sock_fmt_tag_%out_ok
|
|
1698
|
+
[END_MACRO]
|
|
1699
|
+
|
|
1700
|
+
|
|
1701
|
+
[MACRO] NET_IPV4_EQ %out_bool, %left, %right
|
|
1702
|
+
__net_ipv4_la_%out_bool = load %left+NetIpv4Addr_a as u8
|
|
1703
|
+
__net_ipv4_lb_%out_bool = load %left+NetIpv4Addr_b as u8
|
|
1704
|
+
__net_ipv4_lc_%out_bool = load %left+NetIpv4Addr_c as u8
|
|
1705
|
+
__net_ipv4_ld_%out_bool = load %left+NetIpv4Addr_d as u8
|
|
1706
|
+
__net_ipv4_ra_%out_bool = load %right+NetIpv4Addr_a as u8
|
|
1707
|
+
__net_ipv4_rb_%out_bool = load %right+NetIpv4Addr_b as u8
|
|
1708
|
+
__net_ipv4_rc_%out_bool = load %right+NetIpv4Addr_c as u8
|
|
1709
|
+
__net_ipv4_rd_%out_bool = load %right+NetIpv4Addr_d as u8
|
|
1710
|
+
__net_ipv4_ea_%out_bool = eq __net_ipv4_la_%out_bool, __net_ipv4_ra_%out_bool
|
|
1711
|
+
__net_ipv4_eb_%out_bool = eq __net_ipv4_lb_%out_bool, __net_ipv4_rb_%out_bool
|
|
1712
|
+
__net_ipv4_ec_%out_bool = eq __net_ipv4_lc_%out_bool, __net_ipv4_rc_%out_bool
|
|
1713
|
+
__net_ipv4_ed_%out_bool = eq __net_ipv4_ld_%out_bool, __net_ipv4_rd_%out_bool
|
|
1714
|
+
__net_ipv4_eab_%out_bool = and __net_ipv4_ea_%out_bool, __net_ipv4_eb_%out_bool
|
|
1715
|
+
__net_ipv4_ecd_%out_bool = and __net_ipv4_ec_%out_bool, __net_ipv4_ed_%out_bool
|
|
1716
|
+
%out_bool = and __net_ipv4_eab_%out_bool, __net_ipv4_ecd_%out_bool
|
|
1717
|
+
!__net_ipv4_ecd_%out_bool
|
|
1718
|
+
!__net_ipv4_eab_%out_bool
|
|
1719
|
+
!__net_ipv4_ed_%out_bool
|
|
1720
|
+
!__net_ipv4_ec_%out_bool
|
|
1721
|
+
!__net_ipv4_eb_%out_bool
|
|
1722
|
+
!__net_ipv4_ea_%out_bool
|
|
1723
|
+
!__net_ipv4_rd_%out_bool
|
|
1724
|
+
!__net_ipv4_rc_%out_bool
|
|
1725
|
+
!__net_ipv4_rb_%out_bool
|
|
1726
|
+
!__net_ipv4_ra_%out_bool
|
|
1727
|
+
!__net_ipv4_ld_%out_bool
|
|
1728
|
+
!__net_ipv4_lc_%out_bool
|
|
1729
|
+
!__net_ipv4_lb_%out_bool
|
|
1730
|
+
!__net_ipv4_la_%out_bool
|
|
1731
|
+
[END_MACRO]
|
|
1732
|
+
|
|
1733
|
+
[MACRO] NET_IPV4_IS_UNSPECIFIED %out_bool, %addr
|
|
1734
|
+
__net_ipv4_a_%out_bool = load %addr+NetIpv4Addr_a as u8
|
|
1735
|
+
__net_ipv4_b_%out_bool = load %addr+NetIpv4Addr_b as u8
|
|
1736
|
+
__net_ipv4_c_%out_bool = load %addr+NetIpv4Addr_c as u8
|
|
1737
|
+
__net_ipv4_d_%out_bool = load %addr+NetIpv4Addr_d as u8
|
|
1738
|
+
__net_ipv4_ab_%out_bool = or __net_ipv4_a_%out_bool, __net_ipv4_b_%out_bool
|
|
1739
|
+
__net_ipv4_cd_%out_bool = or __net_ipv4_c_%out_bool, __net_ipv4_d_%out_bool
|
|
1740
|
+
__net_ipv4_any_%out_bool = or __net_ipv4_ab_%out_bool, __net_ipv4_cd_%out_bool
|
|
1741
|
+
%out_bool = eq __net_ipv4_any_%out_bool, 0
|
|
1742
|
+
!__net_ipv4_any_%out_bool
|
|
1743
|
+
!__net_ipv4_cd_%out_bool
|
|
1744
|
+
!__net_ipv4_ab_%out_bool
|
|
1745
|
+
!__net_ipv4_d_%out_bool
|
|
1746
|
+
!__net_ipv4_c_%out_bool
|
|
1747
|
+
!__net_ipv4_b_%out_bool
|
|
1748
|
+
!__net_ipv4_a_%out_bool
|
|
1749
|
+
[END_MACRO]
|
|
1750
|
+
|
|
1751
|
+
[MACRO] NET_IPV4_IS_LOOPBACK %out_bool, %addr
|
|
1752
|
+
__net_ipv4_a_%out_bool = load %addr+NetIpv4Addr_a as u8
|
|
1753
|
+
%out_bool = eq __net_ipv4_a_%out_bool, 127
|
|
1754
|
+
!__net_ipv4_a_%out_bool
|
|
1755
|
+
[END_MACRO]
|
|
1756
|
+
|
|
1757
|
+
[MACRO] NET_IPV4_IS_PRIVATE %out_bool, %addr
|
|
1758
|
+
__net_ipv4_a_%out_bool = load %addr+NetIpv4Addr_a as u8
|
|
1759
|
+
__net_ipv4_b_%out_bool = load %addr+NetIpv4Addr_b as u8
|
|
1760
|
+
__net_ipv4_is_10_%out_bool = eq __net_ipv4_a_%out_bool, 10
|
|
1761
|
+
__net_ipv4_is_172_%out_bool = eq __net_ipv4_a_%out_bool, 172
|
|
1762
|
+
__net_ipv4_172_lo_%out_bool = uge __net_ipv4_b_%out_bool, 16
|
|
1763
|
+
__net_ipv4_172_hi_%out_bool = ule __net_ipv4_b_%out_bool, 31
|
|
1764
|
+
__net_ipv4_172_range_%out_bool = and __net_ipv4_172_lo_%out_bool, __net_ipv4_172_hi_%out_bool
|
|
1765
|
+
__net_ipv4_172_private_%out_bool = and __net_ipv4_is_172_%out_bool, __net_ipv4_172_range_%out_bool
|
|
1766
|
+
__net_ipv4_is_192_%out_bool = eq __net_ipv4_a_%out_bool, 192
|
|
1767
|
+
__net_ipv4_is_168_%out_bool = eq __net_ipv4_b_%out_bool, 168
|
|
1768
|
+
__net_ipv4_192_private_%out_bool = and __net_ipv4_is_192_%out_bool, __net_ipv4_is_168_%out_bool
|
|
1769
|
+
__net_ipv4_left_%out_bool = or __net_ipv4_is_10_%out_bool, __net_ipv4_172_private_%out_bool
|
|
1770
|
+
%out_bool = or __net_ipv4_left_%out_bool, __net_ipv4_192_private_%out_bool
|
|
1771
|
+
!__net_ipv4_left_%out_bool
|
|
1772
|
+
!__net_ipv4_192_private_%out_bool
|
|
1773
|
+
!__net_ipv4_is_168_%out_bool
|
|
1774
|
+
!__net_ipv4_is_192_%out_bool
|
|
1775
|
+
!__net_ipv4_172_private_%out_bool
|
|
1776
|
+
!__net_ipv4_172_range_%out_bool
|
|
1777
|
+
!__net_ipv4_172_hi_%out_bool
|
|
1778
|
+
!__net_ipv4_172_lo_%out_bool
|
|
1779
|
+
!__net_ipv4_is_172_%out_bool
|
|
1780
|
+
!__net_ipv4_is_10_%out_bool
|
|
1781
|
+
!__net_ipv4_b_%out_bool
|
|
1782
|
+
!__net_ipv4_a_%out_bool
|
|
1783
|
+
[END_MACRO]
|
|
1784
|
+
|
|
1785
|
+
[MACRO] NET_IPV4_IS_LINK_LOCAL %out_bool, %addr
|
|
1786
|
+
__net_ipv4_a_%out_bool = load %addr+NetIpv4Addr_a as u8
|
|
1787
|
+
__net_ipv4_b_%out_bool = load %addr+NetIpv4Addr_b as u8
|
|
1788
|
+
__net_ipv4_a_ok_%out_bool = eq __net_ipv4_a_%out_bool, 169
|
|
1789
|
+
__net_ipv4_b_ok_%out_bool = eq __net_ipv4_b_%out_bool, 254
|
|
1790
|
+
%out_bool = and __net_ipv4_a_ok_%out_bool, __net_ipv4_b_ok_%out_bool
|
|
1791
|
+
!__net_ipv4_b_ok_%out_bool
|
|
1792
|
+
!__net_ipv4_a_ok_%out_bool
|
|
1793
|
+
!__net_ipv4_b_%out_bool
|
|
1794
|
+
!__net_ipv4_a_%out_bool
|
|
1795
|
+
[END_MACRO]
|
|
1796
|
+
|
|
1797
|
+
[MACRO] NET_IPV4_IS_SHARED %out_bool, %addr
|
|
1798
|
+
__net_ipv4_a_%out_bool = load %addr+NetIpv4Addr_a as u8
|
|
1799
|
+
__net_ipv4_b_%out_bool = load %addr+NetIpv4Addr_b as u8
|
|
1800
|
+
__net_ipv4_is_100_%out_bool = eq __net_ipv4_a_%out_bool, 100
|
|
1801
|
+
__net_ipv4_b_mask_%out_bool = and __net_ipv4_b_%out_bool, 192
|
|
1802
|
+
__net_ipv4_b_range_%out_bool = eq __net_ipv4_b_mask_%out_bool, 64
|
|
1803
|
+
%out_bool = and __net_ipv4_is_100_%out_bool, __net_ipv4_b_range_%out_bool
|
|
1804
|
+
!__net_ipv4_b_range_%out_bool
|
|
1805
|
+
!__net_ipv4_b_mask_%out_bool
|
|
1806
|
+
!__net_ipv4_is_100_%out_bool
|
|
1807
|
+
!__net_ipv4_b_%out_bool
|
|
1808
|
+
!__net_ipv4_a_%out_bool
|
|
1809
|
+
[END_MACRO]
|
|
1810
|
+
|
|
1811
|
+
[MACRO] NET_IPV4_IS_BENCHMARKING %out_bool, %addr
|
|
1812
|
+
__net_ipv4_a_%out_bool = load %addr+NetIpv4Addr_a as u8
|
|
1813
|
+
__net_ipv4_b_%out_bool = load %addr+NetIpv4Addr_b as u8
|
|
1814
|
+
__net_ipv4_is_198_%out_bool = eq __net_ipv4_a_%out_bool, 198
|
|
1815
|
+
__net_ipv4_b_mask_%out_bool = and __net_ipv4_b_%out_bool, 254
|
|
1816
|
+
__net_ipv4_b_range_%out_bool = eq __net_ipv4_b_mask_%out_bool, 18
|
|
1817
|
+
%out_bool = and __net_ipv4_is_198_%out_bool, __net_ipv4_b_range_%out_bool
|
|
1818
|
+
!__net_ipv4_b_range_%out_bool
|
|
1819
|
+
!__net_ipv4_b_mask_%out_bool
|
|
1820
|
+
!__net_ipv4_is_198_%out_bool
|
|
1821
|
+
!__net_ipv4_b_%out_bool
|
|
1822
|
+
!__net_ipv4_a_%out_bool
|
|
1823
|
+
[END_MACRO]
|
|
1824
|
+
|
|
1825
|
+
[MACRO] NET_IPV4_IS_RESERVED %out_bool, %addr
|
|
1826
|
+
__net_ipv4_a_%out_bool = load %addr+NetIpv4Addr_a as u8
|
|
1827
|
+
__net_ipv4_mask_%out_bool = and __net_ipv4_a_%out_bool, 240
|
|
1828
|
+
__net_ipv4_reserved_range_%out_bool = eq __net_ipv4_mask_%out_bool, 240
|
|
1829
|
+
EXPAND NET_IPV4_IS_BROADCAST __net_ipv4_broadcast_%out_bool, %addr
|
|
1830
|
+
__net_ipv4_not_broadcast_%out_bool = eq __net_ipv4_broadcast_%out_bool, 0
|
|
1831
|
+
%out_bool = and __net_ipv4_reserved_range_%out_bool, __net_ipv4_not_broadcast_%out_bool
|
|
1832
|
+
!__net_ipv4_not_broadcast_%out_bool
|
|
1833
|
+
!__net_ipv4_broadcast_%out_bool
|
|
1834
|
+
!__net_ipv4_reserved_range_%out_bool
|
|
1835
|
+
!__net_ipv4_mask_%out_bool
|
|
1836
|
+
!__net_ipv4_a_%out_bool
|
|
1837
|
+
[END_MACRO]
|
|
1838
|
+
|
|
1839
|
+
[MACRO] NET_IPV4_IS_MULTICAST %out_bool, %addr
|
|
1840
|
+
__net_ipv4_a_%out_bool = load %addr+NetIpv4Addr_a as u8
|
|
1841
|
+
__net_ipv4_lo_%out_bool = uge __net_ipv4_a_%out_bool, 224
|
|
1842
|
+
__net_ipv4_hi_%out_bool = ule __net_ipv4_a_%out_bool, 239
|
|
1843
|
+
%out_bool = and __net_ipv4_lo_%out_bool, __net_ipv4_hi_%out_bool
|
|
1844
|
+
!__net_ipv4_hi_%out_bool
|
|
1845
|
+
!__net_ipv4_lo_%out_bool
|
|
1846
|
+
!__net_ipv4_a_%out_bool
|
|
1847
|
+
[END_MACRO]
|
|
1848
|
+
|
|
1849
|
+
[MACRO] NET_IPV4_IS_BROADCAST %out_bool, %addr
|
|
1850
|
+
__net_ipv4_a_%out_bool = load %addr+NetIpv4Addr_a as u8
|
|
1851
|
+
__net_ipv4_b_%out_bool = load %addr+NetIpv4Addr_b as u8
|
|
1852
|
+
__net_ipv4_c_%out_bool = load %addr+NetIpv4Addr_c as u8
|
|
1853
|
+
__net_ipv4_d_%out_bool = load %addr+NetIpv4Addr_d as u8
|
|
1854
|
+
__net_ipv4_ea_%out_bool = eq __net_ipv4_a_%out_bool, 255
|
|
1855
|
+
__net_ipv4_eb_%out_bool = eq __net_ipv4_b_%out_bool, 255
|
|
1856
|
+
__net_ipv4_ec_%out_bool = eq __net_ipv4_c_%out_bool, 255
|
|
1857
|
+
__net_ipv4_ed_%out_bool = eq __net_ipv4_d_%out_bool, 255
|
|
1858
|
+
__net_ipv4_eab_%out_bool = and __net_ipv4_ea_%out_bool, __net_ipv4_eb_%out_bool
|
|
1859
|
+
__net_ipv4_ecd_%out_bool = and __net_ipv4_ec_%out_bool, __net_ipv4_ed_%out_bool
|
|
1860
|
+
%out_bool = and __net_ipv4_eab_%out_bool, __net_ipv4_ecd_%out_bool
|
|
1861
|
+
!__net_ipv4_ecd_%out_bool
|
|
1862
|
+
!__net_ipv4_eab_%out_bool
|
|
1863
|
+
!__net_ipv4_ed_%out_bool
|
|
1864
|
+
!__net_ipv4_ec_%out_bool
|
|
1865
|
+
!__net_ipv4_eb_%out_bool
|
|
1866
|
+
!__net_ipv4_ea_%out_bool
|
|
1867
|
+
!__net_ipv4_d_%out_bool
|
|
1868
|
+
!__net_ipv4_c_%out_bool
|
|
1869
|
+
!__net_ipv4_b_%out_bool
|
|
1870
|
+
!__net_ipv4_a_%out_bool
|
|
1871
|
+
[END_MACRO]
|
|
1872
|
+
|
|
1873
|
+
[MACRO] NET_IPV4_IS_DOCUMENTATION %out_bool, %addr
|
|
1874
|
+
__net_ipv4_a_%out_bool = load %addr+NetIpv4Addr_a as u8
|
|
1875
|
+
__net_ipv4_b_%out_bool = load %addr+NetIpv4Addr_b as u8
|
|
1876
|
+
__net_ipv4_c_%out_bool = load %addr+NetIpv4Addr_c as u8
|
|
1877
|
+
__net_ipv4_192_%out_bool = eq __net_ipv4_a_%out_bool, 192
|
|
1878
|
+
__net_ipv4_0_%out_bool = eq __net_ipv4_b_%out_bool, 0
|
|
1879
|
+
__net_ipv4_2_%out_bool = eq __net_ipv4_c_%out_bool, 2
|
|
1880
|
+
__net_ipv4_doc1a_%out_bool = and __net_ipv4_192_%out_bool, __net_ipv4_0_%out_bool
|
|
1881
|
+
__net_ipv4_doc1_%out_bool = and __net_ipv4_doc1a_%out_bool, __net_ipv4_2_%out_bool
|
|
1882
|
+
__net_ipv4_198_%out_bool = eq __net_ipv4_a_%out_bool, 198
|
|
1883
|
+
__net_ipv4_51_%out_bool = eq __net_ipv4_b_%out_bool, 51
|
|
1884
|
+
__net_ipv4_100_%out_bool = eq __net_ipv4_c_%out_bool, 100
|
|
1885
|
+
__net_ipv4_doc2a_%out_bool = and __net_ipv4_198_%out_bool, __net_ipv4_51_%out_bool
|
|
1886
|
+
__net_ipv4_doc2_%out_bool = and __net_ipv4_doc2a_%out_bool, __net_ipv4_100_%out_bool
|
|
1887
|
+
__net_ipv4_203_%out_bool = eq __net_ipv4_a_%out_bool, 203
|
|
1888
|
+
__net_ipv4_113_%out_bool = eq __net_ipv4_c_%out_bool, 113
|
|
1889
|
+
__net_ipv4_doc3a_%out_bool = and __net_ipv4_203_%out_bool, __net_ipv4_0_%out_bool
|
|
1890
|
+
__net_ipv4_doc3_%out_bool = and __net_ipv4_doc3a_%out_bool, __net_ipv4_113_%out_bool
|
|
1891
|
+
__net_ipv4_left_%out_bool = or __net_ipv4_doc1_%out_bool, __net_ipv4_doc2_%out_bool
|
|
1892
|
+
%out_bool = or __net_ipv4_left_%out_bool, __net_ipv4_doc3_%out_bool
|
|
1893
|
+
!__net_ipv4_left_%out_bool
|
|
1894
|
+
!__net_ipv4_doc3_%out_bool
|
|
1895
|
+
!__net_ipv4_doc3a_%out_bool
|
|
1896
|
+
!__net_ipv4_113_%out_bool
|
|
1897
|
+
!__net_ipv4_203_%out_bool
|
|
1898
|
+
!__net_ipv4_doc2_%out_bool
|
|
1899
|
+
!__net_ipv4_doc2a_%out_bool
|
|
1900
|
+
!__net_ipv4_100_%out_bool
|
|
1901
|
+
!__net_ipv4_51_%out_bool
|
|
1902
|
+
!__net_ipv4_198_%out_bool
|
|
1903
|
+
!__net_ipv4_doc1_%out_bool
|
|
1904
|
+
!__net_ipv4_doc1a_%out_bool
|
|
1905
|
+
!__net_ipv4_2_%out_bool
|
|
1906
|
+
!__net_ipv4_0_%out_bool
|
|
1907
|
+
!__net_ipv4_192_%out_bool
|
|
1908
|
+
!__net_ipv4_c_%out_bool
|
|
1909
|
+
!__net_ipv4_b_%out_bool
|
|
1910
|
+
!__net_ipv4_a_%out_bool
|
|
1911
|
+
[END_MACRO]
|
|
1912
|
+
|
|
1913
|
+
[MACRO] NET_IPV4_IS_GLOBAL %out_bool, %addr
|
|
1914
|
+
__net_ipv4_a_%out_bool = load %addr+NetIpv4Addr_a as u8
|
|
1915
|
+
__net_ipv4_b_%out_bool = load %addr+NetIpv4Addr_b as u8
|
|
1916
|
+
__net_ipv4_c_%out_bool = load %addr+NetIpv4Addr_c as u8
|
|
1917
|
+
__net_ipv4_d_%out_bool = load %addr+NetIpv4Addr_d as u8
|
|
1918
|
+
__net_ipv4_this_network_%out_bool = eq __net_ipv4_a_%out_bool, 0
|
|
1919
|
+
EXPAND NET_IPV4_IS_PRIVATE __net_ipv4_private_%out_bool, %addr
|
|
1920
|
+
EXPAND NET_IPV4_IS_SHARED __net_ipv4_shared_%out_bool, %addr
|
|
1921
|
+
EXPAND NET_IPV4_IS_LOOPBACK __net_ipv4_loopback_%out_bool, %addr
|
|
1922
|
+
EXPAND NET_IPV4_IS_LINK_LOCAL __net_ipv4_link_%out_bool, %addr
|
|
1923
|
+
__net_ipv4_192_%out_bool = eq __net_ipv4_a_%out_bool, 192
|
|
1924
|
+
__net_ipv4_0_%out_bool = eq __net_ipv4_b_%out_bool, 0
|
|
1925
|
+
__net_ipv4_0c_%out_bool = eq __net_ipv4_c_%out_bool, 0
|
|
1926
|
+
__net_ipv4_d_not_9_%out_bool = ne __net_ipv4_d_%out_bool, 9
|
|
1927
|
+
__net_ipv4_d_not_10_%out_bool = ne __net_ipv4_d_%out_bool, 10
|
|
1928
|
+
__net_ipv4_d_excluded_%out_bool = and __net_ipv4_d_not_9_%out_bool, __net_ipv4_d_not_10_%out_bool
|
|
1929
|
+
__net_ipv4_proto0a_%out_bool = and __net_ipv4_192_%out_bool, __net_ipv4_0_%out_bool
|
|
1930
|
+
__net_ipv4_proto0b_%out_bool = and __net_ipv4_proto0a_%out_bool, __net_ipv4_0c_%out_bool
|
|
1931
|
+
__net_ipv4_proto0_%out_bool = and __net_ipv4_proto0b_%out_bool, __net_ipv4_d_excluded_%out_bool
|
|
1932
|
+
EXPAND NET_IPV4_IS_DOCUMENTATION __net_ipv4_doc_%out_bool, %addr
|
|
1933
|
+
EXPAND NET_IPV4_IS_BENCHMARKING __net_ipv4_bench_%out_bool, %addr
|
|
1934
|
+
EXPAND NET_IPV4_IS_RESERVED __net_ipv4_reserved_%out_bool, %addr
|
|
1935
|
+
EXPAND NET_IPV4_IS_BROADCAST __net_ipv4_broadcast_%out_bool, %addr
|
|
1936
|
+
__net_ipv4_ng01_%out_bool = or __net_ipv4_this_network_%out_bool, __net_ipv4_private_%out_bool
|
|
1937
|
+
__net_ipv4_ng02_%out_bool = or __net_ipv4_ng01_%out_bool, __net_ipv4_shared_%out_bool
|
|
1938
|
+
__net_ipv4_ng03_%out_bool = or __net_ipv4_ng02_%out_bool, __net_ipv4_loopback_%out_bool
|
|
1939
|
+
__net_ipv4_ng04_%out_bool = or __net_ipv4_ng03_%out_bool, __net_ipv4_link_%out_bool
|
|
1940
|
+
__net_ipv4_ng05_%out_bool = or __net_ipv4_ng04_%out_bool, __net_ipv4_proto0_%out_bool
|
|
1941
|
+
__net_ipv4_ng06_%out_bool = or __net_ipv4_ng05_%out_bool, __net_ipv4_doc_%out_bool
|
|
1942
|
+
__net_ipv4_ng07_%out_bool = or __net_ipv4_ng06_%out_bool, __net_ipv4_bench_%out_bool
|
|
1943
|
+
__net_ipv4_ng08_%out_bool = or __net_ipv4_ng07_%out_bool, __net_ipv4_reserved_%out_bool
|
|
1944
|
+
__net_ipv4_not_global_%out_bool = or __net_ipv4_ng08_%out_bool, __net_ipv4_broadcast_%out_bool
|
|
1945
|
+
%out_bool = eq __net_ipv4_not_global_%out_bool, 0
|
|
1946
|
+
!__net_ipv4_not_global_%out_bool
|
|
1947
|
+
!__net_ipv4_ng08_%out_bool
|
|
1948
|
+
!__net_ipv4_ng07_%out_bool
|
|
1949
|
+
!__net_ipv4_ng06_%out_bool
|
|
1950
|
+
!__net_ipv4_ng05_%out_bool
|
|
1951
|
+
!__net_ipv4_ng04_%out_bool
|
|
1952
|
+
!__net_ipv4_ng03_%out_bool
|
|
1953
|
+
!__net_ipv4_ng02_%out_bool
|
|
1954
|
+
!__net_ipv4_ng01_%out_bool
|
|
1955
|
+
!__net_ipv4_broadcast_%out_bool
|
|
1956
|
+
!__net_ipv4_reserved_%out_bool
|
|
1957
|
+
!__net_ipv4_bench_%out_bool
|
|
1958
|
+
!__net_ipv4_doc_%out_bool
|
|
1959
|
+
!__net_ipv4_proto0_%out_bool
|
|
1960
|
+
!__net_ipv4_proto0b_%out_bool
|
|
1961
|
+
!__net_ipv4_proto0a_%out_bool
|
|
1962
|
+
!__net_ipv4_d_excluded_%out_bool
|
|
1963
|
+
!__net_ipv4_d_not_10_%out_bool
|
|
1964
|
+
!__net_ipv4_d_not_9_%out_bool
|
|
1965
|
+
!__net_ipv4_0c_%out_bool
|
|
1966
|
+
!__net_ipv4_0_%out_bool
|
|
1967
|
+
!__net_ipv4_192_%out_bool
|
|
1968
|
+
!__net_ipv4_link_%out_bool
|
|
1969
|
+
!__net_ipv4_loopback_%out_bool
|
|
1970
|
+
!__net_ipv4_shared_%out_bool
|
|
1971
|
+
!__net_ipv4_private_%out_bool
|
|
1972
|
+
!__net_ipv4_this_network_%out_bool
|
|
1973
|
+
!__net_ipv4_d_%out_bool
|
|
1974
|
+
!__net_ipv4_c_%out_bool
|
|
1975
|
+
!__net_ipv4_b_%out_bool
|
|
1976
|
+
!__net_ipv4_a_%out_bool
|
|
1977
|
+
[END_MACRO]
|
|
1978
|
+
|
|
1979
|
+
[MACRO] NET_IPV4_TO_IPV6_COMPATIBLE %ipv6, %ipv4
|
|
1980
|
+
__net_ipv4_compat_a_%ipv6 = load %ipv4+NetIpv4Addr_a as u8
|
|
1981
|
+
__net_ipv4_compat_b_%ipv6 = load %ipv4+NetIpv4Addr_b as u8
|
|
1982
|
+
__net_ipv4_compat_c_%ipv6 = load %ipv4+NetIpv4Addr_c as u8
|
|
1983
|
+
__net_ipv4_compat_d_%ipv6 = load %ipv4+NetIpv4Addr_d as u8
|
|
1984
|
+
__net_ipv4_compat_ab_%ipv6 = shl __net_ipv4_compat_a_%ipv6, 8
|
|
1985
|
+
__net_ipv4_compat_s6_%ipv6 = or __net_ipv4_compat_ab_%ipv6, __net_ipv4_compat_b_%ipv6
|
|
1986
|
+
__net_ipv4_compat_cd_%ipv6 = shl __net_ipv4_compat_c_%ipv6, 8
|
|
1987
|
+
__net_ipv4_compat_s7_%ipv6 = or __net_ipv4_compat_cd_%ipv6, __net_ipv4_compat_d_%ipv6
|
|
1988
|
+
EXPAND NET_IPV6_NEW %ipv6, 0, 0, 0, 0, 0, 0, __net_ipv4_compat_s6_%ipv6, __net_ipv4_compat_s7_%ipv6
|
|
1989
|
+
!__net_ipv4_compat_s7_%ipv6
|
|
1990
|
+
!__net_ipv4_compat_cd_%ipv6
|
|
1991
|
+
!__net_ipv4_compat_s6_%ipv6
|
|
1992
|
+
!__net_ipv4_compat_ab_%ipv6
|
|
1993
|
+
!__net_ipv4_compat_d_%ipv6
|
|
1994
|
+
!__net_ipv4_compat_c_%ipv6
|
|
1995
|
+
!__net_ipv4_compat_b_%ipv6
|
|
1996
|
+
!__net_ipv4_compat_a_%ipv6
|
|
1997
|
+
[END_MACRO]
|
|
1998
|
+
|
|
1999
|
+
[MACRO] NET_IPV4_TO_IPV6_MAPPED %ipv6, %ipv4
|
|
2000
|
+
__net_ipv4_mapped_a_%ipv6 = load %ipv4+NetIpv4Addr_a as u8
|
|
2001
|
+
__net_ipv4_mapped_b_%ipv6 = load %ipv4+NetIpv4Addr_b as u8
|
|
2002
|
+
__net_ipv4_mapped_c_%ipv6 = load %ipv4+NetIpv4Addr_c as u8
|
|
2003
|
+
__net_ipv4_mapped_d_%ipv6 = load %ipv4+NetIpv4Addr_d as u8
|
|
2004
|
+
__net_ipv4_mapped_ab_%ipv6 = shl __net_ipv4_mapped_a_%ipv6, 8
|
|
2005
|
+
__net_ipv4_mapped_s6_%ipv6 = or __net_ipv4_mapped_ab_%ipv6, __net_ipv4_mapped_b_%ipv6
|
|
2006
|
+
__net_ipv4_mapped_cd_%ipv6 = shl __net_ipv4_mapped_c_%ipv6, 8
|
|
2007
|
+
__net_ipv4_mapped_s7_%ipv6 = or __net_ipv4_mapped_cd_%ipv6, __net_ipv4_mapped_d_%ipv6
|
|
2008
|
+
EXPAND NET_IPV6_NEW %ipv6, 0, 0, 0, 0, 0, 65535, __net_ipv4_mapped_s6_%ipv6, __net_ipv4_mapped_s7_%ipv6
|
|
2009
|
+
!__net_ipv4_mapped_s7_%ipv6
|
|
2010
|
+
!__net_ipv4_mapped_cd_%ipv6
|
|
2011
|
+
!__net_ipv4_mapped_s6_%ipv6
|
|
2012
|
+
!__net_ipv4_mapped_ab_%ipv6
|
|
2013
|
+
!__net_ipv4_mapped_d_%ipv6
|
|
2014
|
+
!__net_ipv4_mapped_c_%ipv6
|
|
2015
|
+
!__net_ipv4_mapped_b_%ipv6
|
|
2016
|
+
!__net_ipv4_mapped_a_%ipv6
|
|
2017
|
+
[END_MACRO]
|
|
2018
|
+
|
|
2019
|
+
[MACRO] NET_IPV6_NEW %addr, %s0, %s1, %s2, %s3, %s4, %s5, %s6, %s7
|
|
2020
|
+
store %addr+NetIpv6Addr_s0, %s0 as u16
|
|
2021
|
+
store %addr+NetIpv6Addr_s1, %s1 as u16
|
|
2022
|
+
store %addr+NetIpv6Addr_s2, %s2 as u16
|
|
2023
|
+
store %addr+NetIpv6Addr_s3, %s3 as u16
|
|
2024
|
+
store %addr+NetIpv6Addr_s4, %s4 as u16
|
|
2025
|
+
store %addr+NetIpv6Addr_s5, %s5 as u16
|
|
2026
|
+
store %addr+NetIpv6Addr_s6, %s6 as u16
|
|
2027
|
+
store %addr+NetIpv6Addr_s7, %s7 as u16
|
|
2028
|
+
[END_MACRO]
|
|
2029
|
+
|
|
2030
|
+
[MACRO] NET_IPV6_SEGMENTS %out_s0, %out_s1, %out_s2, %out_s3, %out_s4, %out_s5, %out_s6, %out_s7, %addr
|
|
2031
|
+
%out_s0 = load %addr+NetIpv6Addr_s0 as u16
|
|
2032
|
+
%out_s1 = load %addr+NetIpv6Addr_s1 as u16
|
|
2033
|
+
%out_s2 = load %addr+NetIpv6Addr_s2 as u16
|
|
2034
|
+
%out_s3 = load %addr+NetIpv6Addr_s3 as u16
|
|
2035
|
+
%out_s4 = load %addr+NetIpv6Addr_s4 as u16
|
|
2036
|
+
%out_s5 = load %addr+NetIpv6Addr_s5 as u16
|
|
2037
|
+
%out_s6 = load %addr+NetIpv6Addr_s6 as u16
|
|
2038
|
+
%out_s7 = load %addr+NetIpv6Addr_s7 as u16
|
|
2039
|
+
[END_MACRO]
|
|
2040
|
+
|
|
2041
|
+
[MACRO] NET_IPV6_FROM_SEGMENTS %addr, %s0, %s1, %s2, %s3, %s4, %s5, %s6, %s7
|
|
2042
|
+
EXPAND NET_IPV6_NEW %addr, %s0, %s1, %s2, %s3, %s4, %s5, %s6, %s7
|
|
2043
|
+
[END_MACRO]
|
|
2044
|
+
|
|
2045
|
+
[MACRO] NET_IPV6_UNSPECIFIED %addr
|
|
2046
|
+
EXPAND NET_IPV6_NEW %addr, 0, 0, 0, 0, 0, 0, 0, 0
|
|
2047
|
+
[END_MACRO]
|
|
2048
|
+
|
|
2049
|
+
// Rust-style Default for Ipv6Addr: UNSPECIFIED.
|
|
2050
|
+
[MACRO] NET_IPV6_DEFAULT %addr
|
|
2051
|
+
EXPAND NET_IPV6_UNSPECIFIED %addr
|
|
2052
|
+
[END_MACRO]
|
|
2053
|
+
|
|
2054
|
+
[MACRO] NET_IPV6_LOCALHOST %addr
|
|
2055
|
+
EXPAND NET_IPV6_NEW %addr, 0, 0, 0, 0, 0, 0, 0, 1
|
|
2056
|
+
[END_MACRO]
|
|
2057
|
+
|
|
2058
|
+
[MACRO] NET_IPV6_BITS %out_bits
|
|
2059
|
+
%out_bits = add 0, NET_IPV6_BITS_VALUE
|
|
2060
|
+
[END_MACRO]
|
|
2061
|
+
|
|
2062
|
+
[MACRO] NET_IPV6_OCTETS %out_b0, %out_b1, %out_b2, %out_b3, %out_b4, %out_b5, %out_b6, %out_b7, %out_b8, %out_b9, %out_b10, %out_b11, %out_b12, %out_b13, %out_b14, %out_b15, %addr
|
|
2063
|
+
__net_ipv6_oct_s0_%out_b0 = load %addr+NetIpv6Addr_s0 as u16
|
|
2064
|
+
__net_ipv6_oct_s1_%out_b0 = load %addr+NetIpv6Addr_s1 as u16
|
|
2065
|
+
__net_ipv6_oct_s2_%out_b0 = load %addr+NetIpv6Addr_s2 as u16
|
|
2066
|
+
__net_ipv6_oct_s3_%out_b0 = load %addr+NetIpv6Addr_s3 as u16
|
|
2067
|
+
__net_ipv6_oct_s4_%out_b0 = load %addr+NetIpv6Addr_s4 as u16
|
|
2068
|
+
__net_ipv6_oct_s5_%out_b0 = load %addr+NetIpv6Addr_s5 as u16
|
|
2069
|
+
__net_ipv6_oct_s6_%out_b0 = load %addr+NetIpv6Addr_s6 as u16
|
|
2070
|
+
__net_ipv6_oct_s7_%out_b0 = load %addr+NetIpv6Addr_s7 as u16
|
|
2071
|
+
%out_b0 = lshr __net_ipv6_oct_s0_%out_b0, 8
|
|
2072
|
+
%out_b1 = and __net_ipv6_oct_s0_%out_b0, 255
|
|
2073
|
+
%out_b2 = lshr __net_ipv6_oct_s1_%out_b0, 8
|
|
2074
|
+
%out_b3 = and __net_ipv6_oct_s1_%out_b0, 255
|
|
2075
|
+
%out_b4 = lshr __net_ipv6_oct_s2_%out_b0, 8
|
|
2076
|
+
%out_b5 = and __net_ipv6_oct_s2_%out_b0, 255
|
|
2077
|
+
%out_b6 = lshr __net_ipv6_oct_s3_%out_b0, 8
|
|
2078
|
+
%out_b7 = and __net_ipv6_oct_s3_%out_b0, 255
|
|
2079
|
+
%out_b8 = lshr __net_ipv6_oct_s4_%out_b0, 8
|
|
2080
|
+
%out_b9 = and __net_ipv6_oct_s4_%out_b0, 255
|
|
2081
|
+
%out_b10 = lshr __net_ipv6_oct_s5_%out_b0, 8
|
|
2082
|
+
%out_b11 = and __net_ipv6_oct_s5_%out_b0, 255
|
|
2083
|
+
%out_b12 = lshr __net_ipv6_oct_s6_%out_b0, 8
|
|
2084
|
+
%out_b13 = and __net_ipv6_oct_s6_%out_b0, 255
|
|
2085
|
+
%out_b14 = lshr __net_ipv6_oct_s7_%out_b0, 8
|
|
2086
|
+
%out_b15 = and __net_ipv6_oct_s7_%out_b0, 255
|
|
2087
|
+
!__net_ipv6_oct_s7_%out_b0
|
|
2088
|
+
!__net_ipv6_oct_s6_%out_b0
|
|
2089
|
+
!__net_ipv6_oct_s5_%out_b0
|
|
2090
|
+
!__net_ipv6_oct_s4_%out_b0
|
|
2091
|
+
!__net_ipv6_oct_s3_%out_b0
|
|
2092
|
+
!__net_ipv6_oct_s2_%out_b0
|
|
2093
|
+
!__net_ipv6_oct_s1_%out_b0
|
|
2094
|
+
!__net_ipv6_oct_s0_%out_b0
|
|
2095
|
+
[END_MACRO]
|
|
2096
|
+
|
|
2097
|
+
[MACRO] NET_IPV6_AS_OCTETS_PTR %out_ptr, %addr
|
|
2098
|
+
__net_ipv6_octets_view_%out_ptr = stack_alloc 16
|
|
2099
|
+
EXPAND NET_IPV6_WRITE_OCTETS __net_ipv6_octets_view_ok_%out_ptr, __net_ipv6_octets_view_%out_ptr, 16, %addr
|
|
2100
|
+
%out_ptr = ptr_add __net_ipv6_octets_view_%out_ptr, 0
|
|
2101
|
+
!__net_ipv6_octets_view_ok_%out_ptr
|
|
2102
|
+
[END_MACRO]
|
|
2103
|
+
|
|
2104
|
+
[MACRO] NET_IPV6_WRITE_OCTETS %out_ok, %dst_ptr, %dst_len, %addr
|
|
2105
|
+
__net_ipv6_write_fits_%out_ok = uge %dst_len, 16
|
|
2106
|
+
br __net_ipv6_write_fits_%out_ok -> L_NET_IPV6_WRITE_OCTETS_OK_%out_ok, L_NET_IPV6_WRITE_OCTETS_FAIL_%out_ok
|
|
2107
|
+
|
|
2108
|
+
L_NET_IPV6_WRITE_OCTETS_OK_%out_ok:
|
|
2109
|
+
EXPAND NET_IPV6_OCTETS __net_ipv6_write_b0_%out_ok, __net_ipv6_write_b1_%out_ok, __net_ipv6_write_b2_%out_ok, __net_ipv6_write_b3_%out_ok, __net_ipv6_write_b4_%out_ok, __net_ipv6_write_b5_%out_ok, __net_ipv6_write_b6_%out_ok, __net_ipv6_write_b7_%out_ok, __net_ipv6_write_b8_%out_ok, __net_ipv6_write_b9_%out_ok, __net_ipv6_write_b10_%out_ok, __net_ipv6_write_b11_%out_ok, __net_ipv6_write_b12_%out_ok, __net_ipv6_write_b13_%out_ok, __net_ipv6_write_b14_%out_ok, __net_ipv6_write_b15_%out_ok, %addr
|
|
2110
|
+
store %dst_ptr+0, __net_ipv6_write_b0_%out_ok as u8
|
|
2111
|
+
__net_ipv6_write_p1_%out_ok = ptr_add %dst_ptr, 1
|
|
2112
|
+
__net_ipv6_write_p2_%out_ok = ptr_add %dst_ptr, 2
|
|
2113
|
+
__net_ipv6_write_p3_%out_ok = ptr_add %dst_ptr, 3
|
|
2114
|
+
__net_ipv6_write_p4_%out_ok = ptr_add %dst_ptr, 4
|
|
2115
|
+
__net_ipv6_write_p5_%out_ok = ptr_add %dst_ptr, 5
|
|
2116
|
+
__net_ipv6_write_p6_%out_ok = ptr_add %dst_ptr, 6
|
|
2117
|
+
__net_ipv6_write_p7_%out_ok = ptr_add %dst_ptr, 7
|
|
2118
|
+
__net_ipv6_write_p8_%out_ok = ptr_add %dst_ptr, 8
|
|
2119
|
+
__net_ipv6_write_p9_%out_ok = ptr_add %dst_ptr, 9
|
|
2120
|
+
__net_ipv6_write_p10_%out_ok = ptr_add %dst_ptr, 10
|
|
2121
|
+
__net_ipv6_write_p11_%out_ok = ptr_add %dst_ptr, 11
|
|
2122
|
+
__net_ipv6_write_p12_%out_ok = ptr_add %dst_ptr, 12
|
|
2123
|
+
__net_ipv6_write_p13_%out_ok = ptr_add %dst_ptr, 13
|
|
2124
|
+
__net_ipv6_write_p14_%out_ok = ptr_add %dst_ptr, 14
|
|
2125
|
+
__net_ipv6_write_p15_%out_ok = ptr_add %dst_ptr, 15
|
|
2126
|
+
store __net_ipv6_write_p1_%out_ok+0, __net_ipv6_write_b1_%out_ok as u8
|
|
2127
|
+
store __net_ipv6_write_p2_%out_ok+0, __net_ipv6_write_b2_%out_ok as u8
|
|
2128
|
+
store __net_ipv6_write_p3_%out_ok+0, __net_ipv6_write_b3_%out_ok as u8
|
|
2129
|
+
store __net_ipv6_write_p4_%out_ok+0, __net_ipv6_write_b4_%out_ok as u8
|
|
2130
|
+
store __net_ipv6_write_p5_%out_ok+0, __net_ipv6_write_b5_%out_ok as u8
|
|
2131
|
+
store __net_ipv6_write_p6_%out_ok+0, __net_ipv6_write_b6_%out_ok as u8
|
|
2132
|
+
store __net_ipv6_write_p7_%out_ok+0, __net_ipv6_write_b7_%out_ok as u8
|
|
2133
|
+
store __net_ipv6_write_p8_%out_ok+0, __net_ipv6_write_b8_%out_ok as u8
|
|
2134
|
+
store __net_ipv6_write_p9_%out_ok+0, __net_ipv6_write_b9_%out_ok as u8
|
|
2135
|
+
store __net_ipv6_write_p10_%out_ok+0, __net_ipv6_write_b10_%out_ok as u8
|
|
2136
|
+
store __net_ipv6_write_p11_%out_ok+0, __net_ipv6_write_b11_%out_ok as u8
|
|
2137
|
+
store __net_ipv6_write_p12_%out_ok+0, __net_ipv6_write_b12_%out_ok as u8
|
|
2138
|
+
store __net_ipv6_write_p13_%out_ok+0, __net_ipv6_write_b13_%out_ok as u8
|
|
2139
|
+
store __net_ipv6_write_p14_%out_ok+0, __net_ipv6_write_b14_%out_ok as u8
|
|
2140
|
+
store __net_ipv6_write_p15_%out_ok+0, __net_ipv6_write_b15_%out_ok as u8
|
|
2141
|
+
%out_ok = add 0, 1
|
|
2142
|
+
!__net_ipv6_write_p15_%out_ok
|
|
2143
|
+
!__net_ipv6_write_p14_%out_ok
|
|
2144
|
+
!__net_ipv6_write_p13_%out_ok
|
|
2145
|
+
!__net_ipv6_write_p12_%out_ok
|
|
2146
|
+
!__net_ipv6_write_p11_%out_ok
|
|
2147
|
+
!__net_ipv6_write_p10_%out_ok
|
|
2148
|
+
!__net_ipv6_write_p9_%out_ok
|
|
2149
|
+
!__net_ipv6_write_p8_%out_ok
|
|
2150
|
+
!__net_ipv6_write_p7_%out_ok
|
|
2151
|
+
!__net_ipv6_write_p6_%out_ok
|
|
2152
|
+
!__net_ipv6_write_p5_%out_ok
|
|
2153
|
+
!__net_ipv6_write_p4_%out_ok
|
|
2154
|
+
!__net_ipv6_write_p3_%out_ok
|
|
2155
|
+
!__net_ipv6_write_p2_%out_ok
|
|
2156
|
+
!__net_ipv6_write_p1_%out_ok
|
|
2157
|
+
!__net_ipv6_write_b15_%out_ok
|
|
2158
|
+
!__net_ipv6_write_b14_%out_ok
|
|
2159
|
+
!__net_ipv6_write_b13_%out_ok
|
|
2160
|
+
!__net_ipv6_write_b12_%out_ok
|
|
2161
|
+
!__net_ipv6_write_b11_%out_ok
|
|
2162
|
+
!__net_ipv6_write_b10_%out_ok
|
|
2163
|
+
!__net_ipv6_write_b9_%out_ok
|
|
2164
|
+
!__net_ipv6_write_b8_%out_ok
|
|
2165
|
+
!__net_ipv6_write_b7_%out_ok
|
|
2166
|
+
!__net_ipv6_write_b6_%out_ok
|
|
2167
|
+
!__net_ipv6_write_b5_%out_ok
|
|
2168
|
+
!__net_ipv6_write_b4_%out_ok
|
|
2169
|
+
!__net_ipv6_write_b3_%out_ok
|
|
2170
|
+
!__net_ipv6_write_b2_%out_ok
|
|
2171
|
+
!__net_ipv6_write_b1_%out_ok
|
|
2172
|
+
!__net_ipv6_write_b0_%out_ok
|
|
2173
|
+
!__net_ipv6_write_fits_%out_ok
|
|
2174
|
+
jmp L_NET_IPV6_WRITE_OCTETS_END_%out_ok
|
|
2175
|
+
|
|
2176
|
+
L_NET_IPV6_WRITE_OCTETS_FAIL_%out_ok:
|
|
2177
|
+
%out_ok = add 0, 0
|
|
2178
|
+
!__net_ipv6_write_fits_%out_ok
|
|
2179
|
+
|
|
2180
|
+
L_NET_IPV6_WRITE_OCTETS_END_%out_ok:
|
|
2181
|
+
[END_MACRO]
|
|
2182
|
+
|
|
2183
|
+
[MACRO] NET_IPV6_FROM_OCTETS %addr, %b0, %b1, %b2, %b3, %b4, %b5, %b6, %b7, %b8, %b9, %b10, %b11, %b12, %b13, %b14, %b15
|
|
2184
|
+
__net_ipv6_from_oct_s0_hi_%addr = shl %b0, 8
|
|
2185
|
+
__net_ipv6_from_oct_s0_%addr = or __net_ipv6_from_oct_s0_hi_%addr, %b1
|
|
2186
|
+
__net_ipv6_from_oct_s1_hi_%addr = shl %b2, 8
|
|
2187
|
+
__net_ipv6_from_oct_s1_%addr = or __net_ipv6_from_oct_s1_hi_%addr, %b3
|
|
2188
|
+
__net_ipv6_from_oct_s2_hi_%addr = shl %b4, 8
|
|
2189
|
+
__net_ipv6_from_oct_s2_%addr = or __net_ipv6_from_oct_s2_hi_%addr, %b5
|
|
2190
|
+
__net_ipv6_from_oct_s3_hi_%addr = shl %b6, 8
|
|
2191
|
+
__net_ipv6_from_oct_s3_%addr = or __net_ipv6_from_oct_s3_hi_%addr, %b7
|
|
2192
|
+
__net_ipv6_from_oct_s4_hi_%addr = shl %b8, 8
|
|
2193
|
+
__net_ipv6_from_oct_s4_%addr = or __net_ipv6_from_oct_s4_hi_%addr, %b9
|
|
2194
|
+
__net_ipv6_from_oct_s5_hi_%addr = shl %b10, 8
|
|
2195
|
+
__net_ipv6_from_oct_s5_%addr = or __net_ipv6_from_oct_s5_hi_%addr, %b11
|
|
2196
|
+
__net_ipv6_from_oct_s6_hi_%addr = shl %b12, 8
|
|
2197
|
+
__net_ipv6_from_oct_s6_%addr = or __net_ipv6_from_oct_s6_hi_%addr, %b13
|
|
2198
|
+
__net_ipv6_from_oct_s7_hi_%addr = shl %b14, 8
|
|
2199
|
+
__net_ipv6_from_oct_s7_%addr = or __net_ipv6_from_oct_s7_hi_%addr, %b15
|
|
2200
|
+
EXPAND NET_IPV6_NEW %addr, __net_ipv6_from_oct_s0_%addr, __net_ipv6_from_oct_s1_%addr, __net_ipv6_from_oct_s2_%addr, __net_ipv6_from_oct_s3_%addr, __net_ipv6_from_oct_s4_%addr, __net_ipv6_from_oct_s5_%addr, __net_ipv6_from_oct_s6_%addr, __net_ipv6_from_oct_s7_%addr
|
|
2201
|
+
!__net_ipv6_from_oct_s7_%addr
|
|
2202
|
+
!__net_ipv6_from_oct_s7_hi_%addr
|
|
2203
|
+
!__net_ipv6_from_oct_s6_%addr
|
|
2204
|
+
!__net_ipv6_from_oct_s6_hi_%addr
|
|
2205
|
+
!__net_ipv6_from_oct_s5_%addr
|
|
2206
|
+
!__net_ipv6_from_oct_s5_hi_%addr
|
|
2207
|
+
!__net_ipv6_from_oct_s4_%addr
|
|
2208
|
+
!__net_ipv6_from_oct_s4_hi_%addr
|
|
2209
|
+
!__net_ipv6_from_oct_s3_%addr
|
|
2210
|
+
!__net_ipv6_from_oct_s3_hi_%addr
|
|
2211
|
+
!__net_ipv6_from_oct_s2_%addr
|
|
2212
|
+
!__net_ipv6_from_oct_s2_hi_%addr
|
|
2213
|
+
!__net_ipv6_from_oct_s1_%addr
|
|
2214
|
+
!__net_ipv6_from_oct_s1_hi_%addr
|
|
2215
|
+
!__net_ipv6_from_oct_s0_%addr
|
|
2216
|
+
!__net_ipv6_from_oct_s0_hi_%addr
|
|
2217
|
+
[END_MACRO]
|
|
2218
|
+
|
|
2219
|
+
[MACRO] NET_IPV6_COPY %dst_addr, %src_addr
|
|
2220
|
+
__net_ipv6_copy_s0_%dst_addr = load %src_addr+NetIpv6Addr_s0 as u16
|
|
2221
|
+
__net_ipv6_copy_s1_%dst_addr = load %src_addr+NetIpv6Addr_s1 as u16
|
|
2222
|
+
__net_ipv6_copy_s2_%dst_addr = load %src_addr+NetIpv6Addr_s2 as u16
|
|
2223
|
+
__net_ipv6_copy_s3_%dst_addr = load %src_addr+NetIpv6Addr_s3 as u16
|
|
2224
|
+
__net_ipv6_copy_s4_%dst_addr = load %src_addr+NetIpv6Addr_s4 as u16
|
|
2225
|
+
__net_ipv6_copy_s5_%dst_addr = load %src_addr+NetIpv6Addr_s5 as u16
|
|
2226
|
+
__net_ipv6_copy_s6_%dst_addr = load %src_addr+NetIpv6Addr_s6 as u16
|
|
2227
|
+
__net_ipv6_copy_s7_%dst_addr = load %src_addr+NetIpv6Addr_s7 as u16
|
|
2228
|
+
EXPAND NET_IPV6_NEW %dst_addr, __net_ipv6_copy_s0_%dst_addr, __net_ipv6_copy_s1_%dst_addr, __net_ipv6_copy_s2_%dst_addr, __net_ipv6_copy_s3_%dst_addr, __net_ipv6_copy_s4_%dst_addr, __net_ipv6_copy_s5_%dst_addr, __net_ipv6_copy_s6_%dst_addr, __net_ipv6_copy_s7_%dst_addr
|
|
2229
|
+
!__net_ipv6_copy_s7_%dst_addr
|
|
2230
|
+
!__net_ipv6_copy_s6_%dst_addr
|
|
2231
|
+
!__net_ipv6_copy_s5_%dst_addr
|
|
2232
|
+
!__net_ipv6_copy_s4_%dst_addr
|
|
2233
|
+
!__net_ipv6_copy_s3_%dst_addr
|
|
2234
|
+
!__net_ipv6_copy_s2_%dst_addr
|
|
2235
|
+
!__net_ipv6_copy_s1_%dst_addr
|
|
2236
|
+
!__net_ipv6_copy_s0_%dst_addr
|
|
2237
|
+
[END_MACRO]
|
|
2238
|
+
|
|
2239
|
+
[MACRO] NET_IPV6_TO_BITS64 %out_hi, %out_lo, %addr
|
|
2240
|
+
__net_ipv6_bits_s0_%out_hi = load %addr+NetIpv6Addr_s0 as u16
|
|
2241
|
+
__net_ipv6_bits_s1_%out_hi = load %addr+NetIpv6Addr_s1 as u16
|
|
2242
|
+
__net_ipv6_bits_s2_%out_hi = load %addr+NetIpv6Addr_s2 as u16
|
|
2243
|
+
__net_ipv6_bits_s3_%out_hi = load %addr+NetIpv6Addr_s3 as u16
|
|
2244
|
+
__net_ipv6_bits_s4_%out_hi = load %addr+NetIpv6Addr_s4 as u16
|
|
2245
|
+
__net_ipv6_bits_s5_%out_hi = load %addr+NetIpv6Addr_s5 as u16
|
|
2246
|
+
__net_ipv6_bits_s6_%out_hi = load %addr+NetIpv6Addr_s6 as u16
|
|
2247
|
+
__net_ipv6_bits_s7_%out_hi = load %addr+NetIpv6Addr_s7 as u16
|
|
2248
|
+
__net_ipv6_bits_s0_shift_%out_hi = shl __net_ipv6_bits_s0_%out_hi, 48
|
|
2249
|
+
__net_ipv6_bits_s1_shift_%out_hi = shl __net_ipv6_bits_s1_%out_hi, 32
|
|
2250
|
+
__net_ipv6_bits_s2_shift_%out_hi = shl __net_ipv6_bits_s2_%out_hi, 16
|
|
2251
|
+
__net_ipv6_bits_hi01_%out_hi = or __net_ipv6_bits_s0_shift_%out_hi, __net_ipv6_bits_s1_shift_%out_hi
|
|
2252
|
+
__net_ipv6_bits_hi23_%out_hi = or __net_ipv6_bits_s2_shift_%out_hi, __net_ipv6_bits_s3_%out_hi
|
|
2253
|
+
%out_hi = or __net_ipv6_bits_hi01_%out_hi, __net_ipv6_bits_hi23_%out_hi
|
|
2254
|
+
__net_ipv6_bits_s4_shift_%out_hi = shl __net_ipv6_bits_s4_%out_hi, 48
|
|
2255
|
+
__net_ipv6_bits_s5_shift_%out_hi = shl __net_ipv6_bits_s5_%out_hi, 32
|
|
2256
|
+
__net_ipv6_bits_s6_shift_%out_hi = shl __net_ipv6_bits_s6_%out_hi, 16
|
|
2257
|
+
__net_ipv6_bits_lo45_%out_hi = or __net_ipv6_bits_s4_shift_%out_hi, __net_ipv6_bits_s5_shift_%out_hi
|
|
2258
|
+
__net_ipv6_bits_lo67_%out_hi = or __net_ipv6_bits_s6_shift_%out_hi, __net_ipv6_bits_s7_%out_hi
|
|
2259
|
+
%out_lo = or __net_ipv6_bits_lo45_%out_hi, __net_ipv6_bits_lo67_%out_hi
|
|
2260
|
+
!__net_ipv6_bits_lo67_%out_hi
|
|
2261
|
+
!__net_ipv6_bits_lo45_%out_hi
|
|
2262
|
+
!__net_ipv6_bits_s6_shift_%out_hi
|
|
2263
|
+
!__net_ipv6_bits_s5_shift_%out_hi
|
|
2264
|
+
!__net_ipv6_bits_s4_shift_%out_hi
|
|
2265
|
+
!__net_ipv6_bits_hi23_%out_hi
|
|
2266
|
+
!__net_ipv6_bits_hi01_%out_hi
|
|
2267
|
+
!__net_ipv6_bits_s2_shift_%out_hi
|
|
2268
|
+
!__net_ipv6_bits_s1_shift_%out_hi
|
|
2269
|
+
!__net_ipv6_bits_s0_shift_%out_hi
|
|
2270
|
+
!__net_ipv6_bits_s7_%out_hi
|
|
2271
|
+
!__net_ipv6_bits_s6_%out_hi
|
|
2272
|
+
!__net_ipv6_bits_s5_%out_hi
|
|
2273
|
+
!__net_ipv6_bits_s4_%out_hi
|
|
2274
|
+
!__net_ipv6_bits_s3_%out_hi
|
|
2275
|
+
!__net_ipv6_bits_s2_%out_hi
|
|
2276
|
+
!__net_ipv6_bits_s1_%out_hi
|
|
2277
|
+
!__net_ipv6_bits_s0_%out_hi
|
|
2278
|
+
[END_MACRO]
|
|
2279
|
+
|
|
2280
|
+
[MACRO] NET_IPV6_FROM_BITS64 %addr, %hi, %lo
|
|
2281
|
+
__net_ipv6_from_s0_%addr = lshr %hi, 48
|
|
2282
|
+
__net_ipv6_from_s1_raw_%addr = lshr %hi, 32
|
|
2283
|
+
__net_ipv6_from_s1_%addr = and __net_ipv6_from_s1_raw_%addr, 65535
|
|
2284
|
+
__net_ipv6_from_s2_raw_%addr = lshr %hi, 16
|
|
2285
|
+
__net_ipv6_from_s2_%addr = and __net_ipv6_from_s2_raw_%addr, 65535
|
|
2286
|
+
__net_ipv6_from_s3_%addr = and %hi, 65535
|
|
2287
|
+
__net_ipv6_from_s4_%addr = lshr %lo, 48
|
|
2288
|
+
__net_ipv6_from_s5_raw_%addr = lshr %lo, 32
|
|
2289
|
+
__net_ipv6_from_s5_%addr = and __net_ipv6_from_s5_raw_%addr, 65535
|
|
2290
|
+
__net_ipv6_from_s6_raw_%addr = lshr %lo, 16
|
|
2291
|
+
__net_ipv6_from_s6_%addr = and __net_ipv6_from_s6_raw_%addr, 65535
|
|
2292
|
+
__net_ipv6_from_s7_%addr = and %lo, 65535
|
|
2293
|
+
EXPAND NET_IPV6_NEW %addr, __net_ipv6_from_s0_%addr, __net_ipv6_from_s1_%addr, __net_ipv6_from_s2_%addr, __net_ipv6_from_s3_%addr, __net_ipv6_from_s4_%addr, __net_ipv6_from_s5_%addr, __net_ipv6_from_s6_%addr, __net_ipv6_from_s7_%addr
|
|
2294
|
+
!__net_ipv6_from_s7_%addr
|
|
2295
|
+
!__net_ipv6_from_s6_%addr
|
|
2296
|
+
!__net_ipv6_from_s6_raw_%addr
|
|
2297
|
+
!__net_ipv6_from_s5_%addr
|
|
2298
|
+
!__net_ipv6_from_s5_raw_%addr
|
|
2299
|
+
!__net_ipv6_from_s4_%addr
|
|
2300
|
+
!__net_ipv6_from_s3_%addr
|
|
2301
|
+
!__net_ipv6_from_s2_%addr
|
|
2302
|
+
!__net_ipv6_from_s2_raw_%addr
|
|
2303
|
+
!__net_ipv6_from_s1_%addr
|
|
2304
|
+
!__net_ipv6_from_s1_raw_%addr
|
|
2305
|
+
!__net_ipv6_from_s0_%addr
|
|
2306
|
+
[END_MACRO]
|
|
2307
|
+
|
|
2308
|
+
[MACRO] NET_IPV6_EQ %out_bool, %left, %right
|
|
2309
|
+
__net_ipv6_l0_%out_bool = load %left+NetIpv6Addr_s0 as u16
|
|
2310
|
+
__net_ipv6_l1_%out_bool = load %left+NetIpv6Addr_s1 as u16
|
|
2311
|
+
__net_ipv6_l2_%out_bool = load %left+NetIpv6Addr_s2 as u16
|
|
2312
|
+
__net_ipv6_l3_%out_bool = load %left+NetIpv6Addr_s3 as u16
|
|
2313
|
+
__net_ipv6_l4_%out_bool = load %left+NetIpv6Addr_s4 as u16
|
|
2314
|
+
__net_ipv6_l5_%out_bool = load %left+NetIpv6Addr_s5 as u16
|
|
2315
|
+
__net_ipv6_l6_%out_bool = load %left+NetIpv6Addr_s6 as u16
|
|
2316
|
+
__net_ipv6_l7_%out_bool = load %left+NetIpv6Addr_s7 as u16
|
|
2317
|
+
__net_ipv6_r0_%out_bool = load %right+NetIpv6Addr_s0 as u16
|
|
2318
|
+
__net_ipv6_r1_%out_bool = load %right+NetIpv6Addr_s1 as u16
|
|
2319
|
+
__net_ipv6_r2_%out_bool = load %right+NetIpv6Addr_s2 as u16
|
|
2320
|
+
__net_ipv6_r3_%out_bool = load %right+NetIpv6Addr_s3 as u16
|
|
2321
|
+
__net_ipv6_r4_%out_bool = load %right+NetIpv6Addr_s4 as u16
|
|
2322
|
+
__net_ipv6_r5_%out_bool = load %right+NetIpv6Addr_s5 as u16
|
|
2323
|
+
__net_ipv6_r6_%out_bool = load %right+NetIpv6Addr_s6 as u16
|
|
2324
|
+
__net_ipv6_r7_%out_bool = load %right+NetIpv6Addr_s7 as u16
|
|
2325
|
+
__net_ipv6_e0_%out_bool = eq __net_ipv6_l0_%out_bool, __net_ipv6_r0_%out_bool
|
|
2326
|
+
__net_ipv6_e1_%out_bool = eq __net_ipv6_l1_%out_bool, __net_ipv6_r1_%out_bool
|
|
2327
|
+
__net_ipv6_e2_%out_bool = eq __net_ipv6_l2_%out_bool, __net_ipv6_r2_%out_bool
|
|
2328
|
+
__net_ipv6_e3_%out_bool = eq __net_ipv6_l3_%out_bool, __net_ipv6_r3_%out_bool
|
|
2329
|
+
__net_ipv6_e4_%out_bool = eq __net_ipv6_l4_%out_bool, __net_ipv6_r4_%out_bool
|
|
2330
|
+
__net_ipv6_e5_%out_bool = eq __net_ipv6_l5_%out_bool, __net_ipv6_r5_%out_bool
|
|
2331
|
+
__net_ipv6_e6_%out_bool = eq __net_ipv6_l6_%out_bool, __net_ipv6_r6_%out_bool
|
|
2332
|
+
__net_ipv6_e7_%out_bool = eq __net_ipv6_l7_%out_bool, __net_ipv6_r7_%out_bool
|
|
2333
|
+
__net_ipv6_e01_%out_bool = and __net_ipv6_e0_%out_bool, __net_ipv6_e1_%out_bool
|
|
2334
|
+
__net_ipv6_e23_%out_bool = and __net_ipv6_e2_%out_bool, __net_ipv6_e3_%out_bool
|
|
2335
|
+
__net_ipv6_e45_%out_bool = and __net_ipv6_e4_%out_bool, __net_ipv6_e5_%out_bool
|
|
2336
|
+
__net_ipv6_e67_%out_bool = and __net_ipv6_e6_%out_bool, __net_ipv6_e7_%out_bool
|
|
2337
|
+
__net_ipv6_e03_%out_bool = and __net_ipv6_e01_%out_bool, __net_ipv6_e23_%out_bool
|
|
2338
|
+
__net_ipv6_e47_%out_bool = and __net_ipv6_e45_%out_bool, __net_ipv6_e67_%out_bool
|
|
2339
|
+
%out_bool = and __net_ipv6_e03_%out_bool, __net_ipv6_e47_%out_bool
|
|
2340
|
+
!__net_ipv6_e47_%out_bool
|
|
2341
|
+
!__net_ipv6_e03_%out_bool
|
|
2342
|
+
!__net_ipv6_e67_%out_bool
|
|
2343
|
+
!__net_ipv6_e45_%out_bool
|
|
2344
|
+
!__net_ipv6_e23_%out_bool
|
|
2345
|
+
!__net_ipv6_e01_%out_bool
|
|
2346
|
+
!__net_ipv6_e7_%out_bool
|
|
2347
|
+
!__net_ipv6_e6_%out_bool
|
|
2348
|
+
!__net_ipv6_e5_%out_bool
|
|
2349
|
+
!__net_ipv6_e4_%out_bool
|
|
2350
|
+
!__net_ipv6_e3_%out_bool
|
|
2351
|
+
!__net_ipv6_e2_%out_bool
|
|
2352
|
+
!__net_ipv6_e1_%out_bool
|
|
2353
|
+
!__net_ipv6_e0_%out_bool
|
|
2354
|
+
!__net_ipv6_r7_%out_bool
|
|
2355
|
+
!__net_ipv6_r6_%out_bool
|
|
2356
|
+
!__net_ipv6_r5_%out_bool
|
|
2357
|
+
!__net_ipv6_r4_%out_bool
|
|
2358
|
+
!__net_ipv6_r3_%out_bool
|
|
2359
|
+
!__net_ipv6_r2_%out_bool
|
|
2360
|
+
!__net_ipv6_r1_%out_bool
|
|
2361
|
+
!__net_ipv6_r0_%out_bool
|
|
2362
|
+
!__net_ipv6_l7_%out_bool
|
|
2363
|
+
!__net_ipv6_l6_%out_bool
|
|
2364
|
+
!__net_ipv6_l5_%out_bool
|
|
2365
|
+
!__net_ipv6_l4_%out_bool
|
|
2366
|
+
!__net_ipv6_l3_%out_bool
|
|
2367
|
+
!__net_ipv6_l2_%out_bool
|
|
2368
|
+
!__net_ipv6_l1_%out_bool
|
|
2369
|
+
!__net_ipv6_l0_%out_bool
|
|
2370
|
+
[END_MACRO]
|
|
2371
|
+
|
|
2372
|
+
[MACRO] NET_IPV6_IS_UNSPECIFIED %out_bool, %addr
|
|
2373
|
+
__net_ipv6_zero_%out_bool = stack_alloc NetIpv6Addr_SIZE
|
|
2374
|
+
EXPAND NET_IPV6_NEW __net_ipv6_zero_%out_bool, 0, 0, 0, 0, 0, 0, 0, 0
|
|
2375
|
+
EXPAND NET_IPV6_EQ %out_bool, %addr, __net_ipv6_zero_%out_bool
|
|
2376
|
+
[END_MACRO]
|
|
2377
|
+
|
|
2378
|
+
[MACRO] NET_IPV6_IS_LOOPBACK %out_bool, %addr
|
|
2379
|
+
__net_ipv6_loop_%out_bool = stack_alloc NetIpv6Addr_SIZE
|
|
2380
|
+
EXPAND NET_IPV6_NEW __net_ipv6_loop_%out_bool, 0, 0, 0, 0, 0, 0, 0, 1
|
|
2381
|
+
EXPAND NET_IPV6_EQ %out_bool, %addr, __net_ipv6_loop_%out_bool
|
|
2382
|
+
[END_MACRO]
|
|
2383
|
+
|
|
2384
|
+
[MACRO] NET_IPV6_IS_MULTICAST %out_bool, %addr
|
|
2385
|
+
__net_ipv6_s0_%out_bool = load %addr+NetIpv6Addr_s0 as u16
|
|
2386
|
+
__net_ipv6_masked_%out_bool = and __net_ipv6_s0_%out_bool, 65280
|
|
2387
|
+
%out_bool = eq __net_ipv6_masked_%out_bool, 65280
|
|
2388
|
+
!__net_ipv6_masked_%out_bool
|
|
2389
|
+
!__net_ipv6_s0_%out_bool
|
|
2390
|
+
[END_MACRO]
|
|
2391
|
+
|
|
2392
|
+
[MACRO] NET_IPV6_IS_UNIQUE_LOCAL %out_bool, %addr
|
|
2393
|
+
__net_ipv6_s0_%out_bool = load %addr+NetIpv6Addr_s0 as u16
|
|
2394
|
+
__net_ipv6_masked_%out_bool = and __net_ipv6_s0_%out_bool, 65024
|
|
2395
|
+
%out_bool = eq __net_ipv6_masked_%out_bool, 64512
|
|
2396
|
+
!__net_ipv6_masked_%out_bool
|
|
2397
|
+
!__net_ipv6_s0_%out_bool
|
|
2398
|
+
[END_MACRO]
|
|
2399
|
+
|
|
2400
|
+
[MACRO] NET_IPV6_IS_UNICAST_LINK_LOCAL %out_bool, %addr
|
|
2401
|
+
__net_ipv6_s0_%out_bool = load %addr+NetIpv6Addr_s0 as u16
|
|
2402
|
+
__net_ipv6_masked_%out_bool = and __net_ipv6_s0_%out_bool, 65472
|
|
2403
|
+
%out_bool = eq __net_ipv6_masked_%out_bool, 65152
|
|
2404
|
+
!__net_ipv6_masked_%out_bool
|
|
2405
|
+
!__net_ipv6_s0_%out_bool
|
|
2406
|
+
[END_MACRO]
|
|
2407
|
+
|
|
2408
|
+
[MACRO] NET_IPV6_IS_UNICAST %out_bool, %addr
|
|
2409
|
+
EXPAND NET_IPV6_IS_MULTICAST __net_ipv6_multicast_%out_bool, %addr
|
|
2410
|
+
%out_bool = eq __net_ipv6_multicast_%out_bool, 0
|
|
2411
|
+
!__net_ipv6_multicast_%out_bool
|
|
2412
|
+
[END_MACRO]
|
|
2413
|
+
|
|
2414
|
+
[MACRO] NET_IPV6_IS_DOCUMENTATION %out_bool, %addr
|
|
2415
|
+
__net_ipv6_s0_%out_bool = load %addr+NetIpv6Addr_s0 as u16
|
|
2416
|
+
__net_ipv6_s1_%out_bool = load %addr+NetIpv6Addr_s1 as u16
|
|
2417
|
+
__net_ipv6_doc2001_%out_bool = eq __net_ipv6_s0_%out_bool, 8193
|
|
2418
|
+
__net_ipv6_doc0db8_%out_bool = eq __net_ipv6_s1_%out_bool, 3512
|
|
2419
|
+
__net_ipv6_doc1_%out_bool = and __net_ipv6_doc2001_%out_bool, __net_ipv6_doc0db8_%out_bool
|
|
2420
|
+
__net_ipv6_doc3fff_%out_bool = eq __net_ipv6_s0_%out_bool, 16383
|
|
2421
|
+
__net_ipv6_doc3fff_range_%out_bool = ule __net_ipv6_s1_%out_bool, 4095
|
|
2422
|
+
__net_ipv6_doc2_%out_bool = and __net_ipv6_doc3fff_%out_bool, __net_ipv6_doc3fff_range_%out_bool
|
|
2423
|
+
%out_bool = or __net_ipv6_doc1_%out_bool, __net_ipv6_doc2_%out_bool
|
|
2424
|
+
!__net_ipv6_doc2_%out_bool
|
|
2425
|
+
!__net_ipv6_doc3fff_range_%out_bool
|
|
2426
|
+
!__net_ipv6_doc3fff_%out_bool
|
|
2427
|
+
!__net_ipv6_doc1_%out_bool
|
|
2428
|
+
!__net_ipv6_doc0db8_%out_bool
|
|
2429
|
+
!__net_ipv6_doc2001_%out_bool
|
|
2430
|
+
!__net_ipv6_s1_%out_bool
|
|
2431
|
+
!__net_ipv6_s0_%out_bool
|
|
2432
|
+
[END_MACRO]
|
|
2433
|
+
|
|
2434
|
+
[MACRO] NET_IPV6_IS_BENCHMARKING %out_bool, %addr
|
|
2435
|
+
__net_ipv6_s0_%out_bool = load %addr+NetIpv6Addr_s0 as u16
|
|
2436
|
+
__net_ipv6_s1_%out_bool = load %addr+NetIpv6Addr_s1 as u16
|
|
2437
|
+
__net_ipv6_s2_%out_bool = load %addr+NetIpv6Addr_s2 as u16
|
|
2438
|
+
__net_ipv6_2001_%out_bool = eq __net_ipv6_s0_%out_bool, 8193
|
|
2439
|
+
__net_ipv6_0002_%out_bool = eq __net_ipv6_s1_%out_bool, 2
|
|
2440
|
+
__net_ipv6_0000_%out_bool = eq __net_ipv6_s2_%out_bool, 0
|
|
2441
|
+
__net_ipv6_left_%out_bool = and __net_ipv6_2001_%out_bool, __net_ipv6_0002_%out_bool
|
|
2442
|
+
%out_bool = and __net_ipv6_left_%out_bool, __net_ipv6_0000_%out_bool
|
|
2443
|
+
!__net_ipv6_left_%out_bool
|
|
2444
|
+
!__net_ipv6_0000_%out_bool
|
|
2445
|
+
!__net_ipv6_0002_%out_bool
|
|
2446
|
+
!__net_ipv6_2001_%out_bool
|
|
2447
|
+
!__net_ipv6_s2_%out_bool
|
|
2448
|
+
!__net_ipv6_s1_%out_bool
|
|
2449
|
+
!__net_ipv6_s0_%out_bool
|
|
2450
|
+
[END_MACRO]
|
|
2451
|
+
|
|
2452
|
+
[MACRO] NET_IPV6_IS_GLOBAL %out_bool, %addr
|
|
2453
|
+
__net_ipv6_global_s0_%out_bool = load %addr+NetIpv6Addr_s0 as u16
|
|
2454
|
+
__net_ipv6_global_s1_%out_bool = load %addr+NetIpv6Addr_s1 as u16
|
|
2455
|
+
__net_ipv6_global_s2_%out_bool = load %addr+NetIpv6Addr_s2 as u16
|
|
2456
|
+
__net_ipv6_global_s3_%out_bool = load %addr+NetIpv6Addr_s3 as u16
|
|
2457
|
+
__net_ipv6_global_s4_%out_bool = load %addr+NetIpv6Addr_s4 as u16
|
|
2458
|
+
__net_ipv6_global_s5_%out_bool = load %addr+NetIpv6Addr_s5 as u16
|
|
2459
|
+
__net_ipv6_global_s6_%out_bool = load %addr+NetIpv6Addr_s6 as u16
|
|
2460
|
+
__net_ipv6_global_s7_%out_bool = load %addr+NetIpv6Addr_s7 as u16
|
|
2461
|
+
EXPAND NET_IPV6_IS_UNSPECIFIED __net_ipv6_global_unspec_%out_bool, %addr
|
|
2462
|
+
EXPAND NET_IPV6_IS_LOOPBACK __net_ipv6_global_loop_%out_bool, %addr
|
|
2463
|
+
EXPAND NET_IPV6_IS_IPV4_MAPPED __net_ipv6_global_mapped_%out_bool, %addr
|
|
2464
|
+
EXPAND NET_IPV6_IS_DOCUMENTATION __net_ipv6_global_doc_%out_bool, %addr
|
|
2465
|
+
EXPAND NET_IPV6_IS_UNIQUE_LOCAL __net_ipv6_global_unique_%out_bool, %addr
|
|
2466
|
+
EXPAND NET_IPV6_IS_UNICAST_LINK_LOCAL __net_ipv6_global_link_%out_bool, %addr
|
|
2467
|
+
|
|
2468
|
+
__net_ipv6_global_trans_s0_%out_bool = eq __net_ipv6_global_s0_%out_bool, 100
|
|
2469
|
+
__net_ipv6_global_trans_s1_%out_bool = eq __net_ipv6_global_s1_%out_bool, 65435
|
|
2470
|
+
__net_ipv6_global_trans_s2_%out_bool = eq __net_ipv6_global_s2_%out_bool, 1
|
|
2471
|
+
__net_ipv6_global_trans_01_%out_bool = and __net_ipv6_global_trans_s0_%out_bool, __net_ipv6_global_trans_s1_%out_bool
|
|
2472
|
+
__net_ipv6_global_translate_%out_bool = and __net_ipv6_global_trans_01_%out_bool, __net_ipv6_global_trans_s2_%out_bool
|
|
2473
|
+
|
|
2474
|
+
__net_ipv6_global_discard_s0_%out_bool = eq __net_ipv6_global_s0_%out_bool, 256
|
|
2475
|
+
__net_ipv6_global_discard_s1_%out_bool = eq __net_ipv6_global_s1_%out_bool, 0
|
|
2476
|
+
__net_ipv6_global_discard_s2_%out_bool = eq __net_ipv6_global_s2_%out_bool, 0
|
|
2477
|
+
__net_ipv6_global_discard_s3_%out_bool = eq __net_ipv6_global_s3_%out_bool, 0
|
|
2478
|
+
__net_ipv6_global_discard_01_%out_bool = and __net_ipv6_global_discard_s0_%out_bool, __net_ipv6_global_discard_s1_%out_bool
|
|
2479
|
+
__net_ipv6_global_discard_23_%out_bool = and __net_ipv6_global_discard_s2_%out_bool, __net_ipv6_global_discard_s3_%out_bool
|
|
2480
|
+
__net_ipv6_global_discard_%out_bool = and __net_ipv6_global_discard_01_%out_bool, __net_ipv6_global_discard_23_%out_bool
|
|
2481
|
+
|
|
2482
|
+
__net_ipv6_global_2001_%out_bool = eq __net_ipv6_global_s0_%out_bool, 8193
|
|
2483
|
+
__net_ipv6_global_proto_s1_%out_bool = ult __net_ipv6_global_s1_%out_bool, 512
|
|
2484
|
+
__net_ipv6_global_proto_range_%out_bool = and __net_ipv6_global_2001_%out_bool, __net_ipv6_global_proto_s1_%out_bool
|
|
2485
|
+
__net_ipv6_global_s1_1_%out_bool = eq __net_ipv6_global_s1_%out_bool, 1
|
|
2486
|
+
__net_ipv6_global_s2_zero_%out_bool = eq __net_ipv6_global_s2_%out_bool, 0
|
|
2487
|
+
__net_ipv6_global_s3_zero_%out_bool = eq __net_ipv6_global_s3_%out_bool, 0
|
|
2488
|
+
__net_ipv6_global_s4_zero_%out_bool = eq __net_ipv6_global_s4_%out_bool, 0
|
|
2489
|
+
__net_ipv6_global_s5_zero_%out_bool = eq __net_ipv6_global_s5_%out_bool, 0
|
|
2490
|
+
__net_ipv6_global_s6_zero_%out_bool = eq __net_ipv6_global_s6_%out_bool, 0
|
|
2491
|
+
__net_ipv6_global_tail_23_%out_bool = and __net_ipv6_global_s2_zero_%out_bool, __net_ipv6_global_s3_zero_%out_bool
|
|
2492
|
+
__net_ipv6_global_tail_45_%out_bool = and __net_ipv6_global_s4_zero_%out_bool, __net_ipv6_global_s5_zero_%out_bool
|
|
2493
|
+
__net_ipv6_global_tail_26a_%out_bool = and __net_ipv6_global_tail_23_%out_bool, __net_ipv6_global_tail_45_%out_bool
|
|
2494
|
+
__net_ipv6_global_tail_26_%out_bool = and __net_ipv6_global_tail_26a_%out_bool, __net_ipv6_global_s6_zero_%out_bool
|
|
2495
|
+
__net_ipv6_global_s7_1_%out_bool = eq __net_ipv6_global_s7_%out_bool, 1
|
|
2496
|
+
__net_ipv6_global_s7_2_%out_bool = eq __net_ipv6_global_s7_%out_bool, 2
|
|
2497
|
+
__net_ipv6_global_anycast_tail_%out_bool = or __net_ipv6_global_s7_1_%out_bool, __net_ipv6_global_s7_2_%out_bool
|
|
2498
|
+
__net_ipv6_global_anycast_a_%out_bool = and __net_ipv6_global_2001_%out_bool, __net_ipv6_global_s1_1_%out_bool
|
|
2499
|
+
__net_ipv6_global_anycast_b_%out_bool = and __net_ipv6_global_anycast_a_%out_bool, __net_ipv6_global_tail_26_%out_bool
|
|
2500
|
+
__net_ipv6_global_anycast_%out_bool = and __net_ipv6_global_anycast_b_%out_bool, __net_ipv6_global_anycast_tail_%out_bool
|
|
2501
|
+
__net_ipv6_global_amt_%out_bool = eq __net_ipv6_global_s1_%out_bool, 3
|
|
2502
|
+
__net_ipv6_global_as112_s1_%out_bool = eq __net_ipv6_global_s1_%out_bool, 4
|
|
2503
|
+
__net_ipv6_global_as112_s2_%out_bool = eq __net_ipv6_global_s2_%out_bool, 274
|
|
2504
|
+
__net_ipv6_global_as112_%out_bool = and __net_ipv6_global_as112_s1_%out_bool, __net_ipv6_global_as112_s2_%out_bool
|
|
2505
|
+
__net_ipv6_global_orchid_lo_%out_bool = uge __net_ipv6_global_s1_%out_bool, 32
|
|
2506
|
+
__net_ipv6_global_orchid_hi_%out_bool = ule __net_ipv6_global_s1_%out_bool, 63
|
|
2507
|
+
__net_ipv6_global_orchid_%out_bool = and __net_ipv6_global_orchid_lo_%out_bool, __net_ipv6_global_orchid_hi_%out_bool
|
|
2508
|
+
__net_ipv6_global_proto_allow01_%out_bool = or __net_ipv6_global_anycast_%out_bool, __net_ipv6_global_amt_%out_bool
|
|
2509
|
+
__net_ipv6_global_proto_allow02_%out_bool = or __net_ipv6_global_proto_allow01_%out_bool, __net_ipv6_global_as112_%out_bool
|
|
2510
|
+
__net_ipv6_global_proto_allowed_%out_bool = or __net_ipv6_global_proto_allow02_%out_bool, __net_ipv6_global_orchid_%out_bool
|
|
2511
|
+
__net_ipv6_global_proto_block_%out_bool = eq __net_ipv6_global_proto_allowed_%out_bool, 0
|
|
2512
|
+
__net_ipv6_global_proto_%out_bool = and __net_ipv6_global_proto_range_%out_bool, __net_ipv6_global_proto_block_%out_bool
|
|
2513
|
+
|
|
2514
|
+
__net_ipv6_global_6to4_%out_bool = eq __net_ipv6_global_s0_%out_bool, 8194
|
|
2515
|
+
__net_ipv6_global_srv6_%out_bool = eq __net_ipv6_global_s0_%out_bool, 24320
|
|
2516
|
+
__net_ipv6_global_ex01_%out_bool = or __net_ipv6_global_unspec_%out_bool, __net_ipv6_global_loop_%out_bool
|
|
2517
|
+
__net_ipv6_global_ex02_%out_bool = or __net_ipv6_global_ex01_%out_bool, __net_ipv6_global_mapped_%out_bool
|
|
2518
|
+
__net_ipv6_global_ex03_%out_bool = or __net_ipv6_global_ex02_%out_bool, __net_ipv6_global_translate_%out_bool
|
|
2519
|
+
__net_ipv6_global_ex04_%out_bool = or __net_ipv6_global_ex03_%out_bool, __net_ipv6_global_discard_%out_bool
|
|
2520
|
+
__net_ipv6_global_ex05_%out_bool = or __net_ipv6_global_ex04_%out_bool, __net_ipv6_global_proto_%out_bool
|
|
2521
|
+
__net_ipv6_global_ex06_%out_bool = or __net_ipv6_global_ex05_%out_bool, __net_ipv6_global_6to4_%out_bool
|
|
2522
|
+
__net_ipv6_global_ex07_%out_bool = or __net_ipv6_global_ex06_%out_bool, __net_ipv6_global_doc_%out_bool
|
|
2523
|
+
__net_ipv6_global_ex08_%out_bool = or __net_ipv6_global_ex07_%out_bool, __net_ipv6_global_srv6_%out_bool
|
|
2524
|
+
__net_ipv6_global_ex09_%out_bool = or __net_ipv6_global_ex08_%out_bool, __net_ipv6_global_unique_%out_bool
|
|
2525
|
+
__net_ipv6_global_excluded_%out_bool = or __net_ipv6_global_ex09_%out_bool, __net_ipv6_global_link_%out_bool
|
|
2526
|
+
%out_bool = eq __net_ipv6_global_excluded_%out_bool, 0
|
|
2527
|
+
!__net_ipv6_global_excluded_%out_bool
|
|
2528
|
+
!__net_ipv6_global_ex09_%out_bool
|
|
2529
|
+
!__net_ipv6_global_ex08_%out_bool
|
|
2530
|
+
!__net_ipv6_global_ex07_%out_bool
|
|
2531
|
+
!__net_ipv6_global_ex06_%out_bool
|
|
2532
|
+
!__net_ipv6_global_ex05_%out_bool
|
|
2533
|
+
!__net_ipv6_global_ex04_%out_bool
|
|
2534
|
+
!__net_ipv6_global_ex03_%out_bool
|
|
2535
|
+
!__net_ipv6_global_ex02_%out_bool
|
|
2536
|
+
!__net_ipv6_global_ex01_%out_bool
|
|
2537
|
+
!__net_ipv6_global_srv6_%out_bool
|
|
2538
|
+
!__net_ipv6_global_6to4_%out_bool
|
|
2539
|
+
!__net_ipv6_global_proto_%out_bool
|
|
2540
|
+
!__net_ipv6_global_proto_block_%out_bool
|
|
2541
|
+
!__net_ipv6_global_proto_allowed_%out_bool
|
|
2542
|
+
!__net_ipv6_global_proto_allow02_%out_bool
|
|
2543
|
+
!__net_ipv6_global_proto_allow01_%out_bool
|
|
2544
|
+
!__net_ipv6_global_orchid_%out_bool
|
|
2545
|
+
!__net_ipv6_global_orchid_hi_%out_bool
|
|
2546
|
+
!__net_ipv6_global_orchid_lo_%out_bool
|
|
2547
|
+
!__net_ipv6_global_as112_%out_bool
|
|
2548
|
+
!__net_ipv6_global_as112_s2_%out_bool
|
|
2549
|
+
!__net_ipv6_global_as112_s1_%out_bool
|
|
2550
|
+
!__net_ipv6_global_amt_%out_bool
|
|
2551
|
+
!__net_ipv6_global_anycast_%out_bool
|
|
2552
|
+
!__net_ipv6_global_anycast_b_%out_bool
|
|
2553
|
+
!__net_ipv6_global_anycast_a_%out_bool
|
|
2554
|
+
!__net_ipv6_global_anycast_tail_%out_bool
|
|
2555
|
+
!__net_ipv6_global_s7_2_%out_bool
|
|
2556
|
+
!__net_ipv6_global_s7_1_%out_bool
|
|
2557
|
+
!__net_ipv6_global_tail_26_%out_bool
|
|
2558
|
+
!__net_ipv6_global_tail_26a_%out_bool
|
|
2559
|
+
!__net_ipv6_global_tail_45_%out_bool
|
|
2560
|
+
!__net_ipv6_global_tail_23_%out_bool
|
|
2561
|
+
!__net_ipv6_global_s6_zero_%out_bool
|
|
2562
|
+
!__net_ipv6_global_s5_zero_%out_bool
|
|
2563
|
+
!__net_ipv6_global_s4_zero_%out_bool
|
|
2564
|
+
!__net_ipv6_global_s3_zero_%out_bool
|
|
2565
|
+
!__net_ipv6_global_s2_zero_%out_bool
|
|
2566
|
+
!__net_ipv6_global_s1_1_%out_bool
|
|
2567
|
+
!__net_ipv6_global_proto_range_%out_bool
|
|
2568
|
+
!__net_ipv6_global_proto_s1_%out_bool
|
|
2569
|
+
!__net_ipv6_global_2001_%out_bool
|
|
2570
|
+
!__net_ipv6_global_discard_%out_bool
|
|
2571
|
+
!__net_ipv6_global_discard_23_%out_bool
|
|
2572
|
+
!__net_ipv6_global_discard_01_%out_bool
|
|
2573
|
+
!__net_ipv6_global_discard_s3_%out_bool
|
|
2574
|
+
!__net_ipv6_global_discard_s2_%out_bool
|
|
2575
|
+
!__net_ipv6_global_discard_s1_%out_bool
|
|
2576
|
+
!__net_ipv6_global_discard_s0_%out_bool
|
|
2577
|
+
!__net_ipv6_global_translate_%out_bool
|
|
2578
|
+
!__net_ipv6_global_trans_01_%out_bool
|
|
2579
|
+
!__net_ipv6_global_trans_s2_%out_bool
|
|
2580
|
+
!__net_ipv6_global_trans_s1_%out_bool
|
|
2581
|
+
!__net_ipv6_global_trans_s0_%out_bool
|
|
2582
|
+
!__net_ipv6_global_link_%out_bool
|
|
2583
|
+
!__net_ipv6_global_unique_%out_bool
|
|
2584
|
+
!__net_ipv6_global_doc_%out_bool
|
|
2585
|
+
!__net_ipv6_global_mapped_%out_bool
|
|
2586
|
+
!__net_ipv6_global_loop_%out_bool
|
|
2587
|
+
!__net_ipv6_global_unspec_%out_bool
|
|
2588
|
+
!__net_ipv6_global_s7_%out_bool
|
|
2589
|
+
!__net_ipv6_global_s6_%out_bool
|
|
2590
|
+
!__net_ipv6_global_s5_%out_bool
|
|
2591
|
+
!__net_ipv6_global_s4_%out_bool
|
|
2592
|
+
!__net_ipv6_global_s3_%out_bool
|
|
2593
|
+
!__net_ipv6_global_s2_%out_bool
|
|
2594
|
+
!__net_ipv6_global_s1_%out_bool
|
|
2595
|
+
!__net_ipv6_global_s0_%out_bool
|
|
2596
|
+
[END_MACRO]
|
|
2597
|
+
|
|
2598
|
+
[MACRO] NET_IPV6_IS_IPV4_MAPPED %out_bool, %addr
|
|
2599
|
+
__net_ipv6_s0_%out_bool = load %addr+NetIpv6Addr_s0 as u16
|
|
2600
|
+
__net_ipv6_s1_%out_bool = load %addr+NetIpv6Addr_s1 as u16
|
|
2601
|
+
__net_ipv6_s2_%out_bool = load %addr+NetIpv6Addr_s2 as u16
|
|
2602
|
+
__net_ipv6_s3_%out_bool = load %addr+NetIpv6Addr_s3 as u16
|
|
2603
|
+
__net_ipv6_s4_%out_bool = load %addr+NetIpv6Addr_s4 as u16
|
|
2604
|
+
__net_ipv6_s5_%out_bool = load %addr+NetIpv6Addr_s5 as u16
|
|
2605
|
+
__net_ipv6_e0_%out_bool = eq __net_ipv6_s0_%out_bool, 0
|
|
2606
|
+
__net_ipv6_e1_%out_bool = eq __net_ipv6_s1_%out_bool, 0
|
|
2607
|
+
__net_ipv6_e2_%out_bool = eq __net_ipv6_s2_%out_bool, 0
|
|
2608
|
+
__net_ipv6_e3_%out_bool = eq __net_ipv6_s3_%out_bool, 0
|
|
2609
|
+
__net_ipv6_e4_%out_bool = eq __net_ipv6_s4_%out_bool, 0
|
|
2610
|
+
__net_ipv6_e5_%out_bool = eq __net_ipv6_s5_%out_bool, 65535
|
|
2611
|
+
__net_ipv6_e01_%out_bool = and __net_ipv6_e0_%out_bool, __net_ipv6_e1_%out_bool
|
|
2612
|
+
__net_ipv6_e23_%out_bool = and __net_ipv6_e2_%out_bool, __net_ipv6_e3_%out_bool
|
|
2613
|
+
__net_ipv6_e45_%out_bool = and __net_ipv6_e4_%out_bool, __net_ipv6_e5_%out_bool
|
|
2614
|
+
__net_ipv6_e03_%out_bool = and __net_ipv6_e01_%out_bool, __net_ipv6_e23_%out_bool
|
|
2615
|
+
%out_bool = and __net_ipv6_e03_%out_bool, __net_ipv6_e45_%out_bool
|
|
2616
|
+
!__net_ipv6_e03_%out_bool
|
|
2617
|
+
!__net_ipv6_e45_%out_bool
|
|
2618
|
+
!__net_ipv6_e23_%out_bool
|
|
2619
|
+
!__net_ipv6_e01_%out_bool
|
|
2620
|
+
!__net_ipv6_e5_%out_bool
|
|
2621
|
+
!__net_ipv6_e4_%out_bool
|
|
2622
|
+
!__net_ipv6_e3_%out_bool
|
|
2623
|
+
!__net_ipv6_e2_%out_bool
|
|
2624
|
+
!__net_ipv6_e1_%out_bool
|
|
2625
|
+
!__net_ipv6_e0_%out_bool
|
|
2626
|
+
!__net_ipv6_s5_%out_bool
|
|
2627
|
+
!__net_ipv6_s4_%out_bool
|
|
2628
|
+
!__net_ipv6_s3_%out_bool
|
|
2629
|
+
!__net_ipv6_s2_%out_bool
|
|
2630
|
+
!__net_ipv6_s1_%out_bool
|
|
2631
|
+
!__net_ipv6_s0_%out_bool
|
|
2632
|
+
[END_MACRO]
|
|
2633
|
+
|
|
2634
|
+
[MACRO] NET_IPV6_MULTICAST_SCOPE %out_ok, %out_scope, %addr
|
|
2635
|
+
EXPAND NET_IPV6_IS_MULTICAST %out_ok, %addr
|
|
2636
|
+
__net_ipv6_scope_s0_%out_scope = load %addr+NetIpv6Addr_s0 as u16
|
|
2637
|
+
%out_scope = and __net_ipv6_scope_s0_%out_scope, 15
|
|
2638
|
+
!__net_ipv6_scope_s0_%out_scope
|
|
2639
|
+
[END_MACRO]
|
|
2640
|
+
|
|
2641
|
+
[MACRO] NET_IPV6_MULTICAST_SCOPE_IS %out_bool, %scope, %expected_scope
|
|
2642
|
+
%out_bool = eq %scope, %expected_scope
|
|
2643
|
+
[END_MACRO]
|
|
2644
|
+
|
|
2645
|
+
[MACRO] NET_IPV6_MULTICAST_SCOPE_IS_INTERFACE_LOCAL %out_bool, %scope
|
|
2646
|
+
EXPAND NET_IPV6_MULTICAST_SCOPE_IS %out_bool, %scope, NET_IPV6_MULTICAST_SCOPE_INTERFACE_LOCAL
|
|
2647
|
+
[END_MACRO]
|
|
2648
|
+
|
|
2649
|
+
[MACRO] NET_IPV6_MULTICAST_SCOPE_IS_LINK_LOCAL %out_bool, %scope
|
|
2650
|
+
EXPAND NET_IPV6_MULTICAST_SCOPE_IS %out_bool, %scope, NET_IPV6_MULTICAST_SCOPE_LINK_LOCAL
|
|
2651
|
+
[END_MACRO]
|
|
2652
|
+
|
|
2653
|
+
[MACRO] NET_IPV6_MULTICAST_SCOPE_IS_REALM_LOCAL %out_bool, %scope
|
|
2654
|
+
EXPAND NET_IPV6_MULTICAST_SCOPE_IS %out_bool, %scope, NET_IPV6_MULTICAST_SCOPE_REALM_LOCAL
|
|
2655
|
+
[END_MACRO]
|
|
2656
|
+
|
|
2657
|
+
[MACRO] NET_IPV6_MULTICAST_SCOPE_IS_RESERVED %out_bool, %scope
|
|
2658
|
+
__net_ipv6_scope_reserved_zero_%out_bool = eq %scope, NET_IPV6_MULTICAST_SCOPE_RESERVED_ZERO
|
|
2659
|
+
__net_ipv6_scope_reserved_f_%out_bool = eq %scope, NET_IPV6_MULTICAST_SCOPE_RESERVED_F
|
|
2660
|
+
%out_bool = or __net_ipv6_scope_reserved_zero_%out_bool, __net_ipv6_scope_reserved_f_%out_bool
|
|
2661
|
+
!__net_ipv6_scope_reserved_f_%out_bool
|
|
2662
|
+
!__net_ipv6_scope_reserved_zero_%out_bool
|
|
2663
|
+
[END_MACRO]
|
|
2664
|
+
|
|
2665
|
+
[MACRO] NET_IPV6_MULTICAST_SCOPE_IS_UNASSIGNED %out_bool, %scope
|
|
2666
|
+
__net_ipv6_scope_unassigned6_%out_bool = eq %scope, NET_IPV6_MULTICAST_SCOPE_UNASSIGNED6
|
|
2667
|
+
__net_ipv6_scope_unassigned7_%out_bool = eq %scope, NET_IPV6_MULTICAST_SCOPE_UNASSIGNED7
|
|
2668
|
+
__net_ipv6_scope_unassigned9_%out_bool = uge %scope, NET_IPV6_MULTICAST_SCOPE_UNASSIGNED9
|
|
2669
|
+
__net_ipv6_scope_unassignedd_%out_bool = ule %scope, NET_IPV6_MULTICAST_SCOPE_UNASSIGNED_D
|
|
2670
|
+
__net_ipv6_scope_unassigned9d_%out_bool = and __net_ipv6_scope_unassigned9_%out_bool, __net_ipv6_scope_unassignedd_%out_bool
|
|
2671
|
+
%out_bool = or __net_ipv6_scope_unassigned6_%out_bool, __net_ipv6_scope_unassigned7_%out_bool
|
|
2672
|
+
%out_bool = or %out_bool, __net_ipv6_scope_unassigned9d_%out_bool
|
|
2673
|
+
!__net_ipv6_scope_unassigned9d_%out_bool
|
|
2674
|
+
!__net_ipv6_scope_unassignedd_%out_bool
|
|
2675
|
+
!__net_ipv6_scope_unassigned9_%out_bool
|
|
2676
|
+
!__net_ipv6_scope_unassigned7_%out_bool
|
|
2677
|
+
!__net_ipv6_scope_unassigned6_%out_bool
|
|
2678
|
+
[END_MACRO]
|
|
2679
|
+
|
|
2680
|
+
[MACRO] NET_IPV6_MULTICAST_SCOPE_IS_ADMIN_LOCAL %out_bool, %scope
|
|
2681
|
+
EXPAND NET_IPV6_MULTICAST_SCOPE_IS %out_bool, %scope, NET_IPV6_MULTICAST_SCOPE_ADMIN_LOCAL
|
|
2682
|
+
[END_MACRO]
|
|
2683
|
+
|
|
2684
|
+
[MACRO] NET_IPV6_MULTICAST_SCOPE_IS_SITE_LOCAL %out_bool, %scope
|
|
2685
|
+
EXPAND NET_IPV6_MULTICAST_SCOPE_IS %out_bool, %scope, NET_IPV6_MULTICAST_SCOPE_SITE_LOCAL
|
|
2686
|
+
[END_MACRO]
|
|
2687
|
+
|
|
2688
|
+
[MACRO] NET_IPV6_MULTICAST_SCOPE_IS_ORGANIZATION_LOCAL %out_bool, %scope
|
|
2689
|
+
EXPAND NET_IPV6_MULTICAST_SCOPE_IS %out_bool, %scope, NET_IPV6_MULTICAST_SCOPE_ORGANIZATION_LOCAL
|
|
2690
|
+
[END_MACRO]
|
|
2691
|
+
|
|
2692
|
+
[MACRO] NET_IPV6_MULTICAST_SCOPE_IS_GLOBAL %out_bool, %scope
|
|
2693
|
+
EXPAND NET_IPV6_MULTICAST_SCOPE_IS %out_bool, %scope, NET_IPV6_MULTICAST_SCOPE_GLOBAL
|
|
2694
|
+
[END_MACRO]
|
|
2695
|
+
|
|
2696
|
+
[MACRO] NET_IPV6_TO_IPV4_MAPPED %out_ok, %ipv4, %addr
|
|
2697
|
+
EXPAND NET_IPV6_IS_IPV4_MAPPED %out_ok, %addr
|
|
2698
|
+
__net_ipv6_map_s6_%ipv4 = load %addr+NetIpv6Addr_s6 as u16
|
|
2699
|
+
__net_ipv6_map_s7_%ipv4 = load %addr+NetIpv6Addr_s7 as u16
|
|
2700
|
+
__net_ipv6_map_a_%ipv4 = lshr __net_ipv6_map_s6_%ipv4, 8
|
|
2701
|
+
__net_ipv6_map_b_%ipv4 = and __net_ipv6_map_s6_%ipv4, 255
|
|
2702
|
+
__net_ipv6_map_c_%ipv4 = lshr __net_ipv6_map_s7_%ipv4, 8
|
|
2703
|
+
__net_ipv6_map_d_%ipv4 = and __net_ipv6_map_s7_%ipv4, 255
|
|
2704
|
+
EXPAND NET_IPV4_NEW %ipv4, __net_ipv6_map_a_%ipv4, __net_ipv6_map_b_%ipv4, __net_ipv6_map_c_%ipv4, __net_ipv6_map_d_%ipv4
|
|
2705
|
+
!__net_ipv6_map_d_%ipv4
|
|
2706
|
+
!__net_ipv6_map_c_%ipv4
|
|
2707
|
+
!__net_ipv6_map_b_%ipv4
|
|
2708
|
+
!__net_ipv6_map_a_%ipv4
|
|
2709
|
+
!__net_ipv6_map_s7_%ipv4
|
|
2710
|
+
!__net_ipv6_map_s6_%ipv4
|
|
2711
|
+
[END_MACRO]
|
|
2712
|
+
|
|
2713
|
+
[MACRO] NET_IPV6_TO_IPV4 %out_ok, %ipv4, %addr
|
|
2714
|
+
__net_ipv6_to4_s0_%ipv4 = load %addr+NetIpv6Addr_s0 as u16
|
|
2715
|
+
__net_ipv6_to4_s1_%ipv4 = load %addr+NetIpv6Addr_s1 as u16
|
|
2716
|
+
__net_ipv6_to4_s2_%ipv4 = load %addr+NetIpv6Addr_s2 as u16
|
|
2717
|
+
__net_ipv6_to4_s3_%ipv4 = load %addr+NetIpv6Addr_s3 as u16
|
|
2718
|
+
__net_ipv6_to4_s4_%ipv4 = load %addr+NetIpv6Addr_s4 as u16
|
|
2719
|
+
__net_ipv6_to4_s5_%ipv4 = load %addr+NetIpv6Addr_s5 as u16
|
|
2720
|
+
__net_ipv6_to4_s6_%ipv4 = load %addr+NetIpv6Addr_s6 as u16
|
|
2721
|
+
__net_ipv6_to4_s7_%ipv4 = load %addr+NetIpv6Addr_s7 as u16
|
|
2722
|
+
__net_ipv6_to4_e0_%ipv4 = eq __net_ipv6_to4_s0_%ipv4, 0
|
|
2723
|
+
__net_ipv6_to4_e1_%ipv4 = eq __net_ipv6_to4_s1_%ipv4, 0
|
|
2724
|
+
__net_ipv6_to4_e2_%ipv4 = eq __net_ipv6_to4_s2_%ipv4, 0
|
|
2725
|
+
__net_ipv6_to4_e3_%ipv4 = eq __net_ipv6_to4_s3_%ipv4, 0
|
|
2726
|
+
__net_ipv6_to4_e4_%ipv4 = eq __net_ipv6_to4_s4_%ipv4, 0
|
|
2727
|
+
__net_ipv6_to4_s5_zero_%ipv4 = eq __net_ipv6_to4_s5_%ipv4, 0
|
|
2728
|
+
__net_ipv6_to4_s5_ffff_%ipv4 = eq __net_ipv6_to4_s5_%ipv4, 65535
|
|
2729
|
+
__net_ipv6_to4_s5_ok_%ipv4 = or __net_ipv6_to4_s5_zero_%ipv4, __net_ipv6_to4_s5_ffff_%ipv4
|
|
2730
|
+
__net_ipv6_to4_e01_%ipv4 = and __net_ipv6_to4_e0_%ipv4, __net_ipv6_to4_e1_%ipv4
|
|
2731
|
+
__net_ipv6_to4_e23_%ipv4 = and __net_ipv6_to4_e2_%ipv4, __net_ipv6_to4_e3_%ipv4
|
|
2732
|
+
__net_ipv6_to4_e04_%ipv4 = and __net_ipv6_to4_e01_%ipv4, __net_ipv6_to4_e23_%ipv4
|
|
2733
|
+
__net_ipv6_to4_e05_%ipv4 = and __net_ipv6_to4_e04_%ipv4, __net_ipv6_to4_e4_%ipv4
|
|
2734
|
+
%out_ok = and __net_ipv6_to4_e05_%ipv4, __net_ipv6_to4_s5_ok_%ipv4
|
|
2735
|
+
__net_ipv6_to4_a_%ipv4 = lshr __net_ipv6_to4_s6_%ipv4, 8
|
|
2736
|
+
__net_ipv6_to4_b_%ipv4 = and __net_ipv6_to4_s6_%ipv4, 255
|
|
2737
|
+
__net_ipv6_to4_c_%ipv4 = lshr __net_ipv6_to4_s7_%ipv4, 8
|
|
2738
|
+
__net_ipv6_to4_d_%ipv4 = and __net_ipv6_to4_s7_%ipv4, 255
|
|
2739
|
+
EXPAND NET_IPV4_NEW %ipv4, __net_ipv6_to4_a_%ipv4, __net_ipv6_to4_b_%ipv4, __net_ipv6_to4_c_%ipv4, __net_ipv6_to4_d_%ipv4
|
|
2740
|
+
!__net_ipv6_to4_d_%ipv4
|
|
2741
|
+
!__net_ipv6_to4_c_%ipv4
|
|
2742
|
+
!__net_ipv6_to4_b_%ipv4
|
|
2743
|
+
!__net_ipv6_to4_a_%ipv4
|
|
2744
|
+
!__net_ipv6_to4_e05_%ipv4
|
|
2745
|
+
!__net_ipv6_to4_e04_%ipv4
|
|
2746
|
+
!__net_ipv6_to4_e23_%ipv4
|
|
2747
|
+
!__net_ipv6_to4_e01_%ipv4
|
|
2748
|
+
!__net_ipv6_to4_s5_ok_%ipv4
|
|
2749
|
+
!__net_ipv6_to4_s5_ffff_%ipv4
|
|
2750
|
+
!__net_ipv6_to4_s5_zero_%ipv4
|
|
2751
|
+
!__net_ipv6_to4_e4_%ipv4
|
|
2752
|
+
!__net_ipv6_to4_e3_%ipv4
|
|
2753
|
+
!__net_ipv6_to4_e2_%ipv4
|
|
2754
|
+
!__net_ipv6_to4_e1_%ipv4
|
|
2755
|
+
!__net_ipv6_to4_e0_%ipv4
|
|
2756
|
+
!__net_ipv6_to4_s7_%ipv4
|
|
2757
|
+
!__net_ipv6_to4_s6_%ipv4
|
|
2758
|
+
!__net_ipv6_to4_s5_%ipv4
|
|
2759
|
+
!__net_ipv6_to4_s4_%ipv4
|
|
2760
|
+
!__net_ipv6_to4_s3_%ipv4
|
|
2761
|
+
!__net_ipv6_to4_s2_%ipv4
|
|
2762
|
+
!__net_ipv6_to4_s1_%ipv4
|
|
2763
|
+
!__net_ipv6_to4_s0_%ipv4
|
|
2764
|
+
[END_MACRO]
|
|
2765
|
+
|
|
2766
|
+
[MACRO] NET_IPV6_IS_UNICAST_GLOBAL %out_bool, %addr
|
|
2767
|
+
EXPAND NET_IPV6_IS_UNICAST __net_ipv6_unicast_%out_bool, %addr
|
|
2768
|
+
EXPAND NET_IPV6_IS_LOOPBACK __net_ipv6_loopback_%out_bool, %addr
|
|
2769
|
+
EXPAND NET_IPV6_IS_UNICAST_LINK_LOCAL __net_ipv6_link_%out_bool, %addr
|
|
2770
|
+
EXPAND NET_IPV6_IS_UNIQUE_LOCAL __net_ipv6_unique_%out_bool, %addr
|
|
2771
|
+
EXPAND NET_IPV6_IS_UNSPECIFIED __net_ipv6_unspec_%out_bool, %addr
|
|
2772
|
+
EXPAND NET_IPV6_IS_DOCUMENTATION __net_ipv6_doc_%out_bool, %addr
|
|
2773
|
+
EXPAND NET_IPV6_IS_BENCHMARKING __net_ipv6_bench_%out_bool, %addr
|
|
2774
|
+
__net_ipv6_ng01_%out_bool = or __net_ipv6_loopback_%out_bool, __net_ipv6_link_%out_bool
|
|
2775
|
+
__net_ipv6_ng02_%out_bool = or __net_ipv6_ng01_%out_bool, __net_ipv6_unique_%out_bool
|
|
2776
|
+
__net_ipv6_ng03_%out_bool = or __net_ipv6_ng02_%out_bool, __net_ipv6_unspec_%out_bool
|
|
2777
|
+
__net_ipv6_ng04_%out_bool = or __net_ipv6_ng03_%out_bool, __net_ipv6_doc_%out_bool
|
|
2778
|
+
__net_ipv6_not_global_%out_bool = or __net_ipv6_ng04_%out_bool, __net_ipv6_bench_%out_bool
|
|
2779
|
+
__net_ipv6_no_exclusion_%out_bool = eq __net_ipv6_not_global_%out_bool, 0
|
|
2780
|
+
%out_bool = and __net_ipv6_unicast_%out_bool, __net_ipv6_no_exclusion_%out_bool
|
|
2781
|
+
!__net_ipv6_no_exclusion_%out_bool
|
|
2782
|
+
!__net_ipv6_not_global_%out_bool
|
|
2783
|
+
!__net_ipv6_ng04_%out_bool
|
|
2784
|
+
!__net_ipv6_ng03_%out_bool
|
|
2785
|
+
!__net_ipv6_ng02_%out_bool
|
|
2786
|
+
!__net_ipv6_ng01_%out_bool
|
|
2787
|
+
!__net_ipv6_bench_%out_bool
|
|
2788
|
+
!__net_ipv6_doc_%out_bool
|
|
2789
|
+
!__net_ipv6_unspec_%out_bool
|
|
2790
|
+
!__net_ipv6_unique_%out_bool
|
|
2791
|
+
!__net_ipv6_link_%out_bool
|
|
2792
|
+
!__net_ipv6_loopback_%out_bool
|
|
2793
|
+
!__net_ipv6_unicast_%out_bool
|
|
2794
|
+
[END_MACRO]
|
|
2795
|
+
|
|
2796
|
+
[MACRO] NET_IPV6_TO_CANONICAL %out_ipaddr, %addr
|
|
2797
|
+
__net_ipv6_canon_v4_%out_ipaddr = stack_alloc NetIpv4Addr_SIZE
|
|
2798
|
+
EXPAND NET_IPV6_TO_IPV4_MAPPED __net_ipv6_canon_mapped_%out_ipaddr, __net_ipv6_canon_v4_%out_ipaddr, %addr
|
|
2799
|
+
br __net_ipv6_canon_mapped_%out_ipaddr -> L_NET_IPV6_CANON_V4_%out_ipaddr, L_NET_IPV6_CANON_V6_%out_ipaddr
|
|
2800
|
+
|
|
2801
|
+
L_NET_IPV6_CANON_V4_%out_ipaddr:
|
|
2802
|
+
EXPAND NET_IP_ADDR_V4_NEW %out_ipaddr, __net_ipv6_canon_v4_%out_ipaddr
|
|
2803
|
+
!__net_ipv6_canon_mapped_%out_ipaddr
|
|
2804
|
+
jmp L_NET_IPV6_CANON_DONE_%out_ipaddr
|
|
2805
|
+
|
|
2806
|
+
L_NET_IPV6_CANON_V6_%out_ipaddr:
|
|
2807
|
+
EXPAND NET_IP_ADDR_V6_NEW %out_ipaddr, %addr
|
|
2808
|
+
!__net_ipv6_canon_mapped_%out_ipaddr
|
|
2809
|
+
|
|
2810
|
+
L_NET_IPV6_CANON_DONE_%out_ipaddr:
|
|
2811
|
+
[END_MACRO]
|
|
2812
|
+
|
|
2813
|
+
[MACRO] NET_IP_ADDR_V4_NEW %ipaddr, %ipv4
|
|
2814
|
+
store %ipaddr+NetIpAddr_tag, NET_IP_ADDR_V4 as u64
|
|
2815
|
+
__net_ip_v4_payload_%ipaddr = ptr_add %ipaddr, 8
|
|
2816
|
+
__net_ip_v4_a_%ipaddr = load %ipv4+NetIpv4Addr_a as u8
|
|
2817
|
+
__net_ip_v4_b_%ipaddr = load %ipv4+NetIpv4Addr_b as u8
|
|
2818
|
+
__net_ip_v4_c_%ipaddr = load %ipv4+NetIpv4Addr_c as u8
|
|
2819
|
+
__net_ip_v4_d_%ipaddr = load %ipv4+NetIpv4Addr_d as u8
|
|
2820
|
+
store __net_ip_v4_payload_%ipaddr+NetIpv4Addr_a, __net_ip_v4_a_%ipaddr as u8
|
|
2821
|
+
store __net_ip_v4_payload_%ipaddr+NetIpv4Addr_b, __net_ip_v4_b_%ipaddr as u8
|
|
2822
|
+
store __net_ip_v4_payload_%ipaddr+NetIpv4Addr_c, __net_ip_v4_c_%ipaddr as u8
|
|
2823
|
+
store __net_ip_v4_payload_%ipaddr+NetIpv4Addr_d, __net_ip_v4_d_%ipaddr as u8
|
|
2824
|
+
!__net_ip_v4_d_%ipaddr
|
|
2825
|
+
!__net_ip_v4_c_%ipaddr
|
|
2826
|
+
!__net_ip_v4_b_%ipaddr
|
|
2827
|
+
!__net_ip_v4_a_%ipaddr
|
|
2828
|
+
!__net_ip_v4_payload_%ipaddr
|
|
2829
|
+
[END_MACRO]
|
|
2830
|
+
|
|
2831
|
+
[MACRO] NET_IP_ADDR_V6_NEW %ipaddr, %ipv6
|
|
2832
|
+
store %ipaddr+NetIpAddr_tag, NET_IP_ADDR_V6 as u64
|
|
2833
|
+
__net_ip_v6_payload_%ipaddr = ptr_add %ipaddr, 8
|
|
2834
|
+
__net_ip_v6_s0_%ipaddr = load %ipv6+NetIpv6Addr_s0 as u16
|
|
2835
|
+
__net_ip_v6_s1_%ipaddr = load %ipv6+NetIpv6Addr_s1 as u16
|
|
2836
|
+
__net_ip_v6_s2_%ipaddr = load %ipv6+NetIpv6Addr_s2 as u16
|
|
2837
|
+
__net_ip_v6_s3_%ipaddr = load %ipv6+NetIpv6Addr_s3 as u16
|
|
2838
|
+
__net_ip_v6_s4_%ipaddr = load %ipv6+NetIpv6Addr_s4 as u16
|
|
2839
|
+
__net_ip_v6_s5_%ipaddr = load %ipv6+NetIpv6Addr_s5 as u16
|
|
2840
|
+
__net_ip_v6_s6_%ipaddr = load %ipv6+NetIpv6Addr_s6 as u16
|
|
2841
|
+
__net_ip_v6_s7_%ipaddr = load %ipv6+NetIpv6Addr_s7 as u16
|
|
2842
|
+
store __net_ip_v6_payload_%ipaddr+NetIpv6Addr_s0, __net_ip_v6_s0_%ipaddr as u16
|
|
2843
|
+
store __net_ip_v6_payload_%ipaddr+NetIpv6Addr_s1, __net_ip_v6_s1_%ipaddr as u16
|
|
2844
|
+
store __net_ip_v6_payload_%ipaddr+NetIpv6Addr_s2, __net_ip_v6_s2_%ipaddr as u16
|
|
2845
|
+
store __net_ip_v6_payload_%ipaddr+NetIpv6Addr_s3, __net_ip_v6_s3_%ipaddr as u16
|
|
2846
|
+
store __net_ip_v6_payload_%ipaddr+NetIpv6Addr_s4, __net_ip_v6_s4_%ipaddr as u16
|
|
2847
|
+
store __net_ip_v6_payload_%ipaddr+NetIpv6Addr_s5, __net_ip_v6_s5_%ipaddr as u16
|
|
2848
|
+
store __net_ip_v6_payload_%ipaddr+NetIpv6Addr_s6, __net_ip_v6_s6_%ipaddr as u16
|
|
2849
|
+
store __net_ip_v6_payload_%ipaddr+NetIpv6Addr_s7, __net_ip_v6_s7_%ipaddr as u16
|
|
2850
|
+
!__net_ip_v6_s7_%ipaddr
|
|
2851
|
+
!__net_ip_v6_s6_%ipaddr
|
|
2852
|
+
!__net_ip_v6_s5_%ipaddr
|
|
2853
|
+
!__net_ip_v6_s4_%ipaddr
|
|
2854
|
+
!__net_ip_v6_s3_%ipaddr
|
|
2855
|
+
!__net_ip_v6_s2_%ipaddr
|
|
2856
|
+
!__net_ip_v6_s1_%ipaddr
|
|
2857
|
+
!__net_ip_v6_s0_%ipaddr
|
|
2858
|
+
!__net_ip_v6_payload_%ipaddr
|
|
2859
|
+
[END_MACRO]
|
|
2860
|
+
|
|
2861
|
+
[MACRO] NET_IP_ADDR_V4_UNSPECIFIED %ipaddr
|
|
2862
|
+
__net_ip_v4_unspec_%ipaddr = stack_alloc NetIpv4Addr_SIZE
|
|
2863
|
+
EXPAND NET_IPV4_UNSPECIFIED __net_ip_v4_unspec_%ipaddr
|
|
2864
|
+
EXPAND NET_IP_ADDR_V4_NEW %ipaddr, __net_ip_v4_unspec_%ipaddr
|
|
2865
|
+
[END_MACRO]
|
|
2866
|
+
|
|
2867
|
+
// Rust-style Default for IpAddr: Ipv4Addr::UNSPECIFIED.
|
|
2868
|
+
[MACRO] NET_IP_ADDR_DEFAULT %ipaddr
|
|
2869
|
+
EXPAND NET_IP_ADDR_V4_UNSPECIFIED %ipaddr
|
|
2870
|
+
[END_MACRO]
|
|
2871
|
+
|
|
2872
|
+
[MACRO] NET_IP_ADDR_V4_LOCALHOST %ipaddr
|
|
2873
|
+
__net_ip_v4_local_%ipaddr = stack_alloc NetIpv4Addr_SIZE
|
|
2874
|
+
EXPAND NET_IPV4_LOCALHOST __net_ip_v4_local_%ipaddr
|
|
2875
|
+
EXPAND NET_IP_ADDR_V4_NEW %ipaddr, __net_ip_v4_local_%ipaddr
|
|
2876
|
+
[END_MACRO]
|
|
2877
|
+
|
|
2878
|
+
[MACRO] NET_IP_ADDR_V4_BROADCAST %ipaddr
|
|
2879
|
+
__net_ip_v4_bcast_%ipaddr = stack_alloc NetIpv4Addr_SIZE
|
|
2880
|
+
EXPAND NET_IPV4_BROADCAST __net_ip_v4_bcast_%ipaddr
|
|
2881
|
+
EXPAND NET_IP_ADDR_V4_NEW %ipaddr, __net_ip_v4_bcast_%ipaddr
|
|
2882
|
+
[END_MACRO]
|
|
2883
|
+
|
|
2884
|
+
[MACRO] NET_IP_ADDR_V6_UNSPECIFIED %ipaddr
|
|
2885
|
+
__net_ip_v6_unspec_%ipaddr = stack_alloc NetIpv6Addr_SIZE
|
|
2886
|
+
EXPAND NET_IPV6_UNSPECIFIED __net_ip_v6_unspec_%ipaddr
|
|
2887
|
+
EXPAND NET_IP_ADDR_V6_NEW %ipaddr, __net_ip_v6_unspec_%ipaddr
|
|
2888
|
+
[END_MACRO]
|
|
2889
|
+
|
|
2890
|
+
[MACRO] NET_IP_ADDR_V6_LOCALHOST %ipaddr
|
|
2891
|
+
__net_ip_v6_local_%ipaddr = stack_alloc NetIpv6Addr_SIZE
|
|
2892
|
+
EXPAND NET_IPV6_LOCALHOST __net_ip_v6_local_%ipaddr
|
|
2893
|
+
EXPAND NET_IP_ADDR_V6_NEW %ipaddr, __net_ip_v6_local_%ipaddr
|
|
2894
|
+
[END_MACRO]
|
|
2895
|
+
|
|
2896
|
+
[MACRO] NET_IP_ADDR_TRY_PARSE_ASCII %out_ok, %ipaddr, %ptr, %len
|
|
2897
|
+
__net_ip_parse_v4_%out_ok = stack_alloc NetIpv4Addr_SIZE
|
|
2898
|
+
__net_ip_parse_v6_%out_ok = stack_alloc NetIpv6Addr_SIZE
|
|
2899
|
+
__net_ip_parse_v4_ok_%out_ok = call @sa_net_ipv4_parse_ascii(&%ptr, %len, &__net_ip_parse_v4_%out_ok)
|
|
2900
|
+
br __net_ip_parse_v4_ok_%out_ok -> L_NET_IP_PARSE_V4_OK_%out_ok, L_NET_IP_PARSE_TRY_V6_%out_ok
|
|
2901
|
+
|
|
2902
|
+
L_NET_IP_PARSE_V4_OK_%out_ok:
|
|
2903
|
+
%out_ok = add 0, 1
|
|
2904
|
+
EXPAND NET_IP_ADDR_V4_NEW %ipaddr, __net_ip_parse_v4_%out_ok
|
|
2905
|
+
!__net_ip_parse_v4_ok_%out_ok
|
|
2906
|
+
jmp L_NET_IP_PARSE_DONE_%out_ok
|
|
2907
|
+
|
|
2908
|
+
L_NET_IP_PARSE_TRY_V6_%out_ok:
|
|
2909
|
+
!__net_ip_parse_v4_ok_%out_ok
|
|
2910
|
+
__net_ip_parse_v6_ok_%out_ok = call @sa_net_ipv6_parse_ascii(&%ptr, %len, &__net_ip_parse_v6_%out_ok)
|
|
2911
|
+
br __net_ip_parse_v6_ok_%out_ok -> L_NET_IP_PARSE_V6_OK_%out_ok, L_NET_IP_PARSE_FAIL_%out_ok
|
|
2912
|
+
|
|
2913
|
+
L_NET_IP_PARSE_V6_OK_%out_ok:
|
|
2914
|
+
%out_ok = add 0, 1
|
|
2915
|
+
EXPAND NET_IP_ADDR_V6_NEW %ipaddr, __net_ip_parse_v6_%out_ok
|
|
2916
|
+
!__net_ip_parse_v6_ok_%out_ok
|
|
2917
|
+
jmp L_NET_IP_PARSE_DONE_%out_ok
|
|
2918
|
+
|
|
2919
|
+
L_NET_IP_PARSE_FAIL_%out_ok:
|
|
2920
|
+
%out_ok = add 0, 0
|
|
2921
|
+
EXPAND NET_IP_ADDR_V4_UNSPECIFIED %ipaddr
|
|
2922
|
+
!__net_ip_parse_v6_ok_%out_ok
|
|
2923
|
+
|
|
2924
|
+
L_NET_IP_PARSE_DONE_%out_ok:
|
|
2925
|
+
[END_MACRO]
|
|
2926
|
+
|
|
2927
|
+
[MACRO] NET_IP_ADDR_TRY_PARSE_ASCII_DETAIL %out_ok, %out_kind, %ipaddr, %ptr, %len
|
|
2928
|
+
%out_kind = add 0, ADDR_PARSE_ERROR_IP
|
|
2929
|
+
EXPAND NET_IP_ADDR_TRY_PARSE_ASCII %out_ok, %ipaddr, %ptr, %len
|
|
2930
|
+
[END_MACRO]
|
|
2931
|
+
|
|
2932
|
+
[MACRO] NET_IP_ADDR_PARSE_ASCII %out_ok, %ipaddr, %ptr, %len
|
|
2933
|
+
EXPAND NET_IP_ADDR_TRY_PARSE_ASCII %out_ok, %ipaddr, %ptr, %len
|
|
2934
|
+
[END_MACRO]
|
|
2935
|
+
|
|
2936
|
+
[MACRO] NET_IP_ADDR_PARSE_ASCII_DETAIL %out_ok, %out_kind, %ipaddr, %ptr, %len
|
|
2937
|
+
EXPAND NET_IP_ADDR_TRY_PARSE_ASCII_DETAIL %out_ok, %out_kind, %ipaddr, %ptr, %len
|
|
2938
|
+
[END_MACRO]
|
|
2939
|
+
|
|
2940
|
+
[MACRO] NET_IP_ADDR_COPY %dst_ipaddr, %src_ipaddr
|
|
2941
|
+
__net_ip_copy_tag_%dst_ipaddr = load %src_ipaddr+NetIpAddr_tag as u64
|
|
2942
|
+
__net_ip_copy_src_%dst_ipaddr = ptr_add %src_ipaddr, 8
|
|
2943
|
+
__net_ip_copy_dst_%dst_ipaddr = ptr_add %dst_ipaddr, 8
|
|
2944
|
+
store %dst_ipaddr+NetIpAddr_tag, __net_ip_copy_tag_%dst_ipaddr as u64
|
|
2945
|
+
__net_ip_copy_is_v4_%dst_ipaddr = eq __net_ip_copy_tag_%dst_ipaddr, NET_IP_ADDR_V4
|
|
2946
|
+
br __net_ip_copy_is_v4_%dst_ipaddr -> L_NET_IP_COPY_V4_%dst_ipaddr, L_NET_IP_COPY_V6_%dst_ipaddr
|
|
2947
|
+
L_NET_IP_COPY_V4_%dst_ipaddr:
|
|
2948
|
+
EXPAND NET_IPV4_COPY __net_ip_copy_dst_%dst_ipaddr, __net_ip_copy_src_%dst_ipaddr
|
|
2949
|
+
jmp L_NET_IP_COPY_DONE_%dst_ipaddr
|
|
2950
|
+
L_NET_IP_COPY_V6_%dst_ipaddr:
|
|
2951
|
+
EXPAND NET_IPV6_COPY __net_ip_copy_dst_%dst_ipaddr, __net_ip_copy_src_%dst_ipaddr
|
|
2952
|
+
jmp L_NET_IP_COPY_DONE_%dst_ipaddr
|
|
2953
|
+
L_NET_IP_COPY_DONE_%dst_ipaddr:
|
|
2954
|
+
!__net_ip_copy_is_v4_%dst_ipaddr
|
|
2955
|
+
!__net_ip_copy_dst_%dst_ipaddr
|
|
2956
|
+
!__net_ip_copy_src_%dst_ipaddr
|
|
2957
|
+
!__net_ip_copy_tag_%dst_ipaddr
|
|
2958
|
+
[END_MACRO]
|
|
2959
|
+
|
|
2960
|
+
[MACRO] NET_IP_ADDR_IS_IPV4 %out_bool, %ipaddr
|
|
2961
|
+
__net_ip_tag_%out_bool = load %ipaddr+NetIpAddr_tag as u64
|
|
2962
|
+
%out_bool = eq __net_ip_tag_%out_bool, NET_IP_ADDR_V4
|
|
2963
|
+
!__net_ip_tag_%out_bool
|
|
2964
|
+
[END_MACRO]
|
|
2965
|
+
|
|
2966
|
+
[MACRO] NET_IP_ADDR_IS_IPV6 %out_bool, %ipaddr
|
|
2967
|
+
__net_ip_tag_%out_bool = load %ipaddr+NetIpAddr_tag as u64
|
|
2968
|
+
%out_bool = eq __net_ip_tag_%out_bool, NET_IP_ADDR_V6
|
|
2969
|
+
!__net_ip_tag_%out_bool
|
|
2970
|
+
[END_MACRO]
|
|
2971
|
+
|
|
2972
|
+
[MACRO] NET_IP_ADDR_PAYLOAD_PTR %out_ptr, %ipaddr
|
|
2973
|
+
%out_ptr = ptr_add %ipaddr, 8
|
|
2974
|
+
[END_MACRO]
|
|
2975
|
+
|
|
2976
|
+
[MACRO] NET_IP_ADDR_FAMILY %out_family, %ipaddr
|
|
2977
|
+
__net_ip_family_tag_%out_family = load %ipaddr+NetIpAddr_tag as u64
|
|
2978
|
+
__net_ip_family_is_v4_%out_family = eq __net_ip_family_tag_%out_family, NET_IP_ADDR_V4
|
|
2979
|
+
br __net_ip_family_is_v4_%out_family -> L_NET_IP_FAMILY_V4_%out_family, L_NET_IP_FAMILY_V6_%out_family
|
|
2980
|
+
L_NET_IP_FAMILY_V4_%out_family:
|
|
2981
|
+
%out_family = add 0, SA_NET_AF_INET
|
|
2982
|
+
jmp L_NET_IP_FAMILY_DONE_%out_family
|
|
2983
|
+
L_NET_IP_FAMILY_V6_%out_family:
|
|
2984
|
+
%out_family = add 0, SA_NET_AF_INET6
|
|
2985
|
+
jmp L_NET_IP_FAMILY_DONE_%out_family
|
|
2986
|
+
L_NET_IP_FAMILY_DONE_%out_family:
|
|
2987
|
+
!__net_ip_family_is_v4_%out_family
|
|
2988
|
+
!__net_ip_family_tag_%out_family
|
|
2989
|
+
[END_MACRO]
|
|
2990
|
+
|
|
2991
|
+
[MACRO] NET_IP_ADDR_OCTET_LEN %out_len, %ipaddr
|
|
2992
|
+
__net_ip_octet_len_tag_%out_len = load %ipaddr+NetIpAddr_tag as u64
|
|
2993
|
+
__net_ip_octet_len_v4_%out_len = eq __net_ip_octet_len_tag_%out_len, NET_IP_ADDR_V4
|
|
2994
|
+
br __net_ip_octet_len_v4_%out_len -> L_NET_IP_OCTET_LEN_V4_%out_len, L_NET_IP_OCTET_LEN_V6_%out_len
|
|
2995
|
+
L_NET_IP_OCTET_LEN_V4_%out_len:
|
|
2996
|
+
%out_len = add 0, 4
|
|
2997
|
+
jmp L_NET_IP_OCTET_LEN_DONE_%out_len
|
|
2998
|
+
L_NET_IP_OCTET_LEN_V6_%out_len:
|
|
2999
|
+
%out_len = add 0, 16
|
|
3000
|
+
jmp L_NET_IP_OCTET_LEN_DONE_%out_len
|
|
3001
|
+
L_NET_IP_OCTET_LEN_DONE_%out_len:
|
|
3002
|
+
!__net_ip_octet_len_v4_%out_len
|
|
3003
|
+
!__net_ip_octet_len_tag_%out_len
|
|
3004
|
+
[END_MACRO]
|
|
3005
|
+
|
|
3006
|
+
[MACRO] NET_IP_ADDR_AS_OCTETS_PTR %out_ptr, %ipaddr
|
|
3007
|
+
__net_ip_octets_view_%out_ptr = stack_alloc 16
|
|
3008
|
+
__net_ip_octets_tag_%out_ptr = load %ipaddr+NetIpAddr_tag as u64
|
|
3009
|
+
__net_ip_octets_payload_%out_ptr = ptr_add %ipaddr, 8
|
|
3010
|
+
__net_ip_octets_is_v4_%out_ptr = eq __net_ip_octets_tag_%out_ptr, NET_IP_ADDR_V4
|
|
3011
|
+
br __net_ip_octets_is_v4_%out_ptr -> L_NET_IP_OCTETS_PTR_V4_%out_ptr, L_NET_IP_OCTETS_PTR_V6_%out_ptr
|
|
3012
|
+
L_NET_IP_OCTETS_PTR_V4_%out_ptr:
|
|
3013
|
+
EXPAND NET_IPV4_WRITE_OCTETS __net_ip_octets_v4_ok_%out_ptr, __net_ip_octets_view_%out_ptr, 16, __net_ip_octets_payload_%out_ptr
|
|
3014
|
+
jmp L_NET_IP_OCTETS_PTR_DONE_%out_ptr
|
|
3015
|
+
L_NET_IP_OCTETS_PTR_V6_%out_ptr:
|
|
3016
|
+
EXPAND NET_IPV6_WRITE_OCTETS __net_ip_octets_v6_ok_%out_ptr, __net_ip_octets_view_%out_ptr, 16, __net_ip_octets_payload_%out_ptr
|
|
3017
|
+
L_NET_IP_OCTETS_PTR_DONE_%out_ptr:
|
|
3018
|
+
%out_ptr = ptr_add __net_ip_octets_view_%out_ptr, 0
|
|
3019
|
+
!__net_ip_octets_is_v4_%out_ptr
|
|
3020
|
+
!__net_ip_octets_payload_%out_ptr
|
|
3021
|
+
!__net_ip_octets_tag_%out_ptr
|
|
3022
|
+
[END_MACRO]
|
|
3023
|
+
|
|
3024
|
+
[MACRO] NET_IP_ADDR_WRITE_OCTETS %out_ok, %dst_ptr, %dst_len, %ipaddr
|
|
3025
|
+
__net_ip_write_tag_%out_ok = load %ipaddr+NetIpAddr_tag as u64
|
|
3026
|
+
__net_ip_write_payload_%out_ok = ptr_add %ipaddr, 8
|
|
3027
|
+
__net_ip_write_v4_%out_ok = eq __net_ip_write_tag_%out_ok, NET_IP_ADDR_V4
|
|
3028
|
+
br __net_ip_write_v4_%out_ok -> L_NET_IP_WRITE_OCTETS_V4_%out_ok, L_NET_IP_WRITE_OCTETS_V6_%out_ok
|
|
3029
|
+
|
|
3030
|
+
L_NET_IP_WRITE_OCTETS_V4_%out_ok:
|
|
3031
|
+
EXPAND NET_IPV4_WRITE_OCTETS %out_ok, %dst_ptr, %dst_len, __net_ip_write_payload_%out_ok
|
|
3032
|
+
jmp L_NET_IP_WRITE_OCTETS_DONE_%out_ok
|
|
3033
|
+
|
|
3034
|
+
L_NET_IP_WRITE_OCTETS_V6_%out_ok:
|
|
3035
|
+
EXPAND NET_IPV6_WRITE_OCTETS %out_ok, %dst_ptr, %dst_len, __net_ip_write_payload_%out_ok
|
|
3036
|
+
jmp L_NET_IP_WRITE_OCTETS_DONE_%out_ok
|
|
3037
|
+
|
|
3038
|
+
L_NET_IP_WRITE_OCTETS_DONE_%out_ok:
|
|
3039
|
+
!__net_ip_write_v4_%out_ok
|
|
3040
|
+
!__net_ip_write_payload_%out_ok
|
|
3041
|
+
!__net_ip_write_tag_%out_ok
|
|
3042
|
+
[END_MACRO]
|
|
3043
|
+
|
|
3044
|
+
[MACRO] NET_IP_ADDR_EQ %out_bool, %left, %right
|
|
3045
|
+
__net_ip_eq_ltag_%out_bool = load %left+NetIpAddr_tag as u64
|
|
3046
|
+
__net_ip_eq_rtag_%out_bool = load %right+NetIpAddr_tag as u64
|
|
3047
|
+
__net_ip_eq_same_tag_%out_bool = eq __net_ip_eq_ltag_%out_bool, __net_ip_eq_rtag_%out_bool
|
|
3048
|
+
br __net_ip_eq_same_tag_%out_bool -> L_NET_IP_EQ_SAME_%out_bool, L_NET_IP_EQ_DIFF_%out_bool
|
|
3049
|
+
L_NET_IP_EQ_DIFF_%out_bool:
|
|
3050
|
+
%out_bool = add 0, 0
|
|
3051
|
+
jmp L_NET_IP_EQ_DONE_%out_bool
|
|
3052
|
+
L_NET_IP_EQ_SAME_%out_bool:
|
|
3053
|
+
__net_ip_eq_lpayload_%out_bool = ptr_add %left, 8
|
|
3054
|
+
__net_ip_eq_rpayload_%out_bool = ptr_add %right, 8
|
|
3055
|
+
__net_ip_eq_is_v4_%out_bool = eq __net_ip_eq_ltag_%out_bool, NET_IP_ADDR_V4
|
|
3056
|
+
br __net_ip_eq_is_v4_%out_bool -> L_NET_IP_EQ_V4_%out_bool, L_NET_IP_EQ_V6_%out_bool
|
|
3057
|
+
L_NET_IP_EQ_V4_%out_bool:
|
|
3058
|
+
EXPAND NET_IPV4_EQ %out_bool, __net_ip_eq_lpayload_%out_bool, __net_ip_eq_rpayload_%out_bool
|
|
3059
|
+
jmp L_NET_IP_EQ_SAME_DONE_%out_bool
|
|
3060
|
+
L_NET_IP_EQ_V6_%out_bool:
|
|
3061
|
+
EXPAND NET_IPV6_EQ %out_bool, __net_ip_eq_lpayload_%out_bool, __net_ip_eq_rpayload_%out_bool
|
|
3062
|
+
jmp L_NET_IP_EQ_SAME_DONE_%out_bool
|
|
3063
|
+
L_NET_IP_EQ_SAME_DONE_%out_bool:
|
|
3064
|
+
!__net_ip_eq_is_v4_%out_bool
|
|
3065
|
+
!__net_ip_eq_rpayload_%out_bool
|
|
3066
|
+
!__net_ip_eq_lpayload_%out_bool
|
|
3067
|
+
jmp L_NET_IP_EQ_DONE_%out_bool
|
|
3068
|
+
L_NET_IP_EQ_DONE_%out_bool:
|
|
3069
|
+
!__net_ip_eq_same_tag_%out_bool
|
|
3070
|
+
!__net_ip_eq_rtag_%out_bool
|
|
3071
|
+
!__net_ip_eq_ltag_%out_bool
|
|
3072
|
+
[END_MACRO]
|
|
3073
|
+
|
|
3074
|
+
[MACRO] NET_IP_ADDR_IS_UNSPECIFIED %out_bool, %ipaddr
|
|
3075
|
+
__net_ip_unspec_tag_%out_bool = load %ipaddr+NetIpAddr_tag as u64
|
|
3076
|
+
__net_ip_unspec_payload_%out_bool = ptr_add %ipaddr, 8
|
|
3077
|
+
__net_ip_unspec_is_v4_%out_bool = eq __net_ip_unspec_tag_%out_bool, NET_IP_ADDR_V4
|
|
3078
|
+
br __net_ip_unspec_is_v4_%out_bool -> L_NET_IP_UNSPEC_V4_%out_bool, L_NET_IP_UNSPEC_V6_%out_bool
|
|
3079
|
+
L_NET_IP_UNSPEC_V4_%out_bool:
|
|
3080
|
+
EXPAND NET_IPV4_IS_UNSPECIFIED %out_bool, __net_ip_unspec_payload_%out_bool
|
|
3081
|
+
jmp L_NET_IP_UNSPEC_DONE_%out_bool
|
|
3082
|
+
L_NET_IP_UNSPEC_V6_%out_bool:
|
|
3083
|
+
EXPAND NET_IPV6_IS_UNSPECIFIED %out_bool, __net_ip_unspec_payload_%out_bool
|
|
3084
|
+
jmp L_NET_IP_UNSPEC_DONE_%out_bool
|
|
3085
|
+
L_NET_IP_UNSPEC_DONE_%out_bool:
|
|
3086
|
+
!__net_ip_unspec_is_v4_%out_bool
|
|
3087
|
+
!__net_ip_unspec_payload_%out_bool
|
|
3088
|
+
!__net_ip_unspec_tag_%out_bool
|
|
3089
|
+
[END_MACRO]
|
|
3090
|
+
|
|
3091
|
+
[MACRO] NET_IP_ADDR_IS_LOOPBACK %out_bool, %ipaddr
|
|
3092
|
+
__net_ip_loop_tag_%out_bool = load %ipaddr+NetIpAddr_tag as u64
|
|
3093
|
+
__net_ip_loop_payload_%out_bool = ptr_add %ipaddr, 8
|
|
3094
|
+
__net_ip_loop_is_v4_%out_bool = eq __net_ip_loop_tag_%out_bool, NET_IP_ADDR_V4
|
|
3095
|
+
br __net_ip_loop_is_v4_%out_bool -> L_NET_IP_LOOP_V4_%out_bool, L_NET_IP_LOOP_V6_%out_bool
|
|
3096
|
+
L_NET_IP_LOOP_V4_%out_bool:
|
|
3097
|
+
EXPAND NET_IPV4_IS_LOOPBACK %out_bool, __net_ip_loop_payload_%out_bool
|
|
3098
|
+
jmp L_NET_IP_LOOP_DONE_%out_bool
|
|
3099
|
+
L_NET_IP_LOOP_V6_%out_bool:
|
|
3100
|
+
EXPAND NET_IPV6_IS_LOOPBACK %out_bool, __net_ip_loop_payload_%out_bool
|
|
3101
|
+
jmp L_NET_IP_LOOP_DONE_%out_bool
|
|
3102
|
+
L_NET_IP_LOOP_DONE_%out_bool:
|
|
3103
|
+
!__net_ip_loop_is_v4_%out_bool
|
|
3104
|
+
!__net_ip_loop_payload_%out_bool
|
|
3105
|
+
!__net_ip_loop_tag_%out_bool
|
|
3106
|
+
[END_MACRO]
|
|
3107
|
+
|
|
3108
|
+
[MACRO] NET_IP_ADDR_IS_MULTICAST %out_bool, %ipaddr
|
|
3109
|
+
__net_ip_multi_tag_%out_bool = load %ipaddr+NetIpAddr_tag as u64
|
|
3110
|
+
__net_ip_multi_payload_%out_bool = ptr_add %ipaddr, 8
|
|
3111
|
+
__net_ip_multi_is_v4_%out_bool = eq __net_ip_multi_tag_%out_bool, NET_IP_ADDR_V4
|
|
3112
|
+
br __net_ip_multi_is_v4_%out_bool -> L_NET_IP_MULTI_V4_%out_bool, L_NET_IP_MULTI_V6_%out_bool
|
|
3113
|
+
L_NET_IP_MULTI_V4_%out_bool:
|
|
3114
|
+
EXPAND NET_IPV4_IS_MULTICAST %out_bool, __net_ip_multi_payload_%out_bool
|
|
3115
|
+
jmp L_NET_IP_MULTI_DONE_%out_bool
|
|
3116
|
+
L_NET_IP_MULTI_V6_%out_bool:
|
|
3117
|
+
EXPAND NET_IPV6_IS_MULTICAST %out_bool, __net_ip_multi_payload_%out_bool
|
|
3118
|
+
jmp L_NET_IP_MULTI_DONE_%out_bool
|
|
3119
|
+
L_NET_IP_MULTI_DONE_%out_bool:
|
|
3120
|
+
!__net_ip_multi_is_v4_%out_bool
|
|
3121
|
+
!__net_ip_multi_payload_%out_bool
|
|
3122
|
+
!__net_ip_multi_tag_%out_bool
|
|
3123
|
+
[END_MACRO]
|
|
3124
|
+
|
|
3125
|
+
[MACRO] NET_IP_ADDR_IS_DOCUMENTATION %out_bool, %ipaddr
|
|
3126
|
+
__net_ip_doc_tag_%out_bool = load %ipaddr+NetIpAddr_tag as u64
|
|
3127
|
+
__net_ip_doc_payload_%out_bool = ptr_add %ipaddr, 8
|
|
3128
|
+
__net_ip_doc_is_v4_%out_bool = eq __net_ip_doc_tag_%out_bool, NET_IP_ADDR_V4
|
|
3129
|
+
br __net_ip_doc_is_v4_%out_bool -> L_NET_IP_DOC_V4_%out_bool, L_NET_IP_DOC_V6_%out_bool
|
|
3130
|
+
L_NET_IP_DOC_V4_%out_bool:
|
|
3131
|
+
EXPAND NET_IPV4_IS_DOCUMENTATION %out_bool, __net_ip_doc_payload_%out_bool
|
|
3132
|
+
jmp L_NET_IP_DOC_DONE_%out_bool
|
|
3133
|
+
L_NET_IP_DOC_V6_%out_bool:
|
|
3134
|
+
EXPAND NET_IPV6_IS_DOCUMENTATION %out_bool, __net_ip_doc_payload_%out_bool
|
|
3135
|
+
jmp L_NET_IP_DOC_DONE_%out_bool
|
|
3136
|
+
L_NET_IP_DOC_DONE_%out_bool:
|
|
3137
|
+
!__net_ip_doc_is_v4_%out_bool
|
|
3138
|
+
!__net_ip_doc_payload_%out_bool
|
|
3139
|
+
!__net_ip_doc_tag_%out_bool
|
|
3140
|
+
[END_MACRO]
|
|
3141
|
+
|
|
3142
|
+
[MACRO] NET_IP_ADDR_IS_BENCHMARKING %out_bool, %ipaddr
|
|
3143
|
+
__net_ip_bench_tag_%out_bool = load %ipaddr+NetIpAddr_tag as u64
|
|
3144
|
+
__net_ip_bench_payload_%out_bool = ptr_add %ipaddr, 8
|
|
3145
|
+
__net_ip_bench_is_v4_%out_bool = eq __net_ip_bench_tag_%out_bool, NET_IP_ADDR_V4
|
|
3146
|
+
br __net_ip_bench_is_v4_%out_bool -> L_NET_IP_BENCH_V4_%out_bool, L_NET_IP_BENCH_V6_%out_bool
|
|
3147
|
+
L_NET_IP_BENCH_V4_%out_bool:
|
|
3148
|
+
EXPAND NET_IPV4_IS_BENCHMARKING %out_bool, __net_ip_bench_payload_%out_bool
|
|
3149
|
+
jmp L_NET_IP_BENCH_DONE_%out_bool
|
|
3150
|
+
L_NET_IP_BENCH_V6_%out_bool:
|
|
3151
|
+
EXPAND NET_IPV6_IS_BENCHMARKING %out_bool, __net_ip_bench_payload_%out_bool
|
|
3152
|
+
jmp L_NET_IP_BENCH_DONE_%out_bool
|
|
3153
|
+
L_NET_IP_BENCH_DONE_%out_bool:
|
|
3154
|
+
!__net_ip_bench_is_v4_%out_bool
|
|
3155
|
+
!__net_ip_bench_payload_%out_bool
|
|
3156
|
+
!__net_ip_bench_tag_%out_bool
|
|
3157
|
+
[END_MACRO]
|
|
3158
|
+
|
|
3159
|
+
[MACRO] NET_IP_ADDR_IS_GLOBAL %out_bool, %ipaddr
|
|
3160
|
+
__net_ip_global_tag_%out_bool = load %ipaddr+NetIpAddr_tag as u64
|
|
3161
|
+
__net_ip_global_payload_%out_bool = ptr_add %ipaddr, 8
|
|
3162
|
+
__net_ip_global_is_v4_%out_bool = eq __net_ip_global_tag_%out_bool, NET_IP_ADDR_V4
|
|
3163
|
+
br __net_ip_global_is_v4_%out_bool -> L_NET_IP_GLOBAL_V4_%out_bool, L_NET_IP_GLOBAL_V6_%out_bool
|
|
3164
|
+
L_NET_IP_GLOBAL_V4_%out_bool:
|
|
3165
|
+
EXPAND NET_IPV4_IS_GLOBAL %out_bool, __net_ip_global_payload_%out_bool
|
|
3166
|
+
jmp L_NET_IP_GLOBAL_DONE_%out_bool
|
|
3167
|
+
L_NET_IP_GLOBAL_V6_%out_bool:
|
|
3168
|
+
EXPAND NET_IPV6_IS_GLOBAL %out_bool, __net_ip_global_payload_%out_bool
|
|
3169
|
+
jmp L_NET_IP_GLOBAL_DONE_%out_bool
|
|
3170
|
+
L_NET_IP_GLOBAL_DONE_%out_bool:
|
|
3171
|
+
!__net_ip_global_is_v4_%out_bool
|
|
3172
|
+
!__net_ip_global_payload_%out_bool
|
|
3173
|
+
!__net_ip_global_tag_%out_bool
|
|
3174
|
+
[END_MACRO]
|
|
3175
|
+
|
|
3176
|
+
[MACRO] NET_IP_ADDR_IS_PRIVATE %out_bool, %ipaddr
|
|
3177
|
+
__net_ip_private_tag_%out_bool = load %ipaddr+NetIpAddr_tag as u64
|
|
3178
|
+
__net_ip_private_payload_%out_bool = ptr_add %ipaddr, 8
|
|
3179
|
+
__net_ip_private_is_v4_%out_bool = eq __net_ip_private_tag_%out_bool, NET_IP_ADDR_V4
|
|
3180
|
+
br __net_ip_private_is_v4_%out_bool -> L_NET_IP_PRIVATE_V4_%out_bool, L_NET_IP_PRIVATE_V6_%out_bool
|
|
3181
|
+
L_NET_IP_PRIVATE_V4_%out_bool:
|
|
3182
|
+
EXPAND NET_IPV4_IS_PRIVATE %out_bool, __net_ip_private_payload_%out_bool
|
|
3183
|
+
jmp L_NET_IP_PRIVATE_DONE_%out_bool
|
|
3184
|
+
L_NET_IP_PRIVATE_V6_%out_bool:
|
|
3185
|
+
EXPAND NET_IPV6_IS_UNIQUE_LOCAL %out_bool, __net_ip_private_payload_%out_bool
|
|
3186
|
+
jmp L_NET_IP_PRIVATE_DONE_%out_bool
|
|
3187
|
+
L_NET_IP_PRIVATE_DONE_%out_bool:
|
|
3188
|
+
!__net_ip_private_is_v4_%out_bool
|
|
3189
|
+
!__net_ip_private_payload_%out_bool
|
|
3190
|
+
!__net_ip_private_tag_%out_bool
|
|
3191
|
+
[END_MACRO]
|
|
3192
|
+
|
|
3193
|
+
[MACRO] NET_IP_ADDR_IS_LINK_LOCAL %out_bool, %ipaddr
|
|
3194
|
+
__net_ip_link_tag_%out_bool = load %ipaddr+NetIpAddr_tag as u64
|
|
3195
|
+
__net_ip_link_payload_%out_bool = ptr_add %ipaddr, 8
|
|
3196
|
+
__net_ip_link_is_v4_%out_bool = eq __net_ip_link_tag_%out_bool, NET_IP_ADDR_V4
|
|
3197
|
+
br __net_ip_link_is_v4_%out_bool -> L_NET_IP_LINK_V4_%out_bool, L_NET_IP_LINK_V6_%out_bool
|
|
3198
|
+
L_NET_IP_LINK_V4_%out_bool:
|
|
3199
|
+
EXPAND NET_IPV4_IS_LINK_LOCAL %out_bool, __net_ip_link_payload_%out_bool
|
|
3200
|
+
jmp L_NET_IP_LINK_DONE_%out_bool
|
|
3201
|
+
L_NET_IP_LINK_V6_%out_bool:
|
|
3202
|
+
EXPAND NET_IPV6_IS_UNICAST_LINK_LOCAL %out_bool, __net_ip_link_payload_%out_bool
|
|
3203
|
+
jmp L_NET_IP_LINK_DONE_%out_bool
|
|
3204
|
+
L_NET_IP_LINK_DONE_%out_bool:
|
|
3205
|
+
!__net_ip_link_is_v4_%out_bool
|
|
3206
|
+
!__net_ip_link_payload_%out_bool
|
|
3207
|
+
!__net_ip_link_tag_%out_bool
|
|
3208
|
+
[END_MACRO]
|
|
3209
|
+
|
|
3210
|
+
[MACRO] NET_IP_ADDR_IS_SHARED %out_bool, %ipaddr
|
|
3211
|
+
__net_ip_shared_tag_%out_bool = load %ipaddr+NetIpAddr_tag as u64
|
|
3212
|
+
__net_ip_shared_payload_%out_bool = ptr_add %ipaddr, 8
|
|
3213
|
+
__net_ip_shared_is_v4_%out_bool = eq __net_ip_shared_tag_%out_bool, NET_IP_ADDR_V4
|
|
3214
|
+
br __net_ip_shared_is_v4_%out_bool -> L_NET_IP_SHARED_V4_%out_bool, L_NET_IP_SHARED_V6_%out_bool
|
|
3215
|
+
L_NET_IP_SHARED_V4_%out_bool:
|
|
3216
|
+
EXPAND NET_IPV4_IS_SHARED %out_bool, __net_ip_shared_payload_%out_bool
|
|
3217
|
+
jmp L_NET_IP_SHARED_DONE_%out_bool
|
|
3218
|
+
L_NET_IP_SHARED_V6_%out_bool:
|
|
3219
|
+
%out_bool = add 0, 0
|
|
3220
|
+
jmp L_NET_IP_SHARED_DONE_%out_bool
|
|
3221
|
+
L_NET_IP_SHARED_DONE_%out_bool:
|
|
3222
|
+
!__net_ip_shared_is_v4_%out_bool
|
|
3223
|
+
!__net_ip_shared_payload_%out_bool
|
|
3224
|
+
!__net_ip_shared_tag_%out_bool
|
|
3225
|
+
[END_MACRO]
|
|
3226
|
+
|
|
3227
|
+
[MACRO] NET_IP_ADDR_IS_RESERVED %out_bool, %ipaddr
|
|
3228
|
+
__net_ip_reserved_tag_%out_bool = load %ipaddr+NetIpAddr_tag as u64
|
|
3229
|
+
__net_ip_reserved_payload_%out_bool = ptr_add %ipaddr, 8
|
|
3230
|
+
__net_ip_reserved_is_v4_%out_bool = eq __net_ip_reserved_tag_%out_bool, NET_IP_ADDR_V4
|
|
3231
|
+
br __net_ip_reserved_is_v4_%out_bool -> L_NET_IP_RESERVED_V4_%out_bool, L_NET_IP_RESERVED_V6_%out_bool
|
|
3232
|
+
L_NET_IP_RESERVED_V4_%out_bool:
|
|
3233
|
+
EXPAND NET_IPV4_IS_RESERVED %out_bool, __net_ip_reserved_payload_%out_bool
|
|
3234
|
+
jmp L_NET_IP_RESERVED_DONE_%out_bool
|
|
3235
|
+
L_NET_IP_RESERVED_V6_%out_bool:
|
|
3236
|
+
%out_bool = add 0, 0
|
|
3237
|
+
jmp L_NET_IP_RESERVED_DONE_%out_bool
|
|
3238
|
+
L_NET_IP_RESERVED_DONE_%out_bool:
|
|
3239
|
+
!__net_ip_reserved_is_v4_%out_bool
|
|
3240
|
+
!__net_ip_reserved_payload_%out_bool
|
|
3241
|
+
!__net_ip_reserved_tag_%out_bool
|
|
3242
|
+
[END_MACRO]
|
|
3243
|
+
|
|
3244
|
+
[MACRO] NET_IP_ADDR_IS_UNICAST_GLOBAL %out_bool, %ipaddr
|
|
3245
|
+
__net_ip_uglobal_tag_%out_bool = load %ipaddr+NetIpAddr_tag as u64
|
|
3246
|
+
__net_ip_uglobal_payload_%out_bool = ptr_add %ipaddr, 8
|
|
3247
|
+
__net_ip_uglobal_is_v4_%out_bool = eq __net_ip_uglobal_tag_%out_bool, NET_IP_ADDR_V4
|
|
3248
|
+
br __net_ip_uglobal_is_v4_%out_bool -> L_NET_IP_UGLOBAL_V4_%out_bool, L_NET_IP_UGLOBAL_V6_%out_bool
|
|
3249
|
+
L_NET_IP_UGLOBAL_V4_%out_bool:
|
|
3250
|
+
EXPAND NET_IPV4_IS_GLOBAL %out_bool, __net_ip_uglobal_payload_%out_bool
|
|
3251
|
+
jmp L_NET_IP_UGLOBAL_DONE_%out_bool
|
|
3252
|
+
L_NET_IP_UGLOBAL_V6_%out_bool:
|
|
3253
|
+
EXPAND NET_IPV6_IS_UNICAST_GLOBAL %out_bool, __net_ip_uglobal_payload_%out_bool
|
|
3254
|
+
jmp L_NET_IP_UGLOBAL_DONE_%out_bool
|
|
3255
|
+
L_NET_IP_UGLOBAL_DONE_%out_bool:
|
|
3256
|
+
!__net_ip_uglobal_is_v4_%out_bool
|
|
3257
|
+
!__net_ip_uglobal_payload_%out_bool
|
|
3258
|
+
!__net_ip_uglobal_tag_%out_bool
|
|
3259
|
+
[END_MACRO]
|
|
3260
|
+
|
|
3261
|
+
[MACRO] NET_IP_ADDR_IS_UNICAST %out_bool, %ipaddr
|
|
3262
|
+
__net_ip_unicast_tag_%out_bool = load %ipaddr+NetIpAddr_tag as u64
|
|
3263
|
+
__net_ip_unicast_payload_%out_bool = ptr_add %ipaddr, 8
|
|
3264
|
+
__net_ip_unicast_is_v4_%out_bool = eq __net_ip_unicast_tag_%out_bool, NET_IP_ADDR_V4
|
|
3265
|
+
br __net_ip_unicast_is_v4_%out_bool -> L_NET_IP_UNICAST_V4_%out_bool, L_NET_IP_UNICAST_V6_%out_bool
|
|
3266
|
+
L_NET_IP_UNICAST_V4_%out_bool:
|
|
3267
|
+
EXPAND NET_IPV4_IS_MULTICAST __net_ip_unicast_multi_%out_bool, __net_ip_unicast_payload_%out_bool
|
|
3268
|
+
EXPAND NET_IPV4_IS_BROADCAST __net_ip_unicast_broadcast_%out_bool, __net_ip_unicast_payload_%out_bool
|
|
3269
|
+
__net_ip_unicast_not_multi_%out_bool = eq __net_ip_unicast_multi_%out_bool, 0
|
|
3270
|
+
__net_ip_unicast_not_broadcast_%out_bool = eq __net_ip_unicast_broadcast_%out_bool, 0
|
|
3271
|
+
%out_bool = and __net_ip_unicast_not_multi_%out_bool, __net_ip_unicast_not_broadcast_%out_bool
|
|
3272
|
+
!__net_ip_unicast_not_broadcast_%out_bool
|
|
3273
|
+
!__net_ip_unicast_not_multi_%out_bool
|
|
3274
|
+
!__net_ip_unicast_broadcast_%out_bool
|
|
3275
|
+
!__net_ip_unicast_multi_%out_bool
|
|
3276
|
+
jmp L_NET_IP_UNICAST_DONE_%out_bool
|
|
3277
|
+
L_NET_IP_UNICAST_V6_%out_bool:
|
|
3278
|
+
EXPAND NET_IPV6_IS_UNICAST %out_bool, __net_ip_unicast_payload_%out_bool
|
|
3279
|
+
jmp L_NET_IP_UNICAST_DONE_%out_bool
|
|
3280
|
+
L_NET_IP_UNICAST_DONE_%out_bool:
|
|
3281
|
+
!__net_ip_unicast_is_v4_%out_bool
|
|
3282
|
+
!__net_ip_unicast_payload_%out_bool
|
|
3283
|
+
!__net_ip_unicast_tag_%out_bool
|
|
3284
|
+
[END_MACRO]
|
|
3285
|
+
|
|
3286
|
+
[MACRO] NET_IP_ADDR_IS_UNICAST_LINK_LOCAL %out_bool, %ipaddr
|
|
3287
|
+
EXPAND NET_IP_ADDR_IS_LINK_LOCAL %out_bool, %ipaddr
|
|
3288
|
+
[END_MACRO]
|
|
3289
|
+
|
|
3290
|
+
[MACRO] NET_IP_ADDR_IS_UNIQUE_LOCAL %out_bool, %ipaddr
|
|
3291
|
+
__net_ip_unique_tag_%out_bool = load %ipaddr+NetIpAddr_tag as u64
|
|
3292
|
+
__net_ip_unique_payload_%out_bool = ptr_add %ipaddr, 8
|
|
3293
|
+
__net_ip_unique_is_v4_%out_bool = eq __net_ip_unique_tag_%out_bool, NET_IP_ADDR_V4
|
|
3294
|
+
br __net_ip_unique_is_v4_%out_bool -> L_NET_IP_UNIQUE_V4_%out_bool, L_NET_IP_UNIQUE_V6_%out_bool
|
|
3295
|
+
L_NET_IP_UNIQUE_V4_%out_bool:
|
|
3296
|
+
%out_bool = add 0, 0
|
|
3297
|
+
jmp L_NET_IP_UNIQUE_DONE_%out_bool
|
|
3298
|
+
L_NET_IP_UNIQUE_V6_%out_bool:
|
|
3299
|
+
EXPAND NET_IPV6_IS_UNIQUE_LOCAL %out_bool, __net_ip_unique_payload_%out_bool
|
|
3300
|
+
jmp L_NET_IP_UNIQUE_DONE_%out_bool
|
|
3301
|
+
L_NET_IP_UNIQUE_DONE_%out_bool:
|
|
3302
|
+
!__net_ip_unique_is_v4_%out_bool
|
|
3303
|
+
!__net_ip_unique_payload_%out_bool
|
|
3304
|
+
!__net_ip_unique_tag_%out_bool
|
|
3305
|
+
[END_MACRO]
|
|
3306
|
+
|
|
3307
|
+
[MACRO] NET_IP_ADDR_IS_IPV4_MAPPED %out_bool, %ipaddr
|
|
3308
|
+
__net_ip_mapped_tag_%out_bool = load %ipaddr+NetIpAddr_tag as u64
|
|
3309
|
+
__net_ip_mapped_payload_%out_bool = ptr_add %ipaddr, 8
|
|
3310
|
+
__net_ip_mapped_is_v4_%out_bool = eq __net_ip_mapped_tag_%out_bool, NET_IP_ADDR_V4
|
|
3311
|
+
br __net_ip_mapped_is_v4_%out_bool -> L_NET_IP_MAPPED_V4_%out_bool, L_NET_IP_MAPPED_V6_%out_bool
|
|
3312
|
+
L_NET_IP_MAPPED_V4_%out_bool:
|
|
3313
|
+
%out_bool = add 0, 0
|
|
3314
|
+
jmp L_NET_IP_MAPPED_DONE_%out_bool
|
|
3315
|
+
L_NET_IP_MAPPED_V6_%out_bool:
|
|
3316
|
+
EXPAND NET_IPV6_IS_IPV4_MAPPED %out_bool, __net_ip_mapped_payload_%out_bool
|
|
3317
|
+
jmp L_NET_IP_MAPPED_DONE_%out_bool
|
|
3318
|
+
L_NET_IP_MAPPED_DONE_%out_bool:
|
|
3319
|
+
!__net_ip_mapped_is_v4_%out_bool
|
|
3320
|
+
!__net_ip_mapped_payload_%out_bool
|
|
3321
|
+
!__net_ip_mapped_tag_%out_bool
|
|
3322
|
+
[END_MACRO]
|
|
3323
|
+
|
|
3324
|
+
[MACRO] NET_IP_ADDR_MULTICAST_SCOPE %out_ok, %out_scope, %ipaddr
|
|
3325
|
+
__net_ip_scope_tag_%out_scope = load %ipaddr+NetIpAddr_tag as u64
|
|
3326
|
+
__net_ip_scope_payload_%out_scope = ptr_add %ipaddr, 8
|
|
3327
|
+
__net_ip_scope_is_v4_%out_scope = eq __net_ip_scope_tag_%out_scope, NET_IP_ADDR_V4
|
|
3328
|
+
br __net_ip_scope_is_v4_%out_scope -> L_NET_IP_SCOPE_V4_%out_scope, L_NET_IP_SCOPE_V6_%out_scope
|
|
3329
|
+
L_NET_IP_SCOPE_V4_%out_scope:
|
|
3330
|
+
%out_ok = add 0, 0
|
|
3331
|
+
%out_scope = add 0, 0
|
|
3332
|
+
jmp L_NET_IP_SCOPE_DONE_%out_scope
|
|
3333
|
+
L_NET_IP_SCOPE_V6_%out_scope:
|
|
3334
|
+
EXPAND NET_IPV6_MULTICAST_SCOPE %out_ok, %out_scope, __net_ip_scope_payload_%out_scope
|
|
3335
|
+
jmp L_NET_IP_SCOPE_DONE_%out_scope
|
|
3336
|
+
L_NET_IP_SCOPE_DONE_%out_scope:
|
|
3337
|
+
!__net_ip_scope_is_v4_%out_scope
|
|
3338
|
+
!__net_ip_scope_payload_%out_scope
|
|
3339
|
+
!__net_ip_scope_tag_%out_scope
|
|
3340
|
+
[END_MACRO]
|
|
3341
|
+
|
|
3342
|
+
[MACRO] NET_IP_ADDR_TO_IPV4 %out_ok, %ipv4, %ipaddr
|
|
3343
|
+
__net_ip_to4_tag_%ipv4 = load %ipaddr+NetIpAddr_tag as u64
|
|
3344
|
+
__net_ip_to4_payload_%ipv4 = ptr_add %ipaddr, 8
|
|
3345
|
+
__net_ip_to4_is_v4_%ipv4 = eq __net_ip_to4_tag_%ipv4, NET_IP_ADDR_V4
|
|
3346
|
+
br __net_ip_to4_is_v4_%ipv4 -> L_NET_IP_TO4_V4_%ipv4, L_NET_IP_TO4_V6_%ipv4
|
|
3347
|
+
L_NET_IP_TO4_V4_%ipv4:
|
|
3348
|
+
%out_ok = add 0, 1
|
|
3349
|
+
EXPAND NET_IPV4_COPY %ipv4, __net_ip_to4_payload_%ipv4
|
|
3350
|
+
jmp L_NET_IP_TO4_DONE_%ipv4
|
|
3351
|
+
L_NET_IP_TO4_V6_%ipv4:
|
|
3352
|
+
EXPAND NET_IPV6_TO_IPV4 %out_ok, %ipv4, __net_ip_to4_payload_%ipv4
|
|
3353
|
+
jmp L_NET_IP_TO4_DONE_%ipv4
|
|
3354
|
+
L_NET_IP_TO4_DONE_%ipv4:
|
|
3355
|
+
!__net_ip_to4_is_v4_%ipv4
|
|
3356
|
+
!__net_ip_to4_payload_%ipv4
|
|
3357
|
+
!__net_ip_to4_tag_%ipv4
|
|
3358
|
+
[END_MACRO]
|
|
3359
|
+
|
|
3360
|
+
[MACRO] NET_IP_ADDR_TO_IPV6 %out_ok, %ipv6, %ipaddr
|
|
3361
|
+
__net_ip_to6_tag_%ipv6 = load %ipaddr+NetIpAddr_tag as u64
|
|
3362
|
+
__net_ip_to6_payload_%ipv6 = ptr_add %ipaddr, 8
|
|
3363
|
+
__net_ip_to6_is_v6_%ipv6 = eq __net_ip_to6_tag_%ipv6, NET_IP_ADDR_V6
|
|
3364
|
+
br __net_ip_to6_is_v6_%ipv6 -> L_NET_IP_TO6_V6_%ipv6, L_NET_IP_TO6_V4_%ipv6
|
|
3365
|
+
L_NET_IP_TO6_V6_%ipv6:
|
|
3366
|
+
%out_ok = add 0, 1
|
|
3367
|
+
EXPAND NET_IPV6_COPY %ipv6, __net_ip_to6_payload_%ipv6
|
|
3368
|
+
jmp L_NET_IP_TO6_DONE_%ipv6
|
|
3369
|
+
L_NET_IP_TO6_V4_%ipv6:
|
|
3370
|
+
%out_ok = add 0, 0
|
|
3371
|
+
EXPAND NET_IPV6_UNSPECIFIED %ipv6
|
|
3372
|
+
jmp L_NET_IP_TO6_DONE_%ipv6
|
|
3373
|
+
L_NET_IP_TO6_DONE_%ipv6:
|
|
3374
|
+
!__net_ip_to6_is_v6_%ipv6
|
|
3375
|
+
!__net_ip_to6_payload_%ipv6
|
|
3376
|
+
!__net_ip_to6_tag_%ipv6
|
|
3377
|
+
[END_MACRO]
|
|
3378
|
+
|
|
3379
|
+
|
|
3380
|
+
[MACRO] NET_IP_ADDR_TO_CANONICAL %out_ipaddr, %ipaddr
|
|
3381
|
+
__net_ip_canon_tag_%out_ipaddr = load %ipaddr+NetIpAddr_tag as u64
|
|
3382
|
+
__net_ip_canon_payload_%out_ipaddr = ptr_add %ipaddr, 8
|
|
3383
|
+
__net_ip_canon_is_v4_%out_ipaddr = eq __net_ip_canon_tag_%out_ipaddr, NET_IP_ADDR_V4
|
|
3384
|
+
br __net_ip_canon_is_v4_%out_ipaddr -> L_NET_IP_CANON_V4_%out_ipaddr, L_NET_IP_CANON_V6_%out_ipaddr
|
|
3385
|
+
L_NET_IP_CANON_V4_%out_ipaddr:
|
|
3386
|
+
EXPAND NET_IP_ADDR_V4_NEW %out_ipaddr, __net_ip_canon_payload_%out_ipaddr
|
|
3387
|
+
jmp L_NET_IP_CANON_DONE_%out_ipaddr
|
|
3388
|
+
L_NET_IP_CANON_V6_%out_ipaddr:
|
|
3389
|
+
__net_ip_canon_v4_%out_ipaddr = stack_alloc NetIpv4Addr_SIZE
|
|
3390
|
+
EXPAND NET_IPV6_TO_IPV4_MAPPED __net_ip_canon_mapped_%out_ipaddr, __net_ip_canon_v4_%out_ipaddr, __net_ip_canon_payload_%out_ipaddr
|
|
3391
|
+
br __net_ip_canon_mapped_%out_ipaddr -> L_NET_IP_CANON_MAPPED_%out_ipaddr, L_NET_IP_CANON_KEEP_V6_%out_ipaddr
|
|
3392
|
+
L_NET_IP_CANON_MAPPED_%out_ipaddr:
|
|
3393
|
+
EXPAND NET_IP_ADDR_V4_NEW %out_ipaddr, __net_ip_canon_v4_%out_ipaddr
|
|
3394
|
+
jmp L_NET_IP_CANON_DONE_%out_ipaddr
|
|
3395
|
+
L_NET_IP_CANON_KEEP_V6_%out_ipaddr:
|
|
3396
|
+
EXPAND NET_IP_ADDR_V6_NEW %out_ipaddr, __net_ip_canon_payload_%out_ipaddr
|
|
3397
|
+
jmp L_NET_IP_CANON_DONE_%out_ipaddr
|
|
3398
|
+
L_NET_IP_CANON_DONE_%out_ipaddr:
|
|
3399
|
+
!__net_ip_canon_is_v4_%out_ipaddr
|
|
3400
|
+
!__net_ip_canon_payload_%out_ipaddr
|
|
3401
|
+
!__net_ip_canon_tag_%out_ipaddr
|
|
3402
|
+
[END_MACRO]
|
|
3403
|
+
|
|
3404
|
+
[MACRO] NET_SOCKET_ADDR_V4_NEW %socket_addr, %ipv4, %port
|
|
3405
|
+
__net_sock_v4_ip_%socket_addr = ptr_add %socket_addr, 0
|
|
3406
|
+
__net_sock_v4_a_%socket_addr = load %ipv4+NetIpv4Addr_a as u8
|
|
3407
|
+
__net_sock_v4_b_%socket_addr = load %ipv4+NetIpv4Addr_b as u8
|
|
3408
|
+
__net_sock_v4_c_%socket_addr = load %ipv4+NetIpv4Addr_c as u8
|
|
3409
|
+
__net_sock_v4_d_%socket_addr = load %ipv4+NetIpv4Addr_d as u8
|
|
3410
|
+
store __net_sock_v4_ip_%socket_addr+NetIpv4Addr_a, __net_sock_v4_a_%socket_addr as u8
|
|
3411
|
+
store __net_sock_v4_ip_%socket_addr+NetIpv4Addr_b, __net_sock_v4_b_%socket_addr as u8
|
|
3412
|
+
store __net_sock_v4_ip_%socket_addr+NetIpv4Addr_c, __net_sock_v4_c_%socket_addr as u8
|
|
3413
|
+
store __net_sock_v4_ip_%socket_addr+NetIpv4Addr_d, __net_sock_v4_d_%socket_addr as u8
|
|
3414
|
+
store %socket_addr+NetSocketAddrV4_port, %port as u16
|
|
3415
|
+
!__net_sock_v4_d_%socket_addr
|
|
3416
|
+
!__net_sock_v4_c_%socket_addr
|
|
3417
|
+
!__net_sock_v4_b_%socket_addr
|
|
3418
|
+
!__net_sock_v4_a_%socket_addr
|
|
3419
|
+
!__net_sock_v4_ip_%socket_addr
|
|
3420
|
+
[END_MACRO]
|
|
3421
|
+
|
|
3422
|
+
// Rust-style Default for SocketAddrV4: 0.0.0.0:0.
|
|
3423
|
+
[MACRO] NET_SOCKET_ADDR_V4_DEFAULT %socket_addr
|
|
3424
|
+
__net_sock_v4_default_ip_%socket_addr = stack_alloc NetIpv4Addr_SIZE
|
|
3425
|
+
EXPAND NET_IPV4_DEFAULT __net_sock_v4_default_ip_%socket_addr
|
|
3426
|
+
EXPAND NET_SOCKET_ADDR_V4_NEW %socket_addr, __net_sock_v4_default_ip_%socket_addr, 0
|
|
3427
|
+
[END_MACRO]
|
|
3428
|
+
|
|
3429
|
+
[MACRO] NET_SOCKET_ADDR_V4_IP_PTR %out_ptr, %socket_addr
|
|
3430
|
+
%out_ptr = ptr_add %socket_addr, 0
|
|
3431
|
+
[END_MACRO]
|
|
3432
|
+
|
|
3433
|
+
[MACRO] NET_SOCKET_ADDR_V4_AS_OCTETS_PTR %out_ptr, %socket_addr
|
|
3434
|
+
EXPAND NET_SOCKET_ADDR_V4_IP_PTR %out_ptr, %socket_addr
|
|
3435
|
+
[END_MACRO]
|
|
3436
|
+
|
|
3437
|
+
[MACRO] NET_SOCKET_ADDR_V4_IP %out_ipv4, %socket_addr
|
|
3438
|
+
EXPAND NET_SOCKET_ADDR_V4_IP_PTR __net_sock_v4_ip_src_%out_ipv4, %socket_addr
|
|
3439
|
+
EXPAND NET_IPV4_COPY %out_ipv4, __net_sock_v4_ip_src_%out_ipv4
|
|
3440
|
+
!__net_sock_v4_ip_src_%out_ipv4
|
|
3441
|
+
[END_MACRO]
|
|
3442
|
+
|
|
3443
|
+
[MACRO] NET_SOCKET_ADDR_V4_SET_IP %socket_addr, %ipv4
|
|
3444
|
+
__net_sock_v4_set_ip_%socket_addr = ptr_add %socket_addr, 0
|
|
3445
|
+
EXPAND NET_IPV4_COPY __net_sock_v4_set_ip_%socket_addr, %ipv4
|
|
3446
|
+
!__net_sock_v4_set_ip_%socket_addr
|
|
3447
|
+
[END_MACRO]
|
|
3448
|
+
|
|
3449
|
+
[MACRO] NET_SOCKET_ADDR_V4_PORT %out_port, %socket_addr
|
|
3450
|
+
%out_port = load %socket_addr+NetSocketAddrV4_port as u16
|
|
3451
|
+
[END_MACRO]
|
|
3452
|
+
|
|
3453
|
+
[MACRO] NET_SOCKET_ADDR_V4_SET_PORT %socket_addr, %port
|
|
3454
|
+
store %socket_addr+NetSocketAddrV4_port, %port as u16
|
|
3455
|
+
[END_MACRO]
|
|
3456
|
+
|
|
3457
|
+
[MACRO] NET_SOCKET_ADDR_V4_EQ %out_bool, %left, %right
|
|
3458
|
+
EXPAND NET_SOCKET_ADDR_V4_IP_PTR __net_sock_v4_eq_lip_%out_bool, %left
|
|
3459
|
+
EXPAND NET_SOCKET_ADDR_V4_IP_PTR __net_sock_v4_eq_rip_%out_bool, %right
|
|
3460
|
+
EXPAND NET_IPV4_EQ __net_sock_v4_eq_ip_%out_bool, __net_sock_v4_eq_lip_%out_bool, __net_sock_v4_eq_rip_%out_bool
|
|
3461
|
+
__net_sock_v4_eq_lport_%out_bool = load %left+NetSocketAddrV4_port as u16
|
|
3462
|
+
__net_sock_v4_eq_rport_%out_bool = load %right+NetSocketAddrV4_port as u16
|
|
3463
|
+
__net_sock_v4_eq_port_%out_bool = eq __net_sock_v4_eq_lport_%out_bool, __net_sock_v4_eq_rport_%out_bool
|
|
3464
|
+
%out_bool = and __net_sock_v4_eq_ip_%out_bool, __net_sock_v4_eq_port_%out_bool
|
|
3465
|
+
!__net_sock_v4_eq_port_%out_bool
|
|
3466
|
+
!__net_sock_v4_eq_rport_%out_bool
|
|
3467
|
+
!__net_sock_v4_eq_lport_%out_bool
|
|
3468
|
+
!__net_sock_v4_eq_ip_%out_bool
|
|
3469
|
+
!__net_sock_v4_eq_rip_%out_bool
|
|
3470
|
+
!__net_sock_v4_eq_lip_%out_bool
|
|
3471
|
+
[END_MACRO]
|
|
3472
|
+
|
|
3473
|
+
[MACRO] NET_SOCKET_ADDR_V4_TRY_PARSE_ASCII %out_ok, %socket_addr, %ptr, %len
|
|
3474
|
+
%out_ok = call @sa_net_socket_addr_v4_parse_ascii(&%ptr, %len, &%socket_addr)
|
|
3475
|
+
[END_MACRO]
|
|
3476
|
+
|
|
3477
|
+
[MACRO] NET_SOCKET_ADDR_V4_TRY_PARSE_ASCII_DETAIL %out_ok, %out_kind, %socket_addr, %ptr, %len
|
|
3478
|
+
%out_kind = add 0, ADDR_PARSE_ERROR_SOCKET_V4
|
|
3479
|
+
EXPAND NET_SOCKET_ADDR_V4_TRY_PARSE_ASCII %out_ok, %socket_addr, %ptr, %len
|
|
3480
|
+
[END_MACRO]
|
|
3481
|
+
|
|
3482
|
+
[MACRO] NET_SOCKET_ADDR_V4_PARSE_ASCII %out_ok, %socket_addr, %ptr, %len
|
|
3483
|
+
EXPAND NET_SOCKET_ADDR_V4_TRY_PARSE_ASCII %out_ok, %socket_addr, %ptr, %len
|
|
3484
|
+
[END_MACRO]
|
|
3485
|
+
|
|
3486
|
+
[MACRO] NET_SOCKET_ADDR_V4_PARSE_ASCII_DETAIL %out_ok, %out_kind, %socket_addr, %ptr, %len
|
|
3487
|
+
EXPAND NET_SOCKET_ADDR_V4_TRY_PARSE_ASCII_DETAIL %out_ok, %out_kind, %socket_addr, %ptr, %len
|
|
3488
|
+
[END_MACRO]
|
|
3489
|
+
|
|
3490
|
+
[MACRO] NET_SOCKET_ADDR_V6_TRY_PARSE_ASCII %out_ok, %socket_addr, %ptr, %len
|
|
3491
|
+
%out_ok = call @sa_net_socket_addr_v6_parse_ascii(&%ptr, %len, &%socket_addr)
|
|
3492
|
+
[END_MACRO]
|
|
3493
|
+
|
|
3494
|
+
[MACRO] NET_SOCKET_ADDR_V6_TRY_PARSE_ASCII_DETAIL %out_ok, %out_kind, %socket_addr, %ptr, %len
|
|
3495
|
+
%out_kind = add 0, ADDR_PARSE_ERROR_SOCKET_V6
|
|
3496
|
+
EXPAND NET_SOCKET_ADDR_V6_TRY_PARSE_ASCII %out_ok, %socket_addr, %ptr, %len
|
|
3497
|
+
[END_MACRO]
|
|
3498
|
+
|
|
3499
|
+
[MACRO] NET_SOCKET_ADDR_V6_PARSE_ASCII %out_ok, %socket_addr, %ptr, %len
|
|
3500
|
+
EXPAND NET_SOCKET_ADDR_V6_TRY_PARSE_ASCII %out_ok, %socket_addr, %ptr, %len
|
|
3501
|
+
[END_MACRO]
|
|
3502
|
+
|
|
3503
|
+
[MACRO] NET_SOCKET_ADDR_V6_PARSE_ASCII_DETAIL %out_ok, %out_kind, %socket_addr, %ptr, %len
|
|
3504
|
+
EXPAND NET_SOCKET_ADDR_V6_TRY_PARSE_ASCII_DETAIL %out_ok, %out_kind, %socket_addr, %ptr, %len
|
|
3505
|
+
[END_MACRO]
|
|
3506
|
+
|
|
3507
|
+
|
|
3508
|
+
[MACRO] NET_SOCKET_ADDR_TRY_PARSE_ASCII %out_ok, %socket_addr, %ptr, %len
|
|
3509
|
+
__net_sock_parse_v4_%out_ok = stack_alloc NetSocketAddrV4_SIZE
|
|
3510
|
+
__net_sock_parse_v6_%out_ok = stack_alloc NetSocketAddrV6_SIZE
|
|
3511
|
+
__net_sock_parse_unspec_%out_ok = stack_alloc NetIpv4Addr_SIZE
|
|
3512
|
+
EXPAND NET_SOCKET_ADDR_V4_TRY_PARSE_ASCII __net_sock_parse_v4_ok_%out_ok, __net_sock_parse_v4_%out_ok, %ptr, %len
|
|
3513
|
+
br __net_sock_parse_v4_ok_%out_ok -> L_NET_SOCKET_PARSE_V4_OK_%out_ok, L_NET_SOCKET_PARSE_TRY_V6_%out_ok
|
|
3514
|
+
|
|
3515
|
+
L_NET_SOCKET_PARSE_V4_OK_%out_ok:
|
|
3516
|
+
%out_ok = add 0, 1
|
|
3517
|
+
EXPAND NET_SOCKET_ADDR_FROM_V4 %socket_addr, __net_sock_parse_v4_%out_ok
|
|
3518
|
+
!__net_sock_parse_v4_ok_%out_ok
|
|
3519
|
+
jmp L_NET_SOCKET_PARSE_DONE_%out_ok
|
|
3520
|
+
|
|
3521
|
+
L_NET_SOCKET_PARSE_TRY_V6_%out_ok:
|
|
3522
|
+
!__net_sock_parse_v4_ok_%out_ok
|
|
3523
|
+
EXPAND NET_SOCKET_ADDR_V6_TRY_PARSE_ASCII __net_sock_parse_v6_ok_%out_ok, __net_sock_parse_v6_%out_ok, %ptr, %len
|
|
3524
|
+
br __net_sock_parse_v6_ok_%out_ok -> L_NET_SOCKET_PARSE_V6_OK_%out_ok, L_NET_SOCKET_PARSE_FAIL_%out_ok
|
|
3525
|
+
|
|
3526
|
+
L_NET_SOCKET_PARSE_V6_OK_%out_ok:
|
|
3527
|
+
%out_ok = add 0, 1
|
|
3528
|
+
EXPAND NET_SOCKET_ADDR_FROM_V6 %socket_addr, __net_sock_parse_v6_%out_ok
|
|
3529
|
+
!__net_sock_parse_v6_ok_%out_ok
|
|
3530
|
+
jmp L_NET_SOCKET_PARSE_DONE_%out_ok
|
|
3531
|
+
|
|
3532
|
+
L_NET_SOCKET_PARSE_FAIL_%out_ok:
|
|
3533
|
+
%out_ok = add 0, 0
|
|
3534
|
+
EXPAND NET_IPV4_UNSPECIFIED __net_sock_parse_unspec_%out_ok
|
|
3535
|
+
EXPAND NET_SOCKET_ADDR_V4_NEW __net_sock_parse_v4_%out_ok, __net_sock_parse_unspec_%out_ok, 0
|
|
3536
|
+
EXPAND NET_SOCKET_ADDR_FROM_V4 %socket_addr, __net_sock_parse_v4_%out_ok
|
|
3537
|
+
!__net_sock_parse_v6_ok_%out_ok
|
|
3538
|
+
|
|
3539
|
+
L_NET_SOCKET_PARSE_DONE_%out_ok:
|
|
3540
|
+
[END_MACRO]
|
|
3541
|
+
|
|
3542
|
+
[MACRO] NET_SOCKET_ADDR_PARSE_ASCII %out_ok, %socket_addr, %ptr, %len
|
|
3543
|
+
EXPAND NET_SOCKET_ADDR_TRY_PARSE_ASCII %out_ok, %socket_addr, %ptr, %len
|
|
3544
|
+
[END_MACRO]
|
|
3545
|
+
|
|
3546
|
+
[MACRO] NET_SOCKET_ADDR_TRY_PARSE_ASCII_DETAIL %out_ok, %out_kind, %socket_addr, %ptr, %len
|
|
3547
|
+
%out_kind = add 0, ADDR_PARSE_ERROR_SOCKET
|
|
3548
|
+
EXPAND NET_SOCKET_ADDR_TRY_PARSE_ASCII %out_ok, %socket_addr, %ptr, %len
|
|
3549
|
+
[END_MACRO]
|
|
3550
|
+
|
|
3551
|
+
[MACRO] NET_SOCKET_ADDR_PARSE_ASCII_DETAIL %out_ok, %out_kind, %socket_addr, %ptr, %len
|
|
3552
|
+
EXPAND NET_SOCKET_ADDR_TRY_PARSE_ASCII_DETAIL %out_ok, %out_kind, %socket_addr, %ptr, %len
|
|
3553
|
+
[END_MACRO]
|
|
3554
|
+
|
|
3555
|
+
[MACRO] NET_SOCKET_ADDR_V6_NEW %socket_addr, %ipv6, %port, %flowinfo, %scope_id
|
|
3556
|
+
__net_sock_v6_ip_%socket_addr = ptr_add %socket_addr, 0
|
|
3557
|
+
__net_sock_v6_s0_%socket_addr = load %ipv6+NetIpv6Addr_s0 as u16
|
|
3558
|
+
__net_sock_v6_s1_%socket_addr = load %ipv6+NetIpv6Addr_s1 as u16
|
|
3559
|
+
__net_sock_v6_s2_%socket_addr = load %ipv6+NetIpv6Addr_s2 as u16
|
|
3560
|
+
__net_sock_v6_s3_%socket_addr = load %ipv6+NetIpv6Addr_s3 as u16
|
|
3561
|
+
__net_sock_v6_s4_%socket_addr = load %ipv6+NetIpv6Addr_s4 as u16
|
|
3562
|
+
__net_sock_v6_s5_%socket_addr = load %ipv6+NetIpv6Addr_s5 as u16
|
|
3563
|
+
__net_sock_v6_s6_%socket_addr = load %ipv6+NetIpv6Addr_s6 as u16
|
|
3564
|
+
__net_sock_v6_s7_%socket_addr = load %ipv6+NetIpv6Addr_s7 as u16
|
|
3565
|
+
store __net_sock_v6_ip_%socket_addr+NetIpv6Addr_s0, __net_sock_v6_s0_%socket_addr as u16
|
|
3566
|
+
store __net_sock_v6_ip_%socket_addr+NetIpv6Addr_s1, __net_sock_v6_s1_%socket_addr as u16
|
|
3567
|
+
store __net_sock_v6_ip_%socket_addr+NetIpv6Addr_s2, __net_sock_v6_s2_%socket_addr as u16
|
|
3568
|
+
store __net_sock_v6_ip_%socket_addr+NetIpv6Addr_s3, __net_sock_v6_s3_%socket_addr as u16
|
|
3569
|
+
store __net_sock_v6_ip_%socket_addr+NetIpv6Addr_s4, __net_sock_v6_s4_%socket_addr as u16
|
|
3570
|
+
store __net_sock_v6_ip_%socket_addr+NetIpv6Addr_s5, __net_sock_v6_s5_%socket_addr as u16
|
|
3571
|
+
store __net_sock_v6_ip_%socket_addr+NetIpv6Addr_s6, __net_sock_v6_s6_%socket_addr as u16
|
|
3572
|
+
store __net_sock_v6_ip_%socket_addr+NetIpv6Addr_s7, __net_sock_v6_s7_%socket_addr as u16
|
|
3573
|
+
store %socket_addr+NetSocketAddrV6_port, %port as u16
|
|
3574
|
+
store %socket_addr+NetSocketAddrV6_flowinfo, %flowinfo as u32
|
|
3575
|
+
store %socket_addr+NetSocketAddrV6_scope_id, %scope_id as u32
|
|
3576
|
+
!__net_sock_v6_s7_%socket_addr
|
|
3577
|
+
!__net_sock_v6_s6_%socket_addr
|
|
3578
|
+
!__net_sock_v6_s5_%socket_addr
|
|
3579
|
+
!__net_sock_v6_s4_%socket_addr
|
|
3580
|
+
!__net_sock_v6_s3_%socket_addr
|
|
3581
|
+
!__net_sock_v6_s2_%socket_addr
|
|
3582
|
+
!__net_sock_v6_s1_%socket_addr
|
|
3583
|
+
!__net_sock_v6_s0_%socket_addr
|
|
3584
|
+
!__net_sock_v6_ip_%socket_addr
|
|
3585
|
+
[END_MACRO]
|
|
3586
|
+
|
|
3587
|
+
// Rust-style Default for SocketAddrV6: [::]:0 with flowinfo/scope_id 0.
|
|
3588
|
+
[MACRO] NET_SOCKET_ADDR_V6_DEFAULT %socket_addr
|
|
3589
|
+
__net_sock_v6_default_ip_%socket_addr = stack_alloc NetIpv6Addr_SIZE
|
|
3590
|
+
EXPAND NET_IPV6_DEFAULT __net_sock_v6_default_ip_%socket_addr
|
|
3591
|
+
EXPAND NET_SOCKET_ADDR_V6_NEW %socket_addr, __net_sock_v6_default_ip_%socket_addr, 0, 0, 0
|
|
3592
|
+
[END_MACRO]
|
|
3593
|
+
|
|
3594
|
+
[MACRO] NET_SOCKET_ADDR_V6_IP_PTR %out_ptr, %socket_addr
|
|
3595
|
+
%out_ptr = ptr_add %socket_addr, 0
|
|
3596
|
+
[END_MACRO]
|
|
3597
|
+
|
|
3598
|
+
[MACRO] NET_SOCKET_ADDR_V6_AS_OCTETS_PTR %out_ptr, %socket_addr
|
|
3599
|
+
EXPAND NET_SOCKET_ADDR_V6_IP_PTR __net_sock_v6_octets_ip_%out_ptr, %socket_addr
|
|
3600
|
+
EXPAND NET_IPV6_AS_OCTETS_PTR %out_ptr, __net_sock_v6_octets_ip_%out_ptr
|
|
3601
|
+
!__net_sock_v6_octets_ip_%out_ptr
|
|
3602
|
+
[END_MACRO]
|
|
3603
|
+
|
|
3604
|
+
[MACRO] NET_SOCKET_ADDR_V6_IP %out_ipv6, %socket_addr
|
|
3605
|
+
EXPAND NET_SOCKET_ADDR_V6_IP_PTR __net_sock_v6_ip_src_%out_ipv6, %socket_addr
|
|
3606
|
+
EXPAND NET_IPV6_COPY %out_ipv6, __net_sock_v6_ip_src_%out_ipv6
|
|
3607
|
+
!__net_sock_v6_ip_src_%out_ipv6
|
|
3608
|
+
[END_MACRO]
|
|
3609
|
+
|
|
3610
|
+
[MACRO] NET_SOCKET_ADDR_V6_SET_IP %socket_addr, %ipv6
|
|
3611
|
+
__net_sock_v6_set_ip_%socket_addr = ptr_add %socket_addr, 0
|
|
3612
|
+
EXPAND NET_IPV6_COPY __net_sock_v6_set_ip_%socket_addr, %ipv6
|
|
3613
|
+
!__net_sock_v6_set_ip_%socket_addr
|
|
3614
|
+
[END_MACRO]
|
|
3615
|
+
|
|
3616
|
+
[MACRO] NET_SOCKET_ADDR_V6_PORT %out_port, %socket_addr
|
|
3617
|
+
%out_port = load %socket_addr+NetSocketAddrV6_port as u16
|
|
3618
|
+
[END_MACRO]
|
|
3619
|
+
|
|
3620
|
+
[MACRO] NET_SOCKET_ADDR_V6_SET_PORT %socket_addr, %port
|
|
3621
|
+
store %socket_addr+NetSocketAddrV6_port, %port as u16
|
|
3622
|
+
[END_MACRO]
|
|
3623
|
+
|
|
3624
|
+
[MACRO] NET_SOCKET_ADDR_V6_FLOWINFO %out_flowinfo, %socket_addr
|
|
3625
|
+
%out_flowinfo = load %socket_addr+NetSocketAddrV6_flowinfo as u32
|
|
3626
|
+
[END_MACRO]
|
|
3627
|
+
|
|
3628
|
+
[MACRO] NET_SOCKET_ADDR_V6_SET_FLOWINFO %socket_addr, %flowinfo
|
|
3629
|
+
store %socket_addr+NetSocketAddrV6_flowinfo, %flowinfo as u32
|
|
3630
|
+
[END_MACRO]
|
|
3631
|
+
|
|
3632
|
+
[MACRO] NET_SOCKET_ADDR_V6_SCOPE_ID %out_scope_id, %socket_addr
|
|
3633
|
+
%out_scope_id = load %socket_addr+NetSocketAddrV6_scope_id as u32
|
|
3634
|
+
[END_MACRO]
|
|
3635
|
+
|
|
3636
|
+
[MACRO] NET_SOCKET_ADDR_V6_SET_SCOPE_ID %socket_addr, %scope_id
|
|
3637
|
+
store %socket_addr+NetSocketAddrV6_scope_id, %scope_id as u32
|
|
3638
|
+
[END_MACRO]
|
|
3639
|
+
|
|
3640
|
+
[MACRO] NET_SOCKET_ADDR_V6_EQ %out_bool, %left, %right
|
|
3641
|
+
EXPAND NET_SOCKET_ADDR_V6_IP_PTR __net_sock_v6_eq_lip_%out_bool, %left
|
|
3642
|
+
EXPAND NET_SOCKET_ADDR_V6_IP_PTR __net_sock_v6_eq_rip_%out_bool, %right
|
|
3643
|
+
EXPAND NET_IPV6_EQ __net_sock_v6_eq_ip_%out_bool, __net_sock_v6_eq_lip_%out_bool, __net_sock_v6_eq_rip_%out_bool
|
|
3644
|
+
__net_sock_v6_eq_lport_%out_bool = load %left+NetSocketAddrV6_port as u16
|
|
3645
|
+
__net_sock_v6_eq_rport_%out_bool = load %right+NetSocketAddrV6_port as u16
|
|
3646
|
+
__net_sock_v6_eq_lflow_%out_bool = load %left+NetSocketAddrV6_flowinfo as u32
|
|
3647
|
+
__net_sock_v6_eq_rflow_%out_bool = load %right+NetSocketAddrV6_flowinfo as u32
|
|
3648
|
+
__net_sock_v6_eq_lscope_%out_bool = load %left+NetSocketAddrV6_scope_id as u32
|
|
3649
|
+
__net_sock_v6_eq_rscope_%out_bool = load %right+NetSocketAddrV6_scope_id as u32
|
|
3650
|
+
__net_sock_v6_eq_port_%out_bool = eq __net_sock_v6_eq_lport_%out_bool, __net_sock_v6_eq_rport_%out_bool
|
|
3651
|
+
__net_sock_v6_eq_flow_%out_bool = eq __net_sock_v6_eq_lflow_%out_bool, __net_sock_v6_eq_rflow_%out_bool
|
|
3652
|
+
__net_sock_v6_eq_scope_%out_bool = eq __net_sock_v6_eq_lscope_%out_bool, __net_sock_v6_eq_rscope_%out_bool
|
|
3653
|
+
__net_sock_v6_eq_meta1_%out_bool = and __net_sock_v6_eq_port_%out_bool, __net_sock_v6_eq_flow_%out_bool
|
|
3654
|
+
__net_sock_v6_eq_meta_%out_bool = and __net_sock_v6_eq_meta1_%out_bool, __net_sock_v6_eq_scope_%out_bool
|
|
3655
|
+
%out_bool = and __net_sock_v6_eq_ip_%out_bool, __net_sock_v6_eq_meta_%out_bool
|
|
3656
|
+
!__net_sock_v6_eq_meta_%out_bool
|
|
3657
|
+
!__net_sock_v6_eq_meta1_%out_bool
|
|
3658
|
+
!__net_sock_v6_eq_scope_%out_bool
|
|
3659
|
+
!__net_sock_v6_eq_flow_%out_bool
|
|
3660
|
+
!__net_sock_v6_eq_port_%out_bool
|
|
3661
|
+
!__net_sock_v6_eq_rscope_%out_bool
|
|
3662
|
+
!__net_sock_v6_eq_lscope_%out_bool
|
|
3663
|
+
!__net_sock_v6_eq_rflow_%out_bool
|
|
3664
|
+
!__net_sock_v6_eq_lflow_%out_bool
|
|
3665
|
+
!__net_sock_v6_eq_rport_%out_bool
|
|
3666
|
+
!__net_sock_v6_eq_lport_%out_bool
|
|
3667
|
+
!__net_sock_v6_eq_ip_%out_bool
|
|
3668
|
+
!__net_sock_v6_eq_rip_%out_bool
|
|
3669
|
+
!__net_sock_v6_eq_lip_%out_bool
|
|
3670
|
+
[END_MACRO]
|
|
3671
|
+
|
|
3672
|
+
[MACRO] NET_SOCKET_ADDR_FROM_V4 %socket_addr, %socket_v4
|
|
3673
|
+
store %socket_addr+NetSocketAddr_tag, NET_IP_ADDR_V4 as u64
|
|
3674
|
+
__net_sock_from_v4_ip_%socket_addr = ptr_add %socket_addr, 8
|
|
3675
|
+
EXPAND NET_SOCKET_ADDR_V4_IP_PTR __net_sock_from_v4_src_%socket_addr, %socket_v4
|
|
3676
|
+
EXPAND NET_SOCKET_ADDR_V4_NEW __net_sock_from_v4_ip_%socket_addr, __net_sock_from_v4_src_%socket_addr, 0
|
|
3677
|
+
__net_sock_from_v4_port_%socket_addr = load %socket_v4+NetSocketAddrV4_port as u16
|
|
3678
|
+
store __net_sock_from_v4_ip_%socket_addr+NetSocketAddrV4_port, __net_sock_from_v4_port_%socket_addr as u16
|
|
3679
|
+
!__net_sock_from_v4_port_%socket_addr
|
|
3680
|
+
!__net_sock_from_v4_src_%socket_addr
|
|
3681
|
+
!__net_sock_from_v4_ip_%socket_addr
|
|
3682
|
+
[END_MACRO]
|
|
3683
|
+
|
|
3684
|
+
[MACRO] NET_SOCKET_ADDR_FROM_V6 %socket_addr, %socket_v6
|
|
3685
|
+
store %socket_addr+NetSocketAddr_tag, NET_IP_ADDR_V6 as u64
|
|
3686
|
+
__net_sock_from_v6_dst_%socket_addr = ptr_add %socket_addr, 8
|
|
3687
|
+
EXPAND NET_SOCKET_ADDR_V6_IP_PTR __net_sock_from_v6_src_ip_%socket_addr, %socket_v6
|
|
3688
|
+
__net_sock_from_v6_port_%socket_addr = load %socket_v6+NetSocketAddrV6_port as u16
|
|
3689
|
+
__net_sock_from_v6_flow_%socket_addr = load %socket_v6+NetSocketAddrV6_flowinfo as u32
|
|
3690
|
+
__net_sock_from_v6_scope_%socket_addr = load %socket_v6+NetSocketAddrV6_scope_id as u32
|
|
3691
|
+
EXPAND NET_SOCKET_ADDR_V6_NEW __net_sock_from_v6_dst_%socket_addr, __net_sock_from_v6_src_ip_%socket_addr, __net_sock_from_v6_port_%socket_addr, __net_sock_from_v6_flow_%socket_addr, __net_sock_from_v6_scope_%socket_addr
|
|
3692
|
+
!__net_sock_from_v6_scope_%socket_addr
|
|
3693
|
+
!__net_sock_from_v6_flow_%socket_addr
|
|
3694
|
+
!__net_sock_from_v6_port_%socket_addr
|
|
3695
|
+
!__net_sock_from_v6_src_ip_%socket_addr
|
|
3696
|
+
!__net_sock_from_v6_dst_%socket_addr
|
|
3697
|
+
[END_MACRO]
|
|
3698
|
+
|
|
3699
|
+
[MACRO] NET_SOCKET_ADDR_IS_IPV4 %out_bool, %socket_addr
|
|
3700
|
+
__net_sock_tag_%out_bool = load %socket_addr+NetSocketAddr_tag as u64
|
|
3701
|
+
%out_bool = eq __net_sock_tag_%out_bool, NET_IP_ADDR_V4
|
|
3702
|
+
!__net_sock_tag_%out_bool
|
|
3703
|
+
[END_MACRO]
|
|
3704
|
+
|
|
3705
|
+
[MACRO] NET_SOCKET_ADDR_IS_IPV6 %out_bool, %socket_addr
|
|
3706
|
+
__net_sock_tag_%out_bool = load %socket_addr+NetSocketAddr_tag as u64
|
|
3707
|
+
%out_bool = eq __net_sock_tag_%out_bool, NET_IP_ADDR_V6
|
|
3708
|
+
!__net_sock_tag_%out_bool
|
|
3709
|
+
[END_MACRO]
|
|
3710
|
+
|
|
3711
|
+
[MACRO] NET_SOCKET_ADDR_PAYLOAD_PTR %out_ptr, %socket_addr
|
|
3712
|
+
%out_ptr = ptr_add %socket_addr, 8
|
|
3713
|
+
[END_MACRO]
|
|
3714
|
+
|
|
3715
|
+
[MACRO] NET_SOCKET_ADDR_FAMILY %out_family, %socket_addr
|
|
3716
|
+
__net_sock_family_tag_%out_family = load %socket_addr+NetSocketAddr_tag as u64
|
|
3717
|
+
__net_sock_family_is_v4_%out_family = eq __net_sock_family_tag_%out_family, NET_IP_ADDR_V4
|
|
3718
|
+
br __net_sock_family_is_v4_%out_family -> L_NET_SOCKET_FAMILY_V4_%out_family, L_NET_SOCKET_FAMILY_V6_%out_family
|
|
3719
|
+
L_NET_SOCKET_FAMILY_V4_%out_family:
|
|
3720
|
+
%out_family = add 0, SA_NET_AF_INET
|
|
3721
|
+
jmp L_NET_SOCKET_FAMILY_DONE_%out_family
|
|
3722
|
+
L_NET_SOCKET_FAMILY_V6_%out_family:
|
|
3723
|
+
%out_family = add 0, SA_NET_AF_INET6
|
|
3724
|
+
jmp L_NET_SOCKET_FAMILY_DONE_%out_family
|
|
3725
|
+
L_NET_SOCKET_FAMILY_DONE_%out_family:
|
|
3726
|
+
!__net_sock_family_is_v4_%out_family
|
|
3727
|
+
!__net_sock_family_tag_%out_family
|
|
3728
|
+
[END_MACRO]
|
|
3729
|
+
|
|
3730
|
+
[MACRO] NET_SOCKET_ADDR_EQ %out_bool, %left, %right
|
|
3731
|
+
__net_sock_eq_ltag_%out_bool = load %left+NetSocketAddr_tag as u64
|
|
3732
|
+
__net_sock_eq_rtag_%out_bool = load %right+NetSocketAddr_tag as u64
|
|
3733
|
+
__net_sock_eq_same_tag_%out_bool = eq __net_sock_eq_ltag_%out_bool, __net_sock_eq_rtag_%out_bool
|
|
3734
|
+
br __net_sock_eq_same_tag_%out_bool -> L_NET_SOCKET_EQ_SAME_%out_bool, L_NET_SOCKET_EQ_DIFF_%out_bool
|
|
3735
|
+
L_NET_SOCKET_EQ_DIFF_%out_bool:
|
|
3736
|
+
%out_bool = add 0, 0
|
|
3737
|
+
jmp L_NET_SOCKET_EQ_DONE_%out_bool
|
|
3738
|
+
L_NET_SOCKET_EQ_SAME_%out_bool:
|
|
3739
|
+
__net_sock_eq_lpayload_%out_bool = ptr_add %left, 8
|
|
3740
|
+
__net_sock_eq_rpayload_%out_bool = ptr_add %right, 8
|
|
3741
|
+
__net_sock_eq_is_v4_%out_bool = eq __net_sock_eq_ltag_%out_bool, NET_IP_ADDR_V4
|
|
3742
|
+
br __net_sock_eq_is_v4_%out_bool -> L_NET_SOCKET_EQ_V4_%out_bool, L_NET_SOCKET_EQ_V6_%out_bool
|
|
3743
|
+
L_NET_SOCKET_EQ_V4_%out_bool:
|
|
3744
|
+
EXPAND NET_SOCKET_ADDR_V4_EQ %out_bool, __net_sock_eq_lpayload_%out_bool, __net_sock_eq_rpayload_%out_bool
|
|
3745
|
+
jmp L_NET_SOCKET_EQ_SAME_DONE_%out_bool
|
|
3746
|
+
L_NET_SOCKET_EQ_V6_%out_bool:
|
|
3747
|
+
EXPAND NET_SOCKET_ADDR_V6_EQ %out_bool, __net_sock_eq_lpayload_%out_bool, __net_sock_eq_rpayload_%out_bool
|
|
3748
|
+
jmp L_NET_SOCKET_EQ_SAME_DONE_%out_bool
|
|
3749
|
+
L_NET_SOCKET_EQ_SAME_DONE_%out_bool:
|
|
3750
|
+
!__net_sock_eq_is_v4_%out_bool
|
|
3751
|
+
!__net_sock_eq_rpayload_%out_bool
|
|
3752
|
+
!__net_sock_eq_lpayload_%out_bool
|
|
3753
|
+
jmp L_NET_SOCKET_EQ_DONE_%out_bool
|
|
3754
|
+
L_NET_SOCKET_EQ_DONE_%out_bool:
|
|
3755
|
+
!__net_sock_eq_same_tag_%out_bool
|
|
3756
|
+
!__net_sock_eq_rtag_%out_bool
|
|
3757
|
+
!__net_sock_eq_ltag_%out_bool
|
|
3758
|
+
[END_MACRO]
|
|
3759
|
+
|
|
3760
|
+
[MACRO] NET_SOCKET_ADDR_NEW %socket_addr, %ipaddr, %port
|
|
3761
|
+
__net_sock_new_tag_%socket_addr = load %ipaddr+NetIpAddr_tag as u64
|
|
3762
|
+
__net_sock_new_payload_%socket_addr = ptr_add %socket_addr, 8
|
|
3763
|
+
__net_sock_new_ip_payload_%socket_addr = ptr_add %ipaddr, 8
|
|
3764
|
+
store %socket_addr+NetSocketAddr_tag, __net_sock_new_tag_%socket_addr as u64
|
|
3765
|
+
__net_sock_new_is_v4_%socket_addr = eq __net_sock_new_tag_%socket_addr, NET_IP_ADDR_V4
|
|
3766
|
+
br __net_sock_new_is_v4_%socket_addr -> L_NET_SOCKET_NEW_V4_%socket_addr_%ipaddr, L_NET_SOCKET_NEW_V6_%socket_addr_%ipaddr
|
|
3767
|
+
L_NET_SOCKET_NEW_V4_%socket_addr_%ipaddr:
|
|
3768
|
+
EXPAND NET_SOCKET_ADDR_V4_NEW __net_sock_new_payload_%socket_addr, __net_sock_new_ip_payload_%socket_addr, %port
|
|
3769
|
+
jmp L_NET_SOCKET_NEW_DONE_%socket_addr_%ipaddr
|
|
3770
|
+
L_NET_SOCKET_NEW_V6_%socket_addr_%ipaddr:
|
|
3771
|
+
EXPAND NET_SOCKET_ADDR_V6_NEW __net_sock_new_payload_%socket_addr, __net_sock_new_ip_payload_%socket_addr, %port, 0, 0
|
|
3772
|
+
jmp L_NET_SOCKET_NEW_DONE_%socket_addr_%ipaddr
|
|
3773
|
+
L_NET_SOCKET_NEW_DONE_%socket_addr_%ipaddr:
|
|
3774
|
+
!__net_sock_new_is_v4_%socket_addr
|
|
3775
|
+
!__net_sock_new_ip_payload_%socket_addr
|
|
3776
|
+
!__net_sock_new_payload_%socket_addr
|
|
3777
|
+
!__net_sock_new_tag_%socket_addr
|
|
3778
|
+
[END_MACRO]
|
|
3779
|
+
|
|
3780
|
+
// Rust-style Default for SocketAddr: unspecified IPv4 with port 0.
|
|
3781
|
+
[MACRO] NET_SOCKET_ADDR_DEFAULT %socket_addr
|
|
3782
|
+
__net_sock_default_ip_%socket_addr = stack_alloc NetIpAddr_SIZE
|
|
3783
|
+
EXPAND NET_IP_ADDR_DEFAULT __net_sock_default_ip_%socket_addr
|
|
3784
|
+
EXPAND NET_SOCKET_ADDR_NEW %socket_addr, __net_sock_default_ip_%socket_addr, 0
|
|
3785
|
+
[END_MACRO]
|
|
3786
|
+
|
|
3787
|
+
[MACRO] NET_SOCKET_ADDR_IP %out_ipaddr, %socket_addr
|
|
3788
|
+
__net_sock_ip_tag_%out_ipaddr = load %socket_addr+NetSocketAddr_tag as u64
|
|
3789
|
+
__net_sock_ip_payload_%out_ipaddr = ptr_add %socket_addr, 8
|
|
3790
|
+
__net_sock_ip_is_v4_%out_ipaddr = eq __net_sock_ip_tag_%out_ipaddr, NET_IP_ADDR_V4
|
|
3791
|
+
br __net_sock_ip_is_v4_%out_ipaddr -> L_NET_SOCKET_IP_V4_%out_ipaddr, L_NET_SOCKET_IP_V6_%out_ipaddr
|
|
3792
|
+
L_NET_SOCKET_IP_V4_%out_ipaddr:
|
|
3793
|
+
EXPAND NET_SOCKET_ADDR_V4_IP_PTR __net_sock_ip_v4_%out_ipaddr, __net_sock_ip_payload_%out_ipaddr
|
|
3794
|
+
EXPAND NET_IP_ADDR_V4_NEW %out_ipaddr, __net_sock_ip_v4_%out_ipaddr
|
|
3795
|
+
!__net_sock_ip_v4_%out_ipaddr
|
|
3796
|
+
jmp L_NET_SOCKET_IP_DONE_%out_ipaddr
|
|
3797
|
+
L_NET_SOCKET_IP_V6_%out_ipaddr:
|
|
3798
|
+
EXPAND NET_SOCKET_ADDR_V6_IP_PTR __net_sock_ip_v6_%out_ipaddr, __net_sock_ip_payload_%out_ipaddr
|
|
3799
|
+
EXPAND NET_IP_ADDR_V6_NEW %out_ipaddr, __net_sock_ip_v6_%out_ipaddr
|
|
3800
|
+
!__net_sock_ip_v6_%out_ipaddr
|
|
3801
|
+
jmp L_NET_SOCKET_IP_DONE_%out_ipaddr
|
|
3802
|
+
L_NET_SOCKET_IP_DONE_%out_ipaddr:
|
|
3803
|
+
!__net_sock_ip_is_v4_%out_ipaddr
|
|
3804
|
+
!__net_sock_ip_payload_%out_ipaddr
|
|
3805
|
+
!__net_sock_ip_tag_%out_ipaddr
|
|
3806
|
+
[END_MACRO]
|
|
3807
|
+
|
|
3808
|
+
[MACRO] NET_SOCKET_ADDR_PORT %out_port, %socket_addr
|
|
3809
|
+
__net_sock_port_tag_%out_port = load %socket_addr+NetSocketAddr_tag as u64
|
|
3810
|
+
__net_sock_port_payload_%out_port = ptr_add %socket_addr, 8
|
|
3811
|
+
__net_sock_port_is_v4_%out_port = eq __net_sock_port_tag_%out_port, NET_IP_ADDR_V4
|
|
3812
|
+
br __net_sock_port_is_v4_%out_port -> L_NET_SOCKET_PORT_V4_%out_port, L_NET_SOCKET_PORT_V6_%out_port
|
|
3813
|
+
L_NET_SOCKET_PORT_V4_%out_port:
|
|
3814
|
+
EXPAND NET_SOCKET_ADDR_V4_PORT %out_port, __net_sock_port_payload_%out_port
|
|
3815
|
+
jmp L_NET_SOCKET_PORT_DONE_%out_port
|
|
3816
|
+
L_NET_SOCKET_PORT_V6_%out_port:
|
|
3817
|
+
EXPAND NET_SOCKET_ADDR_V6_PORT %out_port, __net_sock_port_payload_%out_port
|
|
3818
|
+
jmp L_NET_SOCKET_PORT_DONE_%out_port
|
|
3819
|
+
L_NET_SOCKET_PORT_DONE_%out_port:
|
|
3820
|
+
!__net_sock_port_is_v4_%out_port
|
|
3821
|
+
!__net_sock_port_payload_%out_port
|
|
3822
|
+
!__net_sock_port_tag_%out_port
|
|
3823
|
+
[END_MACRO]
|
|
3824
|
+
|
|
3825
|
+
[MACRO] NET_SOCKET_ADDR_SET_PORT %socket_addr, %port
|
|
3826
|
+
__net_sock_set_port_tag_%socket_addr = load %socket_addr+NetSocketAddr_tag as u64
|
|
3827
|
+
__net_sock_set_port_payload_%socket_addr = ptr_add %socket_addr, 8
|
|
3828
|
+
__net_sock_set_port_is_v4_%socket_addr = eq __net_sock_set_port_tag_%socket_addr, NET_IP_ADDR_V4
|
|
3829
|
+
br __net_sock_set_port_is_v4_%socket_addr -> L_NET_SOCKET_SET_PORT_V4_%socket_addr, L_NET_SOCKET_SET_PORT_V6_%socket_addr
|
|
3830
|
+
L_NET_SOCKET_SET_PORT_V4_%socket_addr:
|
|
3831
|
+
EXPAND NET_SOCKET_ADDR_V4_SET_PORT __net_sock_set_port_payload_%socket_addr, %port
|
|
3832
|
+
jmp L_NET_SOCKET_SET_PORT_DONE_%socket_addr
|
|
3833
|
+
L_NET_SOCKET_SET_PORT_V6_%socket_addr:
|
|
3834
|
+
EXPAND NET_SOCKET_ADDR_V6_SET_PORT __net_sock_set_port_payload_%socket_addr, %port
|
|
3835
|
+
jmp L_NET_SOCKET_SET_PORT_DONE_%socket_addr
|
|
3836
|
+
L_NET_SOCKET_SET_PORT_DONE_%socket_addr:
|
|
3837
|
+
!__net_sock_set_port_is_v4_%socket_addr
|
|
3838
|
+
!__net_sock_set_port_payload_%socket_addr
|
|
3839
|
+
!__net_sock_set_port_tag_%socket_addr
|
|
3840
|
+
[END_MACRO]
|
|
3841
|
+
|
|
3842
|
+
[MACRO] NET_SOCKET_ADDR_SET_IP %socket_addr, %ipaddr
|
|
3843
|
+
__net_sock_set_ip_old_tag_%socket_addr = load %socket_addr+NetSocketAddr_tag as u64
|
|
3844
|
+
__net_sock_set_ip_new_tag_%socket_addr = load %ipaddr+NetIpAddr_tag as u64
|
|
3845
|
+
__net_sock_set_ip_old_payload_%socket_addr = ptr_add %socket_addr, 8
|
|
3846
|
+
__net_sock_set_ip_new_payload_%socket_addr = ptr_add %ipaddr, 8
|
|
3847
|
+
__net_sock_set_ip_same_%socket_addr = eq __net_sock_set_ip_old_tag_%socket_addr, __net_sock_set_ip_new_tag_%socket_addr
|
|
3848
|
+
br __net_sock_set_ip_same_%socket_addr -> L_NET_SOCKET_SET_IP_SAME_%socket_addr, L_NET_SOCKET_SET_IP_REBUILD_%socket_addr
|
|
3849
|
+
L_NET_SOCKET_SET_IP_SAME_%socket_addr:
|
|
3850
|
+
__net_sock_set_ip_is_v4_%socket_addr = eq __net_sock_set_ip_new_tag_%socket_addr, NET_IP_ADDR_V4
|
|
3851
|
+
br __net_sock_set_ip_is_v4_%socket_addr -> L_NET_SOCKET_SET_IP_SAME_V4_%socket_addr, L_NET_SOCKET_SET_IP_SAME_V6_%socket_addr
|
|
3852
|
+
L_NET_SOCKET_SET_IP_SAME_V4_%socket_addr:
|
|
3853
|
+
EXPAND NET_SOCKET_ADDR_V4_SET_IP __net_sock_set_ip_old_payload_%socket_addr, __net_sock_set_ip_new_payload_%socket_addr
|
|
3854
|
+
jmp L_NET_SOCKET_SET_IP_DONE_%socket_addr
|
|
3855
|
+
L_NET_SOCKET_SET_IP_SAME_V6_%socket_addr:
|
|
3856
|
+
EXPAND NET_SOCKET_ADDR_V6_SET_IP __net_sock_set_ip_old_payload_%socket_addr, __net_sock_set_ip_new_payload_%socket_addr
|
|
3857
|
+
jmp L_NET_SOCKET_SET_IP_DONE_%socket_addr
|
|
3858
|
+
L_NET_SOCKET_SET_IP_REBUILD_%socket_addr:
|
|
3859
|
+
EXPAND NET_SOCKET_ADDR_PORT __net_sock_set_ip_port_%socket_addr, %socket_addr
|
|
3860
|
+
EXPAND NET_SOCKET_ADDR_NEW %socket_addr, %ipaddr, __net_sock_set_ip_port_%socket_addr
|
|
3861
|
+
!__net_sock_set_ip_port_%socket_addr
|
|
3862
|
+
jmp L_NET_SOCKET_SET_IP_DONE_%socket_addr
|
|
3863
|
+
L_NET_SOCKET_SET_IP_DONE_%socket_addr:
|
|
3864
|
+
!__net_sock_set_ip_is_v4_%socket_addr
|
|
3865
|
+
!__net_sock_set_ip_same_%socket_addr
|
|
3866
|
+
!__net_sock_set_ip_new_payload_%socket_addr
|
|
3867
|
+
!__net_sock_set_ip_old_payload_%socket_addr
|
|
3868
|
+
!__net_sock_set_ip_new_tag_%socket_addr
|
|
3869
|
+
!__net_sock_set_ip_old_tag_%socket_addr
|
|
3870
|
+
[END_MACRO]
|
|
3871
|
+
|
|
3872
|
+
[MACRO] NET_SOCKET_ADDR_FLOWINFO %out_ok, %out_flowinfo, %socket_addr
|
|
3873
|
+
__net_sock_flow_tag_%out_ok = load %socket_addr+NetSocketAddr_tag as u64
|
|
3874
|
+
__net_sock_flow_payload_%out_ok = ptr_add %socket_addr, 8
|
|
3875
|
+
__net_sock_flow_is_v6_%out_ok = eq __net_sock_flow_tag_%out_ok, NET_IP_ADDR_V6
|
|
3876
|
+
br __net_sock_flow_is_v6_%out_ok -> L_NET_SOCKET_FLOW_V6_%out_ok, L_NET_SOCKET_FLOW_V4_%out_ok
|
|
3877
|
+
L_NET_SOCKET_FLOW_V6_%out_ok:
|
|
3878
|
+
%out_ok = add 0, 1
|
|
3879
|
+
EXPAND NET_SOCKET_ADDR_V6_FLOWINFO %out_flowinfo, __net_sock_flow_payload_%out_ok
|
|
3880
|
+
jmp L_NET_SOCKET_FLOW_DONE_%out_ok
|
|
3881
|
+
L_NET_SOCKET_FLOW_V4_%out_ok:
|
|
3882
|
+
%out_ok = add 0, 0
|
|
3883
|
+
%out_flowinfo = add 0, 0
|
|
3884
|
+
jmp L_NET_SOCKET_FLOW_DONE_%out_ok
|
|
3885
|
+
L_NET_SOCKET_FLOW_DONE_%out_ok:
|
|
3886
|
+
!__net_sock_flow_is_v6_%out_ok
|
|
3887
|
+
!__net_sock_flow_payload_%out_ok
|
|
3888
|
+
!__net_sock_flow_tag_%out_ok
|
|
3889
|
+
[END_MACRO]
|
|
3890
|
+
|
|
3891
|
+
[MACRO] NET_SOCKET_ADDR_SET_FLOWINFO %out_ok, %socket_addr, %flowinfo
|
|
3892
|
+
__net_sock_set_flow_tag_%out_ok = load %socket_addr+NetSocketAddr_tag as u64
|
|
3893
|
+
__net_sock_set_flow_payload_%out_ok = ptr_add %socket_addr, 8
|
|
3894
|
+
__net_sock_set_flow_is_v6_%out_ok = eq __net_sock_set_flow_tag_%out_ok, NET_IP_ADDR_V6
|
|
3895
|
+
br __net_sock_set_flow_is_v6_%out_ok -> L_NET_SOCKET_SET_FLOW_V6_%out_ok, L_NET_SOCKET_SET_FLOW_V4_%out_ok
|
|
3896
|
+
L_NET_SOCKET_SET_FLOW_V6_%out_ok:
|
|
3897
|
+
EXPAND NET_SOCKET_ADDR_V6_SET_FLOWINFO __net_sock_set_flow_payload_%out_ok, %flowinfo
|
|
3898
|
+
%out_ok = add 0, 1
|
|
3899
|
+
jmp L_NET_SOCKET_SET_FLOW_DONE_%out_ok
|
|
3900
|
+
L_NET_SOCKET_SET_FLOW_V4_%out_ok:
|
|
3901
|
+
%out_ok = add 0, 0
|
|
3902
|
+
jmp L_NET_SOCKET_SET_FLOW_DONE_%out_ok
|
|
3903
|
+
L_NET_SOCKET_SET_FLOW_DONE_%out_ok:
|
|
3904
|
+
!__net_sock_set_flow_is_v6_%out_ok
|
|
3905
|
+
!__net_sock_set_flow_payload_%out_ok
|
|
3906
|
+
!__net_sock_set_flow_tag_%out_ok
|
|
3907
|
+
[END_MACRO]
|
|
3908
|
+
|
|
3909
|
+
[MACRO] NET_SOCKET_ADDR_SCOPE_ID %out_ok, %out_scope_id, %socket_addr
|
|
3910
|
+
__net_sock_scope_tag_%out_ok = load %socket_addr+NetSocketAddr_tag as u64
|
|
3911
|
+
__net_sock_scope_payload_%out_ok = ptr_add %socket_addr, 8
|
|
3912
|
+
__net_sock_scope_is_v6_%out_ok = eq __net_sock_scope_tag_%out_ok, NET_IP_ADDR_V6
|
|
3913
|
+
br __net_sock_scope_is_v6_%out_ok -> L_NET_SOCKET_SCOPE_V6_%out_ok, L_NET_SOCKET_SCOPE_V4_%out_ok
|
|
3914
|
+
L_NET_SOCKET_SCOPE_V6_%out_ok:
|
|
3915
|
+
%out_ok = add 0, 1
|
|
3916
|
+
EXPAND NET_SOCKET_ADDR_V6_SCOPE_ID %out_scope_id, __net_sock_scope_payload_%out_ok
|
|
3917
|
+
jmp L_NET_SOCKET_SCOPE_DONE_%out_ok
|
|
3918
|
+
L_NET_SOCKET_SCOPE_V4_%out_ok:
|
|
3919
|
+
%out_ok = add 0, 0
|
|
3920
|
+
%out_scope_id = add 0, 0
|
|
3921
|
+
jmp L_NET_SOCKET_SCOPE_DONE_%out_ok
|
|
3922
|
+
L_NET_SOCKET_SCOPE_DONE_%out_ok:
|
|
3923
|
+
!__net_sock_scope_is_v6_%out_ok
|
|
3924
|
+
!__net_sock_scope_payload_%out_ok
|
|
3925
|
+
!__net_sock_scope_tag_%out_ok
|
|
3926
|
+
[END_MACRO]
|
|
3927
|
+
|
|
3928
|
+
[MACRO] NET_SOCKET_ADDR_SET_SCOPE_ID %out_ok, %socket_addr, %scope_id
|
|
3929
|
+
__net_sock_set_scope_tag_%out_ok = load %socket_addr+NetSocketAddr_tag as u64
|
|
3930
|
+
__net_sock_set_scope_payload_%out_ok = ptr_add %socket_addr, 8
|
|
3931
|
+
__net_sock_set_scope_is_v6_%out_ok = eq __net_sock_set_scope_tag_%out_ok, NET_IP_ADDR_V6
|
|
3932
|
+
br __net_sock_set_scope_is_v6_%out_ok -> L_NET_SOCKET_SET_SCOPE_V6_%out_ok, L_NET_SOCKET_SET_SCOPE_V4_%out_ok
|
|
3933
|
+
L_NET_SOCKET_SET_SCOPE_V6_%out_ok:
|
|
3934
|
+
EXPAND NET_SOCKET_ADDR_V6_SET_SCOPE_ID __net_sock_set_scope_payload_%out_ok, %scope_id
|
|
3935
|
+
%out_ok = add 0, 1
|
|
3936
|
+
jmp L_NET_SOCKET_SET_SCOPE_DONE_%out_ok
|
|
3937
|
+
L_NET_SOCKET_SET_SCOPE_V4_%out_ok:
|
|
3938
|
+
%out_ok = add 0, 0
|
|
3939
|
+
jmp L_NET_SOCKET_SET_SCOPE_DONE_%out_ok
|
|
3940
|
+
L_NET_SOCKET_SET_SCOPE_DONE_%out_ok:
|
|
3941
|
+
!__net_sock_set_scope_is_v6_%out_ok
|
|
3942
|
+
!__net_sock_set_scope_payload_%out_ok
|
|
3943
|
+
!__net_sock_set_scope_tag_%out_ok
|
|
3944
|
+
[END_MACRO]
|
|
3945
|
+
|
|
3946
|
+
// Explicit byte-oriented aliases over the existing stream/datagram ABI.
|
|
3947
|
+
[MACRO] NET_TCP_STREAM_READ_BYTES %out_status, %out_len, %stream, %buf, %cap
|
|
3948
|
+
EXPAND NET_TCP_STREAM_READ %out_status, %out_len, %stream, %buf, %cap
|
|
3949
|
+
[END_MACRO]
|
|
3950
|
+
|
|
3951
|
+
[MACRO] NET_TCP_STREAM_PEEK_BYTES %out_status, %out_len, %stream, %buf, %cap
|
|
3952
|
+
EXPAND NET_TCP_STREAM_PEEK %out_status, %out_len, %stream, %buf, %cap
|
|
3953
|
+
[END_MACRO]
|
|
3954
|
+
|
|
3955
|
+
[MACRO] NET_TCP_STREAM_WRITE_BYTES %out_status, %out_len, %stream, %buf, %len
|
|
3956
|
+
EXPAND NET_TCP_STREAM_WRITE %out_status, %out_len, %stream, %buf, %len
|
|
3957
|
+
[END_MACRO]
|
|
3958
|
+
|
|
3959
|
+
[MACRO] NET_TCP_STREAM_WRITE_ALL_BYTES %out_status, %stream, %buf, %len
|
|
3960
|
+
EXPAND NET_TCP_STREAM_WRITE_ALL %out_status, %stream, %buf, %len
|
|
3961
|
+
[END_MACRO]
|
|
3962
|
+
|
|
3963
|
+
[MACRO] NET_UNIX_STREAM_PEEK_BYTES %out_status, %out_len, %stream, %buf, %cap
|
|
3964
|
+
EXPAND NET_UNIX_STREAM_PEEK %out_status, %out_len, %stream, %buf, %cap
|
|
3965
|
+
[END_MACRO]
|
|
3966
|
+
|
|
3967
|
+
[MACRO] NET_UNIX_DATAGRAM_SEND_BYTES %out_status, %out_len, %socket, %buf, %len
|
|
3968
|
+
EXPAND NET_UNIX_DATAGRAM_SEND %out_status, %out_len, %socket, %buf, %len
|
|
3969
|
+
[END_MACRO]
|
|
3970
|
+
|
|
3971
|
+
[MACRO] NET_UNIX_DATAGRAM_RECV_BYTES %out_status, %out_len, %socket, %buf, %cap
|
|
3972
|
+
EXPAND NET_UNIX_DATAGRAM_RECV %out_status, %out_len, %socket, %buf, %cap
|
|
3973
|
+
[END_MACRO]
|
|
3974
|
+
|
|
3975
|
+
[MACRO] NET_UDP_SEND_BYTES %out_status, %out_len, %socket, %buf, %len
|
|
3976
|
+
EXPAND NET_UDP_SEND %out_status, %out_len, %socket, %buf, %len
|
|
3977
|
+
[END_MACRO]
|
|
3978
|
+
|
|
3979
|
+
[MACRO] NET_UDP_RECV_BYTES %out_status, %out_len, %socket, %buf, %cap
|
|
3980
|
+
EXPAND NET_UDP_RECV %out_status, %out_len, %socket, %buf, %cap
|
|
3981
|
+
[END_MACRO]
|
|
3982
|
+
|
|
3983
|
+
[MACRO] NET_UDP_PEEK_BYTES %out_status, %out_len, %socket, %buf, %cap
|
|
3984
|
+
EXPAND NET_UDP_PEEK %out_status, %out_len, %socket, %buf, %cap
|
|
3985
|
+
[END_MACRO]
|
|
3986
|
+
|
|
3987
|
+
[MACRO] NET_UDP_SEND_TO_BYTES %out_status, %out_len, %socket, %buf, %len, %host, %host_len, %port
|
|
3988
|
+
EXPAND NET_UDP_SEND_TO %out_status, %out_len, %socket, %buf, %len, %host, %host_len, %port
|
|
3989
|
+
[END_MACRO]
|
|
3990
|
+
|
|
3991
|
+
[MACRO] NET_UDP_RECV_FROM_BYTES %out_status, %out_len, %out_addr, %socket, %buf, %cap
|
|
3992
|
+
EXPAND NET_UDP_RECV_FROM %out_status, %out_len, %out_addr, %socket, %buf, %cap
|
|
3993
|
+
[END_MACRO]
|
|
3994
|
+
|
|
3995
|
+
[MACRO] NET_UDP_PEEK_FROM_BYTES %out_status, %out_len, %out_addr, %socket, %buf, %cap
|
|
3996
|
+
EXPAND NET_UDP_PEEK_FROM %out_status, %out_len, %out_addr, %socket, %buf, %cap
|
|
3997
|
+
[END_MACRO]
|
|
3998
|
+
|
|
3999
|
+
// Rust-style spelling aliases for platform socket option helpers.
|
|
4000
|
+
[MACRO] NET_TCP_LISTENER_SET_REUSE_ADDR %out_status, %listener, %enabled
|
|
4001
|
+
EXPAND NET_TCP_LISTENER_SET_REUSEADDR %out_status, %listener, %enabled
|
|
4002
|
+
[END_MACRO]
|
|
4003
|
+
|
|
4004
|
+
[MACRO] NET_TCP_LISTENER_SET_REUSE_PORT %out_status, %listener, %enabled
|
|
4005
|
+
EXPAND NET_TCP_LISTENER_SET_REUSEPORT %out_status, %listener, %enabled
|
|
4006
|
+
[END_MACRO]
|
|
4007
|
+
|
|
4008
|
+
[MACRO] NET_TCP_STREAM_SET_QUICK_ACK %out_status, %stream, %enabled
|
|
4009
|
+
EXPAND NET_TCP_STREAM_SET_QUICKACK %out_status, %stream, %enabled
|
|
4010
|
+
[END_MACRO]
|
|
4011
|
+
|
|
4012
|
+
[MACRO] NET_TCP_STREAM_QUICK_ACK %out_status, %out_enabled, %stream
|
|
4013
|
+
EXPAND NET_TCP_STREAM_QUICKACK %out_status, %out_enabled, %stream
|
|
4014
|
+
[END_MACRO]
|
|
4015
|
+
|
|
4016
|
+
[MACRO] NET_TCP_STREAM_SET_DEFER_ACCEPT %out_status, %stream, %seconds
|
|
4017
|
+
EXPAND NET_TCP_STREAM_SET_DEFERACCEPT %out_status, %stream, %seconds
|
|
4018
|
+
[END_MACRO]
|
|
4019
|
+
|
|
4020
|
+
[MACRO] NET_TCP_STREAM_DEFER_ACCEPT %out_status, %out_seconds, %stream
|
|
4021
|
+
EXPAND NET_TCP_STREAM_DEFERACCEPT %out_status, %out_seconds, %stream
|
|
4022
|
+
[END_MACRO]
|
|
4023
|
+
|
|
4024
|
+
[MACRO] NET_TCP_STREAM_SET_KEEP_ALIVE %out_status, %stream, %enabled
|
|
4025
|
+
EXPAND NET_TCP_STREAM_SET_KEEPALIVE %out_status, %stream, %enabled
|
|
4026
|
+
[END_MACRO]
|
|
4027
|
+
|
|
4028
|
+
[MACRO] NET_TCP_STREAM_SET_KEEP_ALIVE_PARAMS %out_status, %stream, %idle_secs, %intvl_secs, %cnt
|
|
4029
|
+
EXPAND NET_TCP_STREAM_SET_KEEPALIVE_PARAMS %out_status, %stream, %idle_secs, %intvl_secs, %cnt
|
|
4030
|
+
[END_MACRO]
|
|
4031
|
+
// Convert the public SA status code into the stable Rust-style ErrorKind
|
|
4032
|
+
// discriminator. Network APIs expose SA status codes; take_error values are
|
|
4033
|
+
// raw errno/WSA values and intentionally are not accepted here.
|
|
4034
|
+
|
|
4035
|
+
// Rust-style stable network error code facade over public SA status values.
|
|
4036
|
+
[MACRO] NET_ERROR_CODE_FROM_STATUS %out_code, %status
|
|
4037
|
+
%out_code = call @sa_std_net_error_code_from_status(%status)
|
|
4038
|
+
[END_MACRO]
|
|
4039
|
+
|
|
4040
|
+
[MACRO] NET_TCP_CONNECT_TIMEOUT_ALL %out_status, %out_stream, %host, %host_len, %port, %timeout_ns
|
|
4041
|
+
__net_tcp_connect_timeout_all_handle_%out_status = stack_alloc 8
|
|
4042
|
+
%out_status = call @sa_std_net_tcp_connect_timeout_all(&%host, %host_len, %port, %timeout_ns, &__net_tcp_connect_timeout_all_handle_%out_status)
|
|
4043
|
+
%out_stream = load __net_tcp_connect_timeout_all_handle_%out_status+0 as u64
|
|
4044
|
+
[END_MACRO]
|
|
4045
|
+
|
|
4046
|
+
[MACRO] NET_TCP_CONNECT_TIMEOUT %out_status, %out_stream, %host, %host_len, %port, %timeout_ns
|
|
4047
|
+
__net_tcp_connect_timeout_handle_%out_status = stack_alloc 8
|
|
4048
|
+
%out_status = call @sa_std_net_tcp_connect_timeout(&%host, %host_len, %port, %timeout_ns, &__net_tcp_connect_timeout_handle_%out_status)
|
|
4049
|
+
%out_stream = load __net_tcp_connect_timeout_handle_%out_status+0 as u64
|
|
4050
|
+
[END_MACRO]
|
|
4051
|
+
|
|
4052
|
+
[MACRO] NET_TCP_CONNECT_TIMEOUT_ADDR %out_status, %out_stream, %addr, %timeout_ns
|
|
4053
|
+
__net_tcp_connect_timeout_addr_handle_%out_status = stack_alloc 8
|
|
4054
|
+
%out_status = call @sa_std_net_tcp_connect_timeout_addr(%addr, %timeout_ns, &__net_tcp_connect_timeout_addr_handle_%out_status)
|
|
4055
|
+
%out_stream = load __net_tcp_connect_timeout_addr_handle_%out_status+0 as u64
|
|
4056
|
+
[END_MACRO]
|
|
4057
|
+
|
|
4058
|
+
[MACRO] NET_ERROR_CODE_FROM_POSIX_ERRNO %out_code, %errno
|
|
4059
|
+
%out_code = call @sa_std_net_error_code_from_posix_errno(%errno)
|
|
4060
|
+
[END_MACRO]
|
|
4061
|
+
|
|
4062
|
+
[MACRO] NET_ERROR_CODE_FROM_WSA_ERROR %out_code, %error
|
|
4063
|
+
%out_code = call @sa_std_net_error_code_from_wsa_error(%error)
|
|
4064
|
+
[END_MACRO]
|
|
4065
|
+
|
|
4066
|
+
[MACRO] NET_ERROR_CODE_NAME %out_status, %code, %out_ptr, %out_cap, %out_len
|
|
4067
|
+
%out_status = call @sa_std_net_error_code_name(%code, %out_ptr, %out_cap, %out_len)
|
|
4068
|
+
[END_MACRO]
|
|
4069
|
+
|
|
4070
|
+
[MACRO] NET_ERROR_PLATFORM %out_platform
|
|
4071
|
+
%out_platform = call @sa_std_net_error_platform()
|
|
4072
|
+
[END_MACRO]
|
|
4073
|
+
|
|
4074
|
+
[MACRO] NET_ERROR_CODE_FROM_NATIVE_ERROR %out_code, %error
|
|
4075
|
+
%out_code = call @sa_std_net_error_code_from_native_error(%error)
|
|
4076
|
+
[END_MACRO]
|
|
4077
|
+
|
|
4078
|
+
[MACRO] NET_ERROR_NEW %error_ptr, %code, %platform, %raw, %status
|
|
4079
|
+
store %error_ptr+SaNetError_code, %code as i32
|
|
4080
|
+
store %error_ptr+SaNetError_platform, %platform as i32
|
|
4081
|
+
store %error_ptr+SaNetError_raw, %raw as i32
|
|
4082
|
+
store %error_ptr+SaNetError_status, %status as i32
|
|
4083
|
+
[END_MACRO]
|
|
4084
|
+
|
|
4085
|
+
[MACRO] NET_ERROR_FROM_STATUS %error_ptr, %status
|
|
4086
|
+
EXPAND NET_ERROR_CODE_FROM_STATUS __net_error_status_code_%error_ptr, %status
|
|
4087
|
+
EXPAND NET_ERROR_NEW %error_ptr, __net_error_status_code_%error_ptr, SA_NET_ERROR_PLATFORM_NONE, 0, %status
|
|
4088
|
+
!__net_error_status_code_%error_ptr
|
|
4089
|
+
[END_MACRO]
|
|
4090
|
+
|
|
4091
|
+
[MACRO] NET_ERROR_FROM_NATIVE %error_ptr, %raw
|
|
4092
|
+
EXPAND NET_ERROR_PLATFORM __net_error_native_platform_%error_ptr
|
|
4093
|
+
EXPAND NET_ERROR_CODE_FROM_NATIVE_ERROR __net_error_native_code_%error_ptr, %raw
|
|
4094
|
+
EXPAND NET_ERROR_NEW %error_ptr, __net_error_native_code_%error_ptr, __net_error_native_platform_%error_ptr, %raw, SA_NET_STATUS_NET
|
|
4095
|
+
!__net_error_native_code_%error_ptr
|
|
4096
|
+
!__net_error_native_platform_%error_ptr
|
|
4097
|
+
[END_MACRO]
|
|
4098
|
+
|
|
4099
|
+
[MACRO] NET_ERROR_KIND %out_code, %error_ptr
|
|
4100
|
+
%out_code = load %error_ptr+SaNetError_code as i32
|
|
4101
|
+
[END_MACRO]
|
|
4102
|
+
|
|
4103
|
+
[MACRO] NET_ERROR_PLATFORM_OF %out_platform, %error_ptr
|
|
4104
|
+
%out_platform = load %error_ptr+SaNetError_platform as i32
|
|
4105
|
+
[END_MACRO]
|
|
4106
|
+
|
|
4107
|
+
[MACRO] NET_ERROR_RAW_OS_ERROR %out_has, %out_raw, %error_ptr
|
|
4108
|
+
__net_error_raw_platform_%out_has = load %error_ptr+SaNetError_platform as i32
|
|
4109
|
+
%out_raw = load %error_ptr+SaNetError_raw as i32
|
|
4110
|
+
%out_has = ne __net_error_raw_platform_%out_has, SA_NET_ERROR_PLATFORM_NONE
|
|
4111
|
+
!__net_error_raw_platform_%out_has
|
|
4112
|
+
[END_MACRO]
|
|
4113
|
+
|
|
4114
|
+
[MACRO] NET_ERROR_STATUS %out_status, %error_ptr
|
|
4115
|
+
%out_status = load %error_ptr+SaNetError_status as i32
|
|
4116
|
+
[END_MACRO]
|
|
4117
|
+
|
|
4118
|
+
[MACRO] NET_ERROR_IS_OK %out_bool, %error_ptr
|
|
4119
|
+
__net_error_ok_code_%out_bool = load %error_ptr+SaNetError_code as i32
|
|
4120
|
+
%out_bool = eq __net_error_ok_code_%out_bool, SA_NET_ERROR_CODE_OK
|
|
4121
|
+
!__net_error_ok_code_%out_bool
|
|
4122
|
+
[END_MACRO]
|
|
4123
|
+
[MACRO] NET_ERROR_KIND_FROM_STATUS %out_kind, %status
|
|
4124
|
+
__net_kind_invalid_arg_%out_kind = eq %status, SA_NET_STATUS_INVALID_ARGUMENT
|
|
4125
|
+
br __net_kind_invalid_arg_%out_kind -> L_NET_KIND_INVALID_ARG_%out_kind, L_NET_KIND_INVALID_HANDLE_%out_kind
|
|
4126
|
+
L_NET_KIND_INVALID_ARG_%out_kind:
|
|
4127
|
+
%out_kind = add 0, IO_ERROR_KIND_INVALID_INPUT
|
|
4128
|
+
!__net_kind_invalid_arg_%out_kind
|
|
4129
|
+
jmp L_NET_KIND_END_%out_kind
|
|
4130
|
+
L_NET_KIND_INVALID_HANDLE_%out_kind:
|
|
4131
|
+
__net_kind_invalid_handle_%out_kind = eq %status, SA_NET_STATUS_INVALID_HANDLE
|
|
4132
|
+
br __net_kind_invalid_handle_%out_kind -> L_NET_KIND_INVALID_HANDLE_VALUE_%out_kind, L_NET_KIND_NOT_FOUND_%out_kind
|
|
4133
|
+
L_NET_KIND_INVALID_HANDLE_VALUE_%out_kind:
|
|
4134
|
+
%out_kind = add 0, IO_ERROR_KIND_NOT_CONNECTED
|
|
4135
|
+
!__net_kind_invalid_handle_%out_kind
|
|
4136
|
+
!__net_kind_invalid_arg_%out_kind
|
|
4137
|
+
jmp L_NET_KIND_END_%out_kind
|
|
4138
|
+
L_NET_KIND_NOT_FOUND_%out_kind:
|
|
4139
|
+
__net_kind_not_found_%out_kind = eq %status, SA_NET_STATUS_NOT_FOUND
|
|
4140
|
+
br __net_kind_not_found_%out_kind -> L_NET_KIND_NOT_FOUND_VALUE_%out_kind, L_NET_KIND_ACCESS_%out_kind
|
|
4141
|
+
L_NET_KIND_NOT_FOUND_VALUE_%out_kind:
|
|
4142
|
+
%out_kind = add 0, IO_ERROR_KIND_NOT_FOUND
|
|
4143
|
+
!__net_kind_not_found_%out_kind
|
|
4144
|
+
!__net_kind_invalid_handle_%out_kind
|
|
4145
|
+
!__net_kind_invalid_arg_%out_kind
|
|
4146
|
+
jmp L_NET_KIND_END_%out_kind
|
|
4147
|
+
L_NET_KIND_ACCESS_%out_kind:
|
|
4148
|
+
__net_kind_access_%out_kind = eq %status, SA_NET_STATUS_ACCESS
|
|
4149
|
+
br __net_kind_access_%out_kind -> L_NET_KIND_ACCESS_VALUE_%out_kind, L_NET_KIND_NO_MEMORY_%out_kind
|
|
4150
|
+
L_NET_KIND_ACCESS_VALUE_%out_kind:
|
|
4151
|
+
%out_kind = add 0, IO_ERROR_KIND_PERMISSION_DENIED
|
|
4152
|
+
!__net_kind_access_%out_kind
|
|
4153
|
+
!__net_kind_not_found_%out_kind
|
|
4154
|
+
!__net_kind_invalid_handle_%out_kind
|
|
4155
|
+
!__net_kind_invalid_arg_%out_kind
|
|
4156
|
+
jmp L_NET_KIND_END_%out_kind
|
|
4157
|
+
L_NET_KIND_NO_MEMORY_%out_kind:
|
|
4158
|
+
__net_kind_no_memory_%out_kind = eq %status, SA_NET_STATUS_NO_MEMORY
|
|
4159
|
+
br __net_kind_no_memory_%out_kind -> L_NET_KIND_NO_MEMORY_VALUE_%out_kind, L_NET_KIND_IO_%out_kind
|
|
4160
|
+
L_NET_KIND_NO_MEMORY_VALUE_%out_kind:
|
|
4161
|
+
%out_kind = add 0, IO_ERROR_KIND_OUT_OF_MEMORY
|
|
4162
|
+
!__net_kind_no_memory_%out_kind
|
|
4163
|
+
!__net_kind_access_%out_kind
|
|
4164
|
+
!__net_kind_not_found_%out_kind
|
|
4165
|
+
!__net_kind_invalid_handle_%out_kind
|
|
4166
|
+
!__net_kind_invalid_arg_%out_kind
|
|
4167
|
+
jmp L_NET_KIND_END_%out_kind
|
|
4168
|
+
L_NET_KIND_IO_%out_kind:
|
|
4169
|
+
__net_kind_io_%out_kind = eq %status, SA_NET_STATUS_IO
|
|
4170
|
+
br __net_kind_io_%out_kind -> L_NET_KIND_IO_VALUE_%out_kind, L_NET_KIND_NET_%out_kind
|
|
4171
|
+
L_NET_KIND_IO_VALUE_%out_kind:
|
|
4172
|
+
%out_kind = add 0, IO_ERROR_KIND_OTHER
|
|
4173
|
+
!__net_kind_io_%out_kind
|
|
4174
|
+
!__net_kind_no_memory_%out_kind
|
|
4175
|
+
!__net_kind_access_%out_kind
|
|
4176
|
+
!__net_kind_not_found_%out_kind
|
|
4177
|
+
!__net_kind_invalid_handle_%out_kind
|
|
4178
|
+
!__net_kind_invalid_arg_%out_kind
|
|
4179
|
+
jmp L_NET_KIND_END_%out_kind
|
|
4180
|
+
L_NET_KIND_NET_%out_kind:
|
|
4181
|
+
__net_kind_net_%out_kind = eq %status, SA_NET_STATUS_NET
|
|
4182
|
+
br __net_kind_net_%out_kind -> L_NET_KIND_NET_VALUE_%out_kind, L_NET_KIND_UNSUPPORTED_%out_kind
|
|
4183
|
+
L_NET_KIND_NET_VALUE_%out_kind:
|
|
4184
|
+
%out_kind = add 0, IO_ERROR_KIND_NETWORK_UNREACHABLE
|
|
4185
|
+
!__net_kind_net_%out_kind
|
|
4186
|
+
!__net_kind_io_%out_kind
|
|
4187
|
+
!__net_kind_no_memory_%out_kind
|
|
4188
|
+
!__net_kind_access_%out_kind
|
|
4189
|
+
!__net_kind_not_found_%out_kind
|
|
4190
|
+
!__net_kind_invalid_handle_%out_kind
|
|
4191
|
+
!__net_kind_invalid_arg_%out_kind
|
|
4192
|
+
jmp L_NET_KIND_END_%out_kind
|
|
4193
|
+
L_NET_KIND_UNSUPPORTED_%out_kind:
|
|
4194
|
+
__net_kind_unsupported_%out_kind = eq %status, SA_NET_STATUS_UNSUPPORTED
|
|
4195
|
+
br __net_kind_unsupported_%out_kind -> L_NET_KIND_UNSUPPORTED_VALUE_%out_kind, L_NET_KIND_OTHER_%out_kind
|
|
4196
|
+
L_NET_KIND_UNSUPPORTED_VALUE_%out_kind:
|
|
4197
|
+
%out_kind = add 0, IO_ERROR_KIND_UNSUPPORTED
|
|
4198
|
+
!__net_kind_unsupported_%out_kind
|
|
4199
|
+
!__net_kind_net_%out_kind
|
|
4200
|
+
!__net_kind_io_%out_kind
|
|
4201
|
+
!__net_kind_no_memory_%out_kind
|
|
4202
|
+
!__net_kind_access_%out_kind
|
|
4203
|
+
!__net_kind_not_found_%out_kind
|
|
4204
|
+
!__net_kind_invalid_handle_%out_kind
|
|
4205
|
+
!__net_kind_invalid_arg_%out_kind
|
|
4206
|
+
jmp L_NET_KIND_END_%out_kind
|
|
4207
|
+
L_NET_KIND_OTHER_%out_kind:
|
|
4208
|
+
%out_kind = add 0, IO_ERROR_KIND_OTHER
|
|
4209
|
+
!__net_kind_unsupported_%out_kind
|
|
4210
|
+
!__net_kind_net_%out_kind
|
|
4211
|
+
!__net_kind_io_%out_kind
|
|
4212
|
+
!__net_kind_no_memory_%out_kind
|
|
4213
|
+
!__net_kind_access_%out_kind
|
|
4214
|
+
!__net_kind_not_found_%out_kind
|
|
4215
|
+
!__net_kind_invalid_handle_%out_kind
|
|
4216
|
+
!__net_kind_invalid_arg_%out_kind
|
|
4217
|
+
L_NET_KIND_END_%out_kind:
|
|
4218
|
+
[END_MACRO]
|
|
4219
|
+
// Rust-style spelling aliases. SA exposes the 128-bit value as two u64
|
|
4220
|
+
// registers because the language has no native u128 scalar.
|
|
4221
|
+
[MACRO] NET_IPV6_TO_BITS %out_hi, %out_lo, %addr
|
|
4222
|
+
EXPAND NET_IPV6_TO_BITS64 %out_hi, %out_lo, %addr
|
|
4223
|
+
[END_MACRO]
|
|
4224
|
+
|
|
4225
|
+
[MACRO] NET_IPV6_FROM_BITS %addr, %hi, %lo
|
|
4226
|
+
EXPAND NET_IPV6_FROM_BITS64 %addr, %hi, %lo
|
|
4227
|
+
[END_MACRO]
|