Short: SDK for the AmiTCP/IP protocol stack Author: AmiTCP-Group@ndsi.fi (Network Solutions Development Inc.) Uploader: AmiTCP-Group nsdi fi Type: comm/tcp Version: 4.3 Replaces: comm/tcp/AmiTCP-sdk-40.lha Architecture: m68k-amigaos 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 . * 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: * examples/httpget: - 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 * netinclude: - 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. is added to bring uppercase names available (as macros) for those who has used those. - Added new/missing protypes, header files, definitions. * netlib: - All libraries compiled w/ SAS/C 6.56 - Added checking of NIL: filehandle to _fstat.c * AmiTCP: - 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: * AmiTCP: - Made IOC_VOID ioctl's to be accepted, too. - Fixed inconsistency in link level sockaddr. * usergroup.library: - 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: * AmiTCP: - Added new function: GetSocketEvents(). - Added the link level address handling, changed if_type to use hardware types. - Added new sana-II errors to the error lists. - Configured domain names are now used on internal host searches, too. - 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 obsolete). - 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 ObtainSocket(). - FIOSETOWN ioctl now demands the caller to set itself as the owner. - Added new callback functionality to coordinate fd tables with the link library. (SocketBaseTags() tag SBTC_FDCALLBACK). - 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 SBTC_HERRNOLONGPTR). - 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 on netinclude:amitcp/socketbasetags.h. - 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 modifier. - Only the sizes 1, 2 and 4 are now allowed for the errno variable. - SetErrnoPtr() has now return value. 0 on success and -1 otherwise. The _old_ errno indicates the error causing the failure. - "new" interface naming style (eg. slip.device/0 -> sl0). * netinclude: - 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 stdio functions. - Added files: sys/file.h, net/if_types.h, net/if_dl.h - updated: device/sana2.h, devices/sana2.i, devices/sana2specialstaats.h, devices/sana2specialstats.i - Added prototype, pragma, fd entry and inline function for the new GetSocketEvents() function. - (sys/socket.c): Added asynchronous socket event codes and a new socket option to set per socket event mask. - (amitcp/socketbasetags.h): Added tag code for event notification signal mask (SBTC_SIGEVENTMASK). - (sys/syslog.h): 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 amitcp/socketbasetags.h. - 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 compatibility. - 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 tags. - Added include files for the netinfo.device. - Added RPC include directories rpc and rpcsvc. * net.lib: - 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 setlogmask(). - 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(). * libs/usergroup.library: - 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"). * devs/netinfo.device: - New device, which handles the actual user/group database files. * src/examples/serv: - New example of stdio and inetd usage. * rpc.lib: - 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. * help/RPC.guide: - Full documentation for the RPC in the AmigaGuide format. * rcsrev: - 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. * portmap: - RPC program,version to port mapper, needed to be run before any RPC based servers. * rpcinfo: - Utility to show RPC bindings on a portmap on some host. Fixed Bugs on 4.0: * AmiTCP: - 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 string. - Fixed the route dumping bug. - Logging information is now appended to the end of the old log file. * net.lib: - Added priority to usergroup autodestructor function. * inetd: - 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: * AmiTCP: - 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, itself, too. Fixed Bugs on 2.3: * AmiTCP: - Removed the incorrect use of M_EOR, which caused fragmented packets to be truncated. New Features on 2.2: * AmiTCP: - The interactive sessions have now a higher priority when using rh(c)slip.device New Features on 2.1: * Inet-handler: - With Inet-Handler you can use AmigaDOS IO to access TCP protocol * AmiTCP: - A timestamp is added to the log messages - Faster checksum calculation implemented in assembler * net.lib: - 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 EOF