let run listen_addr userfunc =
let a =
match listen_addr with
| `Inet_any port -> Unix.ADDR_INET ((Unix.inet_addr_any, port))
| `Inet_loopback port ->
Unix.ADDR_INET ((Unix.inet_addr_loopback, port))
| `Inet_str (str, port) ->
Unix.ADDR_INET (((Unix.inet_addr_of_string str), port))
| `Inet_addr (a, p) -> Unix.ADDR_INET ((a, p))
in run_addr a userfunc