summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-05-21 18:25:31 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-05-21 18:25:31 +0000
commit1d8f60792331e913c6c4cd3bf3d6b785359778ee (patch)
treebe04cc8b489c7456c1a2d9f6caf82d34590d3d00 /apps
parentda19497e87298884e6b7c23b2892bb25cb12ef82 (diff)
downloadnuttx-1d8f60792331e913c6c4cd3bf3d6b785359778ee.tar.gz
nuttx-1d8f60792331e913c6c4cd3bf3d6b785359778ee.tar.bz2
nuttx-1d8f60792331e913c6c4cd3bf3d6b785359778ee.zip
Add E1000 PIC NIC driver from Yu Qiang
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3638 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'apps')
-rwxr-xr-xapps/ChangeLog.txt4
-rw-r--r--apps/nshlib/nsh_netcmds.c44
-rw-r--r--apps/nshlib/nsh_parse.c2
3 files changed, 47 insertions, 3 deletions
diff --git a/apps/ChangeLog.txt b/apps/ChangeLog.txt
index a17488542..495268cb7 100755
--- a/apps/ChangeLog.txt
+++ b/apps/ChangeLog.txt
@@ -49,3 +49,7 @@
on initial check-in.
6.4 2011-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
+
+ * nshlib/nsh_netcmds.c: If a network device name and IP address are provided
+ with the ifconfig command, then this command will now set the network address.
+
diff --git a/apps/nshlib/nsh_netcmds.c b/apps/nshlib/nsh_netcmds.c
index 1bd1e93e4..6e210c020 100644
--- a/apps/nshlib/nsh_netcmds.c
+++ b/apps/nshlib/nsh_netcmds.c
@@ -466,8 +466,48 @@ int cmd_get(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
#ifndef CONFIG_NSH_DISABLE_IFCONFIG
int cmd_ifconfig(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
{
- netdev_foreach(ifconfig_callback, vtbl);
- uip_statistics(vtbl);
+ struct in_addr addr;
+ in_addr_t ip;
+
+ /* With one or no arguments, ifconfig simply shows the status of ethernet
+ * device:
+ *
+ * ifconfig
+ * ifconfig [nic_name]
+ */
+
+ if (argc <= 2)
+ {
+ netdev_foreach(ifconfig_callback, vtbl);
+ uip_statistics(vtbl);
+ return OK;
+ }
+
+ /* If both the network interface name and an IP address are supplied as
+ * arguments, then ifconfig will set the address of the ethernet device:
+ *
+ * ifconfig nic_name ip_address
+ */
+
+ /* Set host ip address */
+
+ ip = addr.s_addr = inet_addr(argv[2]);
+ uip_sethostaddr(argv[1], &addr);
+
+ /* Set gateway */
+
+ ip = NTOHL(ip);
+ ip &= ~0x000000ff;
+ ip |= 0x00000001;
+
+ addr.s_addr = HTONL(ip);
+ uip_setdraddr(argv[1], &addr);
+
+ /* Set netmask */
+
+ addr.s_addr = inet_addr("255.255.255.0");
+ uip_setnetmask(argv[1], &addr);
+
return OK;
}
#endif
diff --git a/apps/nshlib/nsh_parse.c b/apps/nshlib/nsh_parse.c
index ef861b2de..f6a778a03 100644
--- a/apps/nshlib/nsh_parse.c
+++ b/apps/nshlib/nsh_parse.c
@@ -191,7 +191,7 @@ static const struct cmdmap_s g_cmdmap[] =
#ifdef CONFIG_NET
# ifndef CONFIG_NSH_DISABLE_IFCONFIG
- { "ifconfig", cmd_ifconfig, 1, 1, NULL },
+ { "ifconfig", cmd_ifconfig, 1, 3, "[nic_name [ip]]" },
# endif
#endif