mirror of
https://github.com/apache/nuttx-apps.git
synced 2025-10-19 19:44:35 +08:00
DHCPC: Remove hard-coded interface device. Now passed as a parameter to dhcpc_open().
This commit is contained in:

committed by
Gregory Nutt

parent
395c191b43
commit
ea1025ead2
@@ -142,7 +142,7 @@ printf("NET1: Configuring %s\n", CONFIG_EXAMPLES_BRIDGE_NET1_IFNAME);
|
|||||||
|
|
||||||
/* Set up the DHCPC modules */
|
/* Set up the DHCPC modules */
|
||||||
|
|
||||||
handle = dhcpc_open(&mac, IFHWADDRLEN);
|
handle = dhcpc_open("eth0", &mac, IFHWADDRLEN);
|
||||||
|
|
||||||
/* Get an IP address. Note: there is no logic here for renewing the address in this
|
/* Get an IP address. Note: there is no logic here for renewing the address in this
|
||||||
* example. The address should be renewed in ds.lease_time/2 seconds.
|
* example. The address should be renewed in ds.lease_time/2 seconds.
|
||||||
|
@@ -147,7 +147,7 @@ int discover_main(int argc, char *argv[])
|
|||||||
|
|
||||||
/* Set up the DHCPC modules */
|
/* Set up the DHCPC modules */
|
||||||
|
|
||||||
handle = dhcpc_open(&mac, IFHWADDRLEN);
|
handle = dhcpc_open("eth0", &mac, IFHWADDRLEN);
|
||||||
|
|
||||||
/* Get an IP address. Note: there is no logic here for renewing the address in this
|
/* Get an IP address. Note: there is no logic here for renewing the address in this
|
||||||
* example. The address should be renewed in ds.lease_time/2 seconds.
|
* example. The address should be renewed in ds.lease_time/2 seconds.
|
||||||
|
@@ -156,7 +156,7 @@ static int tcpecho_netsetup()
|
|||||||
|
|
||||||
/* Set up the DHCPC modules */
|
/* Set up the DHCPC modules */
|
||||||
|
|
||||||
handle = dhcpc_open(&mac, IFHWADDRLEN);
|
handle = dhcpc_open("eth0", &mac, IFHWADDRLEN);
|
||||||
|
|
||||||
/* Get an IP address. Note: there is no logic here for renewing the address in this
|
/* Get an IP address. Note: there is no logic here for renewing the address in this
|
||||||
* example. The address should be renewed in ds.lease_time/2 seconds.
|
* example. The address should be renewed in ds.lease_time/2 seconds.
|
||||||
|
@@ -153,7 +153,7 @@ int webserver_main(int argc, char *argv[])
|
|||||||
|
|
||||||
/* Set up the DHCPC modules */
|
/* Set up the DHCPC modules */
|
||||||
|
|
||||||
handle = dhcpc_open(&mac, IFHWADDRLEN);
|
handle = dhcpc_open("eth0", &mac, IFHWADDRLEN);
|
||||||
|
|
||||||
/* Get an IP address. Note: there is no logic here for renewing the address in this
|
/* Get an IP address. Note: there is no logic here for renewing the address in this
|
||||||
* example. The address should be renewed in ds.lease_time/2 seconds.
|
* example. The address should be renewed in ds.lease_time/2 seconds.
|
||||||
|
@@ -321,7 +321,7 @@ static int xmlrpc_netinit(void)
|
|||||||
|
|
||||||
/* Set up the DHCPC modules */
|
/* Set up the DHCPC modules */
|
||||||
|
|
||||||
handle = dhcpc_open(&mac, IFHWADDRLEN);
|
handle = dhcpc_open("eth0", &mac, IFHWADDRLEN);
|
||||||
|
|
||||||
/* Get an IP address. Note: there is no logic here for renewing the address
|
/* Get an IP address. Note: there is no logic here for renewing the address
|
||||||
* in this example. The address should be renewed in ds.lease_time/2
|
* in this example. The address should be renewed in ds.lease_time/2
|
||||||
|
@@ -75,8 +75,9 @@ extern "C"
|
|||||||
#define EXTERN extern
|
#define EXTERN extern
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
FAR void *dhcpc_open(FAR const void *mac_addr, int mac_len);
|
FAR void *dhcpc_open(FAR const char *interface,
|
||||||
int dhcpc_request(FAR void *handle, FAR struct dhcpc_state *presult);
|
FAR const void *mac_addr, int mac_len);
|
||||||
|
int dhcpc_request(FAR void *handle, FAR struct dhcpc_state *presult);
|
||||||
void dhcpc_close(FAR void *handle);
|
void dhcpc_close(FAR void *handle);
|
||||||
|
|
||||||
#undef EXTERN
|
#undef EXTERN
|
||||||
|
@@ -12,12 +12,4 @@ config NETUTILS_DHCPC
|
|||||||
|
|
||||||
if NETUTILS_DHCPC
|
if NETUTILS_DHCPC
|
||||||
|
|
||||||
config NETUTILS_DHCPC_DEVNAME
|
|
||||||
string "DHCP device name"
|
|
||||||
default "eth0" if !DRIVERS_IEEE80211
|
|
||||||
default "wlan0" if DRIVERS_IEEE80211
|
|
||||||
depends on NET_UDP && NET_BROADCAST && NET_IPv4
|
|
||||||
---help---
|
|
||||||
Specify the Ethernet or IEEE 802.15.4 device to use.
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
@@ -63,11 +63,6 @@
|
|||||||
|
|
||||||
/* Configuration */
|
/* Configuration */
|
||||||
|
|
||||||
#ifdef CONFIG_NETUTILS_DHCPC_DEVNAME
|
|
||||||
# define DEVNAME CONFIG_NETUTILS_DHCPC_DEVNAME
|
|
||||||
#else
|
|
||||||
# define DEVNAME "eth0"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* DHCP Definitions */
|
/* DHCP Definitions */
|
||||||
|
|
||||||
@@ -133,7 +128,8 @@ struct dhcp_msg
|
|||||||
|
|
||||||
struct dhcpc_state_s
|
struct dhcpc_state_s
|
||||||
{
|
{
|
||||||
const void *ds_macaddr;
|
FAR const char *interface;
|
||||||
|
FAR const void *ds_macaddr;
|
||||||
int ds_maclen;
|
int ds_maclen;
|
||||||
int sockfd;
|
int sockfd;
|
||||||
struct in_addr ipaddr;
|
struct in_addr ipaddr;
|
||||||
@@ -328,6 +324,7 @@ static uint8_t dhcpc_parseoptions(struct dhcpc_state *presult, uint8_t *optptr,
|
|||||||
|
|
||||||
optptr += optptr[1] + 2;
|
optptr += optptr[1] + 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -335,8 +332,8 @@ static uint8_t dhcpc_parseoptions(struct dhcpc_state *presult, uint8_t *optptr,
|
|||||||
* Name: dhcpc_parsemsg
|
* Name: dhcpc_parsemsg
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static uint8_t dhcpc_parsemsg(struct dhcpc_state_s *pdhcpc, int buflen,
|
static uint8_t dhcpc_parsemsg(FAR struct dhcpc_state_s *pdhcpc, int buflen,
|
||||||
struct dhcpc_state *presult)
|
FAR struct dhcpc_state *presult)
|
||||||
{
|
{
|
||||||
if (pdhcpc->packet.op == DHCP_REPLY &&
|
if (pdhcpc->packet.op == DHCP_REPLY &&
|
||||||
memcmp(pdhcpc->packet.xid, xid, sizeof(xid)) == 0 &&
|
memcmp(pdhcpc->packet.xid, xid, sizeof(xid)) == 0 &&
|
||||||
@@ -345,6 +342,7 @@ static uint8_t dhcpc_parsemsg(struct dhcpc_state_s *pdhcpc, int buflen,
|
|||||||
memcpy(&presult->ipaddr.s_addr, pdhcpc->packet.yiaddr, 4);
|
memcpy(&presult->ipaddr.s_addr, pdhcpc->packet.yiaddr, 4);
|
||||||
return dhcpc_parseoptions(presult, &pdhcpc->packet.options[4], buflen);
|
return dhcpc_parseoptions(presult, &pdhcpc->packet.options[4], buflen);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -356,9 +354,10 @@ static uint8_t dhcpc_parsemsg(struct dhcpc_state_s *pdhcpc, int buflen,
|
|||||||
* Name: dhcpc_open
|
* Name: dhcpc_open
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void *dhcpc_open(const void *macaddr, int maclen)
|
FAR void *dhcpc_open(FAR const char *interface, FAR const void *macaddr,
|
||||||
|
int maclen)
|
||||||
{
|
{
|
||||||
struct dhcpc_state_s *pdhcpc;
|
FAR struct dhcpc_state_s *pdhcpc;
|
||||||
struct sockaddr_in addr;
|
struct sockaddr_in addr;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
int ret;
|
int ret;
|
||||||
@@ -375,6 +374,7 @@ void *dhcpc_open(const void *macaddr, int maclen)
|
|||||||
/* Initialize the allocated structure */
|
/* Initialize the allocated structure */
|
||||||
|
|
||||||
memset(pdhcpc, 0, sizeof(struct dhcpc_state_s));
|
memset(pdhcpc, 0, sizeof(struct dhcpc_state_s));
|
||||||
|
pdhcpc->interface = interface;
|
||||||
pdhcpc->ds_macaddr = macaddr;
|
pdhcpc->ds_macaddr = macaddr;
|
||||||
pdhcpc->ds_maclen = maclen;
|
pdhcpc->ds_maclen = maclen;
|
||||||
|
|
||||||
@@ -418,14 +418,14 @@ void *dhcpc_open(const void *macaddr, int maclen)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (void*)pdhcpc;
|
return (FAR void *)pdhcpc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: dhcpc_close
|
* Name: dhcpc_close
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void dhcpc_close(void *handle)
|
void dhcpc_close(FAR void *handle)
|
||||||
{
|
{
|
||||||
struct dhcpc_state_s *pdhcpc = (struct dhcpc_state_s *)handle;
|
struct dhcpc_state_s *pdhcpc = (struct dhcpc_state_s *)handle;
|
||||||
|
|
||||||
@@ -457,7 +457,7 @@ int dhcpc_request(void *handle, struct dhcpc_state *presult)
|
|||||||
/* Save the currently assigned IP address (should be INADDR_ANY) */
|
/* Save the currently assigned IP address (should be INADDR_ANY) */
|
||||||
|
|
||||||
oldaddr.s_addr = 0;
|
oldaddr.s_addr = 0;
|
||||||
netlib_get_ipv4addr(DEVNAME, &oldaddr);
|
netlib_get_ipv4addr(pdhcpc->interface, &oldaddr);
|
||||||
|
|
||||||
/* Loop until we receive the lease (or an error occurs) */
|
/* Loop until we receive the lease (or an error occurs) */
|
||||||
|
|
||||||
@@ -466,7 +466,7 @@ int dhcpc_request(void *handle, struct dhcpc_state *presult)
|
|||||||
/* Set the IP address to INADDR_ANY. */
|
/* Set the IP address to INADDR_ANY. */
|
||||||
|
|
||||||
newaddr.s_addr = INADDR_ANY;
|
newaddr.s_addr = INADDR_ANY;
|
||||||
(void)netlib_set_ipv4addr(DEVNAME, &newaddr);
|
(void)netlib_set_ipv4addr(pdhcpc->interface, &newaddr);
|
||||||
|
|
||||||
/* Loop sending DISCOVER until we receive an OFFER from a DHCP
|
/* Loop sending DISCOVER until we receive an OFFER from a DHCP
|
||||||
* server. We will lock on to the first OFFER and decline any
|
* server. We will lock on to the first OFFER and decline any
|
||||||
@@ -506,7 +506,7 @@ int dhcpc_request(void *handle, struct dhcpc_state *presult)
|
|||||||
* out of the loop.
|
* out of the loop.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
(void)netlib_set_ipv4addr(DEVNAME, &presult->ipaddr);
|
(void)netlib_set_ipv4addr(pdhcpc->interface, &presult->ipaddr);
|
||||||
state = STATE_HAVE_OFFER;
|
state = STATE_HAVE_OFFER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -598,7 +598,7 @@ int dhcpc_request(void *handle, struct dhcpc_state *presult)
|
|||||||
{
|
{
|
||||||
/* An error other than a timeout was received */
|
/* An error other than a timeout was received */
|
||||||
|
|
||||||
(void)netlib_set_ipv4addr(DEVNAME, &oldaddr);
|
(void)netlib_set_ipv4addr(pdhcpc->interface, &oldaddr);
|
||||||
return ERROR;
|
return ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1063,7 +1063,7 @@ int cmd_ifconfig(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
|||||||
|
|
||||||
/* Set up the DHCPC modules */
|
/* Set up the DHCPC modules */
|
||||||
|
|
||||||
handle = dhcpc_open(&mac, IFHWADDRLEN);
|
handle = dhcpc_open("eth0", &mac, IFHWADDRLEN);
|
||||||
|
|
||||||
/* Get an IP address. Note that there is no logic for renewing the IP
|
/* Get an IP address. Note that there is no logic for renewing the IP
|
||||||
* address in this example. The address should be renewed in
|
* address in this example. The address should be renewed in
|
||||||
|
@@ -377,7 +377,7 @@ static void nsh_netinit_configure(void)
|
|||||||
|
|
||||||
/* Set up the DHCPC modules */
|
/* Set up the DHCPC modules */
|
||||||
|
|
||||||
handle = dhcpc_open(&mac, IFHWADDRLEN);
|
handle = dhcpc_open(NET_DEVNAME, &mac, IFHWADDRLEN);
|
||||||
|
|
||||||
/* Get an IP address. Note that there is no logic for renewing the IP address in this
|
/* Get an IP address. Note that there is no logic for renewing the IP address in this
|
||||||
* example. The address should be renewed in ds.lease_time/2 seconds.
|
* example. The address should be renewed in ds.lease_time/2 seconds.
|
||||||
|
Reference in New Issue
Block a user