This archive contains include files, some development tools, link
libraries (with source) and programming examples for AmiTCP/IP 4.3.
AmiTCP/IP is propiertary, copyrighted product of the NSDi - Network
Solutions Development Inc, Finland. See the file 'LICENCE.SDK'
included in the archive for the licence conditions.
See AmiTCP-demo-4x.readme for further information about AmiTCP/IP.
* Bug reports
Send any bug reports to <AmiTCP-Bugnsdi.fi>.
* New Features, enchancements and bug fixes on each release of the SDK:
NOTE: AmiTCP itself is not included in the SDK archive, but the
relevant (from the programmers point of view) new features and bug
fixes are mentioned here for completeness. 3.0 beta releases are not
mentioned in this list for clarity and to avoid unnecessary confusion.
New on 4.3 SDK:
- An example code how to develop AmiTCP/IP programs without
any link libraries (and no startup code in this case).
Compiles with SAS C and GNU CC
- Refinements made to better cope GCC. This package will not fully
support GCC. There are other packages for that purpose. There are
libnix and ixemul support for AmiTCP networking. Ixemul support
is currently most complete.
- Added prototypes, pragmas, inlines and fd:s to 2 new libraries,
ifconfig.library and serscript.library. These are currently
NSDi private libraries for db/interfaces parsing and ARexx based
serial scripting and the interface may change. These ade added to
the SDK for completeness.
- BSD Socket function names has reverted back to original standard
lowercase format. <amitcp/bignames.h> is added to bring uppercase
names available (as macros) for those who has used those.
- Added new/missing protypes, header files, definitions.
- All libraries compiled w/ SAS/C 6.56
- Added checking of NIL: filehandle to _fstat.c
- Added optional argument for ARexx RESET command:
ALL (the default), HOSTS, NETWORKS, SERVICES, PROCOTOLS,
NAMESERVERS, DOMAINS, ACXCESS, CACHES.
- Fixed bug in getprotobynumber(). Now it works.
Fixes Bugs on 4.1:
- Made IOC_VOID ioctl's to be accepted, too.
- Fixed inconsistency in link level sockaddr.
- Made root to be the default user (again).
* net.lib, netnb.lib, src/netlib/popen.c:
- Changed popen() to use SystemTags() redirection, since the
standard "more" did not work otherwise.
New Features on 4.0:
- Added new function: GetSocketEvents().
- Added the link level address handling, changed if_type to use
- Added new sana-II errors to the error lists.
- 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. Setting this option
will set the ASYNC mode on the socket also.
- Socket owner is now set by default, _except_ after
- FIOSETOWN ioctl now demands the caller to set itself as the
- 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 -> sl0).
- Removed KERNEL specific definitions.
- Added files stdio.h and fcntl.h supporing DOS stdio if
USE_DOSIO is defined. Otherwise they include the original
files from the INCLUDE:.
NOTE: socket stdio does not work with the USE_DOSIO. SAS/C
stdio must be used, if the sockets are to be used via the
- Added files: sys/file.h, net/if_types.h, net/if_dl.h
- updated: device/sana2.h, devices/sana2.i,
- Added prototype, pragma, fd entry and inline function for the new
Added asynchronous socket event codes and a new socket option to
set per socket event mask.
Added tag code for event notification signal mask
Removed AmiTCP's internal log path names.
- Added arpa protocol headers (arpa/ftp.h, arpa/nameser.h,
arpa/tftp.h and arpa/telnet.h) to the distribution.
- Added/deleted some files.
- Added SocketBaseTagList() definitions to
- GCC: Added inline functions from clib/socket_inlines.h to
inline/socket.h, since those had to be modified for gcc.
Generated big list of defines to make possible to use local
`SocketBase' variable in calls to bsdsocket.library calls.
This feature is invoked defining SOCKETBASE_IN_CONTEXT.
- Added syslog.h (includes sys/syslog.h) for source
- SAS/C: inline functions are defined only if OPTINLINE is
used, netlib stubs are used otherwise.
- Added new prototypes and declarations for the
usergroup.library and its link library (grp.h, pwd.h,
unistd.h, utmp.h, clib/netlib_protos.h).
- Changes for the short interface names, removed interface
- Added include files for the netinfo.device.
- Added RPC include directories rpc and rpcsvc.
- Added tzset() to the timerinit.c to override the one from
the SAS/C sc.lib. ENV:TZ is just once, or not at all if
locale.library is present.
- Added dosio_init.c, dosio_sprintf.c.
- Added compiling the USE_DOSIO versions of the libraries (the
names of the USE_DOSIO versions contain 'd' after the base
name of the library, for example: net.lib -> netd.lib).
- Added functions: link_addr(), link_ntoa().
- Updated to open version 4 of the bsdsocket.library.
- Moved usr.lib functionality to here.
- Added implementation of SAS/C level 1 I/O functions, which
allows stdio on sockets (printf(), and a like).
- Integrated inetd daemon startup code to here. Includes
functions init_inet_daemon() and set_socket_stdio(). See
src/examples/serv for an example.
- Added some unix style functions (utime(), popen(), sleep()
etc.). See doc/netlib.doc for a full list and a reference.
- Added real h_errno variable.
- Added rcmd() and resvport(), removed getpwuid() and getgrgid().
- Added syslog() support functions: openlog(), closelog() and
- Removed errlst.c (error tables are now inside the AmiTCP to
decrease overall memory usage).
- Removed gethostname(), now implemented in the AmiTCP.
- Added strerror().
- Added perror() and stubs for the inline functions (if the
inlining is not done).
- Program name is passed to the AmiTCP at startup. It is used
in the syslog() messages.
- New function herror() will print the host error code set
after host resolving failure (uses SocketBaseTags()).
- New function GetHErrno() will return the host error code
using the SocketBaseTags().
- Added a new function call getcredentials() which returns all
credential for a process, updated library version to 4.
- New library managing the user/group information.
- The default user is now "nobody" (before it was "root").
- New device, which handles the actual user/group database
- New example of stdio and inetd usage.
- AmiTCP implementation of the Sun RPC 4.0.
- Added support for the USE_DOSIO. Now a
special version of the rpclib using the dosio is compiled by
default (rpcdr.lib). The dosio version of the rpclib uses BPTR
file descriptors (dos.library files) instead of FILE * (link
library stdio files) with the xdrstdio_create().
Using rpcdr.lib and netd.lib with a typical RPC program makes it
5k smaller wrt. link library stdio.
- Full documentation for the RPC in the AmigaGuide format.
- New development utility, which creates standard _rev.h files
from some files RCS id.
* src/devtools, src/examples:
- New directories to clean up the directory structure.
- 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.
Fixed Bugs on 4.0:
- Fixed bug with configuration string setting. Too small buffer
restricted the configuration string sizes to less than 24 bytes.
- Fixed syslog message level handling. It was broken if the facility
code was present.
- 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 bug in getservbyname() which now checks the protocol
- Fixed the route dumping bug.
- Logging information is now appended to the end of the old
- Added priority to usergroup autodestructor function.
- Fixed bugs in server argument parsing. Before any more than
one argument would not have worked. (Thanks to Magnus Lilja
for pointing this out).
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,
Fixed Bugs on 2.3:
- Removed the incorrect use of M_EOR, which caused fragmented
packets to be truncated.
New Features on 2.2:
- The interactive sessions have now a higher priority when
New Features on 2.1:
- With Inet-Handler you can use AmigaDOS IO to access TCP protocol
- A timestamp is added to the log messages
- Faster checksum calculation implemented in assembler
- User and group database handling routines are added to the
net.lib. Release includes example databases for `ls' and `finger'
utilities, which use these databases
- A real gettimeofday() using locale is also added