summaryrefslogtreecommitdiff
path: root/nuttx/netutils
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/netutils')
-rw-r--r--nuttx/netutils/dhcpc/dhcpc.c34
-rw-r--r--nuttx/netutils/resolv/resolv.c40
-rw-r--r--nuttx/netutils/uiplib/uip-gethostaddr.c2
3 files changed, 49 insertions, 27 deletions
diff --git a/nuttx/netutils/dhcpc/dhcpc.c b/nuttx/netutils/dhcpc/dhcpc.c
index cff741794..a84728013 100644
--- a/nuttx/netutils/dhcpc/dhcpc.c
+++ b/nuttx/netutils/dhcpc/dhcpc.c
@@ -161,7 +161,7 @@ static uint8 *add_req_ipaddr(struct dhcpc_state *presult, uint8 *optptr)
{
*optptr++ = DHCP_OPTION_REQ_IPADDR;
*optptr++ = 4;
- memcpy(optptr, presult->ipaddr, 4);
+ memcpy(optptr, &presult->ipaddr.s_addr, 4);
return optptr + 4;
}
@@ -262,13 +262,13 @@ static uint8 parse_options(struct dhcpc_state *presult, uint8 *optptr, int len)
switch(*optptr)
{
case DHCP_OPTION_SUBNET_MASK:
- memcpy(presult->netmask, optptr + 2, 4);
+ memcpy(&presult->netmask.s_addr, optptr + 2, 4);
break;
case DHCP_OPTION_ROUTER:
- memcpy(presult->default_router, optptr + 2, 4);
+ memcpy(&presult->default_router.s_addr, optptr + 2, 4);
break;
case DHCP_OPTION_DNS_SERVER:
- memcpy(presult->dnsaddr, optptr + 2, 4);
+ memcpy(&presult->dnsaddr.s_addr, optptr + 2, 4);
break;
case DHCP_OPTION_MSG_TYPE:
type = *(optptr + 2);
@@ -296,7 +296,7 @@ static uint8 parse_msg(struct dhcpc_state_internal *pdhcpc, int buflen, struct d
memcmp(pbuffer->xid, xid, sizeof(xid)) == 0 &&
memcmp(pbuffer->chaddr, pdhcpc->mac_addr, pdhcpc->mac_len) == 0)
{
- memcpy(presult->ipaddr, pbuffer->yiaddr, 4);
+ memcpy(&presult->ipaddr.s_addr, pbuffer->yiaddr, 4);
return parse_options(presult, &pbuffer->options[4], buflen);
}
return 0;
@@ -440,17 +440,25 @@ int dhcpc_request(void *handle, struct dhcpc_state *presult)
while(state != STATE_CONFIG_RECEIVED);
dbg("Got IP address %d.%d.%d.%d\n",
- uip_ipaddr1(presult->ipaddr), uip_ipaddr2(presult->ipaddr),
- uip_ipaddr3(presult->ipaddr), uip_ipaddr4(presult->ipaddr));
+ (presult->ipaddr.s_addr >> 24 ) & 0xff,
+ (presult->ipaddr.s_addr >> 16 ) & 0xff,
+ (presult->ipaddr.s_addr >> 8 ) & 0xff,
+ (presult->ipaddr.s_addr ) & 0xff);
dbg("Got netmask %d.%d.%d.%d\n",
- uip_ipaddr1(presult->netmask), uip_ipaddr2(presult->netmask),
- uip_ipaddr3(presult->netmask), uip_ipaddr4(presult->netmask));
+ (presult->netmask.s_addr >> 24 ) & 0xff,
+ (presult->netmask.s_addr >> 16 ) & 0xff,
+ (presult->netmask.s_addr >> 8 ) & 0xff,
+ (presult->netmask.s_addr ) & 0xff);
dbg("Got DNS server %d.%d.%d.%d\n",
- uip_ipaddr1(presult->dnsaddr), uip_ipaddr2(presult->dnsaddr),
- uip_ipaddr3(presult->dnsaddr), uip_ipaddr4(presult->dnsaddr));
+ (presult->dnsaddr.s_addr >> 24 ) & 0xff,
+ (presult->dnsaddr.s_addr >> 16 ) & 0xff,
+ (presult->dnsaddr.s_addr >> 8 ) & 0xff,
+ (presult->dnsaddr.s_addr ) & 0xff);
dbg("Got default router %d.%d.%d.%d\n",
- uip_ipaddr1(presult->default_router), uip_ipaddr2(presult->default_router),
- uip_ipaddr3(presult->default_router), uip_ipaddr4(presult->default_router));
+ (presult->default_router.s_addr >> 24 ) & 0xff,
+ (presult->default_router.s_addr >> 16 ) & 0xff,
+ (presult->default_router.s_addr >> 8 ) & 0xff,
+ (presult->default_router.s_addr ) & 0xff);
dbg("Lease expires in %ld seconds\n",
ntohs(presult->lease_time[0])*65536ul + ntohs(presult->lease_time[1]));
return OK;
diff --git a/nuttx/netutils/resolv/resolv.c b/nuttx/netutils/resolv/resolv.c
index b318e551e..741116bb7 100644
--- a/nuttx/netutils/resolv/resolv.c
+++ b/nuttx/netutils/resolv/resolv.c
@@ -130,8 +130,9 @@ struct dns_answer
uint16 ttl[2];
uint16 len;
#ifdef CONFIG_NET_IPv6
+ struct in6_addr ipaddr;
#else
- uint16 ipaddr[2];
+ struct in_addr ipaddr;
#endif
};
@@ -144,8 +145,9 @@ struct namemap
uint8 err;
char name[32];
#ifdef CONFIG_NET_IPv6
+ struct in6_addr ipaddr;
#else
- uint16 ipaddr[2];
+ struct in_addr ipaddr;
#endif
};
@@ -200,7 +202,7 @@ static int send_query(const char *name, struct sockaddr_in *addr)
char *nptr;
const char *nameptr;
uint8 seqno = g_seqno++;
- static unsigned char endquery[] = {0,0,1,0,1};
+ static unsigned char endquery[] = {0, 0, 1, 0, 1};
char buffer[SEND_BUFFER_SIZE];
int n;
@@ -234,7 +236,7 @@ static int send_query(const char *name, struct sockaddr_in *addr)
/* Called when new UDP data arrives */
#ifdef CONFIG_NET_IPv6
-#error "Not implemented
+#error "Not implemented"
#else
int recv_response(struct sockaddr_in *addr)
#endif
@@ -314,14 +316,16 @@ int recv_response(struct sockaddr_in *addr)
if (ans->type == HTONS(1) && ans->class == HTONS(1) && ans->len == HTONS(4))
{
dbg("IP address %d.%d.%d.%d\n",
- htons(ans->ipaddr[0]) >> 8, htons(ans->ipaddr[0]) & 0xff,
- htons(ans->ipaddr[1]) >> 8, htons(ans->ipaddr[1]) & 0xff);
+ (ans->ipaddr.s_addr >> 24 ) & 0xff,
+ (ans->ipaddr.s_addr >> 16 ) & 0xff,
+ (ans->ipaddr.s_addr >> 8 ) & 0xff,
+ (ans->ipaddr.s_addr ) & 0xff);
/* XXX: we should really check that this IP address is the one
* we want.
*/
- addr->sin_addr.s_addr = ((uint32)ans->ipaddr[0] << 16) | (uint32)ans->ipaddr[1];
+ addr->sin_addr.s_addr = ans->ipaddr.s_addr;
return OK;
}
else
@@ -374,23 +378,33 @@ int resolv_query(const char *name, struct sockaddr_in *addr)
/* Obtain the currently configured DNS server. */
#ifdef CONFIG_NET_IPv6
-void resolv_getserver(struct sockaddr_in6 *dnsserver)
+void resolv_getserver(struct in6_addr *dnsserver)
#else
-void resolv_getserver(struct sockaddr_in *dnsserver)
+void resolv_getserver(struct in_addr *dnsserver)
#endif
{
- memcpy(dnsserver, &g_dnsserver, ADDRLEN);
+#ifdef CONFIG_NET_IPv6
+ memcpy(dnsserver, &g_dnsserver.sin6_addr, ADDRLEN);
+#else
+ dnsserver->s_addr = g_dnsserver.sin_addr.s_addr;
+#endif
}
/* Configure which DNS server to use for queries */
#ifdef CONFIG_NET_IPv6
-void resolv_conf(const struct sockaddr_in6 *dnsserver)
+void resolv_conf(const struct in6_addr *dnsserver)
#else
-void resolv_conf(const struct sockaddr_in *dnsserver)
+void resolv_conf(const struct in_addr *dnsserver)
#endif
{
- memcpy(&g_dnsserver, dnsserver, ADDRLEN);
+ g_dnsserver.sin_family = AF_INET;
+ g_dnsserver.sin_port = HTONS(53);
+#ifdef CONFIG_NET_IPv6
+ memcpy(&g_dnsserver.sin6_addr, dnsserver, ADDRLEN);
+#else
+ g_dnsserver.sin_addr.s_addr = dnsserver->s_addr;
+#endif
}
/* Initalize the resolver. */
diff --git a/nuttx/netutils/uiplib/uip-gethostaddr.c b/nuttx/netutils/uiplib/uip-gethostaddr.c
index 64c5bb2ff..a8d36efac 100644
--- a/nuttx/netutils/uiplib/uip-gethostaddr.c
+++ b/nuttx/netutils/uiplib/uip-gethostaddr.c
@@ -86,7 +86,7 @@ int uip_gethostaddr(const char *ifname, struct in_addr *addr)
{
struct ifreq req;
strncpy(req.ifr_name, ifname, IFNAMSIZ);
- ret = ioctl(sockfd, SIOCSIFADDR, (unsigned long)&req);
+ ret = ioctl(sockfd, SIOCGIFADDR, (unsigned long)&req);
if (!ret)
{
#ifdef CONFIG_NET_IPv6