From 7cab3d48e67a212bbb233d710d288bfb18b62cad Mon Sep 17 00:00:00 2001 From: David Cermak Date: Tue, 29 Jun 2021 11:26:50 +0200 Subject: [PATCH] esp_netif: IP Address: Add esp-ip addr copy API, IP init macros --- .../esp_netif/include/esp_netif_ip_addr.h | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/components/esp_netif/include/esp_netif_ip_addr.h b/components/esp_netif/include/esp_netif_ip_addr.h index 809404c1d2..a1542459ca 100644 --- a/components/esp_netif/include/esp_netif_ip_addr.h +++ b/components/esp_netif/include/esp_netif_ip_addr.h @@ -85,6 +85,9 @@ extern "C" { #define ESP_IP4TOADDR(a,b,c,d) esp_netif_htonl(ESP_IP4TOUINT32(a, b, c, d)) +#define ESP_IP4ADDR_INIT(a, b, c, d) { .type = ESP_IPADDR_TYPE_V4, .u_addr = { .ip4 = { .addr = ESP_IP4TOADDR(a, b, c, d) }}}; +#define ESP_IP6ADDR_INIT(a, b, c, d) { .type = ESP_IPADDR_TYPE_V6, .u_addr = { .ip6 = { .addr = { a, b, c, d }, .zone = 0 }}}; + struct esp_ip6_addr { uint32_t addr[4]; uint8_t zone; @@ -124,6 +127,30 @@ typedef enum { */ esp_ip6_addr_type_t esp_netif_ip6_get_addr_type(esp_ip6_addr_t* ip6_addr); +/** + * @brief Copy IP addresses + * + * @param[out] dest destination IP + * @param[in] src source IP + */ +static inline void esp_netif_ip_addr_copy(esp_ip_addr_t *dest, const esp_ip_addr_t *src) +{ + dest->type = src->type; + if (src->type == ESP_IPADDR_TYPE_V6) { + dest->u_addr.ip6.addr[0] = src->u_addr.ip6.addr[0]; + dest->u_addr.ip6.addr[1] = src->u_addr.ip6.addr[1]; + dest->u_addr.ip6.addr[2] = src->u_addr.ip6.addr[2]; + dest->u_addr.ip6.addr[3] = src->u_addr.ip6.addr[3]; + dest->u_addr.ip6.zone = src->u_addr.ip6.zone; + } else { + dest->u_addr.ip4.addr = src->u_addr.ip4.addr; + dest->u_addr.ip6.addr[1] = 0; + dest->u_addr.ip6.addr[2] = 0; + dest->u_addr.ip6.addr[3] = 0; + dest->u_addr.ip6.zone = 0; + } +} + #ifdef __cplusplus } #endif