AmiTCP/IP is the most videly used TCP/IP protocol stack for the
Amiga. AmiTCP/IP utilizes the standard Sana-II network device
drivers and provides an application level socket interface to the
Internet protocol suite as an Amiga shared library.
AmiTCP/IP is propiertary, copyrighted product of the NSDi - Network
Solutions Development Inc, Finland. See the file 'LICENCE' included
in the archive for the licence conditions.
This is the demonstration version of the AmiTCP/IP 4.0.
* About the Commercial AmiTCP/IP Version
The commercial version of AmiTCP/IP 4.0 includes:
- Enchanced version of AmiTCP:
- Frendlier logging system with global filter etc.
- Cache for name server replies
- Sana-II 2.0 support
- Full BOOTP support
- Access control for server programs
- Optimized version for '20 and up
- Automatic BOOTP configuration utility
- Printed & online User Manual
- Technical support via email, fax and normal mail
All the new features in the future will be added to the commercial
The commercial version can be ordered from:
NSDi / Orders
VISA and Master Card are accepted. More complete order information
is included in the demo version archive (in the file "HowToOrder".
AmiTCP/IP 4.0 is distributed in 2 archives:
AmiTCP-demo-40.lha AmiTCP/IP demo version package
AmiTCP-sdk-40.lha Include files, link libraries and examples
The source distribution with sources to some of the utilities and
applications will be relesed shortly, too.
If you just want to use AmiTCP/IP you need just 'demo'. If you want
to write your own applications you need 'sdk', too. Number in the
name corresponds to distribution version.
Unpack archive(s), then read LICENCE, README.FIRST and HowToInstall.
* Bug reports
Send any bug reports to <AmiTCP-Bugnsdi.fi>.
* New Features, enchancements and bug fixes on each release:
NOTE: 3.0 beta releases are not mentioned in this list for clarity
and to avoid unnecessary confusion.
New Features on the commercial 4.0 (not in the demo version):
- Added an optimized IP header checksum routine.
- Added full support for the BOOTP.
- Added Sana-II packet filtering function and interface configuration
flag "FILTER". This is needed only if you have several protocol
stacks using the same Sana-II device and unit. Envoy, for example
uses IP, too, so the FILTERing should be enabled on interfaces
shared with Envoy.
- Added "INACTIVE" to the log window parameters.
- Added simple (but efficient) access control to the protocol
stack. Now it is possible to deny TCP connections to
given/any ports from given/any machine.
- Added caching of the host info got from the name servers
- Added configuration variable LOG FILTER (defaults to 7, all
New Utilities on 4.0 demo:
- Carsten Heyl's (SUN NFS compatible) NFS client added to the
distribution. (Newest version for the AmiTCP/IP 4.0).
- net/2 ftp server ported by Magnus Lilja.
- Totally new version.
- Added to the distribution.
- Trace routes used to send packets to some host.
- Return the AmiTCP's view of the current host name.
* id, login, passwd, umask and whoami:
- New usergroup.library oriented utilities
- Return host, network, protocol or service name from the IP
address, network number, protocol number or service number,
- Execute commands on remote hosts, note that the server
program is not included.
- RPC program,version to port mapper, needed to be run before
any RPC based servers.
- Utility to show RPC bindings on a portmap on some host.
Removed utilities on 4.0 demo:
- was outdated, use ncftp instead (Hint: alias ftp ncftp -u )
- not needed
- not needed
New Features on 4.0 demo:
- All files which are installed to non-AmiTCP directories are
now placed in AmiTCP:export. After the installation is done
you can delete all these files.
- ExtUtil directory contains some usefull stuff for the remote
- AmiTCP now detaches itself, so it should not be started with "run"
- Added the link level address handling, changed if_type to use
- Added new sana-II errors to the error lists.
- Added "ADDRESS" option to interface properties in db/interfaces
with which the default Sana-II hardware address can possibly be
overriden. This is useful if the default hardware address
cannot be used (for example, if AmiTCP/IP is used over
Ethernet concurrently with DECnet protocol (Enlan DFS)).
- Configured domain names are now used on internal host
- Added error messages to startup failures.
- Early error messages are now printed to the console.
- db/resolv.conf is now read for DOMAIN and NAMESERVER entries.
- db/netdb is not read any more, the individual files (hosts,
protocols, networks, sercives, resolv.conf and inet.access)
are read explicitly
- WITH keyword is removed from netdb parsing
- Removed ARexx variables TASKNAME and NTHBASE (they were
- Added new API function GetSocketEvents().
- Added new SocketBaseTagList() tag SBTC_SIGEVENTMASK.
- Added new socket option SO_EVENTMASK
- Socket owner is now set by default, _except_ after
- FIOSETOWN ioctl now demands the caller to set itself as the
- db/interfaces interface names can now contain numbers and
must be unique, no separate unit number is used. Sana-II
devices unit number MUST be present.
- Added new callback functionality to coordinate fd tables
with the link library. (SocketBaseTags() tag
- Made name server resolving multithreaded. Now each
application has it's own set of resolver state variables.
Before any name resolvation would block if another
resolvation was in progress.
- Added h_errno setting via a pointer (SocketBaseTags() tag
- Changed the AmiTCP ARexx port (AMITCP) to show only after the API
is up and running (no need to "wait" on the bin/startnet).
- Added functions sendmsg() and recvmsg() for scatter/gather I/O.
- First parameter to Dup2Socket() can now be -1 to mark the fd
(the second parameter) as not to be used by AmiTCP.
- Added function SocketBaseTagList(). Tag definitions for it are
- Added function gethostid(), which returns the primary IP
address of the host as the unique host id.
- Implemented gethostname() API function and HOSTNAME ARexx variable
(QUERY/SET). The host name is queried from the netdb and/or name
server, if it is not explicitly given in db/AmiTCP.config _or_ set
with the ARexx SET command.
- Added support for the BSD %m feature to the syslog() (%m is
replaced by the error description of current errno value), Also
changed the formatting code to not use the Exec's RawDoFmt()
allowing 32 bit values to be printed without the 'l' size
- Only the sizes 1, 2 and 4 are now allowed for the errno
- SetErrnoPtr() has now return value. 0 on success and -1
otherwise. The _old_ errno indicates the error causing the
- "new" interface naming style (eg. slip.device/0 -> slip0)
- New configuration file for Internet access control. Includes
documentation. (Functional only on commercial version.)
- New configuration file to allow easy extension to new sana2
devices. Maps interface names to sana2 parameters.
- New library managing the user/group information.
- default user is now "nobody".
- New device, which handles the actual user/group database
- Uses DOS notifications, the changes in passwd and group
files are immediately visible with passwd and group maps.
- Various fixes and enchancements including:
- Interfaces are handled in new style,
- SLIP and CSLIP configuration files are now created,
- some support for dynamic IP addressing
- AmiTCP:log directory is created,
- db/resolv.conf is now created,
- added info about private IP address ranges (RFC1597),
- "login" and "umask" are now done at startnet, not s:user-startup
- many other clarifications and suggestions.
- Added configureable MTU and EOFMODE.
- Added sending of custom packet to ABORT pending read packet
when network closes the connection. This packet is FIFO
spesific and won't do anything when using another handler.
Anyway, it works with emacs which uses FIFO to communicate
with spawned processes.
- Upgraded to version 3.8, merged enchanchements made by R. Knop
- Telnet protocol support (-d telnet).
- Added "About" requester.
- Uses the usergroup.library for user information.
- Updated version.
- Updated version.
- Updated version.
- Added resolving the IP addresses (by Pavel Troller
<patrolk332.feld.cvut.cz>). The resolving is done with
AmiTCP command 'resolve' via APIPE:, and can be bypassed
with command line switch '-n'.
- Added caching the resolved addresses (jraja).
- Added more symbolic output (socket names, routes, &c).
* online, offline:
- 'new style' interface names are now recognized.
- more informative error messages
- Updated to the ncftp 1.8.3. Main new feature is "passive mode",
which can be toggled with "passive" command. Passive mode allows
usage through a firewall which does not let incoming connection
requests to come through.
- Default stack is now 8192 bytes, since 4096 was not enough.
- CTRL-C handling is now better, transfers can be interrupted
without side effects now.
- Uses usergroup.library to find the user name _and_ home
- Updated to a new version.
- Added DOS notifications on the inetd.conf. Now inetd will
read the inetd.conf again when DOS notifies that it has
- Added support for naïve servers using DOS IO. Fixed some bugs.
- Added task priority and stack size parameters per
server. See the provided db/inetd.conf for examples.
- Added command line option SERVPRI/K/N, which can be used to set
the process priority on which the launced servers are run. The
default is -1.
- Changed to use stdio on the socket for improved speed (data
is now read in chunks instead of a byte at a time).
- New loose routing option (-L).
Fixes Bugs on 4.0 demo:
- Fixed bug with configuration string setting. Too small buffer
restricted the configuration string sizes to less than 24 bytes.
- Fixed bug causing second instance of AmiTCP to hang before
it could exit (only one copy can be run at a time).
- Fixed concurrency control problem which very randomly caused
- A bug causing enforcer hits with buggy SANA-II drivers is fixed.
- Fixed syslog message level handling. It was broken if the facility
code was present.
- Fixed S2_GETSTATIONADDRESS and S2_CONFIGINTERFACE usage according
the Sana-II standard.
- Changed gethostbyname() not to treate the name as dot notation IP
address based on the first digit only. Full check for the dot
notation is now made.
- Fixed ARP hardware type field to be always set to Ethernet, as
specified in the standard. This means that ARP on other than
ethernet is not compatible between this release and the earlier
- Host aliases are now searched case insensitively, too
- gethostbyaddr() now checks all the addresses given to a
- ARexx result is now always given.
- Packets exceeding MTU are now truncated, not dropped.
- Fixed bug in getservbyname() which now checks the protocol
- Fixed the bug in log file/console name change notify
function (NETTRACE's DosBase is no more used before
- Fixed the route dumping bug.
- Logging information is now appended to the end of the old
* online, offline:
- now set the DOS error code correctly
- The finger -s is now called if no user names are provided.
- Root password is now empty by default. Install_AmiTCP
requires the user to set the root password on installation.
- Error messages are now printed correctly.
* askhost, showmount:
- Updated to allow host names starting with a digit.
- Added 4 bytes to CreateIORequest() request size due Mungwall
* ls (sort.c):
- Fixed a sorting bug which caused a crash in some cases.
- Fixed bugs in server argument parsing. Before any more than
one argument would not have worked. (Thanks to Magnus Lilja
for pointing this out).
- Fixed bug which caused sending to stop if input was redirected
from a (not small) file.
- record routing (-R) now works.
New Features on 2.3:
- New ARexx command "KILL" and a new script, bin/stopnet,
which sends this command to AmiTCP, causing it to try to
stop all networking applications, and if successfull,
- Faster I/O on binary transfers.
Fixed Bugs on 2.3:
- Removed the incorrect use of M_EOR, which caused fragmented
packets to be truncated.
New Features in 2.2:
- The interactive sessions have now a higher priority when
- Routing table can be dumped
Fixed Bugs in 2.2:
- Arp table dumping is now working
New Features in 2.1:
- A timestamp is added to the log messages
- Faster checksum calculation implemented in assembler
- With Inet-Handler you can use AmigaDOS IO to access TCP protocol
- New application, prints information about local and remote users
- Calls now finger when asked for local users. (This feature requires
Apipe-handler by Per Bojsen, Apipe-handler can be found e.g. on Fish
- New application, an imitation of Unix directory lister. Supports
multiuser filesystems. Included as an example of user and group
- Default window title is now the name of the remote host
- A public screen can be used with -S switch (thanks Timo Rossi!)
- A simple script which synchronize clock in Amiga with
specified host in network