AmiTCP/IP 4.3 "Read Me First" File
==================================

This file contains notes on changes that didn't make to other documentation.
Please read this through if you encounter any problems configuring AmiTCP/IP
4.3.

Contents:

 1. Summary of new features and improvements
 2. Upgrading from earlier versions
 3. Changes in the AmiTCP/IP setup
    3.1 User information
    3.2 IP provider setup (including fixed networks)
    3.3 Serial line setup (if serial line is used)
    3.4 Modem setup (if modem is used)
 4. Notes on supported Sana2 device drivers
    4.1 Driver specific notes
 5. Configuring multiple interfaces
    5.1 Secondary interfaces
    5.2 Using `bootpconfig' to configure secondary interfaces
    5.3 Proxy ARP
 6. Miscellaneous
    6.1 db/User-Stopnet
    6.2 ifconfig changes
    6.3 Configuring without Domain Name Service

1. Summary of The New Features and Improvements
===============================================

  This is the AmiTCP/IP Release 4.3 released 31-Mar-96.  This release
  contains new features, minor bug fixes and performance improvements over
  previous versions.

  New features:

    * Improved and simplified configuration with IP provider profiles

    * Direct Dial-Up support with BootPConfig
            
    * New improved SLIP device (aslip.device)

    * New API interface with Intelligent Priority Boosting

    * Up to 100 % faster FTP transmissions in LANs

    * Improved Napsaterm Telnet/Rlogin tool, added WB-icons

    * Improved command line utilities (arp, bootpconfig, ifconfig)

    * Improved Arexx interface

    * Default values shown in db/AmiTCP.config

    * socket.library for AS225 compatibility

  Fixed bugs:

    * Stack overflows in inetd and portmap fixed

    * Portmap now supports broadcast RPC better 

    * Other obscure memory trashing bugs are fixed

    * AmiTCP/IP license key file and AmiTCP/IP itself can now be stored in any
      file system

  Known bugs:
 
    * Stopnet won't always work with some buggy device drivers (a2065.device)


2. Upgrading from Earlier Versions
==================================

The `Install AmiTCP' on the installation disk 1 supports upgrading from
earlier AmiTCP/IP versions.  This release is fully compatible with the 4.2
release, meaning that the 4.2 configuration can be used with this release as
is.  To make use of the new features generally requires your to reconfigure
AmiTCP/IP, though.  Running `Config AmiTCP' will write over the existing
`bin/startnet' script, which you usually want to save for backup purposes.

Although `Install AmiTCP' can copy existing AmiTCP/IP configuration files,
there might be other files (configuration files, program files) that you
have installed on top of the earlier AmiTCP/IP.  These files are NOT copied
over automatically, and you must either copy the files manually, or
reinstall the software in question.

Note that the `db/inetd.conf' will be copied from an earlier installation,
and it can refer to server programs not existing in the standard AmiTCP/IP
distribution.  These programs should be copied from old `serv' directory to
the new `serv' directory.


3. Changes in The AmiTCP/IP Setup
=================================

The way the configuration information is stored has been changed.  The main
motivation has been to allow `Config AmiTCP' to recognize existing setup,
and provide proper default values to allow configuration changes without
requiring to re-enter *any* value, that does not need to be changed.

Also, the configuration information is divided into several independent
categories:

  1) User information
  2) IP provider setup (including fixed networks)
  3) Serial line setup (if serial line is used)
  4) Modem setup (if modem is used)

These are handled in following subsections. 

3.1 User Information
--------------------

The default user name is stored in ENVARC:LOGNAME and ENV:LOGNAME.  LOGNAME
variable is also set up by the login command, which means that when startnet
is run, the user will not be changed.  However, the configured default user
is restored when the ENV: is initialized from ENVARC: during a reboot.

The `login' command has been changed so that with usage "Login -f" it reads
the user name to login from ENV:LOGNAME.

The password setting during configuration has been made optional.  Other user
information (real name, home directory etc.) is asked as before.

3.2 IP Provider Setup (Including Fixed Networks)
------------------------------------------------

This release introduces "Provider profiles".  These files collect all IP
provider specific information into one place.  In other words, switching
providers just means replacing the existing profile with a new one!

