summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/examples/ftpc/ftpc.h32
-rwxr-xr-xapps/examples/ftpc/ftpc_cmds.c60
-rwxr-xr-xapps/examples/ftpc/ftpc_main.c54
-rw-r--r--apps/include/ftpc.h7
-rw-r--r--apps/netutils/ftpc/ftpc_connect.c18
-rw-r--r--apps/netutils/ftpc/ftpc_socket.c4
-rw-r--r--nuttx/ChangeLog3
-rwxr-xr-xnuttx/configs/olimex-lpc1766stk/ftpc/defconfig103
-rwxr-xr-xnuttx/configs/olimex-lpc1766stk/nsh/defconfig20
-rw-r--r--nuttx/net/getsockname.c4
10 files changed, 193 insertions, 112 deletions
diff --git a/apps/examples/ftpc/ftpc.h b/apps/examples/ftpc/ftpc.h
index 42f1d3fa0..503922375 100644
--- a/apps/examples/ftpc/ftpc.h
+++ b/apps/examples/ftpc/ftpc.h
@@ -102,24 +102,24 @@ extern void ftpc_freefullpath(char *relpath);
/* FTP command handlers */
-extern int cmd_login(SESSION handle, int argc, char **argv);
-extern int cmd_quit(SESSION handle, int argc, char **argv);
-extern int cmd_chdir(SESSION handle, int argc, char **argv);
+extern int cmd_rlogin(SESSION handle, int argc, char **argv);
+extern int cmd_rquit(SESSION handle, int argc, char **argv);
+extern int cmd_rchdir(SESSION handle, int argc, char **argv);
extern int cmd_rpwd(SESSION handle, int argc, char **argv);
-extern int cmd_cdup(SESSION handle, int argc, char **argv);
-extern int cmd_mkdir(SESSION handle, int argc, char **argv);
-
-extern int cmd_rmdir(SESSION handle, int argc, char **argv);
-extern int cmd_unlink(SESSION handle, int argc, char **argv);
-extern int cmd_chmod(SESSION handle, int argc, char **argv);
-extern int cmd_rename(SESSION handle, int argc, char **argv);
-extern int cmd_size(SESSION handle, int argc, char **argv);
-extern int cmd_time(SESSION handle, int argc, char **argv);
-extern int cmd_idle(SESSION handle, int argc, char **argv);
-extern int cmd_noop(SESSION handle, int argc, char **argv);
+extern int cmd_rcdup(SESSION handle, int argc, char **argv);
+extern int cmd_rmkdir(SESSION handle, int argc, char **argv);
+
+extern int cmd_rrmdir(SESSION handle, int argc, char **argv);
+extern int cmd_runlink(SESSION handle, int argc, char **argv);
+extern int cmd_rchmod(SESSION handle, int argc, char **argv);
+extern int cmd_rrename(SESSION handle, int argc, char **argv);
+extern int cmd_rsize(SESSION handle, int argc, char **argv);
+extern int cmd_rtime(SESSION handle, int argc, char **argv);
+extern int cmd_ridle(SESSION handle, int argc, char **argv);
+extern int cmd_rnoop(SESSION handle, int argc, char **argv);
extern int cmd_rhelp(SESSION handle, int argc, char **argv);
extern int cmd_rls(SESSION handle, int argc, char **argv);
-extern int cmd_get(SESSION handle, int argc, char **argv);
-extern int cmd_put(SESSION handle, int argc, char **argv);
+extern int cmd_rget(SESSION handle, int argc, char **argv);
+extern int cmd_rput(SESSION handle, int argc, char **argv);
#endif /* __APPS_EXAMPLES_FTPC_FTPC_H */
diff --git a/apps/examples/ftpc/ftpc_cmds.c b/apps/examples/ftpc/ftpc_cmds.c
index 4787da33e..fd07a68ca 100755
--- a/apps/examples/ftpc/ftpc_cmds.c
+++ b/apps/examples/ftpc/ftpc_cmds.c
@@ -61,10 +61,10 @@
****************************************************************************/
/****************************************************************************
- * Name: cmd_login
+ * Name: cmd_rlogin
****************************************************************************/
-int cmd_login(SESSION handle, int argc, char **argv)
+int cmd_rlogin(SESSION handle, int argc, char **argv)
{
struct ftpc_login_s login = {0, 0, 0, true};
@@ -78,10 +78,10 @@ int cmd_login(SESSION handle, int argc, char **argv)
}
/****************************************************************************
- * Name: cmd_quit
+ * Name: cmd_rquit
****************************************************************************/
-int cmd_quit(SESSION handle, int argc, char **argv)
+int cmd_rquit(SESSION handle, int argc, char **argv)
{
int ret = ftpc_quit(handle);
if (ret < 0)
@@ -94,10 +94,10 @@ int cmd_quit(SESSION handle, int argc, char **argv)
}
/****************************************************************************
- * Name: cmd_chdir
+ * Name: cmd_rchdir
****************************************************************************/
-int cmd_chdir(SESSION handle, int argc, char **argv)
+int cmd_rchdir(SESSION handle, int argc, char **argv)
{
return ftpc_chdir(handle, argv[1]);
}
@@ -119,64 +119,64 @@ int cmd_rpwd(SESSION handle, int argc, char **argv)
}
/****************************************************************************
- * Name: cmd_cdup
+ * Name: cmd_rcdup
****************************************************************************/
-int cmd_cdup(SESSION handle, int argc, char **argv)
+int cmd_rcdup(SESSION handle, int argc, char **argv)
{
return ftpc_cdup(handle);
}
/****************************************************************************
- * Name: cmd_mkdir
+ * Name: cmd_rmkdir
****************************************************************************/
-int cmd_mkdir(SESSION handle, int argc, char **argv)
+int cmd_rmkdir(SESSION handle, int argc, char **argv)
{
return ftpc_mkdir(handle, argv[1]);
}
/****************************************************************************
- * Name: cmd_rmdir
+ * Name: cmd_rrmdir
****************************************************************************/
-int cmd_rmdir(SESSION handle, int argc, char **argv)
+int cmd_rrmdir(SESSION handle, int argc, char **argv)
{
return ftpc_rmdir(handle, argv[1]);
}
/****************************************************************************
- * Name: cmd_unlink
+ * Name: cmd_runlink
****************************************************************************/
-int cmd_unlink(SESSION handle, int argc, char **argv)
+int cmd_runlink(SESSION handle, int argc, char **argv)
{
return ftpc_unlink(handle, argv[1]);
}
/****************************************************************************
- * Name: cmd_chmod
+ * Name: cmd_rchmod
****************************************************************************/
-int cmd_chmod(SESSION handle, int argc, char **argv)
+int cmd_rchmod(SESSION handle, int argc, char **argv)
{
return ftpc_chmod(handle, argv[1], argv[2]);
}
/****************************************************************************
- * Name: cmd_rename
+ * Name: cmd_rrename
****************************************************************************/
-int cmd_rename(SESSION handle, int argc, char **argv)
+int cmd_rrename(SESSION handle, int argc, char **argv)
{
return ftpc_rename(handle, argv[1], argv[2]);
}
/****************************************************************************
- * Name: cmd_size
+ * Name: cmd_rsize
****************************************************************************/
-int cmd_size(SESSION handle, int argc, char **argv)
+int cmd_rsize(SESSION handle, int argc, char **argv)
{
uint64_t size = ftpc_filesize(handle, argv[1]);
printf("SIZE: %ull\n", size);
@@ -184,10 +184,10 @@ int cmd_size(SESSION handle, int argc, char **argv)
}
/****************************************************************************
- * Name: cmd_time
+ * Name: cmd_rtime
****************************************************************************/
-int cmd_time(SESSION handle, int argc, char **argv)
+int cmd_rtime(SESSION handle, int argc, char **argv)
{
time_t filetime = ftpc_filetime(handle, argv[1]);
printf("TIME: %ul\n", (long)filetime);
@@ -195,10 +195,10 @@ int cmd_time(SESSION handle, int argc, char **argv)
}
/****************************************************************************
- * Name: cmd_idle
+ * Name: cmd_ridle
****************************************************************************/
-int cmd_idle(SESSION handle, int argc, char **argv)
+int cmd_ridle(SESSION handle, int argc, char **argv)
{
unsigned int idletime = 0;
@@ -211,10 +211,10 @@ int cmd_idle(SESSION handle, int argc, char **argv)
}
/****************************************************************************
- * Name: cmd_noop
+ * Name: cmd_rnoop
****************************************************************************/
-int cmd_noop(SESSION handle, int argc, char **argv)
+int cmd_rnoop(SESSION handle, int argc, char **argv)
{
return ftpc_noop(handle);
}
@@ -270,10 +270,10 @@ int cmd_rls(SESSION handle, int argc, char **argv)
}
/****************************************************************************
- * Name: cmd_get
+ * Name: cmd_rget
****************************************************************************/
-int cmd_get(SESSION handle, int argc, char **argv)
+int cmd_rget(SESSION handle, int argc, char **argv)
{
FAR const char *lname = argv[1];
@@ -285,10 +285,10 @@ int cmd_get(SESSION handle, int argc, char **argv)
}
/****************************************************************************
- * Name: cmd_put
+ * Name: cmd_rput
****************************************************************************/
-int cmd_put(SESSION handle, int argc, char **argv)
+int cmd_rput(SESSION handle, int argc, char **argv)
{
FAR const char *rname = argv[1];
diff --git a/apps/examples/ftpc/ftpc_main.c b/apps/examples/ftpc/ftpc_main.c
index e80b80a0c..abca07089 100755
--- a/apps/examples/ftpc/ftpc_main.c
+++ b/apps/examples/ftpc/ftpc_main.c
@@ -71,30 +71,30 @@ struct cmdmap_s
static const char g_delim[] = " \t\n";
-static int cmd_help(SESSION handle, int argc, char **argv);
-static int cmd_unrecognized(SESSION handle, int argc, char **argv);
+static int cmd_lhelp(SESSION handle, int argc, char **argv);
+static int cmd_lunrecognized(SESSION handle, int argc, char **argv);
static const struct cmdmap_s g_cmdmap[] =
{
- { "cd", cmd_chdir, 2, 2, "<directory>" },
- { "chmod", cmd_chmod, 3, 3, "<permissions> <path>" },
- { "get", cmd_unlink, 2, 3, "<rname> [<lname>]" },
- { "help", cmd_help, 1, 2, "" },
- { "idle", cmd_idle, 1, 2, "[<idletime>]" },
- { "login", cmd_login, 2, 3, "<uname> [<password>]" },
- { "ls", cmd_login, 1, 2, "[<dirpath>]" },
- { "quit", cmd_login, 1, 1, "" },
- { "mkdir", cmd_mkdir, 2, 2, "<directory>" },
- { "noop", cmd_noop, 1, 1, "" },
- { "put", cmd_unlink, 2, 3, "<lname> [<rname>]" },
- { "pwd", cmd_rpwd, 1, 1, "" },
- { "rename", cmd_rename, 3, 3, "<oldname> <newname>" },
- { "rhelp", cmd_rhelp, 1, 2, "[<command>]" },
- { "rm", cmd_unlink, 2, 2, "" },
- { "rmdir", cmd_rmdir, 2, 2, "<directory>" },
- { "size", cmd_size, 2, 2, "<filepath>" },
- { "time", cmd_time, 2, 2, "<filepath>" },
- { "up", cmd_cdup, 1, 1, "" },
+ { "cd", cmd_rchdir, 2, 2, "<directory>" },
+ { "chmod", cmd_rchmod, 3, 3, "<permissions> <path>" },
+ { "get", cmd_rget, 2, 3, "<rname> [<lname>]" },
+ { "help", cmd_lhelp, 1, 2, "" },
+ { "idle", cmd_ridle, 1, 2, "[<idletime>]" },
+ { "login", cmd_rlogin, 2, 3, "<uname> [<password>]" },
+ { "ls", cmd_rls, 1, 2, "[<dirpath>]" },
+ { "quit", cmd_rquit, 1, 1, "" },
+ { "mkdir", cmd_rmkdir, 2, 2, "<directory>" },
+ { "noop", cmd_rnoop, 1, 1, "" },
+ { "put", cmd_rput, 2, 3, "<lname> [<rname>]" },
+ { "pwd", cmd_rpwd, 1, 1, "" },
+ { "rename", cmd_rrename, 3, 3, "<oldname> <newname>" },
+ { "rhelp", cmd_rhelp, 1, 2, "[<command>]" },
+ { "rm", cmd_runlink, 2, 2, "" },
+ { "rmdir", cmd_rrmdir, 2, 2, "<directory>" },
+ { "size", cmd_rsize, 2, 2, "<filepath>" },
+ { "time", cmd_rtime, 2, 2, "<filepath>" },
+ { "up", cmd_rcdup, 1, 1, "" },
};
static char g_line[CONFIG_FTPC_LINELEN];
@@ -104,10 +104,10 @@ static char g_line[CONFIG_FTPC_LINELEN];
****************************************************************************/
/****************************************************************************
- * Name: cmd_help
+ * Name: cmd_lhelp
****************************************************************************/
-static int cmd_help(SESSION handle, int argc, char **argv)
+static int cmd_lhelp(SESSION handle, int argc, char **argv)
{
const struct cmdmap_s *ptr;
@@ -127,10 +127,10 @@ static int cmd_help(SESSION handle, int argc, char **argv)
}
/****************************************************************************
- * Name: cmd_unrecognized
+ * Name: cmd_lunrecognized
****************************************************************************/
-static int cmd_unrecognized(SESSION handle, int argc, char **argv)
+static int cmd_lunrecognized(SESSION handle, int argc, char **argv)
{
printf("Command %s unrecognized\n", argv[0]);
return ERROR;
@@ -226,7 +226,7 @@ static int ftpc_execute(SESSION handle, int argc, char *argv[])
{
const struct cmdmap_s *cmdmap;
const char *cmd;
- cmd_t handler = cmd_unrecognized;
+ cmd_t handler = cmd_lunrecognized;
int ret;
/* The form of argv is:
@@ -407,4 +407,4 @@ int ftpc_main(int argc, char **argv, char **envp)
}
return 0;
-} \ No newline at end of file
+}
diff --git a/apps/include/ftpc.h b/apps/include/ftpc.h
index 0676a7040..79632ba1d 100644
--- a/apps/include/ftpc.h
+++ b/apps/include/ftpc.h
@@ -116,9 +116,10 @@ typedef FAR void *SESSION;
*
* addr - The IPv4 address of the FTP server (or the proxy) for the FTP
* server.
- * port - The port number on the FTP server to connect to. This is usually
- * port 21 for FTP. You may set this value to zero to let FTPC
- * select the default port number for you (CONFIG_FTP_DEFPORT).
+ * port - The port number on the FTP server to connect to (in host byte
+ * order). This is usually port 21 for FTP. You may set this
+ * value to zero to let FTPC select the default port number for
+ * you (it will use CONFIG_FTP_DEFPORT).
*/
struct ftpc_connect_s
diff --git a/apps/netutils/ftpc/ftpc_connect.c b/apps/netutils/ftpc/ftpc_connect.c
index ff19af324..ccd68cb03 100644
--- a/apps/netutils/ftpc/ftpc_connect.c
+++ b/apps/netutils/ftpc/ftpc_connect.c
@@ -98,9 +98,19 @@ SESSION ftpc_connect(FAR struct ftpc_connect_s *server)
/* Initialize the session structure */
session->addr.s_addr = server->addr.s_addr;
- session->port = server->port ? server->port : CONFIG_FTP_DEFPORT;
session->pid = getpid();
+ /* Use the default port if the user specified port number zero */
+
+ if (!server->port)
+ {
+ session->port = HTONS(CONFIG_FTP_DEFPORT);
+ }
+ else
+ {
+ session->port = htons(server->port);
+ }
+
/* Create up a timer to prevent hangs */
session->wdog = wd_create();
@@ -165,7 +175,7 @@ int ftpc_reconnect(FAR struct ftpc_session_s *session)
#ifdef CONFIG_DEBUG
tmp = inet_ntoa(session->addr);
- ndbg("Connecting to server address %s:%d\n", tmp, ntohl(session->port));
+ ndbg("Connecting to server address %s:%d\n", tmp, ntohs(session->port));
#endif
addr.sin_family = AF_INET;
@@ -211,9 +221,9 @@ int ftpc_reconnect(FAR struct ftpc_session_s *session)
#ifdef CONFIG_DEBUG
ndbg("Connected\n");
tmp = inet_ntoa(session->cmd.raddr.sin_addr);
- ndbg(" Remote address: %s:%d\n", tmp, ntohl(session->cmd.raddr.sin_port));
+ ndbg(" Remote address: %s:%d\n", tmp, ntohs(session->cmd.raddr.sin_port));
tmp = inet_ntoa(session->cmd.laddr.sin_addr);
- ndbg(" Local address: %s:d\n", tmp, ntohl(session->cmd.laddr.sin_port));
+ ndbg(" Local address: %s:d\n", tmp, ntohs(session->cmd.laddr.sin_port));
#endif
return OK;
diff --git a/apps/netutils/ftpc/ftpc_socket.c b/apps/netutils/ftpc/ftpc_socket.c
index 500f20995..a77481403 100644
--- a/apps/netutils/ftpc/ftpc_socket.c
+++ b/apps/netutils/ftpc/ftpc_socket.c
@@ -377,10 +377,10 @@ int ftpc_sockprintf(struct ftpc_socket_s *sock, const char *str, ...)
int ftpc_sockgetsockname(FAR struct ftpc_socket_s *sock,
FAR struct sockaddr_in *addr)
{
- unsigned int len = sizeof(struct sockaddr_in);
+ socklen_t len = sizeof(struct sockaddr_in);
int ret;
- ret = getsockname(sock->sd, (struct sockaddr *)addr, &len);
+ ret = getsockname(sock->sd, (FAR struct sockaddr *)addr, &len);
if (ret < 0)
{
ndbg("getsockname failed: %d\n", errno);
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog
index 122ab4148..6bfbedeef 100644
--- a/nuttx/ChangeLog
+++ b/nuttx/ChangeLog
@@ -1794,3 +1794,6 @@
* lib/stdio/lib_asprintf.c: Add asprintf()
* configs/olimex-lpc1766stk/ftpc: Add a configuration to support
testing of the FTP client shell.
+ * fd/fs_fdopen.c and net/net_checksd.c: Add support so that fdopen may
+ be used with socket descriptors.
+
diff --git a/nuttx/configs/olimex-lpc1766stk/ftpc/defconfig b/nuttx/configs/olimex-lpc1766stk/ftpc/defconfig
index 8e2a75668..abbd6a63e 100755
--- a/nuttx/configs/olimex-lpc1766stk/ftpc/defconfig
+++ b/nuttx/configs/olimex-lpc1766stk/ftpc/defconfig
@@ -115,7 +115,7 @@ CONFIG_LPC17_CAN1=n
CONFIG_LPC17_CAN2=n
CONFIG_LPC17_SPI=n
CONFIG_LPC17_SSP0=n
-CONFIG_LPC17_SSP1=n
+CONFIG_LPC17_SSP1=y
CONFIG_LPC17_I2C0=n
CONFIG_LPC17_I2C1=n
CONFIG_LPC17_I2S=n
@@ -195,10 +195,10 @@ CONFIG_UART3_2STOP=0
# CONFIG_NET_PRIORITY - Ethernet interrupt priority. The is default is
# the higest priority.
# CONFIG_NET_WOL - Enable Wake-up on Lan (not fully implemented).
-# CONFIG_NET_REGDEBUG - Enabled low level register debug. Also needs
-# CONFIG_DEBUG.
# CONFIG_NET_DUMPPACKET - Dump all received and transmitted packets.
# Also needs CONFIG_DEBUG.
+# CONFIG_NET_REGDEBUG - Enabled low level register debug. Also needs
+# CONFIG_DEBUG.
# CONFIG_NET_HASH - Enable receipt of near-perfect match frames.
# CONFIG_NET_MULTICAST - Enable receipt of multicast (and unicast) frames.
# Automatically set if CONFIG_NET_IGMP is selected.
@@ -207,6 +207,9 @@ CONFIG_PHY_KS8721=y
CONFIG_PHY_AUTONEG=y
CONFIG_PHY_SPEED100=n
CONFIG_PHY_FDUPLEX=y
+CONFIG_NET_EMACRAM_SIZE=8192
+CONFIG_NET_NTXDESC=7
+CONFIG_NET_NRXDESC=7
CONFIG_NET_REGDEBUG=n
#
@@ -330,9 +333,9 @@ CONFIG_ARCH_LOWPUTC=y
CONFIG_RR_INTERVAL=200
CONFIG_SCHED_INSTRUMENTATION=n
CONFIG_TASK_NAME_SIZE=0
-CONFIG_START_YEAR=2010
-CONFIG_START_MONTH=11
-CONFIG_START_DAY=23
+CONFIG_START_YEAR=2011
+CONFIG_START_MONTH=6
+CONFIG_START_DAY=2
CONFIG_GREGORIAN_TIME=n
CONFIG_JULIAN_TIME=n
CONFIG_DEV_CONSOLE=y
@@ -343,7 +346,7 @@ CONFIG_SEM_PREALLOCHOLDERS=0
CONFIG_SEM_NNESTPRIO=0
CONFIG_FDCLONE_DISABLE=n
CONFIG_FDCLONE_STDIO=n
-CONFIG_SDCLONE_DISABLE=n
+CONFIG_SDCLONE_DISABLE=y
CONFIG_SCHED_WORKQUEUE=n
CONFIG_SCHED_WORKPRIORITY=50
CONFIG_SCHED_WORKPERIOD=(50*1000)
@@ -351,7 +354,8 @@ CONFIG_SCHED_WORKSTACKSIZE=1024
CONFIG_SIG_SIGWORK=4
#
-# Settings for nxflat
+# Settings for NXFLAT
+#
# CONFIG_NXFLAT. Enable support for the NXFLAT binary format.
# This format will support execution of NuttX binaries located
# in a ROMFS filesystem (see examples/nxflat).
@@ -382,10 +386,10 @@ CONFIG_SYMTAB_ORDEREDBYNAME=y
# up waiting tasks.
#
CONFIG_DISABLE_CLOCK=n
-CONFIG_DISABLE_POSIX_TIMERS=y
-CONFIG_DISABLE_PTHREAD=y
+CONFIG_DISABLE_POSIX_TIMERS=n
+CONFIG_DISABLE_PTHREAD=n
CONFIG_DISABLE_SIGNALS=n
-CONFIG_DISABLE_MQUEUE=y
+CONFIG_DISABLE_MQUEUE=n
CONFIG_DISABLE_MOUNTPOINT=n
CONFIG_DISABLE_ENVIRON=n
CONFIG_DISABLE_POLL=n
@@ -452,14 +456,14 @@ CONFIG_ARCH_BZERO=n
#
CONFIG_MAX_TASKS=16
CONFIG_MAX_TASK_ARGS=4
-CONFIG_NPTHREAD_KEYS=0
+CONFIG_NPTHREAD_KEYS=4
CONFIG_NFILE_DESCRIPTORS=8
CONFIG_NFILE_STREAMS=8
CONFIG_NAME_MAX=32
-CONFIG_STDIO_BUFFER_SIZE=64
-CONFIG_NUNGET_CHARS=0
-CONFIG_PREALLOC_MQ_MSGS=0
-CONFIG_MQ_MAXMSGSIZE=0
+CONFIG_STDIO_BUFFER_SIZE=256
+CONFIG_NUNGET_CHARS=2
+CONFIG_PREALLOC_MQ_MSGS=4
+CONFIG_MQ_MAXMSGSIZE=32
CONFIG_MAX_WDOGPARMS=2
CONFIG_PREALLOC_WDOGS=8
CONFIG_PREALLOC_TIMERS=8
@@ -471,8 +475,8 @@ CONFIG_PREALLOC_TIMERS=8
# CONFIG_FAT_SECTORSIZE - Max supported sector size
# CONFIG_FS_ROMFS - Enable ROMFS filesystem support
#
-CONFIG_FS_FAT=n
-CONFIG_FS_ROMFS=y
+CONFIG_FS_FAT=y
+CONFIG_FS_ROMFS=n
#
# SPI-based MMC/SD driver
@@ -543,17 +547,17 @@ CONFIG_NET=y
CONFIG_NET_IPv6=n
CONFIG_NSOCKET_DESCRIPTORS=16
CONFIG_NET_SOCKOPTS=y
-CONFIG_NET_BUFSIZE=420
+CONFIG_NET_BUFSIZE=562
CONFIG_NET_TCP=y
CONFIG_NET_TCP_CONNS=16
-CONFIG_NET_NTCP_READAHEAD_BUFFERS=8
+CONFIG_NET_NTCP_READAHEAD_BUFFERS=16
CONFIG_NET_TCPBACKLOG=y
CONFIG_NET_MAX_LISTENPORTS=8
CONFIG_NET_UDP=n
CONFIG_NET_UDP_CHECKSUMS=y
#CONFIG_NET_UDP_CONNS=10
CONFIG_NET_ICMP=y
-CONFIG_NET_ICMP_PING=n
+CONFIG_NET_ICMP_PING=y
#CONFIG_NET_PINGADDRCONF=0
CONFIG_NET_STATISTICS=n
#CONFIG_NET_RECEIVE_WINDOW=
@@ -598,7 +602,30 @@ CONFIG_USBDEV_TRACE=n
CONFIG_USBDEV_TRACE_NRECORDS=128
#
-# LPC17xx USB Configuration
+# USB Host Configuration
+#
+# CONFIG_USBHOST
+# Enables USB host support
+# CONFIG_USBHOST_NPREALLOC
+# Number of pre-allocated class instances
+# CONFIG_USBHOST_BULK_DISABLE
+# On some architectures, selecting this setting will reduce driver size
+# by disabling bulk endpoint support
+# CONFIG_USBHOST_INT_DISABLE
+# On some architectures, selecting this setting will reduce driver size
+# by disabling interrupt endpoint support
+# CONFIG_USBHOST_ISOC_DISABLE
+# On some architectures, selecting this setting will reduce driver size
+# by disabling isochronous endpoint support
+#
+CONFIG_USBHOST=n
+CONFIG_USBHOST_NPREALLOC=0
+CONFIG_USBHOST_BULK_DISABLE=n
+CONFIG_USBHOST_INT_DISABLE=y
+CONFIG_USBHOST_ISOC_DISABLE=y
+
+#
+# LPC17xx USB Device Configuration
#
# CONFIG_LPC17_USBDEV_FRAME_INTERRUPT
# Handle USB Start-Of-Frame events.
@@ -620,6 +647,30 @@ CONFIG_LPC17_USBDEV_NDMADESCRIPTORS=0
CONFIG_LPC17_USBDEV_DMAINTMASK=0
#
+# LPC17xx USB Host Configuration
+#
+# OHCI RAM layout:
+# CONFIG_USBHOST_OHCIRAM_SIZE
+# Total size of OHCI RAM (in AHB SRAM Bank 1)
+# CONFIG_USBHOST_NEDS
+# Number of endpoint descriptors
+# CONFIG_USBHOST_NTDS
+# Number of transfer descriptors
+# CONFIG_USBHOST_TDBUFFERS
+# Number of transfer descriptor buffers
+# CONFIG_USBHOST_TDBUFSIZE
+# Size of one transfer descriptor buffer
+# CONFIG_USBHOST_IOBUFSIZE
+# Size of one end-user I/O buffer
+#
+CONFIG_USBHOST_OHCIRAM_SIZE=1536
+CONFIG_USBHOST_NEDS=2
+CONFIG_USBHOST_NTDS=3
+CONFIG_USBHOST_TDBUFFERS=3
+CONFIG_USBHOST_TDBUFSIZE=128
+CONFIG_USBHOST_IOBUFSIZE=512
+
+#
# USB Serial Device Configuration
#
# CONFIG_USBSER
@@ -866,10 +917,10 @@ CONFIG_NSH_DISABLEBG=n
CONFIG_NSH_ROMFSETC=n
CONFIG_NSH_CONSOLE=y
CONFIG_NSH_TELNET=n
-CONFIG_NSH_ARCHINIT=n
+CONFIG_NSH_ARCHINIT=y
CONFIG_NSH_IOBUFFER_SIZE=512
CONFIG_NSH_DHCPC=n
-CONFIG_NSH_NOMAC=n
+CONFIG_NSH_NOMAC=y
CONFIG_NSH_IPADDR=(10<<24|0<<16|0<<8|2)
CONFIG_NSH_DRIPADDR=(10<<24|0<<16|0<<8|1)
CONFIG_NSH_NETMASK=(255<<24|255<<16|255<<8|0)
@@ -890,7 +941,7 @@ CONFIG_NSH_DISABLE_GET=y
#
# Architecture-specific NSH options
#
-CONFIG_NSH_MMCSDSPIPORTNO=0
+CONFIG_NSH_MMCSDSPIPORTNO=1
CONFIG_NSH_MMCSDSLOTNO=0
CONFIG_NSH_MMCSDMINOR=0
@@ -945,7 +996,7 @@ CONFIG_BOOT_COPYTORAM=n
CONFIG_CUSTOM_STACK=n
CONFIG_STACK_POINTER=
CONFIG_IDLETHREAD_STACKSIZE=1024
-CONFIG_USERMAIN_STACKSIZE=8192
+CONFIG_USERMAIN_STACKSIZE=2048
CONFIG_PTHREAD_STACK_MIN=256
CONFIG_PTHREAD_STACK_DEFAULT=2048
CONFIG_HEAP_BASE=
diff --git a/nuttx/configs/olimex-lpc1766stk/nsh/defconfig b/nuttx/configs/olimex-lpc1766stk/nsh/defconfig
index c177f11ef..89175c4fb 100755
--- a/nuttx/configs/olimex-lpc1766stk/nsh/defconfig
+++ b/nuttx/configs/olimex-lpc1766stk/nsh/defconfig
@@ -64,7 +64,7 @@
# CONFIG_ARCH_CALIBRATION - Enables some build in instrumentation that
# cause a 100 second delay during boot-up. This 100 second delay
# serves no purpose other than it allows you to calibrate
-# CONFIG_BOARD_LOOPSPERMSEC. You simply use a stop watch to measure
+# CONFIG_BOARD_LOOPSPERMSEC. You simply use a stop watch to measure
# the 100 second delay then adjust CONFIG_BOARD_LOOPSPERMSEC until
# the delay actually is 100 seconds.
# CONFIG_ARCH_DMA - Support DMA initialization
@@ -350,7 +350,6 @@ CONFIG_SEM_NNESTPRIO=0
CONFIG_FDCLONE_DISABLE=n
CONFIG_FDCLONE_STDIO=n
CONFIG_SDCLONE_DISABLE=y
-CONFIG_NXFLAT=n
CONFIG_SCHED_WORKQUEUE=n
CONFIG_SCHED_WORKPRIORITY=50
CONFIG_SCHED_WORKPERIOD=(50*1000)
@@ -358,6 +357,23 @@ CONFIG_SCHED_WORKSTACKSIZE=1024
CONFIG_SIG_SIGWORK=4
#
+# Settings for NXFLAT
+#
+# CONFIG_NXFLAT. Enable support for the NXFLAT binary format.
+# This format will support execution of NuttX binaries located
+# in a ROMFS filesystem (see examples/nxflat).
+# CONFIG_NXFLAT_DUMPBUFFER. Dump a most buffers that NXFFLAT deals
+# with. CONFIG_DEBUG, CONFIG_DEBUG_VERBOSE, and
+# CONFIG_DEBUG_BINFMT have to be defined or
+# CONFIG_NXFLAT_DUMPBUFFER does nothing.
+# CONFIG_SYMTAB_ORDEREDBYNAME. Select if the system symbol table
+# is ordered by symbol name
+#
+CONFIG_NXFLAT=y
+CONFIG_NXFLAT_DUMPBUFFER=n
+CONFIG_SYMTAB_ORDEREDBYNAME=y
+
+#
# The following can be used to disable categories of
# APIs supported by the OS. If the compiler supports
# weak functions, then it should not be necessary to
diff --git a/nuttx/net/getsockname.c b/nuttx/net/getsockname.c
index a77a31b71..3af89b762 100644
--- a/nuttx/net/getsockname.c
+++ b/nuttx/net/getsockname.c
@@ -131,9 +131,9 @@ int getsockname(int sockfd, FAR struct sockaddr *addr, FAR socklen_t *addrlen)
/* Check if enough space has been provided for the full address */
#ifdef CONFIG_NET_IPv6
- if (addr->sa_family != AF_INET6 || *addrlen < sizeof(struct sockaddr_in6))
+ if (*addrlen < sizeof(struct sockaddr_in6))
#else
- if (addr->sa_family != AF_INET || *addrlen < sizeof(struct sockaddr_in))
+ if (*addrlen < sizeof(struct sockaddr_in))
#endif
{
/* This function is supposed to return the partial address if