diff --git a/lib/isc/include/isc/net.h b/lib/isc/include/isc/net.h index e7d0d565bf..827efe8f01 100644 --- a/lib/isc/include/isc/net.h +++ b/lib/isc/include/isc/net.h @@ -244,21 +244,4 @@ isc_net_enableipv4(void); void isc_net_enableipv6(void); -isc_result_t -isc_net_getudpportrange(int af, in_port_t *low, in_port_t *high); -/*%< - * Returns system's default range of ephemeral UDP ports, if defined. - * If the range is not available or unknown, ISC_NET_PORTRANGELOW and - * ISC_NET_PORTRANGEHIGH will be returned. - * - * Requires: - * - *\li 'low' and 'high' must be non NULL. - * - * Returns: - * - *\li *low and *high will be the ports specifying the low and high ends of - * the range. - */ - ISC_LANG_ENDDECLS diff --git a/lib/isc/net.c b/lib/isc/net.c index 549e7a94fb..5a600047f6 100644 --- a/lib/isc/net.c +++ b/lib/isc/net.c @@ -330,126 +330,6 @@ isc_net_probe_ipv6pktinfo(void) { return (ipv6pktinfo_result); } -#if defined(USE_SYSCTL_PORTRANGE) -#if defined(HAVE_SYSCTLBYNAME) -static isc_result_t -getudpportrange_sysctl(int af, in_port_t *low, in_port_t *high) { - int port_low, port_high; - size_t portlen; - const char *sysctlname_lowport, *sysctlname_hiport; - - if (af == AF_INET) { - sysctlname_lowport = SYSCTL_V4PORTRANGE_LOW; - sysctlname_hiport = SYSCTL_V4PORTRANGE_HIGH; - } else { - sysctlname_lowport = SYSCTL_V6PORTRANGE_LOW; - sysctlname_hiport = SYSCTL_V6PORTRANGE_HIGH; - } - portlen = sizeof(port_low); - if (sysctlbyname(sysctlname_lowport, &port_low, &portlen, NULL, 0) < 0) - { - return (ISC_R_FAILURE); - } - portlen = sizeof(port_high); - if (sysctlbyname(sysctlname_hiport, &port_high, &portlen, NULL, 0) < 0) - { - return (ISC_R_FAILURE); - } - if ((port_low & ~0xffff) != 0 || (port_high & ~0xffff) != 0) { - return (ISC_R_RANGE); - } - - *low = (in_port_t)port_low; - *high = (in_port_t)port_high; - - return (ISC_R_SUCCESS); -} -#else /* !HAVE_SYSCTLBYNAME */ -static isc_result_t -getudpportrange_sysctl(int af, in_port_t *low, in_port_t *high) { - int mib_lo4[4] = SYSCTL_V4PORTRANGE_LOW; - int mib_hi4[4] = SYSCTL_V4PORTRANGE_HIGH; - int mib_lo6[4] = SYSCTL_V6PORTRANGE_LOW; - int mib_hi6[4] = SYSCTL_V6PORTRANGE_HIGH; - int *mib_lo, *mib_hi, miblen; - int port_low, port_high; - size_t portlen; - - if (af == AF_INET) { - mib_lo = mib_lo4; - mib_hi = mib_hi4; - miblen = sizeof(mib_lo4) / sizeof(mib_lo4[0]); - } else { - mib_lo = mib_lo6; - mib_hi = mib_hi6; - miblen = sizeof(mib_lo6) / sizeof(mib_lo6[0]); - } - - portlen = sizeof(port_low); - if (sysctl(mib_lo, miblen, &port_low, &portlen, NULL, 0) < 0) { - return (ISC_R_FAILURE); - } - - portlen = sizeof(port_high); - if (sysctl(mib_hi, miblen, &port_high, &portlen, NULL, 0) < 0) { - return (ISC_R_FAILURE); - } - - if ((port_low & ~0xffff) != 0 || (port_high & ~0xffff) != 0) { - return (ISC_R_RANGE); - } - - *low = (in_port_t)port_low; - *high = (in_port_t)port_high; - - return (ISC_R_SUCCESS); -} -#endif /* HAVE_SYSCTLBYNAME */ -#endif /* USE_SYSCTL_PORTRANGE */ - -isc_result_t -isc_net_getudpportrange(int af, in_port_t *low, in_port_t *high) { - int result = ISC_R_FAILURE; -#if !defined(USE_SYSCTL_PORTRANGE) && defined(__linux) - FILE *fp; -#endif /* if !defined(USE_SYSCTL_PORTRANGE) && defined(__linux) */ - - REQUIRE(low != NULL && high != NULL); - -#if defined(USE_SYSCTL_PORTRANGE) - result = getudpportrange_sysctl(af, low, high); -#elif defined(__linux) - - UNUSED(af); - - /* - * Linux local ports are address family agnostic. - */ - fp = fopen("/proc/sys/net/ipv4/ip_local_port_range", "r"); - if (fp != NULL) { - int n; - unsigned int l, h; - - n = fscanf(fp, "%u %u", &l, &h); - if (n == 2 && (l & ~0xffff) == 0 && (h & ~0xffff) == 0) { - *low = l; - *high = h; - result = ISC_R_SUCCESS; - } - fclose(fp); - } -#else /* if defined(USE_SYSCTL_PORTRANGE) */ - UNUSED(af); -#endif /* if defined(USE_SYSCTL_PORTRANGE) */ - - if (result != ISC_R_SUCCESS) { - *low = ISC_NET_PORTRANGELOW; - *high = ISC_NET_PORTRANGEHIGH; - } - - return (ISC_R_SUCCESS); /* we currently never fail in this function */ -} - void isc_net_disableipv4(void) { initialize();