This release contains few ready made profiles, but you should ask your
provider whether they already have a profile for the AmiTCP/IP.  If they do,
fine, that's all you need.  But if they do not, then you need to create one.

The information needed to make the profile is not dependent on the computer
platform, and exact instructions for some other platform will be of great
help in making the profile for the AmiTCP/IP.

If you provide the information from your provider, we can help you to
complete the script (via email to AmiTCP-Support@nsdi.fi).  We also intend
to make the scripts available via our WWW service <http://www.nsdi.fi/>.

Profiles are stored in directory `AmiTCP:Providers'.  The currently used
profile is stored in `AmiTCP:db/Provider.conf'.  The profiles in
`AmiTCP:Providers' include:

  FIN_TeleInetOpen		- Telecom Finland InetOpen (SLIP, BOOTP)
  FIN_PersonalEunet		- Eunet Finland (PPP)
  Fixed_Network_Connection	- Template for LANs (Ethernet etc.)
  NullModem			- Direct serial, No modem, no login
  NullModemLogin		- Direct serial with login procedure
  Other				- Template for DialUp IP providers

If the profile does not set the name server information, then they are
stored into `db/resolv.conf' by the `Config AmiTCP'.  This file will be
overwritten by some provider profiles (see NSDynamic below).

The provider profile contains two parts.  The first part starts from the
first line with "/*", and ends with the line starting with "*/".  This part
contains configuration information, which `Config AmiTCP' interprets and
modifies.  Bootpconfig also uses this information when configuring
AmiTCP/IP.

Fields in this section are:

	Name		Name for this profile
	DialUp		1 if modem is needed.  This is how `Config AmiTCP' 
			knows to ask modem configuration.
	Interface	Network interface name to be configured
	InterfaceConfig Provider specific Sana2 options.  Appended to serial
			configuration from db/autointerfaces to form a
			Sana2 device configuration file.
			Only provider specific options should be set here.
	NeedSerial	1 if a serial line is needed.  This is how
			'Config AmiTCP' knows to ask serial line related
			options.
	IPDynamic	1 if IP address is dynamic, 0 otherwise
	IPAddr		IP-address if static, leave blank if not known.
			'Config AmiTCP' will ask this if necessary.
			Bootpconfig can ask this at startup time also.
	DestIP		Destination IP address.  This is NOT needed for
			dialup configurations.
	Gateway		Default Gateway address.  This is NOT needed for
			dialup configurations.
	Netmask		Netmask of the interface.  This is NOT needed for
			dialup configurations.
	NSDynamic	1 if name server configuration is dynamic.  In this
			case the dial script should set the name server
			addresses ("Set NS1 x.x.x.x"). 0 otherwise.
			Bootpconfig will create db/resolv.conf and 
			db/netdb-myhost (for compatibility with old email
			programs) at startup time if name server configuration
			is dynamic.
	UseBootP	1 if BOOTP protocol should be used to configure
			dynamic IP address, 0 otherwise.  Your IP provider
			must support BOOTP for you to be able to use it.
	MTU		Maximum transmit unit (in bytes) to use.  The maximum
			receive unit size is set in Sana2 configuration and
			is set to maximum by `Config AmiTCP'.
			0 represents the default maximum value, which should 
			be used on all LAN configurations.
	Phone		Provider phone number (without spaces).  Dial script
			command "Dial" (in AmiTCP:ssrx/Dial.ssrx) will get
			this through bootpconfig.  It is in this section for
			'Config AmiTCP' to be able to configure it.

The rest of the file is used as a dial-up script.  As you see, the script
language is ARexx.  Scripts can contain AmiTCP/IP scripting commands in
addition to normal ARexx commands.  The command set is documented in
help/AmiTCP.guide.

If you use the "Other" profile, then a default manual login script is
appended to your profile.  You can use this script to test the login
procedure, and then automate it when you need what kind of conversation is
needed with the IP provider service.

An example provider profile:

---8<---8<---8<---8<--->8--->8--->8--->8---
/* Provider Configuration Follows:
Name		Other		; Name for this configuration
DialUp		1		; This configuration needs a modem
Interface	slip		; Interface name
InterfaceConfig ""		; Provider specific Sana2 options
NeedSerial	1		; This configuration needs a serial line
IPDynamic	0 		; 1 = YES, 0 = NO
IPAddr				; IP-address if static
NSDynamic	0		; 1 = YES, 0 = NO
UseBootP	0		; 1 = YES, 0 = NO
MTU		576		; Provider specific
Phone				; Provider phone number (without spaces)
*/
/* The rest is the Dialer script for this provider */
options results
signal on error

Say "Entering Manual Console Mode."
Status "Please log in"
ManualConsole

exit 0; /* Successful exit */

error:
Say "Command on line" SIGL "returned" RC ":" SerScript.LASTERROR
Exit 10
---8<---8<---8<---8<--->8--->8--->8--->8---

3.3 Serial Line Setup (If Serial Line Is Used)
----------------------------------------------

Serial line setup is asked if the selected network interface requires it
(SLIP, PPP).  The serial line configuration is stored in db/autointerfaces,
that uses the same format as the db/interfaces.  You should not manually
modify the db/autointerfaces file, but use the 'Config AmiTCP' to manage it.

The `Shared mode' is offered as the default.  If Shared mode is used, the
dialup can be done without setting the modem to the ignore DTR mode (AT&D0).
This allows the modem connection to be dropped automatically when AmiTCP/IP
is terminated.

