summaryrefslogtreecommitdiff
path: root/apps/netutils/dhcpc
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-11-27 16:26:54 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-11-27 16:26:54 +0000
commit6ee106076c82b106d35310449ebc50db0bd95afb (patch)
tree891e1514df4ca8a7262bc388d93e83ed5a9da733 /apps/netutils/dhcpc
parentdf74d01e8080857ff1b1b25f439af3b226fad314 (diff)
downloadnuttx-6ee106076c82b106d35310449ebc50db0bd95afb.tar.gz
nuttx-6ee106076c82b106d35310449ebc50db0bd95afb.tar.bz2
nuttx-6ee106076c82b106d35310449ebc50db0bd95afb.zip
Add chip ID funcitions for Shenzhou and Cloudctrl boards; Extened NSH ifconfig command and improve DHCPC -- All from Darcy Gong
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5393 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'apps/netutils/dhcpc')
-rw-r--r--apps/netutils/dhcpc/dhcpc.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/apps/netutils/dhcpc/dhcpc.c b/apps/netutils/dhcpc/dhcpc.c
index f5e15c8dc..b34320230 100644
--- a/apps/netutils/dhcpc/dhcpc.c
+++ b/apps/netutils/dhcpc/dhcpc.c
@@ -351,6 +351,7 @@ void *dhcpc_open(const void *macaddr, int maclen)
struct dhcpc_state_s *pdhcpc;
struct sockaddr_in addr;
struct timeval tv;
+ int ret;
ndbg("MAC: %02x:%02x:%02x:%02x:%02x:%02x\n",
((uint8_t*)macaddr)[0], ((uint8_t*)macaddr)[1], ((uint8_t*)macaddr)[2],
@@ -369,21 +370,24 @@ void *dhcpc_open(const void *macaddr, int maclen)
/* Create a UDP socket */
- pdhcpc->sockfd = socket(PF_INET, SOCK_DGRAM, 0);
+ pdhcpc->sockfd = socket(PF_INET, SOCK_DGRAM, 0);
if (pdhcpc->sockfd < 0)
{
+ nvdbg("socket handle %d\n",ret);
free(pdhcpc);
return NULL;
}
- /* bind the socket */
+ /* Bind the socket */
addr.sin_family = AF_INET;
addr.sin_port = HTONS(DHCPC_CLIENT_PORT);
addr.sin_addr.s_addr = INADDR_ANY;
- if (bind(pdhcpc->sockfd, (struct sockaddr*)&addr, sizeof(struct sockaddr_in)) < 0)
+ ret = bind(pdhcpc->sockfd, (struct sockaddr*)&addr, sizeof(struct sockaddr_in));
+ if (ret < 0)
{
+ nvdbg("bind status %d\n",ret);
close(pdhcpc->sockfd);
free(pdhcpc);
return NULL;
@@ -393,8 +397,11 @@ void *dhcpc_open(const void *macaddr, int maclen)
tv.tv_sec = 10;
tv.tv_usec = 0;
- if (setsockopt(pdhcpc->sockfd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(struct timeval)) < 0)
+
+ ret = setsockopt(pdhcpc->sockfd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(struct timeval));
+ if (ret < 0)
{
+ nvdbg("setsockopt status %d\n",ret);
close(pdhcpc->sockfd);
free(pdhcpc);
return NULL;
@@ -410,9 +417,15 @@ void *dhcpc_open(const void *macaddr, int maclen)
void dhcpc_close(void *handle)
{
- struct dchcpc_state_internal *pdhcpc = (struct dchcpc_state_internal *)handle;
+ struct dhcpc_state_s *pdhcpc = (struct dhcpc_state_s *)handle;
+
if (pdhcpc)
{
+ if (pdhcpc->sockfd)
+ {
+ close(pdhcpc->sockfd);
+ }
+
free(pdhcpc);
}
}