os/uapi/
socket.rs

1//! Socket options and constants
2
3// Socket levels
4pub const SOL_SOCKET: i32 = 1;
5pub const IPPROTO_TCP: i32 = 6;
6pub const IPPROTO_IP: i32 = 0;
7
8// SOL_SOCKET options
9pub const SO_REUSEADDR: i32 = 2;
10pub const SO_KEEPALIVE: i32 = 9;
11pub const SO_SNDBUF: i32 = 7;
12pub const SO_RCVBUF: i32 = 8;
13pub const SO_LINGER: i32 = 13;
14pub const SO_REUSEPORT: i32 = 15;
15
16// IPPROTO_TCP options
17pub const TCP_NODELAY: i32 = 1;
18
19/// Socket options storage
20#[derive(Clone, Copy, Debug)]
21pub struct SocketOptions {
22    pub reuse_addr: bool,
23    pub reuse_port: bool,
24    pub keepalive: bool,
25    pub tcp_nodelay: bool,
26    pub send_buffer_size: usize,
27    pub recv_buffer_size: usize,
28}
29
30impl Default for SocketOptions {
31    fn default() -> Self {
32        Self {
33            reuse_addr: false,
34            reuse_port: false,
35            keepalive: false,
36            tcp_nodelay: false,
37            send_buffer_size: 65536, // 64KB default
38            recv_buffer_size: 65536, // 64KB default
39        }
40    }
41}