The EOF-mode setting is automated by both aslip.device and the newest
version of the ppp.device.  These devices use the EOF-mode on only on devices
known to support it.  You can enforce EOF-mode on or off by giving an
additional serial option, EOFMode or NoEOFMode, respectively, when `Config
AmiTCP' asks for additional serial options.

EOF mode is a technical detail in serial device usage that affects the CPU
usage of the serial traffic.  EOF mode should be used if possible, but
unfortunately some add-on serial boards and replacement serial drivers do
not implement it.  If you are using the normal AmigaOS serial.device with the
internal serial port, then you do NOT need to bother about the EOF-mode at
all.

The MTU value stored in db/autointerfaces is used as `MRU', i.e. `Maximum
Receive Unit', the maximum size allowed for an incoming packet.  This is
always kept at maximum by the `Config AmiTCP', and should NOT be modified.
This version of AmiTCP/IP allows MTU (Maximum Transmit Unit, the maximum
size of sent packets) to be set independently.  This value is asked in `IP
provider options' and is stored in the IP provider profile.  This value can
also be changed and viewed at the run time with `ifconfig' utility.

The DoOffline option included into SLIP and PPP configuration in the file
`db/autointerfaces' instructs AmiTCP/IP to put the Sana2 device offline when
AmiTCP/IP is stopped.  Putting SLIP or PPP device offline will cause the
modem connection to be dropped.

3.4 Modem Setup (If Modem Is Used)
----------------------------------

'Config AmiTCP' now also asks for the modem configuration.  This includes
modem initialization string, and the dialing prefix.  These are stored in
ENV:ModemInitString and ENV:ModemDialPrefix, respectively (also in ENVARC).

The modem initialization string is dependent of the modem you have.  If you
are using a terminal program, you probably have a modem initialization
sting configured for it.  This can be used as is with AmiTCP/IP as well.

Generally the modem initialization string should contain the following:

  1) The command introducer	"AT"  (for Hayes compatible modems)
  2) Reset to factory defaults:	"&F" 
  3) Sense carrier:		"&C1"
  4) Disconnect on DTR drop:    "&D2"
  5) Hardware handshake:	"&R1" (7Wire mode, need 7 wire cable)

You need to confirm the actual values from the manual of your modem.  The
scripts using the ModemInitString assume it to return OK, so at least the
command introducer must be given.

The modem dial prefix is usually "ATDT" (touch tone dial).


4. Notes on Supported Sana2 Device Drivers
==========================================

AmiTCP/IP itself supports all standard Sana2 (Amiga standard for network
driver interface) device drivers.  However, the configuration utilities only
support a limited set of drivers that we had proper information about.
Other drivers require proper entries into the db/interfaces file, and the
configuration made with `Config AmiTCP' must be altered manually.

Note also that `Config AmiTCP' currently supports configuring only one
interface at a time.  Information on configuring multiple interfaces can be
found from the AmiTCP/IP User's Manual and from this file.

