summaryrefslogtreecommitdiff
path: root/apps/include
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-02-04 21:02:45 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-02-04 21:02:45 +0000
commite82f3f21bff1cf021e036ce3e67d5cc12eb41ebe (patch)
treef564a8e1329d499be76176d46618c76225e04b37 /apps/include
parent07944e1dd7c38a2de22861c695b295156ea8cafd (diff)
downloadnuttx-e82f3f21bff1cf021e036ce3e67d5cc12eb41ebe.tar.gz
nuttx-e82f3f21bff1cf021e036ce3e67d5cc12eb41ebe.tar.bz2
nuttx-e82f3f21bff1cf021e036ce3e67d5cc12eb41ebe.zip
Add the beginnings of an FTP server
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4368 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'apps/include')
-rwxr-xr-xapps/include/netutils/ftpd.h187
1 files changed, 187 insertions, 0 deletions
diff --git a/apps/include/netutils/ftpd.h b/apps/include/netutils/ftpd.h
new file mode 100755
index 000000000..870b5cf94
--- /dev/null
+++ b/apps/include/netutils/ftpd.h
@@ -0,0 +1,187 @@
+/****************************************************************************
+ * apps/include/netutils/ftpd.h
+ *
+ * Copyright (C) 2012 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+#ifndef __APPS_INCLUDE_NETUTILS_FTPD_H
+#define __APPS_INCLUDE_NETUTILS_FTPD_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <stdint.h>
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+/* Configuration ************************************************************/
+
+#ifdef CONFIG_DISABLE_PTHREAD
+# error "pthread support is required (CONFIG_DISABLE_PTHREAD=n)"
+#endif
+
+#ifndef CONFIG_FTPD_VENDORID
+# define CONFIG_FTPD_VENDORID "NuttX"
+#endif
+
+#ifndef CONFIG_FTPD_SERVERID
+# define CONFIG_FTPD_SERVERID "NuttX FTP Server"
+#endif
+
+#ifndef CONFIG_FTPD_CMDBUFFERSIZE
+# define CONFIG_FTPD_CMDBUFFERSIZE 512
+#endif
+
+#ifndef CONFIG_FTPD_DATABUFFERSIZE
+# define CONFIG_FTPD_DATABUFFERSIZE 2048
+#endif
+
+#ifndef CONFIG_FTPD_WORKERSTACKSIZE
+# define CONFIG_FTPD_WORKERSTACKSIZE 2048
+#endif
+
+/****************************************************************************
+ * Public Types
+ ****************************************************************************/
+
+/* This "handle" describes the FTP session */
+
+typedef FAR void *FTPD_SESSION;
+
+/****************************************************************************
+ * Public Data
+ ****************************************************************************/
+
+#ifdef __cplusplus
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: ftpd_open
+ *
+ * Description:
+ * Create an instance of the FTPD server and return a handle that can be
+ * used to run the server.
+ *
+ * Input Parameters:
+ * None
+ *
+ * Returned Value:
+ * On success, a non-NULL handle is returned that can be used to reference
+ * the server instance.
+ *
+ ****************************************************************************/
+
+EXTERN FTPD_SESSION ftpd_open(void);
+
+/****************************************************************************
+ * Name: ftpd_adduser
+ *
+ * Description:
+ * Add one FTP user.
+ *
+ * Input Parameters:
+ * handle - A handle previously returned by ftpd_open
+ * accountflags - The characteristics of this user (see FTPD_ACCOUNTFLAGS_*
+ * defintiions.
+ * user - The user login name. May be NULL indicating that no login is
+ * required.
+ * passwd - The user password. May be NULL indicating that no password
+ * is required.
+ * home - The user home directory. May be NULL.
+ *
+ * Returned Value:
+ * Zero is returned on success. A negated errno value is return on
+ * failure.
+ *
+ ****************************************************************************/
+
+EXTERN int ftpd_adduser(FTPD_SESSION handle, uint8_t accountflags,
+ FAR const char *user, FAR const char *passwd,
+ FAR const char *home);
+
+/****************************************************************************
+ * Name: ftpd_session
+ *
+ * Description:
+ * Execute the FTPD server. This thread does not return until either (1)
+ * the timeout expires with no connection, (2) some other error occurs, or
+ * (2) a connection was accepted and an FTP worker thread was started to
+ * service the session. Each call to ftpd_session creates on session.
+ *
+ * Input Parameters:
+ * handle - A handle previously returned by ftpd_open
+ * timeout - A time in milliseconds to wait for a connection. If this
+ * time elapses with no connected, the -ETIMEDOUT error will be returned.
+ *
+ * Returned Value:
+ * Zero is returned if the FTP worker was started. On failure, a negated
+ * errno value is returned to indicate why the servier terminated.
+ * -ETIMEDOUT indicates that the user-provided timeout elapsed with no
+ * connection.
+ *
+ ****************************************************************************/
+
+EXTERN int ftpd_session(FTPD_SESSION handle, int timeout);
+
+/****************************************************************************
+ * Name: ftpd_close
+ *
+ * Description:
+ * Close and destroy the handle created by ftpd_open.
+ *
+ * Input Parameters:
+ * handle - A handle previously returned by ftpd_open
+ *
+ * Returned Value:
+ * None
+ *
+ ****************************************************************************/
+
+EXTERN void ftpd_close(FTPD_SESSION handle);
+
+#undef EXTERN
+#ifdef __cplusplus
+}
+#endif
+#endif /* __APPS_INCLUDE_NETUTILS_FTPD_H */