@@ -99,6 +99,29 @@ module Sockopt = struct
9999 | Unix_optint : Unix .socket_optint_option -> int option Eio.Net.Sockopt .t
100100 | Unix_float : Unix .socket_float_option -> float Eio.Net.Sockopt .t
101101
102+ let pp : type a. a Eio.Net.Sockopt.t -> Format.formatter -> a -> unit = fun opt f v ->
103+ (match opt with
104+ | Unix_bool Unix. SO_DEBUG -> Fmt. pf f " Unix.SO_DEBUG = %b" v
105+ | Unix_bool Unix. SO_BROADCAST -> Fmt. pf f " Unix.SO_BROADCAST = %b" v
106+ | Unix_bool Unix. SO_REUSEADDR -> Fmt. pf f " Unix.SO_REUSEADDR = %b" v
107+ | Unix_bool Unix. SO_KEEPALIVE -> Fmt. pf f " Unix.SO_KEEPALIVE = %b" v
108+ | Unix_bool Unix. SO_DONTROUTE -> Fmt. pf f " Unix.SO_DONTROUTE = %b" v
109+ | Unix_bool Unix. SO_OOBINLINE -> Fmt. pf f " Unix.SO_OOBINLINE = %b" v
110+ | Unix_bool Unix. SO_ACCEPTCONN -> Fmt. pf f " Unix.SO_ACCEPTCONN = %b" v
111+ | Unix_bool Unix. TCP_NODELAY -> Fmt. pf f " Unix.TCP_NODELAY = %b" v
112+ | Unix_bool Unix. IPV6_ONLY -> Fmt. pf f " Unix.IPV6_ONLY = %b" v
113+ | Unix_bool Unix. SO_REUSEPORT -> Fmt. pf f " Unix.SO_REUSEPORT = %b" v
114+ | Unix_int Unix. SO_SNDBUF -> Fmt. pf f " Unix.SO_SNDBUF = %d" v
115+ | Unix_int Unix. SO_RCVBUF -> Fmt. pf f " Unix.SO_RCVBUF = %d" v
116+ | Unix_int Unix. SO_ERROR -> Fmt. pf f " Unix.SO_ERROR = %d" v
117+ | Unix_int Unix. SO_TYPE -> Fmt. pf f " Unix.SO_TYPE = %d" v
118+ | Unix_int Unix. SO_RCVLOWAT -> Fmt. pf f " Unix.SO_RCVLOWAT = %d" v
119+ | Unix_int Unix. SO_SNDLOWAT -> Fmt. pf f " Unix.SO_SNDLOWAT = %d" v
120+ | Unix_optint Unix. SO_LINGER -> Fmt. (pf f " Unix.SO_LINGER = %a" (option ~none: (any " <none>" ) int ) v)
121+ | Unix_float Unix. SO_RCVTIMEO -> Fmt. pf f " Unix.SO_RCVTIMEO = %f" v
122+ | Unix_float Unix. SO_SNDTIMEO -> Fmt. pf f " Unix.SO_SNDTIMEO = %f" v
123+ | _ -> Eio.Net.Sockopt. pp opt f v) [@ alert " -deprecated" ]
124+
102125 let set : type a. Fd.t -> a Eio.Net.Sockopt.t -> a -> unit = fun fd opt v ->
103126 Fd. use_exn " setsockopt" fd @@ fun fd ->
104127 match opt with
0 commit comments