57#define SFTP_MAXPACKETSIZE 2900
58#define SFTP_MAXBODYSIZE (SFTP_MAXPACKETSIZE - sizeof(struct RPC2_PacketHeader))
60#define SFTP_DEFPACKETSIZE (1024 + sizeof(struct RPC2_PacketHeader))
61#define SFTP_DEFWINDOWSIZE 32
62#define SFTP_DEFSENDAHEAD 8
65#define SFTP_MINPACKETSIZE 240
66#define SFTP_MINBODYSIZE (SFTP_MINPACKETSIZE - sizeof(struct RPC2_PacketHeader))
67#define SFTP_MINWINDOWSIZE 2
68#define SFTP_MINSENDAHEAD 1
70#define SFTP_DebugLevel RPC2_DebugLevel
136#define GotEmAll SEDataOffset
137#define BitMask0 ReturnCode
138#define BitMask1 Lamport
139#define TimeEcho BindTime
140#define ThisRPCCall Uniquefier
143#define SFTP_ACKME 0x80000000
149#define SFTP_MOREDATA 0x1
152#define SFTP_ALLOVER \
154#define SFTP_TRIGGER \
160#define SFTP_COUNTED \
175#define SFTPMAGIC 4902057
176#define MAXOPACKETS 64
177#define BITMASKWIDTH (MAXOPACKETS / 32)
285#define SendFirst FirstSeqNo
287#define RecvFirst FirstSeqNo
342#define IsSource(sfe) \
343 ((sfe->WhoAmI == SFCLIENT && sfe->SDesc && \
344 sfe->SDesc->Value.SmartFTPD.TransmissionDirection == CLIENTTOSERVER) || \
345 (sfe->WhoAmI == SFSERVER && sfe->SDesc && \
346 sfe->SDesc->Value.SmartFTPD.TransmissionDirection == SERVERTOCLIENT))
349 ((sfe->WhoAmI == SFCLIENT && sfe->SDesc && \
350 sfe->SDesc->Value.SmartFTPD.TransmissionDirection == SERVERTOCLIENT) || \
351 (sfe->WhoAmI == SFSERVER && sfe->SDesc && \
352 sfe->SDesc->Value.SmartFTPD.TransmissionDirection == CLIENTTOSERVER))
357#define WORDOFFSET(pos) (((pos) - 1) >> 5)
358#define BITOFFSET(pos) ((((pos) - 1) & 31) + 1)
359#define PM(pos) (1L << (32 - (BITOFFSET(pos))))
360#define SETBIT(mask, pos) ((mask)[WORDOFFSET(pos)] |= PM(pos))
361#define TESTBIT(mask, pos) ((mask)[WORDOFFSET(pos)] & PM(pos))
362#define CLEARBIT(mask, pos) ((mask)[WORDOFFSET(pos)] &= (~PM(pos)))
365#define PBUFF(x) ((x) & (MAXOPACKETS - 1))
427 unsigned long inbytes,
unsigned long outbytes);
443 unsigned int maxSize);
457#define SFTP_AllocBuffer(x, y) (sftp_PacketsInUse++, RPC2_AllocBuffer(x, y))
459#define SFTP_FreeBuffer(x) (sftp_PacketsInUse--, RPC2_FreeBuffer(x))
462#define sftp_Encrypt(pb, sfe) \
463 rpc2_Encrypt((char *)&pb->Header.BodyLength, \
464 (char *)&pb->Header.BodyLength, \
465 pb->Prefix.LengthOfPacket - 4 * sizeof(RPC2_Integer), \
466 sfe->PInfo.SessionKey, sfe->PInfo.EncryptionType)
468#define sftp_Decrypt(pb, sfe) \
469 rpc2_Decrypt((char *)&pb->Header.BodyLength, \
470 (char *)&pb->Header.BodyLength, \
471 pb->Prefix.LengthOfPacket - 4 * sizeof(RPC2_Integer), \
472 sfe->PInfo.SessionKey, sfe->PInfo.EncryptionType)
476#define MEMFILE(s) (s->Value.SmartFTPD.Tag == FILEINVM)
477#define BYFDFILE(s) (s->Value.SmartFTPD.Tag == FILEBYFD)
480#ifdef VERY_FAST_SERVERS
481#define VALID_TIMEECHO(se) \
482 (!(se)->Retransmitting && (se)->TimeEcho != 0 && (se)->RequestTime != 0)
484#define VALID_TIMEECHO(se) (!(se)->Retransmitting && (se)->TimeEcho != 0)
int int32_t
Definition: coda.h:104
unsigned int uint32_t
Definition: coda.h:105
uint32_t RPC2_Unsigned
Definition: rpc2.h:300
RPC2_Integer RPC2_Handle
Definition: rpc2.h:345
WhichWay
Definition: se.h:76
FILE * outFile
Definition: sftp1.c:1202
SE_Descriptor * SDesc
Definition: sftp6.c:103
RPC2_PacketBuffer * Reply
Definition: sftp6.c:104
int sftp_DataArrived(RPC2_PacketBuffer *pBuff, struct SFTP_Entry *sEntry)
Definition: sftp3.c:264
long sftp_datar
Definition: sftp.h:445
void sftp_InitTrace(void)
Definition: sftp4.c:236
#define SFTP_DebugLevel
Definition: sftp.h:70
void SFTP_Activate(SFTP_Initializer *initPtr)
Definition: sftp1.c:134
long sftp_triggers
Definition: sftp.h:446
long SFTP_GetHostInfo(RPC2_Handle ConnHandle, struct HEntry **hPtr)
long sftp_bogus
Definition: sftp.h:447
int sftp_ReadStrategy(struct SFTP_Entry *sEntry)
Definition: sftp3.c:1042
SFState
Definition: sftp.h:193
@ SFSERVER
Definition: sftp.h:194
@ ERROR
Definition: sftp.h:196
@ DISKERROR
Definition: sftp.h:197
@ SFCLIENT
Definition: sftp.h:195
void sftp_FreeSEntry(struct SFTP_Entry *se)
Definition: sftp1.c:1126
long SFTP_Bind1(RPC2_Handle ConnHandle, RPC2_CountedBS *ClientIdent)
long sftp_windowfulls
Definition: sftp.h:446
long SFTP_Unbind(RPC2_Handle ConnHandle)
long SFTP_AckPoint
Definition: sftp3.c:73
long SFTP_Bind2(RPC2_Handle ConnHandle, RPC2_Unsigned BindTime)
long sftp_didpiggy
Definition: sftp.h:447
struct SFTP_Entry * sftp_AllocSEntry(void)
Definition: sftp1.c:1103
int sftp_AckArrived(RPC2_PacketBuffer *pBuff, struct SFTP_Entry *sEntry)
Definition: sftp3.c:558
long sftp_starts
Definition: sftp.h:446
#define BITMASKWIDTH
Definition: sftp.h:175
void sftp_FreePiggySDesc(struct SFTP_Entry *se)
Definition: sftp1.c:1181
int sftp_SendStrategy(struct SFTP_Entry *sEntry)
Definition: sftp3.c:678
int sftp_AppendParmsToPacket(struct SFTP_Entry *sEntry, RPC2_PacketBuffer **whichP)
Definition: sftp1.c:1004
long sftp_ackr
Definition: sftp.h:445
int sftp_piggybackfileread(struct SFTP_Entry *se, char *buf)
Definition: sftp3.c:1377
long sftp_ackslost
Definition: sftp.h:447
long SFTP_MakeRPC1(RPC2_Handle ConnHandle, SE_Descriptor *SDesc, RPC2_PacketBuffer **RequestPtr)
long sftp_rttupdates
Definition: sftp.h:448
long sftp_starved
Definition: sftp.h:447
int sftp_AddPiggy(RPC2_PacketBuffer **whichP, char *dPtr, off_t dSize, unsigned int maxSize)
Definition: sftp1.c:906
long SFTP_SendResponse(RPC2_Handle ConnHandle, RPC2_PacketBuffer **Reply)
void sftp_UpdateRTT(RPC2_PacketBuffer *pb, struct SFTP_Entry *sEntry, unsigned long inbytes, unsigned long outbytes)
Definition: sftp3.c:207
long SFTP_NewConn(RPC2_Handle ConnHandle, RPC2_CountedBS *ClientIdent)
long SFTP_DoPiggy
Definition: sftp3.c:74
long SFTP_GetTime(RPC2_Handle ConnHandle, struct timeval *Time)
void SFTP_SetDefaults(SFTP_Initializer *initPtr)
Definition: sftp1.c:116
off_t sftp_ExtractFileFromPacket(struct SFTP_Entry *sEntry, RPC2_PacketBuffer *whichP)
Definition: sftp1.c:984
long SFTP_GetRequest(RPC2_Handle ConnHandle, RPC2_PacketBuffer *Request)
Definition: sftp1.c:376
int sftp_SendTrigger(struct SFTP_Entry *sEntry)
Definition: sftp3.c:1266
long SFTP_EnforceQuota
Definition: sftp3.c:71
void sftp_TraceBogus(long filenum, long linenum)
Definition: sftp4.c:126
#define MAXOPACKETS
Definition: sftp.h:174
long SFTP_MaxPackets
Definition: sftp3.c:76
int sftp_MorePackets(void)
long SFTP_DupThreshold
Definition: sftp3.c:75
long SFTP_PrintSED(SE_Descriptor *SDesc, FILE *outFile)
long sftp_duplicates
Definition: sftp.h:447
long sftp_PacketsInUse
Definition: sftp3.c:79
int sftp_XmitPacket(struct SFTP_Entry *sentry, RPC2_PacketBuffer *pb, int confirm)
Definition: sftp4.c:77
long sftp_acks
Definition: sftp.h:445
int sftp_ExtractParmsFromPacket(struct SFTP_Entry *sEntry, RPC2_PacketBuffer *whichP)
Definition: sftp1.c:1041
long sftp_timeouts
Definition: sftp.h:446
long SFTP_InitMulticast()
long SFTP_CheckSE(RPC2_Handle ConnHandle, SE_Descriptor *SDesc, long Flags)
Definition: sftp1.c:432
int sftp_InitIO(struct SFTP_Entry *sEntry)
Definition: sftp3.c:116
long SFTP_Init()
Definition: sftp1.c:104
off_t sftp_piggybackfilesize(struct SFTP_Entry *se)
Definition: sftp3.c:1354
void sftp_Progress(SE_Descriptor *sdesc, off_t BytesTransferred)
Definition: sftp3.c:1544
int sftp_vfwritefile(struct SFTP_Entry *se, char *buf, int nbytes)
Definition: sftp3.c:1404
void sftp_TraceStatus(struct SFTP_Entry *sEntry, int filenum, int linenum)
Definition: sftp4.c:98
long SFTP_InitSE(RPC2_Handle ConnHandle, SE_Descriptor *SDesc)
Definition: sftp1.c:407
void sftp_ExaminePacket(RPC2_PacketBuffer *pb)
Definition: sftp2.c:73
long sftp_retries
Definition: sftp.h:446
int sftp_SendStart(struct SFTP_Entry *sEntry)
Definition: sftp3.c:1160
void sftp_InitPacket(RPC2_PacketBuffer *pb, struct SFTP_Entry *sfe, long bodylen)
Definition: sftp3.c:1288
long SFTP_PacketSize
Definition: sftp3.c:69
long SFTP_SendAhead
Definition: sftp3.c:72
void sftp_AllocPiggySDesc(struct SFTP_Entry *se, off_t len, enum WhichWay direction)
Definition: sftp1.c:1151
long SFTP_MakeRPC2(RPC2_Handle ConnHandle, SE_Descriptor *SDesc, RPC2_PacketBuffer *Reply)
long sftp_busy
Definition: sftp.h:445
off_t sftp_AppendFileToPacket(struct SFTP_Entry *sEntry, RPC2_PacketBuffer **whichP)
Definition: sftp1.c:938
void sftp_vfclose(struct SFTP_Entry *se)
Definition: sftp3.c:1433
long sftp_datas
Definition: sftp3.c:81
int sftp_StartArrived(RPC2_PacketBuffer *pBuff, struct SFTP_Entry *sEntry)
Definition: sftp3.c:1215
int sftp_WriteStrategy(struct SFTP_Entry *sEntry)
Definition: sftp3.c:431
void sftp_DumpTrace(char *fName)
Definition: sftp4.c:216
long SFTP_WindowSize
Definition: sftp3.c:70
void sftp_SetError(struct SFTP_Entry *s, enum SFState e)
Definition: sftp1.c:1193
Definition: rpc2.private.h:322
uint32_t SendAhead
Definition: sftp.h:234
long Magic
Definition: sftp.h:202
struct security_association * sa
Definition: sftp.h:330
uint32_t RecvMostRecent
Definition: sftp.h:309
uint32_t McastersStarted
Definition: sftp.h:279
uint32_t SendWorriedLimit
Definition: sftp.h:305
struct HEntry * HostInfo
Definition: sftp.h:208
@ XferCompleted
Definition: sftp.h:273
@ XferNotStarted
Definition: sftp.h:271
@ XferInProgress
Definition: sftp.h:272
enum SFState WhoAmI
Definition: sftp.h:203
uint32_t RecvLastContig
Definition: sftp.h:307
unsigned int RecvTheseBits[BITMASKWIDTH]
Definition: sftp.h:317
uint32_t HitEOF
Definition: sftp.h:288
uint32_t GotParms
Definition: sftp.h:218
uint32_t RecvSinceAck
Definition: sftp.h:311
enum SFTP_Entry::@45 XferState
RPC2_PeerInfo PInfo
Definition: sftp.h:206
RPC2_PacketBuffer * ThesePackets[MAXOPACKETS]
Definition: sftp.h:319
uint32_t SendLastContig
Definition: sftp.h:290
struct timeval LastSS
Definition: sftp.h:247
uint32_t SendMostRecent
Definition: sftp.h:295
uint32_t RequestTime
Definition: sftp.h:313
uint32_t SendAckLimit
Definition: sftp.h:303
SE_Descriptor * SDesc
Definition: sftp.h:222
uint32_t ThisRPCCall
Definition: sftp.h:212
uint32_t ReadAheadCount
Definition: sftp.h:241
unsigned int SendTheseBits[BITMASKWIDTH]
Definition: sftp.h:301
off_t fd_offset
Definition: sftp.h:225
uint32_t PacketSize
Definition: sftp.h:231
struct rpc2_LinkEntry * RecvQueue
Definition: sftp.h:229
struct SL_Entry * Sleeper
Definition: sftp.h:227
uint32_t RepliedSinceLastSS
Definition: sftp.h:277
uint32_t RetryCount
Definition: sftp.h:240
uint32_t AckPoint
Definition: sftp.h:236
uint32_t DupThreshold
Definition: sftp.h:238
uint32_t McastersFinished
Definition: sftp.h:280
uint32_t Retransmitting
Definition: sftp.h:244
uint32_t CtrlSeqNumber
Definition: sftp.h:243
SE_Descriptor * PiggySDesc
Definition: sftp.h:249
long openfd
Definition: sftp.h:224
long RecvQueueLen
Definition: sftp.h:230
uint32_t FirstSeqNo
Definition: sftp.h:282
uint32_t DupsSinceAck
Definition: sftp.h:310
struct timeval LastWord
Definition: sftp.h:207
uint32_t TimeEcho
Definition: sftp.h:245
RPC2_Handle LocalHandle
Definition: sftp.h:204
uint32_t WindowSize
Definition: sftp.h:232
uint32_t SentParms
Definition: sftp.h:220
uint32_t PeerSendLastContig
Definition: sftp.h:189
int32_t WindowSize
Definition: sftp.h:180
int32_t AckPoint
Definition: sftp.h:182
int32_t SendAhead
Definition: sftp.h:181
int32_t DupThreshold
Definition: sftp.h:184
RPC2_PortIdent Port
Definition: sftp.h:179
int32_t PacketSize
Definition: sftp.h:183
Definition: rpc2.private.h:288