1 | module net |
2 | |
3 | pub enum SocketOption { |
4 | // TODO: SO_ACCEPT_CONN is not here because windows doesn't support it |
5 | // and there is no easy way to define it |
6 | broadcast = C.SO_BROADCAST |
7 | debug = C.SO_DEBUG |
8 | dont_route = C.SO_DONTROUTE |
9 | error = C.SO_ERROR |
10 | keep_alive = C.SO_KEEPALIVE |
11 | linger = C.SO_LINGER |
12 | oob_inline = C.SO_OOBINLINE |
13 | reuse_addr = C.SO_REUSEADDR |
14 | receive_buf_size = C.SO_RCVBUF |
15 | receive_low_size = C.SO_RCVLOWAT |
16 | receive_timeout = C.SO_RCVTIMEO |
17 | send_buf_size = C.SO_SNDBUF |
18 | send_low_size = C.SO_SNDLOWAT |
19 | send_timeout = C.SO_SNDTIMEO |
20 | socket_type = C.SO_TYPE |
21 | ipv6_only = C.IPV6_V6ONLY |
22 | } |
23 | |
24 | const ( |
25 | opts_bool = [SocketOption.broadcast, .debug, .dont_route, .error, .keep_alive, .oob_inline] |
26 | opts_int = [ |
27 | .receive_buf_size, |
28 | .receive_low_size, |
29 | .receive_timeout, |
30 | .send_buf_size, |
31 | .send_low_size, |
32 | .send_timeout, |
33 | ] |
34 | |
35 | opts_can_set = [ |
36 | SocketOption.broadcast, |
37 | .debug, |
38 | .dont_route, |
39 | .keep_alive, |
40 | .linger, |
41 | .oob_inline, |
42 | .receive_buf_size, |
43 | .receive_low_size, |
44 | .receive_timeout, |
45 | .send_buf_size, |
46 | .send_low_size, |
47 | .send_timeout, |
48 | .ipv6_only, |
49 | ] |
50 | ) |