diff options
author | patacongo <patacongo@7fd9a85b-ad96-42d3-883c-3090e2eb8679> | 2012-02-04 21:02:45 +0000 |
---|---|---|
committer | patacongo <patacongo@7fd9a85b-ad96-42d3-883c-3090e2eb8679> | 2012-02-04 21:02:45 +0000 |
commit | c8c29e73a870c8eca24a135fa0c490fd6fa6db4e (patch) | |
tree | f564a8e1329d499be76176d46618c76225e04b37 /apps/include | |
parent | 7b0c9374a9642e425b081733cab3d592f68d4498 (diff) | |
download | px4-firmware-c8c29e73a870c8eca24a135fa0c490fd6fa6db4e.tar.gz px4-firmware-c8c29e73a870c8eca24a135fa0c490fd6fa6db4e.tar.bz2 px4-firmware-c8c29e73a870c8eca24a135fa0c490fd6fa6db4e.zip |
Add the beginnings of an FTP server
git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@4368 7fd9a85b-ad96-42d3-883c-3090e2eb8679
Diffstat (limited to 'apps/include')
-rwxr-xr-x | apps/include/netutils/ftpd.h | 187 |
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 */ |