(defun local-addr (family port) (caseql* family (af-inet (new sockaddr-in addr inaddr-loopback port port)) (af-inet6 (new sockaddr-in6 addr in6addr-loopback port port)))) (defun bindfree (sock from to) (for ((port from)) ((<= port to) (error "unable to bind socket")) ((inc port)) (let ((addr (local-addr (sock-family sock) port))) (when (ignerr (sock-bind sock addr)) (sock-listen sock) (return-from bindfree addr)))))