Skip to content

Commit

Permalink
Merge branch 'contrib/github_pr_10967' into 'master'
Browse files Browse the repository at this point in the history
[esp-tls] Add addr_family option to esp_tls_cfg_t (GitHub PR)

Closes IDFGH-9620

See merge request espressif/esp-idf!22892
  • Loading branch information
mahavirj committed Mar 24, 2023
2 parents 5854472 + 0abd1cb commit 8d90249
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 3 deletions.
18 changes: 15 additions & 3 deletions components/esp-tls/esp_tls.c
Expand Up @@ -170,12 +170,24 @@ esp_tls_t *esp_tls_init(void)
return tls;
}

static esp_err_t esp_tls_hostname_to_fd(const char *host, size_t hostlen, int port, struct sockaddr_storage *address, int* fd)
static esp_err_t esp_tls_hostname_to_fd(const char *host, size_t hostlen, int port, esp_tls_addr_family_t addr_family, struct sockaddr_storage *address, int* fd)
{
struct addrinfo *address_info;
struct addrinfo hints;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC;

switch(addr_family) {
case ESP_TLS_AF_INET:
hints.ai_family = AF_INET;
break;
case ESP_TLS_AF_INET6:
hints.ai_family = AF_INET6;
break;
default:
hints.ai_family = AF_UNSPEC;
break;
}

hints.ai_socktype = SOCK_STREAM;

char *use_host = strndup(host, hostlen);
Expand Down Expand Up @@ -319,7 +331,7 @@ static inline esp_err_t tcp_connect(const char *host, int hostlen, int port, con
{
struct sockaddr_storage address;
int fd;
esp_err_t ret = esp_tls_hostname_to_fd(host, hostlen, port, &address, &fd);
esp_err_t ret = esp_tls_hostname_to_fd(host, hostlen, port, cfg->addr_family, &address, &fd);
if (ret != ESP_OK) {
ESP_INT_EVENT_TRACKER_CAPTURE(error_handle, ESP_TLS_ERR_TYPE_SYSTEM, errno);
return ret;
Expand Down
11 changes: 11 additions & 0 deletions components/esp-tls/esp_tls.h
Expand Up @@ -71,6 +71,15 @@ typedef struct tls_keep_alive_cfg {
int keep_alive_count; /*!< Keep-alive packet retry send count */
} tls_keep_alive_cfg_t;

/*
* @brief ESP-TLS Address families
*/
typedef enum esp_tls_addr_family {
ESP_TLS_AF_UNSPEC = 0, /**< Unspecified address family. */
ESP_TLS_AF_INET, /**< IPv4 address family. */
ESP_TLS_AF_INET6, /**< IPv6 address family. */
} esp_tls_addr_family_t;

/**
* @brief ESP-TLS configuration parameters
*
Expand Down Expand Up @@ -182,6 +191,8 @@ typedef struct esp_tls_cfg {
#ifdef CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS
esp_tls_client_session_t *client_session; /*! Pointer for the client session ticket context. */
#endif /* CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS */

esp_tls_addr_family_t addr_family; /*!< The address family to use when connecting to a host. */
} esp_tls_cfg_t;

#ifdef CONFIG_ESP_TLS_SERVER
Expand Down

0 comments on commit 8d90249

Please sign in to comment.