Jan 11, 1993 AS225 Developer's Disk, Version 2.3 Requires AmigaDOS 2.04 (V37) or greater Requires AS225 Release 2. Do not distribute this disk or any of its contents. "socket.library" will be included in the Release 2 of AS225. If you write an application which you want to release before the next release of AS225, contact CATS for socket.library licensing information. References in this document to "inet.library" and "socket.library" refer to versions 5.x and 4.x respectively. We have made every effort to ensure compatibility with previous versions of both but we make no promises! ================================================================ ** NOTE ** ** NOTE ** ** NOTE ** ** NOTE ** ** NOTE ** ** NOTE ** ================================================================= This archive contains none of the required binaries. The socket.library (4.x) in question requires the 5.x inet.library which, in turn, requires SANA2 drivers and other support bibaries and test files. Therefore, developers will require the Beta of AS225 Release 2 for a full, proper developmemt environment. --------------------------------------------------------------- *** Socket.library 4.0 -requires- inet.library 5.0 or later *** --------------------------------------------------------------- This is a BETA version of this software. ALL the files on this disk should be considered beta and, as such, we may change them at will (theoretically because of the input from beta testers :)) Inet.library 5.x ----------------- There are two main things to note about the new inet.library (v5.0) : 1. It is now a SANA-II library in that you need SANA-II drivers to talk to your hardware. You will need the a2065.device (Ethernet) and/or the a2060.device(ARCNET) to speak to the Commodore boards. These drivers are on this disk in a directory called ":devs/networks". The proper place for these drivers is in a directory called "networks" in your system's "devs:" volume. example: "devs:networks/a2065.device" In addition, you need a file 'sana2_devs' which goes in the inet:s directory. This is described in detail below. 2. This new inet.library does NOT forward IP packets from board to board. The old inet.library did this. It shouldn't have. (See RFC 1122.) The old version (a) defaulted to ON, and (b) had no way to turn it off. The new one defaults to off and we now provide you with a "inet:c/configinet" which allows you to (a) set the status of this flag and (b) query the status of the flag. People using Amigas as gateways should take note. Docs for 'configinet' are in the docs directory. Socket.library V4.0 (18476 bytes) ----------------------------------- This new socket.library has the following additions and changes : 1. The addition of a standard means to launch server programs (ftpd, rshd, etc.) and to pass ownership of a given socket from one process to another. See the functions s_inherit() and s_release(). The example server 'timed' source shows how to do this. 2. Support for those wishing to mix their compiler's stdio functions with sockets. A new function called s_dev_list() that gives the ability to tell socket.library about your stdio filehandle array. Example source code is provided for which shows how to write replacement functions for your compiler's 'read()', 'open()' and 'write()' functions. 3. Domain Name Service (as of v4.2). The Sana2_devs file ------------------- Inet.library has received some major changes in terms of it's communication with networking hardware. As of release 5.0, all of the hardcoded device drivers (such as hardcoded A2065, A2060, or SLIP drivers) have been removed from the code, and replaced with an interface to standardized SANA-II drivers. Naturally, this causes certain changes to AS225 installations: Most importantly, there exists a new file "inet:s/sana2_devs" which must exist in order for inet.library to operate. A sample of the file follows: #Sana II devices used by the inet.library #device path Unit No IPType ARPType (opt. hardware addr) #-------------------------------------------------------------------- devs:Networks/a2065.device 0 2048 2054 devs:Networks/a2065.device 1 2048 2054 devs:Networks/a2060.device 0 240 241 devs:Networks/slip.device 0 1 2 Each line in the file represents an inet.library device, and these devices are numbered, beginning with the first entry in the file. The name that inet.library will know the device by is simply an 's', followed by the number of the entry in the file - starting with zero. In our example, the first line relates to 's0', the second to 's1', the third to 's2', and the last to 's3'. Since the hardcoded drivers are no longer included in inet.library, any and all references users may be making to them (such as references to 'ae0' or 'ae1' in their inet:s/start-inet files) are now faulty. Each line is broken up into five fields -- the pathname of the SANA-II device, the unit number to configure, the ip and arp packet types, and an optional hardware address. The path of the SANA-II device is fairly self-explanatory. Most SANA-II devices can be found in devs:Networks. The unit number is used to differentiate between multiple boards of the same type in a machine. For instance, if you plug two A2065 boards into an Amiga, the first board is unit 0, the second is unit 1, and so on. The IP and ARP types are standardized "packet types". It is by these numbers that inet.library is capable of determining which packets coming over the network are TCP/IP packets. Unfortunately, even though these numbers are standardized, they vary between different types of hardware. For Ethernet, they are 2048 and 2054, respectively. Arcnet seems to have three seperate 'standards', but the most common usage seems to be 240 and 241 respectively. SLIP, as in our example above, has no notion of packet types, so any two different numbers will do. If you wish to use inet.library with an unusual SANA-II device that doesn't have an inherent hardware address, you can optionally specify one. The format is a 0x, followed by any number of hex digits (up to the SANA-II limit of 32). An example might be 0x8 for hardware address 8. Stuff ----- Also included are the latest network includes and some example source code. In order for you to make use of the new libraries with the old as225 we are providing BETA copies of the new inet:c/server/* binaries. These are still premliminary and have to be given another once over. All the inet:*/* stuff that is not in this archive will be following shortly. This is released in the meantime to get folks started. =============================================================== NOTE: The functions in the socket.library use many of the 2.0 AmigaOS calls. This means that any and all applications that use this library will work ONLY under the 2.0 OS (and later versions). The examples directory contains the source to our new timed program (timed.c), an advanced example. New in this release: 1. An example timed server demonstrating the use of the new s_inherit() and s_release() functions. This example shows the one, true way to write a server that gets launched by the new inetd daemon. 2. Contains source and binary for a file called 'sas_test' that demonstrates the use of the s_dev_list() function. The include directory contains the header files for use with the socket.library. This version does not supply a copy of the Manx pragmas. We do provide the fd file so generating Manx pragmas/stubs should be easy enough. Some header files have names which conflict with standard SAS or Manx headers (in particular, signal.h and sys/types.h). You'll have to figure out how you want to resolve these conflicts depending on whether you want source compatibility with Un*x, etc. COMPILER PROBLEMS: There are a few function calls that will make an ANSI C compiler spit forth warning/errors. In particular, several of the inet_XXX functions pass (4 byte long) structures as their arguments. ANSI compilers -hate- this type of thing. In order to fix this we would make these function incompatible with the way the U*IX calls work. Rather than do that we have opted to have you suffer some compiler warnings. Just check your returns and be sure you are getting what you asked for. Some odd looking casts will generally fix the compiler warning messages. CHANGES: The visible changes are the addition of the functions "s_inherit(), s_release() and s_dev_list(). The autodocs and includes have been changed to reflect this and a few autodoc entries have been clarified or corrected. The contents of inet/c may have been updated to include new utilities. BUGS: Please promptly report all bugs as follows: Mail: European developers should mail bugs to their support manager. U.S./others mail to: Amiga Software Engineering, ATTN: BUG REPORTS, CBM, 1200 Wilson Drive, West Chester, PA., 19380, USA European ADSP users: Post 2.0 bugs to asdp.14.bugs, others to adsp.bugs UUCP: to uunet!cbmvax!bugs OR rutgers!cbmvax!bugs OR bugs@commodore.COM (enhancement requests to cbmvax!suggestions instead of cbmvax!bugs) BIX: Post bugs in the bugs topic of your closed developer conference. (in this case amiga.beta.inet) Legalese: This shared socket library (and it's documentation) are Copyright © 1991, 1992, 1993 Commodore-Amiga, Inc. All Rights Reserved. Parts of this shared socket library and the associated header files are derived from code which is: Copyright (c) 1983 Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, advertising materials, and other materials related to such distribution and use acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.