[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lwip-users] getaddrinfo returning only IPv4 address
From: |
antonio |
Subject: |
[lwip-users] getaddrinfo returning only IPv4 address |
Date: |
Wed, 27 Mar 2019 19:15:13 -0700 (MST) |
Hi All,
I am using LWIP with LWIPv4/6 (dual-stack enabled).
I used getaddrinfo to resolve some domains, and I am only getting an IPv4.
However, with my .c application on my Laptop connected to the same AP, I get
two addresses
This is what I get when I use a c application on my Laptop.
./ip6 www.google.se
www.google.se: IPv4 = 216.58.211.131
www.google.se: IPv6 = 2a00:1450:400f:80c::2003
While my LWIP application I only get an IPv4, the IPv6 is zero bytes Only.
dns_resolve www.google.fr
www.google.fr @
216.58.207.195/b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Below is the piece of code where I return the addresses, where rsp is a
struct of type
struct rsp{
u8_t status; //==0 if we got at least one address, else 1
u8_t addrlen; //if addr=4 only IPv4 is present, addrlen=16(Only IPv6),
addrlen=20, both are present
u8_t ipaddr[20]; //first 4 bytes for IPv4 and remaining 16 for IPv6
};
rsp->addrlen = 0;
memset(rsp->ipaddr, 0, sizeof rsp->ipaddr);
for (cur = &addr_list[0]; cur != NULL; cur = cur->ai_next){
if (cur->ai_family == AF_INET){
ipaddr_ptr = &(((struct sockaddr_in *)cur->ai_addr)->sin_addr);
if (rsp->addrlen == 0 || (rsp->addrlen == 16)){
rsp->status = 0;
rsp->addrlen = rsp->addrlen + 4;
memcpy(&rsp->ipaddr[0], ipaddr_ptr, 4);
}
}else if(cur->ai_family == AF_INET6 || cur->ai_family == AF_UNSPEC){
#if LWIP_IPV4 && LWIP_IPV6
os_printf("%s: %d IPV6\n",__func__, __LINE__);
ipaddr_ptr = &(((struct sockaddr_in6
*)cur->ai_addr)->sin6_addr);
if (rsp->addrlen <= 4){
rsp->status = 0;
rsp->addrlen = rsp->addrlen + 16;
memcpy(&rsp->ipaddr[4], ipaddr_ptr, 16);
os_printf("IPv6:%s\n", (char*)&rsp->ipaddr[4]);
}
#endif
}
if (rsp->addrlen > 16)
break;
}
--
Sent from: http://lwip.100.n7.nabble.com/lwip-users-f3.html
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [lwip-users] getaddrinfo returning only IPv4 address,
antonio <=