204 Commits
Author SHA1 Message Date
Olaf Barthel 00b5bf7fcf Added dependency for quad_math.h 2016-03-28 12:09:12 +02:00
Olaf Barthel 5fd0a33b76 Header comment cleaned up 2016-03-28 12:08:55 +02:00
Olaf Barthel a386f6ce02 Version bump 2016-03-27 18:14:43 +02:00
Olaf Barthel 3562ef9720 Bug fix for random junk in first file data
smba_read() could end up returning random junk in the first few bytes of a file because the make_open() return value tripped it up.
2016-03-27 18:14:30 +02:00
Olaf Barthel 6b3e54c1db Added documentation comments
Made a note of the fact that the SMB_COM_READ_RAW may be followed by more than one response by the server. The current implementation only catches one response.

The data transmitted by the SMB_COM_WRITE_RAW command is no longer decoded as if it were an SMB message.
2016-03-27 18:13:11 +02:00
Olaf Barthel ba332083a4 Cleaned up the indentation 2016-03-27 18:11:12 +02:00
Olaf Barthel 6c1451f146 Moved the test examples behind the header comment 2016-03-27 18:10:38 +02:00
Olaf Barthel ef4f02546e Error codes and decoded message output reworked
Time is now printed uniformly in hexadecimal format.
dword data is now printed as unsigned integer values.
Decoded error messages should be a bit more readable.
2016-03-27 18:09:59 +02:00
Olaf Barthel d59fc688bb Refactored SMB message decoder
The decoder now handles all SMB commands which the smbfs file system uses, including the two subcommands of the SMB_COM_TRANSACTION2 command which are used (TRANS2_FIND_FIRST2 and TRANS2_FIND_NEXT2).

This is still very ugly and very complex code, but hopefully the next version will only be ugly...
2016-03-27 12:33:03 +02:00
Olaf Barthel 6a6e98085e Refactored SMB message decoder
Added dependencies for "dump_smb.c" and "dump_smb.h"
2016-03-27 12:30:08 +02:00
Olaf Barthel 51b7e9be6e Version bump 2016-03-27 12:29:33 +02:00
Olaf Barthel 1387847f00 Refactored the SMB decoder
Added dependencies for "dump_smb.h"
2016-03-27 12:29:01 +02:00
Olaf Barthel 46666ad167 Refactored the SMB decoder
Moved into separate "dump_smb.c" and "dump_smb.h" files.
2016-03-27 12:28:26 +02:00
Olaf Barthel b0df941186 Indentation cleanup 2016-03-27 12:27:36 +02:00
Olaf Barthel 44362384f4 Indentation cleanup 2016-03-27 12:27:20 +02:00
Olaf Barthel 6ae4cc81ff Major update to SMB decoder
Major rework of the code which decodes individual commands,  their parameters and the responses. This is still incomplete, but it's a lot more useful now than before.
2016-03-25 17:47:10 +01:00
Olaf Barthel c390a3fa0e Version bump 2016-03-20 16:37:20 +01:00
Olaf Barthel 56cee8e3fb Reworked the SMB decoder to handle ANDX commands better 2016-03-20 16:37:04 +01:00
Olaf Barthel 887e014b2a Version bump 2016-03-06 15:27:14 +01:00
Olaf Barthel 0e0565c3e9 Reworked the maximum transmission size handling
The maximum transmission size can now be limited to values smaller than 65530, but it must be larger than 8000 bytes.
2016-03-06 15:27:03 +01:00
Olaf Barthel 1c62774432 Reworked word/dword conversion code
The word/dword conversion code should be more robust now, using type casts where needed.

Cleaned up numeric comparisons, so that the types of the quantities compared match.

The SMB packet dump code now prints the current transmit buffer size along with the other packet information.
2016-03-06 15:25:40 +01:00
Olaf Barthel 11c3b7891d Reworked the word/dword conversion code
The word/dword conversion macros should be more robust now, using type casts where needed.
2016-03-06 15:23:03 +01:00
Olaf Barthel 4893011dae Renamed max_xmit to given_max_xmit
Because the field and variable name "max_xmit" was used in four different places, with different types in different context, it was hard to know what was what. This is part of the cleanup work.
2016-03-06 15:22:13 +01:00
Olaf Barthel 76bdadec3d Removed server state from global data structure
These fields are not needed in the global data structure, they are used only locally.
2016-03-06 15:20:55 +01:00
Olaf Barthel f6e4f963f8 Reworked word/dword conversion code
The word/dword conversion code should be more robust now, using the type casts where needed.