4.1 Driver Specific Notes
-------------------------

SLIP:	aslip.device is a new slip Sana2 device with slightly modified
	configuration file interface. `Config AmiTCP' requires it if
	SLIP protocol is used.

PPP:	ppp.device version 1.45 or later is needed for PPP.  Evaluation
	version is available from AmiNet (for example wuarchive.wustl.edu),
	file /pub/aminet/comm/net/PPP1_45.lha.

Ethernet
	Ethernet and other LAN interfaces are configured with profile
	"Fixed_Network_Connection" (in `Config AmiTCP').  If you are using
	Village Tronic Ariadne, at least the version 1.37 should be used
	(version can be checked with command "version ariadne.device").


5. Configuring Multiple Interfaces
==================================

The `Config AmiTCP' supports configuring the first interface only.
AmiTCP/IP regards this interface as the primary interface.  This means that
the host name reported by the AmiTCP/IP is bound to the IP address of that
interface.  The only way to change the primary interface is to put the
primary interface `down' with ifconfig.

5.1 Secondary Interfaces
------------------------

Additional interfaces can be configured in the file `db/User-Startnet',
which is executed by `startnet' when AmiTCP/IP has been successfully
configured.

The commands to be used for secondary interface configuration are:

  1) ifconfig	- configure a network interface
  2) route	- add routes
  3) arp	- add proxy arp entries (see below)
  4) bootpconfig - powerful utility to configure the interface, add routes,
		   configure name service configuration, run dialup scripts,
		   etc.

NOTE: BOOTP protocol for interface configuration is supported for the first
interface only.

The `ifconfig' is the simplest tool to use if the secondary interface is
Ethernet, Arcnet, or other broadcast interface.

It is best to configure SLIP and PPP connections with the `bootpconfig'
utility.

5.2 Using `bootpconfig' to Configure Secondary Interfaces
---------------------------------------------------------

If your primary interface is an Ethernet interface, and the secondary
interface is a directly connected serial line providing connectivity
to a machine without an Ethernet board, then you would do following:

  1) Configure the Ethernet interface with `Config AmiTCP' using the
     provider profile "Fixed_Network_Connection".

  2) Configure the slip line in db/User-Startnet:

	bootpconfig aslip0 IP $HOSTNAME Dest <remote-ip-address>
	arp -s <remote-ip-address> pub

     where the <remote-ip-address> is assigned from the same IP subnet as
     the primary Ethernet interface.

     Note that the entry "aslip0" must be manually added to the
     db/interfaces file.  A proper procedure to do this is described later
     in this document.

     The "arp..." line adds a proxy arp entry.  Proxy ARP is described in a
     section of it's own.

This setup will allow IP connectivity to the Ethernet for both of the
machines.

More usual case is when you have a local Ethernet and then you occasionally
dial up a SLIP or PPP connection to your provider.  In these cases the
Ethernet interface remains your primary interface ('hostname' command will
report the name mapped to the IP address of the Ethernet interface).  You
need to set the default route to temporarily point to your IP provider.
Also the name service configuration might need to be changed.

