mirror of
https://github.com/obarthel/amiga-smbfs.git
synced 2025-12-08 14:58:35 +00:00
Added the WRITETHRESHOLD parameter which can be used to disable the separate transmission of the SMB message header and its payload if the combined sizes of both are smaller than or equal to the threshold value. This is intended to improve write performance for small amounts of data which would otherwise linger in the transmission queue. Added the READTHRESHOLD counterpart to WRITETHRESHOLD which affects the read operations. The smb_receive_raw() function in "sock.c" no longer copies the NetBIOS header into the receive buffer separately, but makes sure that the initial receive operation takes care of it. The allocate_path_name() function in "smb_abstraction.c" failed to put the path separator character where it should be, resulting in the path name and the file/directory name to get lumped together. This affected creation of files and directories both. The default values for READTHRESHOLD and WRITETHRESHOLD now have the effect of transmitting the SMB header and the payload separately, just like it was introduces in version 2.1. Use something like READTHRESHOLD=1500 and WRITETHRESHOLD=1500 to send packets smaller than or equal to 1500 bytes as a combined lump of data, and data larger than 1500 bytes as separate SMB header and payload. When processing the share name the limitations on the individual components (server name, share, port number/IP service name) are no longer verified using hard-coded lengths, but use the respective buffer limits instead. The port number/IP service name length check is new. Added more debug log output to the code which now performs the file and lock name/address lookups instead of walking throug the entire file/lock lists.
149 lines
3.9 KiB
C
149 lines
3.9 KiB
C
/*
|
|
* :ts=4
|
|
*
|
|
* SMB file system wrapper for AmigaOS, using the AmiTCP V3 API
|
|
*
|
|
* Copyright (C) 2000-2018 by Olaf `Olsen' Barthel <obarthel -at- gmx -dot- net>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*/
|
|
|
|
#ifndef _SYSTEM_HEADERS_H
|
|
#define _SYSTEM_HEADERS_H 1
|
|
|
|
/*****************************************************************************/
|
|
|
|
#define __USE_INLINE__
|
|
#define __NOGLOBALIFACE__
|
|
#define __NOLIBBASE__
|
|
|
|
/****************************************************************************/
|
|
|
|
#if defined(__SASC)
|
|
#define USE_BUILTIN_MATH
|
|
#endif /* __SASC */
|
|
|
|
/*****************************************************************************/
|
|
|
|
#define NULL ((APTR)0L)
|
|
#include <exec/types.h>
|
|
|
|
/*****************************************************************************/
|
|
|
|
/* The <smb/smb.h> header file declares this, and it may be redefined
|
|
* in the TCP/IP stack header files. We try to avoid trouble by moving
|
|
* the type declaration out of the way...
|
|
*/
|
|
#define byte IGNORE_THIS
|
|
|
|
/*****************************************************************************/
|
|
|
|
#include <workbench/workbench.h>
|
|
#include <workbench/startup.h>
|
|
|
|
#include <dos/dosextens.h>
|
|
#include <dos/dosasl.h>
|
|
#include <dos/dostags.h>
|
|
#include <dos/filehandler.h>
|
|
#include <dos/rdargs.h>
|
|
#include <dos/exall.h>
|
|
|
|
#if defined(__amigaos4__)
|
|
#include <dos/obsolete.h>
|
|
#endif /* __amigaos4__ */
|
|
|
|
#include <exec/memory.h>
|
|
|
|
#include <devices/timer.h>
|
|
#include <devices/inputevent.h>
|
|
#include <devices/input.h>
|
|
|
|
#include <libraries/locale.h>
|
|
|
|
#include <utility/date.h>
|
|
#include <utility/tagitem.h>
|
|
|
|
/*****************************************************************************/
|
|
|
|
#include <clib/alib_protos.h>
|
|
|
|
/*****************************************************************************/
|
|
|
|
/* A quick workaround for the timeval/timerequest->TimeVal/TimeRequest
|
|
change in the recent OS4 header files. */
|
|
#if defined(__NEW_TIMEVAL_DEFINITION_USED__)
|
|
|
|
#define timeval TimeVal
|
|
#define tv_secs Seconds
|
|
#define tv_micro Microseconds
|
|
|
|
#define timerequest TimeRequest
|
|
#define tr_node Request
|
|
#define tr_time Time
|
|
|
|
#endif /* __NEW_TIMEVAL_DEFINITION_USED__ */
|
|
|
|
/*****************************************************************************/
|
|
|
|
#include <proto/exec.h>
|
|
#include <proto/dos.h>
|
|
#include <proto/intuition.h>
|
|
#include <proto/bsdsocket.h>
|
|
#include <proto/utility.h>
|
|
#include <proto/locale.h>
|
|
#include <proto/timer.h>
|
|
#include <proto/icon.h>
|
|
|
|
/*****************************************************************************/
|
|
|
|
/* This is for backwards compatibility only. */
|
|
#if defined(__amigaos4__)
|
|
#define fib_EntryType fib_Obsolete
|
|
#endif /* __amigaos4__ */
|
|
|
|
/*****************************************************************************/
|
|
|
|
#include <time.h>
|
|
#include <stdio.h>
|
|
#include <errno.h>
|
|
#include <fcntl.h>
|
|
#include <signal.h>
|
|
#include <string.h>
|
|
#include <stdarg.h>
|
|
#include <stdlib.h>
|
|
#include <stddef.h>
|
|
#include <ctype.h>
|
|
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
/*#include <sys/param.h>*/
|
|
#include <sys/ioctl.h>
|
|
#include <sys/stat.h>
|
|
|
|
#include <netinet/ip.h>
|
|
#include <netinet/tcp.h>
|
|
|
|
#include <net/if.h>
|
|
#include <unistd.h>
|
|
#include <netdb.h>
|
|
|
|
/*****************************************************************************/
|
|
|
|
#undef byte
|
|
|
|
/*****************************************************************************/
|
|
|
|
#endif /* _SYSTEM_HEADERS_H */
|