The maximum transmission size provided by the server is now a local variable and no longer stored in the global server parameters because it is really only needed here.

The maximum transmission size limit requested by the user is no longer ignored.
2016-03-06 15:20:16 +01:00
Olaf Barthel e5f8f425ee Removed max_xmit field from server parameters
The "max_xmit" field has been replaced by a new parameter passed to the smba_start() function.
2016-03-06 15:17:08 +01:00
Olaf Barthel ba7b0d658c MAXTRANSMIT added
The maximum transmission size is now configurable through a command line/tool type option. This used to be preset to 65530.

Also removed a htons() call that was both wrong and unnecessary.
2016-03-06 15:15:22 +01:00
Olaf Barthel ff16b6adcd Version bump 2016-02-28 13:39:48 +01:00
Olaf Barthel 333116eb78 Buffer size reduction due to NetBIOS header
Buffer size passed to smb_receive_raw() from smb_receive() reduced by 4 bytes to account for NetBIOS session header.
2016-02-28 13:39:34 +01:00
Olaf Barthel 88eaf1b0b9 Slight increase for maximum transmission buffer size
smba_connect() max_xmit now set to 65534 (used to be 65530).
2016-02-28 13:38:40 +01:00
Olaf Barthel 3df0f8e50a Added one more error code translation entry
Added "ERRnosuchshare" (67) to dos_msgs[] table.
2016-02-28 13:36:53 +01:00
Olaf Barthel 088ddf8439 Date conversion update, Task priority change, Fix for ACTION_READ_LINE
When converting the server's file modification time for a FileInfoBlock->fib_Date, we now prefer the creation time record if the modification time is not provided.

When the file system enters its packet dispatch loop, its Task priority is increased to 10 unless it already uses a a higher priority level; the priority is restored when the dispatch loop terminates.

The ACTION_READ_LINK packet is now properly rejected as being unsupported.
2016-02-28 13:36:15 +01:00
Olaf Barthel 1f3945460e Added support for raw SMB over TCP and for SMB command debugging
Raw SMB over TCP is now the default; re-enable the NetBIOS layer with the NETBIOS switch. The DUMPSMB switch enables SMB command decoding, the results of which will be sent to STDOUT if the respective decoding functions have been built into the smbfs command.
2016-02-21 13:47:44 +01:00
Olaf Barthel 99fe89d475 Added support for raw SMB over TCP
This complements the functionality in the updated SMB abstraction layer. Also added a little documentation for some of the various undocumented magic numbers and fields of the SMB commands set up in this implementation. There is more to come, eventually.
2016-02-21 13:45:51 +01:00
Olaf Barthel d00debee61 Added SMB command decoding functionality
All commands which the smbfs program receives or send through the network can now be decoded, printing header information and (eventually) more detailed information about the specific server command. This option is enabled at compile time.
2016-02-21 13:44:01 +01:00
Olaf Barthel 6e005b37c2 Added support for raw SMB over TCP
The original implementation would wrap the SMB session setup into a NetBIOS layer, which Windows Vista, Windows 7, etc. no longer support out of the box. The updated code in smba_connect()/smba_start() now supports raw SMB over TCP which is better supported by contemporary software than the legacy NetBIOS option.
2016-02-21 13:41:41 +01:00
Olaf Barthel f607381ad1 Hard-coded SMB port number no longer required
The corresponding code in the SMB abstraction layer now uses getservbyname("netbios-ssn","tcp") instead.
2016-02-21 13:38:22 +01:00
Olaf Barthel b20e2b432e Added switch to enable raw SMB access
The updated SMB abstraction layer supports skipping the NetBIOS protol layer altogether, which improves compatibility with Windows Vista, Windows 7, etc.
2016-02-21 13:36:39 +01:00
Olaf Barthel 06fa823bd9 Removed the 'executable' property from those files which are not executable.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/trunk@31 26594b9e-b914-4e86-b7a1-9402bd427170
2015-06-11 14:30:58 +00:00
Olaf Barthel 7c5f25280e smbfs 1.75 (1.6.2011)
- The ACTION_INFO packet is now handled correctly if a ZERO lock
  is provided. Previously, it would return failure, prompting DOS
  to show its "please insert disk" requester.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/trunk@29 26594b9e-b914-4e86-b7a1-9402bd427170
