mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-10-03 21:32:08 +00:00
Cleanup unmap_ipv6_mapped_ipv4() macro
This commit is contained in:
parent
1dd97e7d53
commit
b70ddf7b54
@ -1401,8 +1401,9 @@ lwip_netconn_do_send(void *m)
|
||||
|
||||
#if LWIP_IPV4 && LWIP_IPV6
|
||||
/* Dual-stack: Unmap IPv6 mapped IPv4 addresses */
|
||||
if(NETCONNTYPE_ISIPV6(netconn_type(msg->conn)) && IP_IS_V4_VAL(msg->msg.b->addr)) {
|
||||
unmap_ipv6_mapped_ipv4(&msg->msg.b->addr, &msg->msg.b->addr);
|
||||
if (NETCONNTYPE_ISIPV6(netconn_type(msg->conn)) && ip6_addr_isipv6mappedipv4(ip_2_ip6(&msg->msg.b->addr))) {
|
||||
unmap_ipv6_mapped_ipv4(ip_2_ip4(&msg->msg.b->addr), ip_2_ip6(&msg->msg.b->addr));
|
||||
IP_SET_TYPE(&msg->msg.b->addr, IPADDR_TYPE_V4);
|
||||
}
|
||||
#endif /* LWIP_IPV4 && LWIP_IPV6 */
|
||||
|
||||
@ -1722,11 +1723,8 @@ lwip_netconn_do_getaddr(void *m)
|
||||
|
||||
#if LWIP_IPV4 && LWIP_IPV6
|
||||
/* Dual-stack: Map IPv4 addresses to IPv6 */
|
||||
if(NETCONNTYPE_ISIPV6(netconn_type(msg->conn)) && IP_IS_V4_VAL(API_EXPR_DEREF(msg->msg.ad.ipaddr))) {
|
||||
ip4_addr_t ip4;
|
||||
|
||||
ip4_addr_copy(ip4, *ip_2_ip4(&API_EXPR_DEREF(msg->msg.ad.ipaddr)));
|
||||
ip4_2_ipv6_mapped_ipv4(ip_2_ip6(&API_EXPR_DEREF(msg->msg.ad.ipaddr)), &ip4);
|
||||
if (NETCONNTYPE_ISIPV6(netconn_type(msg->conn)) && IP_IS_V4_VAL(API_EXPR_DEREF(msg->msg.ad.ipaddr))) {
|
||||
ip4_2_ipv6_mapped_ipv4(ip_2_ip6(&API_EXPR_DEREF(msg->msg.ad.ipaddr)), ip_2_ip4(&API_EXPR_DEREF(msg->msg.ad.ipaddr)));
|
||||
IP_SET_TYPE_VAL(API_EXPR_DEREF(msg->msg.ad.ipaddr), IPADDR_TYPE_V6);
|
||||
}
|
||||
#endif /* LWIP_IPV4 && LWIP_IPV6 */
|
||||
|
@ -215,15 +215,16 @@ int ipaddr_aton(const char *cp, ip_addr_t *addr);
|
||||
/** @ingroup ipaddr */
|
||||
#define IPADDR_STRLEN_MAX IP6ADDR_STRLEN_MAX
|
||||
|
||||
/** @ingroup ipaddr */
|
||||
#define ip4_2_ipv6_mapped_ipv4(ip6addr, ip4addr) do { \
|
||||
(ip6addr)->addr[0] = 0; \
|
||||
(ip6addr)->addr[1] = 0; \
|
||||
(ip6addr)->addr[3] = (ip4addr)->addr; \
|
||||
(ip6addr)->addr[2] = PP_HTONL(0x0000FFFFUL); \
|
||||
(ip6addr)->addr[3] = (ip4addr)->addr; } while(0);
|
||||
(ip6addr)->addr[1] = 0; \
|
||||
(ip6addr)->addr[0] = 0; } while(0);
|
||||
|
||||
#define unmap_ipv6_mapped_ipv4(target, source) do { \
|
||||
(target)->u_addr.ip4.addr = (source)->u_addr.ip6.addr[3]; \
|
||||
(target)->type = IPADDR_TYPE_V4; } while(0);
|
||||
/** @ingroup ipaddr */
|
||||
#define unmap_ipv6_mapped_ipv4(target, source) \
|
||||
(target)->addr = (source)->addr[3];
|
||||
|
||||
#else /* LWIP_IPV4 && LWIP_IPV6 */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user