original files of m241
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
/* usrFtp.c - Support for FTP client */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2002, 2004, 2006 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01k,29sep10,h_x Fix build and coverity warnings.
|
||||
01j,26dec06,kch Removed references to the obsolete coreip virtual stack.
|
||||
01i,15feb06,mwv remove the errnoSet (SPR#117656)
|
||||
01h,16sep04,vvv fixed warning
|
||||
01g,22jul04,kc Added missing #endif and fixed warnings.
|
||||
01f,21jul04,spm added virtual stack support
|
||||
01e,21apr04,asr fix compile warning
|
||||
01d,25mar04,asr added ftpLibInit call from usrFtpInit
|
||||
01c,25feb04,ijm bootrom/runtime starting ports should differ, SPR#93950
|
||||
01b,23may02,elr ftpLibDebugLevelSet (FTP_DEBUG_LEVEL) is now
|
||||
ftpLibDebugOptionsSet (FTP_DEBUG_OPTIONS)
|
||||
01a,20dec06,elr created
|
||||
*/
|
||||
|
||||
/*
|
||||
DESCRIPTION
|
||||
This file is used to include support for the ftp client.
|
||||
|
||||
NOMANUAL
|
||||
*/
|
||||
|
||||
IMPORT STATUS ftpLibInit (long);
|
||||
IMPORT UINT32 ftplTransientMaxRetryCount;
|
||||
IMPORT UINT32 ftplTransientRetryInterval;
|
||||
IMPORT STATUS ftpTransientFatalInstall();
|
||||
IMPORT STATUS ftplDebugOptionsSet();
|
||||
|
||||
STATUS usrFtpInit (void);
|
||||
|
||||
#if (defined(INCLUDE_TCPV4) && defined(INCLUDE_NET_SYM_TBL))
|
||||
/******************************************************************************
|
||||
*
|
||||
* advanceTcpPorts - advance TCP ports for runtime image
|
||||
*
|
||||
* This function advances the starting port for the runtime image by 2 to
|
||||
* avoid delaying the loading of the symbol table.
|
||||
* The bootrom FTP opens 2 sockets to download the runtime image.
|
||||
* If the runtime image downloads the symbol table, the starting port,
|
||||
* must be IPPORT_RESERVED_CFG + 2 or larger since
|
||||
* IPPORT_RESERVED_CFG and IPPORT_RESERVED_CFG + 1 ports are in
|
||||
* TIME_WAIT at the boot host.
|
||||
*
|
||||
* RETURNS: N/A
|
||||
*
|
||||
* NOMANUAL
|
||||
*/
|
||||
|
||||
void advanceTcpPorts (void)
|
||||
{
|
||||
int fd;
|
||||
struct sockaddr_in sockaddr;
|
||||
int i;
|
||||
|
||||
for (i=0; i<=1;++i)
|
||||
{
|
||||
if ((fd = socket (AF_INET, SOCK_STREAM, 0)) == ERROR)
|
||||
return;
|
||||
|
||||
bzero ((char *)&sockaddr, sizeof (sockaddr));
|
||||
sockaddr.sin_family = AF_INET;
|
||||
sockaddr.sin_port = 0;
|
||||
sockaddr.sin_addr.s_addr = htonl (INADDR_ANY);
|
||||
|
||||
bind (fd, (struct sockaddr *) &sockaddr, sizeof (sockaddr));
|
||||
close (fd);
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
#endif /* INCLUDE_NET_SYM_TBL */
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* ftpTransientFatal - example applette to terminate FTP transient host responses
|
||||
*
|
||||
* ftpXfer will normally retry a command if the host responds with a 4xx
|
||||
* reply. If this applette is installed, it can immediately terminate
|
||||
* the retry sequence.
|
||||
*
|
||||
*
|
||||
* RETURNS : TRUE - Terminate retry attempts
|
||||
* FALSE - Continue retry attempts
|
||||
*
|
||||
*
|
||||
* SEE ALSO : ftpTransientFatalInstall(), ftpTransientConfigSet()
|
||||
*
|
||||
*/
|
||||
|
||||
LOCAL BOOL ftpTransientFatal
|
||||
(
|
||||
UINT32 reply /* Three digit code defined in RFC #640 */
|
||||
)
|
||||
{
|
||||
switch (reply)
|
||||
{
|
||||
case (421): /* Service not available */
|
||||
case (450): /* File unavailable */
|
||||
case (451): /* error in processing */
|
||||
case (452): /* insufficient storage */
|
||||
{
|
||||
/* yes, these are actually non-recoverable replies */
|
||||
return (TRUE);
|
||||
}
|
||||
/* attempt to retry the last command */
|
||||
default:
|
||||
return (FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* usrFtpInit - initialize FTP parameters
|
||||
*
|
||||
* This routine configures ftp client parameters.
|
||||
* defined by the user via the project facility.
|
||||
*
|
||||
* RETURNS: OK or ERROR
|
||||
*
|
||||
* NOMANUAL
|
||||
*/
|
||||
|
||||
STATUS usrFtpInit (void)
|
||||
{
|
||||
ftpLibInit (FTP_TIMEOUT);
|
||||
ftplTransientMaxRetryCount = FTP_TRANSIENT_MAX_RETRY_COUNT;
|
||||
ftplTransientRetryInterval = FTP_TRANSIENT_RETRY_INTERVAL;
|
||||
ftpTransientFatalInstall ( FTP_TRANSIENT_FATAL );
|
||||
ftpLibDebugOptionsSet ( FTP_DEBUG_OPTIONS );
|
||||
|
||||
return OK;
|
||||
}
|
||||
Reference in New Issue
Block a user