Add a function that checks if a 'hostname' is not a valid IPv4 or IPv6
address. Returns 'true' if the hostname is likely a domain name, and
'false' if it represents an IP address.
(cherry picked from commit
1f199ee60654e5cf47821f3b96b980bff34769bc)
*\li 'ctx' - a valid non-NULL pointer;
*/
+bool
+isc_tls_valid_sni_hostname(const char *hostname);
+/*%<
+ * Checks if a 'hostname' is not a valid IPv4 or IPv6 address
+ * string. Returns 'true' if the hostname is likely a domain name, and
+ * 'false' if it represents an IP address.
+ */
+
void
isc__tls_initialize(void);
RUNTIME_CHECK(
SSL_CTX_set_session_id_context(ctx, session_id_ctx, len) == 1);
}
+
+bool
+isc_tls_valid_sni_hostname(const char *hostname) {
+ struct sockaddr_in sa_v4 = { 0 };
+ struct sockaddr_in6 sa_v6 = { 0 };
+ int ret = 0;
+
+ if (hostname == NULL) {
+ return false;
+ }
+
+ ret = inet_pton(AF_INET, hostname, &sa_v4.sin_addr);
+ if (ret == 1) {
+ return false;
+ }
+
+ ret = inet_pton(AF_INET6, hostname, &sa_v6.sin6_addr);
+ if (ret == 1) {
+ return false;
+ }
+
+ return true;
+}