Source file sockopt.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
open Eio.Std

let setsockopt label opt v = traceln "%s: setsockopt %a" label Eio.Net.Sockopt.pp_binding (opt, v)

let default (type a) (opt : a Eio.Net.Sockopt.t) : a =
  let open Eio.Net.Sockopt in
  match opt with
  | SO_DEBUG -> false
  | SO_BROADCAST -> false
  | SO_REUSEADDR -> false
  | SO_KEEPALIVE -> false
  | SO_DONTROUTE -> false
  | SO_OOBINLINE -> false
  | TCP_NODELAY -> false
  | IPV6_ONLY -> false
  | SO_REUSEPORT -> false
  | SO_SNDBUF -> 0
  | SO_RCVBUF -> 0
  | SO_RCVLOWAT -> 0
  | SO_SNDLOWAT -> 0
  | SO_LINGER -> None
  | SO_RCVTIMEO -> 0.0
  | SO_SNDTIMEO -> 0.0
  | _ -> raise (Eio.Net.err Invalid_option)

let getsockopt : type a. string -> a Eio.Net.Sockopt.t -> a = fun label opt ->
  let v = default opt in
  traceln "%s: getsockopt %a" label Eio.Net.Sockopt.pp_binding (opt, v);
  v