To configure this kind of configuration, do the following:

  1) Use the `Config AmiTCP' utility to configure the dialup line.  You will 
     most probably need to use the "Other" provider profile as a starting
     point.  Specify Dynamic name service.  This will allow the name service
     configuration to be changed when you dial up.

     After the configuration you will have a dial script, that requires
     manual login.  You need to edit the stored AmiTCP:db/Provider.conf
     script part to automate the login procedure.  AmiTCP:help/AmiTCP.guide
     contains a full reference of the AmiTCP/IP scripting commands (in
     addition to normal ARexx commands).  Make sure that the script sets the
     name server IP addresses.

     When you have successfully configured the dialup line, store the
     AmiTCP:db/Provider.conf to AmiTCP:db/providers.  For this example we
     assume that you named the profile as "MyProvider".

     The serial configuration is stored in the file `db/autointerfaces', and
     it can be left there.  If you have multiple serial lines, you might use
     `Config AmiTCP' to configure them one at a time, and then save the
     db/autointerfaces contents to the `db/interfaces' file (with different
     interface names).

     The modem configuration is stored in `ENV:'.  Currently only one modem
     configuration can be stored.  This means that if you use multiple
     modems, same initialization string and dial prefix would be used for
     all of them.

  2) Configure the Ethernet interface with the `Config AmiTCP'.

  3) Test your Ethernet configuration.  When it works create a script named
     DIALUP with your favorite editor:

	.key PROVIDER
	.bra {
	.ket }
	.def PROVIDER MyProvider
	bootpconfig PROVIDERFILE=AmiTCP:Providers/{PROVIDER} FORCEPRIMARY

     Normally bootpconfig would not configure the default routes and the
     name server configuration for secondary interfaces, but the switch
     FORCEPRIMARY will override that.  If PROVIDERFILE option is not given,
     then bootpconfig assumes AmiTCP:db/Provider.conf, IF no interface name
     is given in command line.  The restriction is for backwards
     compatibility with earlier bootpconfig versions.

  4) Also create a HANGUP script:

	.key PROVIDER
	.bra {
	.ket }
	.def PROVIDER MyProvider
	AmiTCP:util/parseconfig PROVIDERFILE=AmiTCP:Providers/{PROVIDER}
	offline `type ENV:Config_AmiTCP/provider/Interface` ; put i/f offline
	echo "" >AmiTCP:db/resolv.conf  ; clear out name servers
	route delete default		; delete default route

The `parseconfig' is not intended to be documented at all, but since it is
handy here, I've used it anyway.  All it does in above is to get the
interface name out of the provider profile to an environment variable, from
where it is easier to use within a script.

These scripts can be improved in many ways.  For example, you might save the
current name server configuration before configuring new one, and restore it
after the hang up.

5.3 Proxy ARP
-------------

Proxy ARP is an arrangement where your host (your Amiga) acts as a proxy
for another computer.  It means that your Amiga answers to the ARP requests
on behalf of the another computer, which is usually connected to your Amiga
via a serial line, for instance.  When a host on the Ethernet wants to send
a packet to that another computer, it will actually send the packet to your
Amiga.  In other words, your Amiga acts as a gateway between the rest of the
hosts on the Ethernet and the host that is connected via a serial line.

A new usage of the "arp" command has been added to make adding proxy ARP
entries easy.  This usage is:

	arp -s <hostname> pub

Such an `arp' command searches for a local broadcast-capable interface
(Ethernet, Arcnet) that belongs to the same IP subnet with the <hostname>.
If a suitable interface is found, `arp' command permanently stores and
publishes an ARP entry with the hardware address of your Amiga and the IP
address of <hostname>.  Other hosts on that network will now send packets
destined to <hostname> to your Amiga.

For your machine to route any packets the "GATEWAY=YES" setting must be
specified in db/AmiTCP.config.  Also, the interface to the <hostname> must
be configured, up and running.


6. Miscellaneous
================

6.1 `db/User-Stopnet'
---------------------

The `stopnet' script has been modified to execute `db/User-Stopnet', if it
exists and AmiTCP/IP is running.  There you can shut up the servers etc. you
possibly have set up in `db/User-Startnet'.

6.2 `ifconfig' Changes
----------------------

Ifconfig now supports new usage, `ifconfig' without any arguments.  It shows
all currently configured interfaces.

Ifconfig also gives textual presentations to all interface flags that are
set.  It also reports the set MTU, hardware type and hardware address, if
applicable.  The MTU can also be set, for example:

	ifconfig slip mtu 296

will set the MTU of the interface `slip' to 296 (`slip' is assumed to be
configured already).

6.3 Configuring AmiTCP/IP without Domain Name Service
-----------------------------------------------------

If you run AmiTCP/IP without a connection to the Internet, the Domain Name
Service might not be available.  AmiTCP/IP configuration expects that it can
find out the host name from the IP address of your Amiga.  If the domain
name service is not available, you should add a suitable IP-address-to-
host-name mapping to the `AmiTCP:db/hosts' file.  See the existing `hosts'
file for the format of the file.

EOF