2011-01-06 11:27:18 +00:00
Olaf Barthel 9cafee2304 smbfs 1.74 (31.8.2009)
- Integrated Harry Sintonen's fix for the problem caused by large
  writes to files. The respective packet size was off by one byte.
  Thank you very much!


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/trunk@27 26594b9e-b914-4e86-b7a1-9402bd427170
2009-08-31 06:34:23 +00:00
Olaf Barthel 57bfcc3407 - Added Harry Sintonen's fix for the large write issue.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/trunk@26 26594b9e-b914-4e86-b7a1-9402bd427170
2009-07-22 07:52:59 +00:00
Olaf Barthel ec1b2a97db smbfs 1.73 (17.4.2009)
- Modified smb_valid_packet() in proc.c to check whether the packet
  received is smaller than expected, not whether the length matches
  exactly. This seems to fix the protocol negotiation with Samba 3.2.5
  for now. Haven't checked Vista yet, though...


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/trunk@23 26594b9e-b914-4e86-b7a1-9402bd427170
2009-04-17 11:09:41 +00:00
Olaf Barthel cc612b61f0 - Small changes to make this build with current SDK
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/trunk@21 26594b9e-b914-4e86-b7a1-9402bd427170
2009-04-14 12:16:11 +00:00
Olaf Barthel 2f0d253eef smbfs 1.72 (14.4.2009)
- In proc.c, smb_setup_header() initialized the SMB header length
  field with a number which was too large by four bytes. Consequently,
  what was later committed to the wire would have four trailing data
  bytes which could contain random values. This often didn't do much
  harm, but it seems that Samba 3.2.4 and Windows Vista don't like the
  looks of the trailing junk bytes.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/trunk@20 26594b9e-b914-4e86-b7a1-9402bd427170
2009-04-14 11:33:05 +00:00
Olaf Barthel 58bb78ae14 - The 68k version no longer requires Kickstart 3.0 to run.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/trunk@19 26594b9e-b914-4e86-b7a1-9402bd427170
2005-06-13 19:34:25 +00:00
Olaf Barthel 210865e526 smbfs 1.71 (13.6.2005)
- The extended directory scanning entry conversion code now swaps
  the last modification and last write access date stamps. This
  matches the time of the last modification, as returned by the
  regular ACTION_EXAMINE_FH/ACTION_EXAMINE packets. Note that the
  time resolution is a little bit coarser because the modification
  time as expressed by the SMB getattr function cannot represent
  60 distinct seconds per minute but only 30. The net effect is
  that the resulting time stamps in a directory listing and by
  examining a file can differ by one second.

- The DST option's time offset was added to rather than subtracted
  from the local time. Fixed.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/trunk@17 26594b9e-b914-4e86-b7a1-9402bd427170
2005-06-13 13:14:37 +00:00
Olaf Barthel fd1b68d775 smbfs 1.70 (13.6.2005)
- Introduced a new option to account for daylight savings time
  when appropriate.

- Looks like some of the time stamps used in "proc.c" are
  transmitted in local time after all; brought back the
  conversion functions.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/trunk@15 26594b9e-b914-4e86-b7a1-9402bd427170
2005-06-13 08:43:17 +00:00
Olaf Barthel 78e86b738f smbfs 1.69 (13.6.2005)
- The time stamps used in "proc.c", as returned and submitted to
  the SMB file system on the other end of the wire are apparently
  all in Universally Coordinated Time already (or at least, this
  seems to be the case with Samba and Windows XP). Hence no conversion
  between local time and UTC is necessary, which would otherwise
  distort all date stamps converted. I modified the file system to
  leave all time stamps essentially unadjusted for local time in
  "proc.c". The local time zone adjustments are now performed only
  where the time in question is known to be Amiga-specific, such as
  the current system time or the date stamp to set for a file.

  The time conversion appears to be working correctly now, but it
  does ignore the effects of daylight savings time, which you might
  want to adjust for manually through the TIMEZONEOFFSET option
  (careful though: this overrides your current locale-defined time
  zone settings as far as smbfs is concerned).

  Unsolved problem: at least Windows XP seems to return different
  time stamps for directory listings and for indidivual files. As
  far as I can tell, the sets of time stamps returned for either
  doesn't match anywhere.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/trunk@13 26594b9e-b914-4e86-b7a1-9402bd427170
2005-06-13 08:04:29 +00:00
Olaf Barthel 1566796e21 smbfs 1.68 (3.6.2005)
- It appears that Windows XP can produce directory listings with
  file/directory modification times set to 0, indicating that no
  such information is available, while the associated last file
  write access data is present. Previously, smbfs only reported
  the modification. If this data is unavailable and the date of
  the last write access is, the last write access will be
  reported instead.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/trunk@11 26594b9e-b914-4e86-b7a1-9402bd427170
2005-06-03 14:35:12 +00:00