--- lib/roken/socket.c.orig Wed Jul 26 23:41:06 2000 +++ lib/roken/socket.c Fri Nov 3 11:56:34 2000 @@ -222,6 +222,31 @@ } /* + * Set the range of ports to use when binding with port = 0. + */ +void +socket_set_portrange (int sock, int restrict, int af) +{ +#if defined(IP_PORTRANGE) + if (af == AF_INET) { + int on = restrict ? IP_PORTRANGE_HIGH : IP_PORTRANGE_DEFAULT; + if (setsockopt (sock, IPPROTO_IP, IP_PORTRANGE, &on, + sizeof(on)) < 0) + warn ("setsockopt IP_PORTRANGE (ignored)"); + } +#endif +#if defined(IPV6_PORTRANGE) + if (af == AF_INET6) { + int on = restrict ? IPV6_PORTRANGE_HIGH : + IPV6_PORTRANGE_DEFAULT; + if (setsockopt (sock, IPPROTO_IPV6, IPV6_PORTRANGE, &on, + sizeof(on)) < 0) + warn ("setsockopt IPV6_PORTRANGE (ignored)"); + } +#endif +} + +/* * Enable debug on `sock'. */