113 lines
3.1 KiB
C++
113 lines
3.1 KiB
C++
|
/**********************************************************************/
|
||
|
/** Microsoft Windows NT **/
|
||
|
/** Copyright(c) Microsoft Corp., 1993 **/
|
||
|
/**********************************************************************/
|
||
|
|
||
|
/*
|
||
|
cons.hxx
|
||
|
|
||
|
This file contains the global constant definitions for the
|
||
|
FTPD Service.
|
||
|
|
||
|
|
||
|
FILE HISTORY:
|
||
|
KeithMo 07-Mar-1993 Created.
|
||
|
MuraliK 28-Mar-1995 Moved out the Behaviour flags to USER_DATA
|
||
|
definition
|
||
|
|
||
|
*/
|
||
|
|
||
|
|
||
|
#ifndef _CONS_HXX_
|
||
|
#define _CONS_HXX_
|
||
|
|
||
|
|
||
|
//
|
||
|
// Maximum length of command from control socket.
|
||
|
//
|
||
|
|
||
|
#define MAX_COMMAND_LENGTH 512 // characters
|
||
|
|
||
|
|
||
|
//
|
||
|
// Maximum length of a reply sent to the FTP client.
|
||
|
//
|
||
|
|
||
|
#define MAX_REPLY_LENGTH 1024 // characters
|
||
|
|
||
|
|
||
|
//
|
||
|
// Maximum length of a user name. This must be long enough to
|
||
|
// hold a name of the form domain\user, where "domain" is a maximum
|
||
|
// length domain name, and "user" is a maximum length user name.
|
||
|
//
|
||
|
|
||
|
#define MAX_USERNAME_LENGTH (DNLEN+UNLEN+1) // characters
|
||
|
|
||
|
//
|
||
|
// timeout for sends
|
||
|
//
|
||
|
|
||
|
#define FTP_DEF_SEND_TIMEOUT 30
|
||
|
#define FTP_DEF_RECV_TIMEOUT 600
|
||
|
|
||
|
//
|
||
|
// Valid bits for read/write access masks. There is
|
||
|
// one bit per dos drive (A-Z).
|
||
|
//
|
||
|
|
||
|
#define VALID_DOS_DRIVE_MASK ((DWORD)( ( 1 << 26 ) - 1 ))
|
||
|
|
||
|
|
||
|
//
|
||
|
// Make statistics a little easier.
|
||
|
//
|
||
|
|
||
|
#define INCREMENT_COUNTER(name) \
|
||
|
InterlockedIncrement((LPLONG)&name)
|
||
|
|
||
|
#define INCR_STAT_COUNTER( name) \
|
||
|
INCREMENT_COUNTER( g_FtpStatistics.name)
|
||
|
|
||
|
#define DECREMENT_COUNTER(name) \
|
||
|
InterlockedDecrement((LPLONG) &name)
|
||
|
|
||
|
#define DECR_STAT_COUNTER( name) \
|
||
|
DECREMENT_COUNTER( g_FtpStatistics.name)
|
||
|
|
||
|
#define UPDATE_LARGE_COUNTER(name,increment) \
|
||
|
if( 1 ) { \
|
||
|
EnterCriticalSection( &g_StatisticsLock ); \
|
||
|
g_FtpStatistics.name.QuadPart += (LONGLONG)(increment);\
|
||
|
LeaveCriticalSection( &g_StatisticsLock ); \
|
||
|
} else
|
||
|
|
||
|
//
|
||
|
// Make locking & unlocking the TSVC_INFO structure a bit prettier.
|
||
|
//
|
||
|
|
||
|
#define READ_LOCK_TSVC() g_pTsvcInfo->LockThisForRead()
|
||
|
#define WRITE_LOCK_TSVC() g_pTsvcInfo->LockThisForWrite()
|
||
|
#define UNLOCK_TSVC() g_pTsvcInfo->UnlockThis()
|
||
|
|
||
|
#define READ_LOCK_INST() g_pInstance->LockThisForRead()
|
||
|
#define WRITE_LOCK_INST() g_pInstance->LockThisForWrite()
|
||
|
#define UNLOCK_INST() g_pInstance->UnlockThis()
|
||
|
|
||
|
#define LockAdminForRead() READ_LOCK_TSVC()
|
||
|
#define LockAdminForWrite() WRITE_LOCK_TSVC()
|
||
|
#define UnlockAdmin() UNLOCK_TSVC()
|
||
|
|
||
|
|
||
|
//
|
||
|
// Map an FTP connection port number to the related data port number.
|
||
|
//
|
||
|
|
||
|
#define CONN_PORT_TO_DATA_PORT(port) \
|
||
|
(PORT)htons( (u_short)( ( (u_short) ntohs(port) ) - 1 ) )
|
||
|
|
||
|
|
||
|
|
||
|
#endif // _CONS_HXX_
|
||
|
|