



                        AmiTCP/IP



                     System  Manual


                             Revision: 2.4



                          amitcp-group@hut.fi



Tomi Ollila      Pekka Pessi      Markus Peuhkuri      Jarno  Rajahalme



                           August 13, 1993







Foreword



What  Is  AmiTCP/IP


The Programming Project is a software engineering course here at Helsinki
University of Technology.  A group of 3---4 students designs, implements
and tests a complete working software system during this course.
   Our purpose was to provide a free TCP/IP implementation for all Amiga
users.  Lack of a standard networking interface was anirritating
shortcoming of the Amiga systems.
   AmiTCP/IPis a protocol stack implementing basic Internet protocols on
top of any SANA-II network device driver(for Ethernet, SLIP, etc.).  The
protocol stack offers the standard Berkeley Socket application program
interface (API) to the TCP/IP protocolsimplemented as an Amiga shared
library.
   Using AmiTCP/IP and appropriate client program you can connect to any
services available on your TCP/IP network.



How  Is  This  Achieved


At first we planned to write the whole protocol stack from scratch.
After examining standards about TCP/IP and bibliography about its
implementations we become aware of the possibility of using the BSD NET/2
code as a base of our work.  We discussed about the idea and found good
reasons why the BSD code should be used.  Eventually wedecided to take
that path with the project.
   AmiTCP/IPis built around BSD NET/2 networking code.  Because the
networking part of the BSD UNIX kernel is rather isolated, only a few
kernel routines had to be rewritten to suit the architecture of the
AmiTCP/IP.
   SANA-II and shared library interfaces were added to the bottom and top
of the modified NET/2 code, respectively.



Why Is the BSD Code Used


Here are some of the pros of the decision:


   fflWe don't need to reimplement the most complex part (and all the bugs)
    of the system.



                                       i





   fflWe noticed that the BSD kernel support for the networking part is
    easy enough to implement using powerful Amiga features.

   fflWhen improvements are done to the NET/2 code, we can improve
    AmiTCP/IP by simply replacing the old code with the changed one.

   fflWe are offering the socket application interface.  It is the most
    used interface in networking programs with TCP/IP. Using the NET/2
    code makes it easy to implement the BSD socket related function call
    interface as our API.

   fflWe can easily port crucial network utilities from the BSD.



About SANA-II

Bottom level interface to the SANA-II device drivers was an obvious
choice.  SANA-II is the Amiga standard interface for network devices, and
most manufacturers are shipping SANA-IIcompatible device drivers for
their hardware.  There are also some freely distributable SANA-II drivers
e.g.  for the standard serial interface.
   Althoughthere may be few problems with different network types the
AmiTCP/IP should be able to use all SANA-II device drivers which support
IP.



Release 2.0

This release of AmiTCP/IP includes onlythe protocol stack (AmiTCP),
test programs, basic network utilities and example client and servers.
The distribution still lacks most basicclient and server programs.
   The second release of the AmiTCP/IP contains some improvements and bug
fixes over the first release.  It is incompatible withprevious version
in binary level, however.  Old applications and the newlibrary DO NOT
work together.  If you have an application compiled with previous version
of AmiTCP/IP, it MUST be recompiled.  We hope that thisis the only
downward incompatible release.
   The AmiTCP/IP Group requests all users of the AmiTCP/IP to return any
new applications or improved versions tothe AmiTCP/IP Group,
<amitcp-group@hut.fi>, and grant it theright to redistribute them.



                                      ii





Acknowledgments


We would like to thank

   fflComputer Systems Research Group from University of California,
    Berkeley, for developing BSD Unix system.

   fflCarnegie Mellon University for Mach bsdss port of BSD Net/2.

   fflAntti Louko <alo@hut.fi>, our project supervisor, from the Computing
    Centre of the Helsinki University of Technology.

   fflJukka Partanen <jtp@cs.hut.fi> for providing the GNU CC
    cross-compiling environment for the Amiga in the HP 9000/700
    workstations.

   fflTimo Rossi <trossi@jyu.fi> for providing the SANA-II drivers for
    Western Digital Ethernet cards used in testing.

   Further on, Jarno and Markus would like to thank their wives Maarit and
Katri for forgiving those late nights (or early mornings) that we spent
with this project.



                                      iii





   AmiTCP/IPcontains material derived from BSD net/2 release.  The
following acknowledgement should be included in all AmiTCP/IP
distributions:


   Copyright cfl1982, 1986, 1988, 1990 Regents of the University of
California.  All rights reserved.
   Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:


 1. Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.

 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.

 3. All advertising materials mentioning features or use of this software
    must display the following acknowledgment:  This product includes
    software developed by the University of California, Berkeley and its
    contributors.

 4. Neither the name of the University nor the names of its contributors
    may be used to endorse or promote products derived from this software
    without specific prior written permission.


   THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANYTHEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.



                                      iv





   Some codeof the AmiTCP/IP originates from the BSDSS 4 by CMU, which
is hereby acknowledged:


Mach Operating System.
Copyright cfl1992 Carnegie Mellon University.
All Rights Reserved.


Permission to use, copy, modify and distribute this software and its
documentation is hereby granted, provided that both the copyright notice
and this permission notice appear in allcopies of the software,
derivative works or modified versions, and any portions thereof, and that
both notices appear in supporting documentation.


CARNEGIE MELLON ALLOWS FREE USE OF THISSOFTWARE IN ITS "AS IS"
CONDITION. CARNEGIE MELLON DISCLAIMS ANYLIABILITY OF ANY KIND FOR ANY
DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.


Carnegie Mellon requests users of this software to return to


Software Distribution Coordinator
School of Computer Science
Carnegie Mellon University
Pittsburgh PA 15213-3890


or Software.Distribution@CS.CMU.EDU


any improvements or extensions that theymake and grant Carnegie Mellon
the rights to redistribute these changes.



                                       v





vi





About  This  Manual


How This Manual Is Organized

We have tried to organize this manual sothat you are not forced to read
material that you are not interested in.  In order to achieve this we
have divided the text into following chapters:


 1. User's Manual gives you basic information about using the AmiTCP/IP
    system.  Descriptions about our debugging tools qwriter and
    agnet.device is also included here.


 2. Interfaces describes briefly all external interfaces of the
    AmiTCP/IP.


 3. Programmer's Manual gives you the needed information to use
    AmiTCP/IP to make your own network-aware programs.


 4. Internal Description gives you information about the internal
    structure of the AmiTCP/IP-system.  This is meant for all of you who
    are interested in the internal design of the AmiTCP/IP.


 5. Implementation Notes is written for those of you who are going to
    maintain AmiTCP/IP or plan to develop it further.


   There arealso two appendices, the user and programmer reference
guides.  These appendices are in the AutoDoc format andthey are also
available in machine readable form.
   If you have trouble understanding the jargon1  or TLAs1  refer to the
glossary at the end of this manual.



Typographical Conventions

To help you to understand the text in this manual, following typefaces
and punctuation are used:


     Roman   is the basic typeface used throughout the text.


   Slanted   is used in text which we want youto take special attention
             on.


   Italics   is used to introduce new terms and concepts which will be
             explained shortly.  Italics is also used to refer to the
             names of the publications and tothe sections of this manual.


Typed Text   is used for literal program codeand items specific to the
             implementation, such as functionnames, identifiers and C
             language keywords.


      Bold   text is used to refer to specificfiles and command names
             used by AmiTCP/IP.
________________________________
   1See glossary.



                                      vii





Syntax Conventions

There are few syntactic conventions usedin this manual:


       [:::] Square brackets are used for bibliographical references, list
             of which can be found from the end of this manual.

 hargumenti  User supplied required argumentsare printed between angle
             brackets.

[argument]   User supplied optional argumentsare printed between square
             brackets.

function()   C function names are followed bya pair of parenthesis.  The
             preprocessor macros---as opposedto the genuine
             functions---are in upper case.



                                     viii





GNU  GENERAL  PUBLIC  LICENSE


                             Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.  675 Mass Ave,
Cambridge, MA 02139, USA

   Everyoneis permitted to copy and distribute verbatim copies of this
license document, but changing it is notallowed.



Preamble


The licenses for most software are designed to take away your freedom to
share and change it.  By contrast, the GNU General Public License is
intended to guarantee your freedom to share and change free software---to
make sure the software is free for all its users.   This General Public
License applies to most of the Free Software Foundation's software and to
any other program whose authors commit to using it.   (Some other Free
Software Foundation software is coveredby the GNU Library General Public
License instead.)  You can apply it to your programs, too.

   When we speak of free software, we are referring to freedom, not price.
Our General Public Licenses are designedto make sure that you have the
freedom to distribute copies of free software (and charge for this
service if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new free
programs; and that you know you can do these things.

   To protect your rights, we need to make restrictions that forbid anyone
to deny you these rights or to ask you to surrender the rights.  These
restrictions translate to certain responsibilities for you if you
distribute copies of the software, or ifyou modify it.

   For example, if you distribute copies of such a program, whether gratis
or for a fee, you must give the recipients all the rights that you have.
You must make sure that they, too, receive or can get the source code.
And you must show them these terms so they know their rights.

   We protect your rights with two steps:  (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

   Also, foreach author's protection and ours, we want to make certain
that everyone understands that there isno warranty for this free
software.  If the software is modified by someone elseand passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

   Finally,any free program is threatened constantly by software patents.
We wish to avoid the danger that redistributors of a free program will
individually obtain patent licenses, ineffect making the program
proprietary.  To prevent this, we have made it clear that any patent must
be licensed for everyone's free use or not licensed at all.

   The precise terms and conditions for copying, distribution and
modification follow.



                                      ix





TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

 1. This License applies to any program or other work which contains a
    notice placed by the copyright holder saying it may be distributed
    under the terms of this General Public License.  The ``Program'',
    below, refers to any such program or work, and a ``work based on the
    Program'' means either the Program or any derivative work under
    copyright law:  that is to say, a work containing the Program or a
    portion of it, either verbatim or with modifications and/or
    translated into another language.  (Hereinafter, translation is
    included without limitation in the term ``modification''.)  Each
    licensee is addressed as ``you''.

    Activities other than copying, distribution and modification are not
    covered by this License; they are outside its scope.  The act of
    running the Program is not restricted, and the output from the
    Program is covered only if its contents constitute a work based on
    the Program (independent of having been made by running the Program).
    Whether that is true depends on what the Program does.

 2. You may copy and distribute verbatim copies of the Program's source
    code as you receive it, in any medium, provided that you
    conspicuously and appropriately publish on each copy an appropriate
    copyright notice and disclaimer of warranty; keep intact all the
    notices that refer to this License and to the absence of any
    warranty; and give any other recipients of the Program a copy of this
    License along with the Program.

    You may charge a fee for the physical act of transferring a copy, and
    you may at your option offer warranty protection in exchange for a
    fee.

 3. You may modify your copy or copies of the Program or any portion of
    it, thus forming a work based on the Program, and copy and distribute
    such modifications or work under the terms of Section 1 above,
    provided that you also meet all of these conditions:

    (a) You must cause the modified files to carry prominent notices
        stating that you changed the files and the date of anychange.

    (b) You must cause any work that you distribute or publish,that in
        whole or in part contains or is derived from the Program or any
        part thereof, to be licensed as a whole at no charge toall third
        parties under the terms of this License.

    (c) if the modified program normally reads commands interactively
        when run, you must cause it, when started running for such
        interactive use in the most ordinary way, to print or display an
        announcement including an appropriate copyright noticeand a
        notice that there is no warranty (or else, saying thatyou
        provide a warranty) and that users may redistribute theprogram
        under these conditions, and telling the user how to view a copy
        of this License.  (Exception:  if the Program itself is
        interactive but does not normally print such an announcement,
        your work based on the Program is not required to printan
        announcement.)



                                       x





   These requirements apply to the modified work as a whole.  If
   identifiable sections of that work are not derived from the Program,
   and can be reasonably considered independent and separate works in
   themselves, then this License, and its terms, do not apply to those
   sections when you distribute them as separate works.  But when you
   distribute the same sections as part of a whole which is a work based
   on the Program, the distribution of the whole must be on the terms of
   this License, whose permissions for other licensees extend to the
   entire whole, and thus to each and every part regardless of who wrote
   it.

   Thus, it is not the intent of this section to claim rights or contest
   your rights to work written entirely by you; rather, the intent is to
   exercise the right to control the distribution of derivative or
   collective works based on the Program.

   In addition, mere aggregation of another work not based on the
   Program with the Program (or with a work based on the Program) on a
   volume of a storage or distribution medium does not bring the other
   work under the scope of this License.


4. You may copy and distribute the Program (or a work based on it, under
   Section 2) in object code or executable form under the terms of
   Sections 1 and 2 above provided that you also do one of the
   following:


   (a) Accompany it with the complete corresponding machine-readable
       source code, which must be distributed under the termsof
       Sections 1 and 2 above on a medium customarily used forsoftware
       interchange; or,

   (b) Accompany it with a written offer, valid for at least three
       years, to give any third party, for a charge no more than your
       cost of physically performing source distribution, a complete
       machine-readable copy of the corresponding source code,to be
       distributed under the terms of Sections 1 and 2 above on a medium
       customarily used for software interchange; or,

   (c) Accompany it with the information you received as to the offer to
       distribute corresponding source code.  (This alternative is
       allowed only for noncommercial distribution and only ifyou
       received the program in object code or executable formwith such
       an offer, in accord with Subsection b above.)


   The source code for a work means the preferred form of the work for
   making modifications to it.  For an executable work, complete source
   code means all the source code for all modules it contains, plus any
   associated interface definition files, plus the scripts used to
   control compilation and installation of the executable.  However, as
   a special exception, the source code distributed need not include
   anything that is normally distributed (in either source or binary
   form) with the major components (compiler, kernel, and so on) of the
   operating system on which the executable runs, unless that component
   itself accompanies the executable.



                                     xi





   If distribution of executable or object code is made by offering
   access to copy from a designated place, then offering equivalent
   access to copy the source code from the same place counts as
   distribution of the source code, even though third parties are not
   compelled to copy the source along with the object code.

5. You may not copy, modify, sublicense, or distribute the Program
   except as expressly provided under this License.  Any attempt
   otherwise to copy, modify, sublicense or distribute the Program is
   void, and will automatically terminate your rights under this
   License.  However, parties who have received copies, or rights, from
   you under this License will not have their licenses terminated so
   long as such parties remain in full compliance.

6. You are not required to accept this License, since you have not
   signed it.  However, nothing else grants you permission to modify or
   distribute the Program or its derivative works.  These actions are
   prohibited by law if you do not accept this License.  Therefore, by
   modifying or distributing the Program (or any work based on the
   Program), you indicate your acceptance of this License to do so, and
   all its terms and conditions for copying, distributing or modifying
   the Program or works based on it.

7. Each time you redistribute the Program (or any work based on the
   Program), the recipient automatically receives a license from the
   original licensor to copy, distribute or modify the Program subject
   to these terms and conditions.  You may not impose any further
   restrictions on the recipients' exercise of the rights granted
   herein.  You are not responsible for enforcing compliance by third
   parties to this License.

8. If, as a consequence of a court judgment or allegation of patent
   infringement or for any other reason (not limited to patent issues),
   conditions are imposed on you (whether by court order, agreement or
   otherwise) that contradict the conditions of this License, they do
   not excuse you from the conditions of this License.  If you cannot
   distribute so as to satisfy simultaneously your obligations under
   this License and any other pertinent obligations, then as a
   consequence you may not distribute the Program at all.  For example,
   if a patent license would not permit royalty-free redistribution of
   the Program by all those who receive copies directly or indirectly
   through you, then the only way you could satisfy both it and this License
   would be to refrain entirely from distribution of the Program.

   If any portion of this section is held invalid or unenforceable under
   any particular circumstance, the balance of the section is intended
   to apply and the section as a whole is intended to apply in other
   circumstances.

   It is not the purpose of this section to induce you to infringe any
   patents or other property right claims or to contest validity of any
   such claims; this section has the sole purpose of protecting the
   integrity of the free software distribution system, which is
   implemented by public license practices.  Many people have made



                                     xii





    generous contributions to the wide range of software distributed
    through that system in reliance on consistent application of that
    system; it is up to the author/donor to decide if he or she is
    willing to distribute software through any other system and a
    licensee cannot impose that choice.

    This section is intended to make thoroughly clear what is believed to
    be a consequence of the rest of this License.

 9. If the distribution and/or use of the Program is restricted in
    certain countries either by patents or by copyrighted interfaces, the
    original copyright holder who places the Program under this License
    may add an explicit geographical distribution limitation excluding
    those countries, so that distribution is permitted only in or among
    countries not thus excluded.  In such case, this License incorporates
    the limitation as if written in the body of this License.

10. The Free Software Foundation may publish revised and/or new versions
    of the General Public License from time to time.  Such new versions
    will be similar in spirit to the present version, but may differ in
    detail to address new problems or concerns.

    Each version is given a distinguishing version number.  If the
    Program specifies a version number of this License which applies to
    it and ``any later version'', you have the option of following the
    terms and conditions either of that version or of any later version
    published by the Free Software Foundation.  If the Program does not
    specify a version number of this License, you may choose any version
    ever published by the Free Software Foundation.

11. If you wish to incorporate parts of the Program into other free
    programs whose distribution conditions are different, write to the
    author to ask for permission.  For software which is copyrighted by
    the Free Software Foundation, write to the Free Software Foundation;
    we sometimes make exceptions for this.  Our decision will be guided
    by the two goals of preserving the free status of all derivatives of
    our free software and of promoting the sharing and reuse of software
    generally.



                               NO  WARRANTY

12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
    FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT
    WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER
    PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND,
    EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
    PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME
    THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
    WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
    REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR



                                     xiii





    DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
    DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
    (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
    INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE
    OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH
    HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
    DAMAGES.



END OF TERMS AND CONDITIONS



                                      xiv





Contents



1  User's Manual                                                             1
   1.1  Installation : : : : : : : : : : : : : : : : : : :: : : : : : : : : : :*
 * : : : : : : :   1
        1.1.1  Using the SLIP Drivers: : : : : : : : : : : : : : : : : : : : : *
 *: : : :   2
               Common Problems with the SLIP Driver And AmiTCP/IP : : : :   2
   1.2  Configuration : : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : : :: : :    3
        1.2.1  Options : : : : : : : : : : : : : :: : : : : : : : : : : : : : :*
 * : : : : : : :   4
        1.2.2  Network Database : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : : : :   4
   1.3  Internet Addressing : : : : : :: : : : : : : : : : : : : : : : : : : : *
 *: : : : : :   4
        1.3.1  Internet Dot Notation : : : : : : : : : : : : : : : : : : : : : *
 *: : : :   5
        1.3.2  Nets and Routing : : : : : : : : : : : : : : : : : : : : : : : :*
 * : :: : :    5
        1.3.3  Subnets : : : : : : : : : : : : : :: : : : : : : : : : : : : : :*
 * : : : : : : :   6
        1.3.4  Broadcast Addresses : : : : : : : : : : : : : :: : : : : : : : :*
 * : : : :   6
   1.4  Utilities : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : : :: : : :   7
        1.4.1  arp : : : : : : : : : : : : : : : :: : : : : : : : : : : : : : :*
 * : : : : : : : :   7
        1.4.2  ifconfig : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 *: : : : : : :   7
        1.4.3  letnet: : : : : : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : :   8
        1.4.4  netstat : : : : : : : : : : : : : :: : : : : : : : : : : : : : :*
 * : : : : : : :   8
        1.4.5  NapsaTerm  : :: : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : :   8
        1.4.6  offline : : : : : : : : : : : : : :: : : : : : : : : : : : : : :*
 * : : : : : : :   9
        1.4.7  online: : : : : : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : :   9
        1.4.8  route  : : : :: : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : :   9
   1.5  Errors and Logging  : : : : : :: : : : : : : : : : : : : : : : : : : : *
 *: : : : : :   9
   1.6  Troubleshooting : : : :: : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : :  10
   1.7  Testing Utilities : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : : : : :  10
        1.7.1  Agnet  : : : :: : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : :  10
               ARexx Port for agnet.device : : : : : : : :: : : : : : : : : : :*
 * : :  11
        1.7.2  Qwriter : : : : : : : : : : : : : :: : : : : : : : : : : : : : :*
 * : : : : : : :  13
               Command Line Options : : : : : : : : : : : : : : : : : : : : : :*
 * : :: :  13


2  Interfaces                                                               15
   2.1  AmiTCP/IP Processes : : : : : :: : : : : : : : : : : : : : : : : : : : *
 *: : : : : :  15
   2.2  Application Interface : : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : : : :  16
   2.3  SANA-II Interface : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : : : : :  16
        2.3.1  Interface ioctls : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : : : :  17
   2.4  Configuration Files : : : : : :: : : : : : : : : : : : : : : : : : : : *
 *: : : : : :  17
   2.5  ARexx Interface : : : : : : :: : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : :  17
        2.5.1  Commands : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 *: : : : : : :  18
        2.5.2  Variables  : :: : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : :  19
               Boolean variables  : : :: : : : : : : : : : : : : : : : : : : : *
 *: : : : :  23



                                      xv





               CONNECTIONS output format : : : : : : : : : : : : : : : : : : : *
 *: : :  24
               ICMPHIST output format: : : : : : : : : : : : : : : : : : : : : *
 *: : : :  24


3  Programmer's Manual                                                     27
   3.1  Socket Concepts : : : : : : :: : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : :  27
        3.1.1  Socket Types : : : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : : : ::  27
        3.1.2  Using The Socket Library : : : : : : : : : : : : : : : : : : : :*
 * : : :  28
        3.1.3  Compiling and Linking The Applications: : : : : : : : : : : : : *
 * 30
               The NETINCLUDE Header Files : : : : : : : :: : : : : : : : : : :*
 * : :  30
               Linking With net.lib : : : : : : : : : : : : : : : : : : : : : :*
 * : :: :  32
        3.1.4  Socket Creation : : : : : : : : : : : : : : :: : : : : : : : : :*
 * : : : : :  32
        3.1.5  Binding Local Names : : : : : : : : : :: : : : : : : : : : : : :*
 * : : : :  33
        3.1.6  Connection Establishment : : : : : : : : : : : : : : : : : : : :*
 * : : :  34
        3.1.7  Data Transfer  : : : : :: : : : : : : : : : : : : : : : : : : : *
 *: : : : : :  36
        3.1.8  Discarding Sockets: : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : :  36
        3.1.9  Connectionless Sockets: : : : : : : : : : : : : : : : : : : : : *
 *: : : :  37
        3.1.10 Input/Output Multiplexing  :: : : : : : : : : : : : : : : : : : *
 *: : :  38
   3.2  Network Library Routines : : : : : : : : : : : : : : :: : : : : : : : :*
 * : : : :  40
        3.2.1  Host Names : :: : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : :  40
        3.2.2  Network Names  : : : : :: : : : : : : : : : : : : : : : : : : : *
 *: : : : : :  41
        3.2.3  Protocol Names :: : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : :  41
        3.2.4  Service Names  : : : : :: : : : : : : : : : : : : : : : : : : : *
 *: : : : : :  42
        3.2.5  Miscellaneous  :: : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : :  42
               Remote Login Client Code : : : : : : : : : : : : : : : : : : : :*
 * : : :  42
   3.3  Client/Server Model : : : : : :: : : : : : : : : : : : : : : : : : : : *
 *: : : : : :  44
        3.3.1  Servers : : : : : : : : : : : : : :: : : : : : : : : : : : : : :*
 * : : : : : : :  45
        3.3.2  Clients : : : : : : : : : : : : : :: : : : : : : : : : : : : : :*
 * : : : : : : :  47
        3.3.3  Connectionless Servers: : : : : : : : : : : : : : : : : : : : : *
 *: : : :  48
               Ruptime Output :: : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : :  48
   3.4  Advanced Topics : : : : : : :: : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : :  51
        3.4.1  Out Of Band Data : : : : : : : : : : : : : : : : : : : : : : : :*
 * : :: : :  51
        3.4.2  Non-Blocking Sockets : : : : : : : : : : : : : : : : : : : : : :*
 * : : : :  53
        3.4.3  Signal Driven Socket I/O : : : : : : : : : : : : : : : : : : : :*
 * : : :  54
        3.4.4  Selecting Specific Protocols : : : : : : : : : : : : : : : : : :*
 * : :  55
        3.4.5  Address Binding : : : : : : : : : : : : : : :: : : : : : : : : :*
 * : : : : :  55
        3.4.6  Broadcasting And Determining Network Configuration : : : :  58
               AmiTCP/IP specific extensions : : : : : : : : : : : : : : : : : *
 *: :  60
               Extensions to interface ioctls: : : : : : : : : : : : : : : : : *
 *: :  60
        3.4.7  Socket Options :: : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : :  61
        3.4.8  Inetd  : : : :: : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : :  62
   3.5  Deviation From Berkeley Sockets: : : : : : : : : : : : : : : : : : : : *
 *: : :  63
        3.5.1  Opening and Closing the Shared Library: : : : : : : : : : : : : *
 * 63
        3.5.2  Naming Conventions of the API Functions : : :: : : : : : : : :  *
 *63
        3.5.3  errno  : : : :: : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : :  64
        3.5.4  New Field in the sockaddr Structures : : : : : : : : : : : : : :*
 *  64
        3.5.5  Linger Time : : : : : : : : : : : : : : : : :: : : : : : : : : :*
 * : : : : : :  64
        3.5.6  Transferring Sockets from a Task to Another : :: : : : : : :  64
        3.5.7  Ioctl Differences  : : :: : : : : : : : : : : : : : : : : : : : *
 *: : : : :  65
        3.5.8  Signal Handling : : : : : : : : : : : : : : :: : : : : : : : : :*
 * : : : : :  65
        3.5.9  Asynchronous I/O : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : : : :  66
        3.5.10 Constructing an Event Loop: : : : : : : : : : : : : : : : : : : *
 *: : :  66



                                      xvi





        3.5.11 ''Killing'' the Processes : : : : : : : : : : : : : : : : : : : *
 *: : :  67
        3.5.12 WaitSelect() : : : : : : : : : : : : : : : : : : : : : : : : : :*
 * :: : : : :  67


4  Internal Description                                                    69
   4.1  Source File Structure : : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : : : :  69
        4.1.1  System Include Files : : : : : : : : : : : : : : : : : : : : : :*
 * : :: :  69
        4.1.2  Protocol Independent Network Routines : : : : : : : : : : : : : *
 * 70
        4.1.3  Internet Protocol Modules : : : : : : : : : : : : : : : : : : : *
 *: : :  71
        4.1.4  BSD Kernel Service Modules: : : : : : : : : : : : : : : : : : : *
 *: : :  72
        4.1.5  BSD Socket API: : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : :  73
        4.1.6  Miscellaneous Files : : : : : : : : : : : : : :: : : : : : : : :*
 * : : : :  75
   4.2  AmiTCP/IP Initialization : : : : : : : : : : : : : : : : : : :: : : : :*
 * : : : :  75
        4.2.1  init_all() : :: : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : :  76
        4.2.2  deinit_all() : : : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : : : ::  77
   4.3  The Main Module : : : :: : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : :  77
   4.4  Protocol Entities : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : : : : :  78
   4.5  Memory Management : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : : : : :  79
        4.5.1  Mbuf Functions :: : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : :  79
   4.6  Concurrency Control : : : : : :: : : : : : : : : : : : : : : : : : : : *
 *: : : : : :  82
   4.7  Network Device Drivers  : : : : :: : : : : : : : : : : : : : : : : : : *
 *: : : : :  83
        4.7.1  SANA-II Soft Network Interface: : : : : : : : : : : : : : : : : *
 *: :  84
        4.7.2  ARP : : : : : : : : : : : : : : : :: : : : : : : : : : : : : : :*
 * : : : : : : : :  87
   4.8  Logging : : : : : : :: : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : : :  88
   4.9  ARexx Interface : : : : : : :: : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : :  89
   4.10 Application Interface Concepts  : :: : : : : : : : : : : : : : : : : : *
 *: : :  90
        4.10.1 SocketBase -- an Extension of the Task Structure  : : : : :  90
        4.10.2 The System Call Semaphore and Task Priorities : : : : : : :  90
   4.11 Configuration Variables : : : : :: : : : : : : : : : : : : : : : : : : *
 *: : : : :  91
   4.12 Network Database : : : : : : : : : : : : : : : : : : : : :: : : : : : :*
 * : : : : : :  92


5  Implementation Notes                                                    93
   5.1  Time outs : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : : : : : ::   93
   5.2  Memory Management : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : : : : :  95
        5.2.1  Mbufs  : : : :: : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : :  95
        5.2.2  malloc() & free() : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : :  95
   5.3  Concurrency Control : : : : : :: : : : : : : : : : : : : : : : : : : : *
 *: : : : : :  96
        5.3.1  Processor Priority Levels : : : : : : : : : : : : : : : : : : : *
 *: : :  96
        5.3.2  Sleeping Facilities : : : : : : : : : : : : : :: : : : : : : : :*
 * : : : :  97
   5.4  Socket Library Creation Procedure : : : : : : : : : : : : : : : : : : :*
 * : :  99
        5.4.1  Master Library Base : : : : : : : : : :: : : : : : : : : : : : :*
 * : : : :  99
        5.4.2  Application Library Bases : : : : : : : : : : : : : : : : : : : *
 *: : :  99
   5.5  The SocketBase Structure : : : : : : : : : : : : : : :: : : : : : : : :*
 * : : : : 100
   5.6  The Application Program Interface : : : : : : : : : : : : : : : : : : :*
 * : : 102
        5.6.1  How API Functions Are Ported : : : : : : : : : : : : : : : : : :*
 * : :102
        5.6.2  API Functions Which Needed More Modifications : : : : : : : 103
   5.7  Changes in Functions Below API Level : : : : : : : : : : :: : : : : : :*
 * : 103
        5.7.1  Other Changes  : : : : :: : : : : : : : : : : : : : : : : : : : *
 *: : : : : : 103
   5.8  Agnet.device : : : : : : : : : : : : : : : : : : :: : : : : : : : : : :*
 * : : : : : : : 104
        5.8.1  IO Commands : : : : : : : : : : : : : : : : :: : : : : : : : : :*
 * : : : : : : 104
        5.8.2  Initialization Procedure : : : : : : : : : : : : : : : : : : : :*
 * : : : 106
        5.8.3  The Device Interface Functions: : : : : : : : : : : : : : : : : *
 *: : 107



                                     xvii





               Opening an Unit : : : : : : : : : : : :: : : : : : : : : : : : :*
 * : : : : : 107
               Closing an Unit : : : : : : : : : : : :: : : : : : : : : : : : :*
 * : : : : : 107
               Initiating an IO Request : : : : : : : : : : : : : : : : : : : :*
 * : : :108
               Aborting an IO Request: : : : : : : : : : : : : : : : : : : : : *
 *: : : : 108
               Expunging the Device : : : : : : : : : : : : : : : : : : : : : :*
 * : :: : 108
        5.8.4  Packet Delivery : : : : : : : : : : : : : : :: : : : : : : : : :*
 * : : : : : 109
        5.8.5  Arexx Interface : : : : : : : : : : : : : : :: : : : : : : : : :*
 * : : : : : 109


A  Autodocs for Network Applications and Utilities                      111
   A.1  Network Utilities : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : : : : : 112
        A.1.1  arp : : : : : : : : : : : : : : : :: : : : : : : : : : : : : : :*
 * : : : : : : : : 112
        A.1.2  ifconfig : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 *: : : : : : : 114
        A.1.3  inetd  : : : :: : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : : 117
        A.1.4  letnet: : : : : : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : : 119
        A.1.5  offline : : : : : : : : : : : : : :: : : : : : : : : : : : : : :*
 * : : : : : : : 120
        A.1.6  online: : : : : : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : : 121
        A.1.7  ping : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 *: : : : : : : : 122
        A.1.8  route  : : : :: : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : : 126


B  API Function Reference                                                 128
   B.1  Standard BSD Style Socket Functions: : : : : : : : : : : : : : : : : : *
 *: : 130
        B.1.1  accept() : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 *: : : : : : : 130
        B.1.2  bind(): : : : : : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : : 132
        B.1.3  CloseSocket()  :: : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : 133
        B.1.4  connect()  : :: : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : 134
        B.1.5  Dup2Socket() : : : : : : : : : : : : : : : : : : : : : : : : : :*
 * :: : : : : 136
        B.1.6  getpeername()  :: : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : 137
        B.1.7  getsockname()  :: : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : 138
        B.1.8  getsockopt() : : : : : : : : : : : : : : : : : : : : : : : : : :*
 * :: : : : : 139
        B.1.9  IoctlSocket()  :: : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : 142
        B.1.10 listen() : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 *: : : : : : : 144
        B.1.11 recv(): : : : : : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : : 145
        B.1.12 select() : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 *: : : : : : : 147
        B.1.13 send(): : : : : : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : : 150
        B.1.14 shutdown(): : : : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : 152
        B.1.15 socket() : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 *: : : : : : : 153
   B.2  Other BSD Functions Related to Sockets : : : : : : : : : : : : : : : : *
 *: 156
        B.2.1  getdtablesize() : : : : : : : : : : : :: : : : : : : : : : : : :*
 * : : : : : 156
        B.2.2  Syslog() : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 *: : : : : : : 157
   B.3  Network Data and Address Manipulation : : : : : : : : : : : : : : : : :*
 * : 159
        B.3.1  inet_addr() : : : : : : : : : : : : : : : : :: : : : : : : : : :*
 * : : : : : : 159
   B.4  Network, Protocol and Service Queries : : : : : : : : : : : : : : : : :*
 * : 162
        B.4.1  gethostbyname() : : : : : : : : : : : :: : : : : : : : : : : : :*
 * : : : : : 162
        B.4.2  getnetbyname(): : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : 164
        B.4.3  getprotobyname() : : : : : : : : : : : : : : : : : : : : : : : :*
 * : :: : : 166
        B.4.4  getservbyname() : : : : : : : : : : : :: : : : : : : : : : : : :*
 * : : : : : 167
   B.5  AmiTCP/IP Specific Extensions : : : : : : : : : : : : : : : : : : : : :*
 * : : : 169
        B.5.1  Errno() : : : : : : : : : : : : : :: : : : : : : : : : : : : : :*
 * : : : : : : : 169
        B.5.2  ObtainSocket(): : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : 170
        B.5.3  ReleaseCopyOfSocket() : : : : : : : : : : : : : : : : : : : : : *
 *: : : : 171
        B.5.4  ReleaseSocket() : : : : : : : : : : : :: : : : : : : : : : : : :*
 * : : : : : 172



                                     xviii





        B.5.5  SetDTableSize() : : : : : : : : : : : :: : : : : : : : : : : : :*
 * : : : : : 173
        B.5.6  SetErrnoPtr()  :: : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : 174
        B.5.7  SetSocketSignals(): : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : 175


C  AmiTCP/IP Network Link Library                                        176
   C.1  net.lib Functions : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : : : : : 177
        C.1.1  autoinit : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 *: : : : : : : 177
        C.1.2  autoinitd  : :: : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : 178
        C.1.3  charRead : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 *: : : : : : : 179
        C.1.4  gethostname : : : : : : : : : : : : :: : : : : : : : : : : : : :*
 * : : : : : : 181
        C.1.5  lineRead : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 *: : : : : : : 182


D  Protocols and Network Interfaces                                      185
   D.1  Protocols and Network Interfaces : : : : : : : : : : : :: : : : : : : :*
 * : : 186
        D.1.1  arp : : : : : : : : : : : : : : : :: : : : : : : : : : : : : : :*
 * : : : : : : : : 186
        D.1.2  icmp : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 *: : : : : : : : 189
        D.1.3  if : :: : : : : : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : : :190
        D.1.4  inet : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 *: : : : : : : : 193
        D.1.5  ip : :: : : : : : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : : :196
        D.1.6  lo : :: : : : : : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : : :198
        D.1.7  routing : : : : : : : : : : : : : :: : : : : : : : : : : : : : :*
 * : : : : : : : 199
        D.1.8  tcp : : : : : : : : : : : : : : : :: : : : : : : : : : : : : : :*
 * : : : : : : : : 201
        D.1.9  udp : : : : : : : : : : : : : : : :: : : : : : : : : : : : : : :*
 * : : : : : : : : 203


Glossary                                                                   205


Bibliography                                                               209



                                      xix





xx





Chapter 1



User's  Manual



1.1     Installation


AmiTCP/IP installation is made by standard Commodore Amiga Installer
which provides an easy installation.  Before you can proceed, you should
acquire some information, list of whichfollows.
   Your should ask your local network administrator for few things to be
able to connect your Amiga to a network.  Take this page or copy of it
with you to make sure that you don't forget anything:


 1. Internet protocol address allocated for your computer.  This is a
    series of four decimal numbers separated by dots.  For example,
    ``130.233.161.40'' is a legal internet address.

 2. Destination IP address of a point--to--point link.  This applies only
    if you use a point--to--point medium, such as a serial line.


 3. Netmask for your network1 This determines which part of your internet
    address is used to specify the network.  Netmask is like
    ``255.255.255.0''.  If you do not supply this value, a default
    computed from the IP address is used.

 4. Name of your host.  This is a mnemonic name which can usually be used
    instead of the internet address to refer to your computer.  This is
    like ``Amiga1''.

 5. Domain name of your site.  For example, ``hut.fi'' is the domain name
    for the Helsinki University of Technology in Finland.

 6. Address(es) of the Domain Name Server(s) which will be used to
    translate host names to corresponding internet addresses.  A local
    host database must be used instead if there is no name server on your
    domain.

 7. Address of the default gateway via which to send packets to the hosts
    not on your local network.  There may be more than one of them.
________________________________
   1Netmask is usually needed onlyif you are connected to several

networks or a network capable to broadcasts.



                                       1


2    Section 1.1                  AmiTCP/IP                    System Manual



 8. The network interface to use.  This may be Ethernet, SLIP or
    something else.  We assume that you have proper hardware installed
    and the appropriate Sana-II compatible device driver installed in
    directory Devs:networks.  AmiTCP/IP needs the name of the device
    driver in order to use it.  The unit number for the device in
    question is also needed (usually this is 0).

   Installation starts by double-clicking the Install_AmiTCP-2.0-icon of
the distribution disc.  You can select the level whichspecifies how many
choices are left to you by the installation script.   After a successful
installation your computer is ready to communicate with the network.  See
the file README.FIRST for more information about the installation
procedure.
   If you plan to compile applications which use AmiTCP/IP, you should
add two AmigaDOS assigns for the compiler to find appropriate files.
Assign the name NETINCLUDE: to the netinclude directory of the AmiTCP/IP
and the name NETLIB: to the directory netlib.



1.1.1   Using the SLIP Drivers

Some Commodore-Amiga Networking Group supplied SANA-II drivers are
distributed with the AmiTCP/IP. The SLIPdrivers included are taken from
Olaf Seibert's distribution and has somebug fixes over the version 37.3.
See the file doc/slip.doc for installinginstructions for these drivers.
   The version number of the included slip.device is 37.4.  You can use
this or newer SLIP driver with AmiTCP/IPwith certain precautions.  The
included CSLIP device is similar to theSLIP device, it only uses the Van
Jacobson header compression (see [Jacobson 1990 ] fordescription of this
compression method).  If your network connection supports CSLIP, you can
use cslip.device instead of slip.devicein all examples given in this
section.
   Used serial interface, baud rate and other parameters for the unit 0 of
the SLIP device are specified in the configuration file
ENV:Sana2/slip0.config.  You must edit this file according your system
setup before you can use the slip device.   Copy the edited file to both
ENVARC:Sana2 and ENV:Sana2 directories.
   The AmiTCP/IP opens the slip device driver when given a following

ifconfig2 command:

ifconfig slip.device/0 local-address remote-address

The local-address is the IP address (orname) given to your host, the
remote-address is the IP address (or name) of the host you are connecting
to with the serial line.  You should also add a routingentry with the
route command, for example

route add default remote-address

You can test your SLIP connection immediately with the command

ping remote-address
________________________________
   2The ifconfig and route commands like described here are normally placed to

the startnet script during AmiTCP/IP installation.


System Manual                   AmiTCP/IP                   Section 1.2    3



Common Problems with the SLIP Driver AndAmiTCP/IP

The ifconfig command gives you the following error message, if there is
some problems opening the interface:


ifconfig: ioctl (SIOCGIFFLAGS): no suchinterface


If the device driver is not installed properly or there is no
configuration file, AmiTCP/IP gives thefollowing log message:


<3> OpenDevice: Device or unit failed toopen


In this case, you should check that thefile ENV:Sana2/slip0.config
actually exists and the device driver isin the correct directory.
   If the device driver is ok, but the needed serial device is busy (or
you have set the slip driver to offlinestate), AmiTCP/IP logs the
following message:


<3> slip.device: Device driver is offline (Unit is currently offline)


Then you must free the serial interface,set the slip device to the
online state and give the previous ifconfig command with the ``up''

option3 again.
   If AmiTCP/IP gives no error messages and the serial link still does
not work, it may be due to incorrect information in the
ENV:Sana2/slip0.config-file.  Check thatthe baud rate is correct.  Note
that the slip device loads the configuration file only on startup, which
means that you must restart the AmiTCP/IP if you have already configured
the slip driver with an ifconfig command.



1.2     Configuration


AmiTCP/IP is normally started from the command line with a startup
script.  It starts the AmiTCP/IP process, which loads the configuration
files.  The script also contains ifconfig and route commands to open the
SANA-II device drivers and add the needed route entries, respectively.
   The AmiTCP/IP can be configured with both option files and ARexx
commands.  The option files are stored in the text format and they can be
edited with any text editor.  The '#' character startsa comment, which
continues to the end of the line.  All configuration commands are
presented in the section 2.4 starting from the page 17.
   Configuration files for AmiTCP/IP are stored in the directory
AmiTCP:db.  It contains at least following files:


AmiTCP:db/AmiTCP.config   AmiTCP/IPinternal configuration.


AmiTCP:db/netdb  Network database information, ie.  host names, networks,
    services, protocols, domain name servers and domains.
________________________________
   3The up is needed because the AmiTCP/IP implicitly adds this option when

an address to the interface is first given.   If the second ifconfig specifies
the same address as before, the up option must be given explicitly.


4    Section 1.3                  AmiTCP/IP                    System Manual



AmiTCP:db/hosts.equiv  Host equivalence data used by rlogind, rshd etc.
    (these daemons are currently unimplemented).

AmiTCP:db/inetd.conf  Services provided by Inetd, the internet super
    server.



1.2.1   Options

Normally AmiTCP/IP reads options from the file AmiTCP:db/AmiTCP.config.
You can specify an option file also on the command line (eg.  AmiTCP WITH
myopts) or with the tool type WITH. Youcan prevent AmiTCP/IP from
loading the default option file by the NOCONFIG command line option.



1.2.2   Network  Database

The file AmiTCP:db/netdb is used to store the local net and host name
information.  There is an example file in the distribution, which you
must change according to your local network environment.  The syntax for
the network database file is same as thesyntax for the Arexx command add
(see page 19).
   The mostimportant entries are the name of your own host and the
important hosts in your local net.  For instance, if your host name is
amiga1.hut.fi and your internet address(IP number) is 130.233.61.50,
then there is probably a following linein your AmiTCP:db/netdb file:


     HOST 130.233.61.50 amiga1.hut.fi amiga1 amy1


   The firstentry after the keyword HOST is the internet address of your
host.  It is followed by the official name and an optional list of alias
names to your host.
   Normally,all host and network names will be translated to the actual
internet addresses by a name server.  If you can not use the name
service, then all host names must be inthe AmiTCP:db/netdb file or in an
included file.  In that case it may be easiest to copythe /etc/hosts
file from a nearby Unix machine.
   You can add host names to the network database with ARexx commands at
any time.  For instance, the following command adds a host called
vipunen:

rx "address AMITCP add host 130.233.224.20 vipunen.hut.fi vipunen"

   There arealso service and protocol entries in the network database
files.  Do not change them if you are not an expert user.



1.3     Internet Addressing


Each host in the Internet must have an unique 32 bit binary address.
This address identifies the location ofhost in the internet in an
unambiguous way.  The internet address is divided intoa net part and a
host part.  Because of this elegant feature a single address identifies a
unique host as well as the network whichthe computer is connected to.


System Manual                   AmiTCP/IP                   Section 1.3    5



   When selecting a route to a particular host the whole address is
considered first.  If no direct route to the host can be found, a route
to the host's network can be considered.  If no route to either host or
net can be found, the packet is sent tothe default gateway.
   Because the the internet address defines also the network which the
computer is connected, they must actually be given one per network
connection.  If a host is directly connected to severalnetworks, it has
also several distinct internet addresses.



1.3.1   Internet Dot Notation


Since it is rather inconvenient to use 32-bit integers, the internet
address is normally written in the Internet dot notation.  It is a series
of decimal numbers separated by dots.


              ____________________________________________________
              !_Format__!Size______________________!Example_______!
              ! a       !32-bit                    !169510179    !
              ! a.b     !8-bit.24-bit             !10.1738019   !
              ! a.b.c   !8-bit.8-bit.16-bit       !10.26.34083  !
              !_a.b.c.d_!8-bit.8-bit.8-bit.8-bit_!_10.26.133.35_!_



         Table 1.1:  Four different forms for an Internet address.


   The one with four separate octets is the most common form of the
notation.  See the reference for the function
bsdsocket.library/inet_addr() to additional information (at Appendix
B.3.1, page 159).



1.3.2   Nets and Routing



                0_1_2_3_4______8_____________16____________24___________31_
                ! !           !                                            !
       Class A  !!0!!Netpart  !!                Hostpart                   !!
                __________________________________________________________
                __________________________________________________________!!!!!

       Class B  !!1!!0!!     Netpart         !!        Hostpart            !!
                __________________________________________________________
                __________________________________________________________!!!!!!

       Class C  !!1!!1!!0!!          Netpart               !! Hostpart     !!
                __________________________________________________________
                __________________________________________________________!!!!!!

       Class D  !!1!!1!!1!!0!!         Multicast Address                   !!
                __________________________________________________________
                __________________________________________________________!!!!!*
 *!!

       Class E  !!1!!1!!1!!1!!0!!      Experimental Address                !!
                __________________________________________________________


Figure 1.1:  The Internet address classes.  The different address classes
can be identified by few first bits.


6    Section 1.3                  AmiTCP/IP                    System Manual



   There arefive classes of internet addresses in use, namely A, B, C, D
and E classes.  The difference between address classesis the length of
the network and host part.  An A class address has 7 bits for net address
and 24 bits for host address, a B classaddress has 14 bits for net and
16 bits for host and a C class address has 21 bits for net and 8 bits for
host.  The D class is used for the IP multicast addresses and the E class
for experimental use only4.
   The address class can be determined by the first octet of the address.
If it is in the range 0---127, the address belongs to the A class.  If it
is 128--191, the address belongs to theB class.   If the first octet is
192--223, the address belongs to the C class, otherwise it is an
experimental or a multicast address.



1.3.3   Subnets

The network addresses are managed by a central authority.  Local
administration manages the host addresses.   Because network addresses are
used in routing, the central authority is needed when the local network
changes its structure.  This might be quite a burden tothe central
authority, but there is a solution developed for the Internet.  A network
may be split into several subnets, whichcan then be managed by
independent agencies.  The central network management doesn't have to
know anything about subnets and hosts inthem.
   For instance Kone corporation has been assigned a B class network
138.249.0.0.  This network has been divided to C classlike subnets,
which are then given to the departments.  The HAT department is given
subnet 138.249.2.0, the HATMEC department subnet 138.249.5.0 and so on.
                 0________8________16______24_______

      Address    !!_________________________________1!138.249.!02.03001010!!111*
 *11001!!00000010!!00011110

                 ___________________________________
 AND  Netmask    !!_________________________________1!255.255.255.!10111111!!11*
 *111111!!11111111!!00000000
_______________________________________________________________________

  =    Subnet    !!_________________________________1!138.249.!02.0001010!!1111*
 *1001!!00000010!!00000000



        Figure 1.2:  Using netmask to find out subnetwork address.


   The subnet division is controlled by the netmask parameter.  The actual
subnetwork address is obtained by bit-wise AND between the netmask and
the internet address.  This subnet address is used in routing just like a
normal net address.  However, only hosts directly connected to the
divided net have to know anything aboutnetmasks and subnets.



1.3.4   Broadcast Addresses

There are two kind of broadcast addresses in the Internet.  An obsolete
form used in older BSD 4 versions used internet address with host part 0
________________________________
   4Routers not taking part to such experiments normally discard all

packets of this class.


System Manual                   AmiTCP/IP                   Section 1.4    7



as the broadcast address.  (The newer software usuallyconsiders
addresses like those as network addresses.)   Accordingthe the current
Internet standard the broadcast addresses have the host part all 1's.


      ___________________________________________________________________
      !   Interface    !                !   Network     !  Broadcast     !
      !                !  Netmask       !               !                !
      !    Address     !                !   Address     !   Address      !
      !________________!________________!_______________!________________!
      ! 10.14.123.2   !255.255.255.0   ! 10.14.123.0   ! 10.14.123.255  !
      ! 130.244.5.4   !255.255.255.128 ! 130.244.5.0   ! 130.244.5.127  !
      !_192.36.148.21_!255.255.255.0___!_192.36.148.0__!_192.36.148.255_!_



Table 1.2:  Examples of netmasks, network addresses andbroadcast
addresses.



1.4     Utilities


Currently, only a few networking utilities are ported for the AmiTCP/IP.
They are used to monitor and control network operation with AmiTCP/IP.
There is a separate reference entry foreach network utility and daemon
in the document file netutil.doc.  This autodoc file isincluded in the
appendix A, starting from page 111.



1.4.1   arp

arp displays and modifies the internet to hardware address translation
tables used by the Address Resolution Protocol.   It isused if you are
connected to a broadcast network, eg.  Ethernet or Arcnet.  You may
examine, add, and delete ARP entries.  Usually arp is used to find out
hardware address of hosts.
   The hardware addresses are given as hexadecimal strings, each octet
separated by a colon.
   Examples:


 1.> arp -s puucee 8:0:9:32:f2:4c pub

    This command sets the hardware address for the host 'puucee' as
    '8:0:9:32:f2:4c'.



1.4.2   ifconfig

ifconfig configures network interface parameters.   Itassigns an internet
address to a SANA-II network interface or sets interface parameters.
ifconfig is normally used at the AmiTCP/IP startup.
   Examples:


 1.> ifconfig lo/0 127.1

    This command marks internal loopback device up, and attaches the
    internet address 127.0.0.1 to it.


8    Section 1.4                  AmiTCP/IP                    System Manual



 1.> ifconfig cslip.device/0 inet 193.102.4.144 193.102.4.129

    This command starts the CSLIP driver, attaches an address
    193.102.4.144 (our internet address) and a destination address
    193.102.4.129 (the internet address of the host you are connecting)
    to it.


 1.> ifconfig a2065.device/0 inet 193.124.100.66 +
    netmask 255.255.255.192 up -arp

    This command loads an ethernet driver for the Commodore A2065
    Ethernet adapter unit 0, marks it UP, disables ARP protocol for it,
    attaches an inet address 193.124.100.66 to it and sets its netmask to
    255.255.255.192.  A bitwise logical AND of the netmask and the
    address for the interface forms the subnet address, in this case
    193.124.100.66.  All packets aimed to hosts with same subnet address
    (that is hosts 193.124.100.65--193.124.100.126) are routed to this
    interface.



1.4.3   letnet

letnet is a simple TCP connection tool.  With it you can connect to a TCP
port at given host.  Letnet reads data from standard input and sends it
to the host.  Likewise it receives data from the connection and writes it
to the standard output.  Letnet terminates upon shutdown of the socket or
receiving SIGBREAKF_CTRL_C signal.  Letnet does not handle telnet
protocol.



1.4.4   netstat

netstat shows network status.  It symbolically displaysinformation of
network data structures of the AmiTCP/IP. There are several standard
AmigaDOS style options:


 By default displays all sockets that are not listening.


ALL displays all sockets.


STATUS displays values of several protocol-related variables.


   Example:


 1.> netstat status


   Netstat is an ARexx script which uses the AMITCP port of the AmiTCP/IP
to collect the information.  See section2.5.1 (p.  18) for details about
the ARexx commands supported by the AmiTCP/IP.



1.4.5   NapsaTerm

NapsaTerm is a VT102 terminal emulator for logging remotely to Unix hosts
with rlogin protocol.  It is based on the NiftyTerm version 1.2 for Amiga
by Chris Newman and William Todd.


System Manual                   AmiTCP/IP                   Section 1.5    9



 1.> run napsaterm -d net happi.hut.fi

    This command starts VT102 emulator with a rlogin connection to the
    host happi.hut.fi.



1.4.6   offline

offline5 sends the S2_OFFLINE command to thegiven SANA-II device driver.
This command is normally used to disconnect SANA-II device driver from
the network adapter hardware.  After this command the device driver does
not accept any more read or write requests.
   Example:

 1.> offline slip.device/0

    This command puts the SLIP driver unit 0 offline, which frees then
    the serial port to other use.



1.4.7   online

online sends the S2_ONLINE command to the given SANA-II device driver.
The device driver restarts the network adapter hardware and accepts read
and write request again.
   Example:

 1.> online a2066.device/0

    This command tries to start the Commodore ARCNET network adapter.



1.4.8   route

route manipulates the routing tables.  It is normally used at the
AmiTCP/IP startup sequence to provide the default routing information in
the routing tables.  All needed routing information canbe provided with
this command.
   Routes determine into which network IP packets are sent.  Usually there
is only need to set the default route toyour gateway and the route to
the host itself through the loopback device.   More route entries may be
needed if your host is used as a gateway.



1.5     Errors  and  Logging


There are two kinds of error reports AmiTCP/IP produces:

Errors might be produced when a user process or a network supplies
    invalid data.  These don't cause any problems to AmiTCP/IP. These

    events are logged6 to help the user to find out possible problems
    with his/her system.
________________________________
   5offline and online are compatible with the Commodore supplied SANA-II

utilities with same names.  However, they support the AmiTCP/IP naming
convention.
   6if logging is not disabled


10    Section 1.7                  AmiTCP/IP                   System Manual



Failures are more serious.  These mean that AmiTCP/IP has entered to
    state where there is no way out.

    In Unix systems these cases lead to panic() and immediate restart.
    This is because in Unix systems networking software is integral part
    of the kernel and if something goes wrong, it usually means that the
    whole kernel is corrupted.  This is not the case in Amiga and
    AmiTCP/IP, however.  As AmiTCP/IP runs as a normal process, rest of
    the system can work even if networking fails.


   In Unix systems the syslogd takes care of the error reporting using an
attached console.  In AmigaOS there is no general failure reporting
system, only User Requesters which are inadequate for non-interactive
use.  As logging could be used even while in interruptlevel, AmiTCP/IP
can't write to log-files itself.  This is why the actual logging is done
by the NETTRACE process.  It is started at AmiTCP/IP startup and can be
configured through AMITCP ARexx port.
   ARexx commands can be found in section 2.5.1 (p.  18).



1.6     Troubleshooting


This section is reserved for the frequently asked questions and answers
to them.



1.7     Testing Utilities



There are two testing utilities providedwith the AmiTCP/IP. The agnet7
controls the loopback pseudo device which simulates different networks.
The qwriter simulates some typical application programs.  They can be
used together to test the integrity of the protocol stack.



1.7.1   Agnet


SANA-II pseudo device driver agnet.device works as a network between its
units.  Packets from one unit are sent to another according given
destination address.  You can also arrange an unit-to-unit connection, if
you want to simulate point-to-point devices.
   The loopback device provides nearly full SANA-II device driver
functionality.  It provides different hardware types, packet types and
the variable hardware address width from0 to 128 bits.  It collects all
the required statistics.  It does not provide the multicast
functionality.
   A specialcommand file env:sana2/agnetn.config is used to configure and
control the device.  Configuration parameters may be specified by
supplying its keyword and the wanted value.   Any parameter may be left
out.
________________________________
   7As Good NETwork as you like


System Manual                   AmiTCP/IP                   Section 1.7    11



   The configuration file parsing template is
WIRE/K,MTU/N/K,MINTU/N/K,BPS/N/K,ADDR=ADDRESS/K,
DELAY/N/K,DEV=DEVIATION/N/K,ERRORS/K/N,LOSS/K/N,DST=DSTUNIT/K/N.8
   User configurable parameters are:

WIRE hwiretypei is the hardware type which device driver will report.
    Other default parameters are set according to it.  Default hardware
    type is Ethernet.  With different wire types you can test for
    instance Ethernet specific features of AmiTCP/IP without killing the
    whole Ethernet segment of your network.

ADDRESS hhardware addressi  is the hardware addresses for the unit.
    Address is specified as a hexadecimal octet string.  Octets are
    separated by colons.  The length of the address depends of the
    hardware type.  For example, 8:0:9:14:74:53 is a legal Ethernet
    hardware address.  Alias:  ADDR.

DSTUNIT hunit numberi  is the destination unit for a unit-to-unit
    connection.  If this parameter is given, all packets sent to the unit
    are relayed to specified destination unit regardless of the packet
    destination address.

MTU hnumber of octetsi  is the maximum packet size that pseudo network will
    accept.  Default value is 1500 octets, same as the MTU for the
    Ethernet.

MINMTU hnumber of octetsi  is the minimum packet size that pseudo network
    will accept.  Smaller packets are padded to this minimum length.
    Default value depends on the hardware.  It is for instance 46 octets
    for the Ethernet.

BPS htransmission speedi  is the bit speed which device driver will report
    to the user.

DELAY hdelay timei specifies the delay of network in milliseconds.  By
    default there is no delay.

DEVIATION hstandard deviationi  specifies delay variance in milliseconds.
    Packets are delayed randomly which means that packets may arrive in
    different order they were sent.  Deviation without delay is
    meaningless.  By default the variance is 0 ms and all packets have
    same delay.

ERRORS hprobabilityi  is theprobability of bit errors.  This value can be
    in range [0..100 000 000], ERRORS/100 000 000 indicating probability
    of a single bit error.  Error rate 100 000 000 means that all bits
    have random value.  By default there are no errors (value 0).

LOSS hprobabilityi defines the probability of the packet loss.  This is a
    number in the range [0..1 000 000], LOSS/1 000 000 indicating
    probability.  By default there is no packet loss.  Note that value
    1 000 000 means that all packets are lost.

________________________________
   8Alternative forms of keywordsare specified by using alt=keyword.

Modifier /N specifies that the parameteris numeric.


12    Section 1.7                  AmiTCP/IP                   System Manual



ARexx Port for agnet.device

The Arexx port is normally named as AGNET1.   If thereis multiple
instances of the agnet.device, the second instance has the port AGNET2
and so on.
   There iscurrently three different Arexx commands:


UNIT Alias:  U

    Some configuration parameters may be changed at run-time by Arexx
    commands.  The Arexx configuration commands follow the same syntax as
    the configuration file.  The user must specify the unit to configure
    by preceding the command with the keyword (UNIT, abbreviated as U)
    and a decimal unit number.  For instance, the following is a legal
    Arexx configuration command:


    address AGNET1 unit 0 bps 2400 wire slip delay 100


QUERY Alias:  Q

    The current configuration may be queried from the device by an ARexx
    command Q=QUERY. The command keyword is followed by an unit number
    and wanted configuration parameters.  You can also give a keyword
    ALL, if you want all configuration parameters.  For example,
    following command prints wiretype, delay, deviation and loss
    probability:


    options results
    address AGNET1 query 0 wire delay deviation loss
    say result


EXIT Aliases:  E, EXPUNGE

    The device may be expunged from the system memory by this Arexx
    command.  The command fails, if there are some currently opened
    units.


System Manual                   AmiTCP/IP                   Section 1.7    13



1.7.2   Qwriter


qwriter9 works on the application layer.  It is run as two distinct
processes.  A process acts as a server or a client.  It creates one
socket and sends and receives data through the socket.  It is able to
control data consistency and measures both latency times and throughput
(if appropriate).
   Server part is started first in all tests.  Server starts to listen to
a port, and you can start the client.  Tests are configurable, basic test
types are described below.


telnet simulates typical interactive use.

    In this test a TCP connection is created.  The client end sends one
    character at a time and the server replies with four or more
    characters at a time.

    The most important measurement is the latency time between the sent
    character and the received echo.

nfs simulates the data transfer of a network file system.

    In this test UDP messages are sent between processes.

    Both latency and the throughput are important measurements in this
    test.

ftp is a simple TCP connection.

    In this test a TCP connection is created, then some data is
    transferred from one end to the another.

    In this test throughput is the key measurement.



Command Line Options

-s Act as a server (default).

-c Act as a client.

-t htypei Describes type of test:  ftp, nfs or telnet.  Type can be
    abbreviated to shortest unique length.  Default is telnet.

-n hcounti Describes how many times packets are sent back and forth.
    Applies to nfs and telnet.  Default for hcounti is 1.

-l hlengthi Describes length of data.  Default is 1000 octets.  Length has
    different meaning in different test contexts:


    ftp Length of the requested data for the client.  Length parameter is
        meaningless for a ``ftp'' server.

    nfs The size of the packet to be sent to the other end.

    telnet  The maximum length of data returned from the server.  Actual
        length is random value between 4 and length octets.  See also
        option ``-d''.  This parameter is meaningless for a client.
________________________________
   9Quick WRITER


14    Section 1.7                  AmiTCP/IP                   System Manual



-d hn1,n2,: :,:nNiThis option has meaning for the telnet server and
    overrides the ``-l'' option.  It specifies distibution of data
    lengths of replied packets to help better simulate typical
    interactive use where replies are usually short, but sometimes long
    (few kilobytes).

    Only k = 2i  N first numbers have effect.   Probability to have length
    less than nj (1  j  k) is approximately


                                                 Xk  nj
                              P (j) = P (j 1) + 1_   ___
                                                k    nl
                                                 l=j


    (P (0)   =  0) This can vary depending on random numeber generator and
    because of discret nature of computing.  The largest length is nk.

-b hsizei Size of the buffer tobe allocated for sends and/or replies.
    Default is 30 kilobytes.  Amount of data to be send at once, if
    smaller than data to be sent.  Maximum amount of data to be expected
    from the other end.

-p hporti the server port number.   The default is 1500.

-h hhosti Name of the host to connect.  Has no meaning for servers.  The
    default is address ``127.0.0.1''.

-q Calculate checksum and verify returned messages.   Thisprovides way to
    check for integraty of transferred data.  Checksum method is FCS as
    described in PPP RFC (1331).

-T htimeouti Specifies timeout (in seconds) for retransmission.  Only
    meaningful for nfs client.  The default is 1.0 seconds.





Chapter 2



Interfaces



AmiTCP/IP provides Berkeley sockets compatible interface to the
application programs.  Networking applications can usethis interface to
use TCP and UDP protocols, for example.
   AmiTCP/IPnetworking system uses SANA-II network devices.  SANA-II is
an Amiga standard network device driverinterface at the data link layer.



Figure 2.1:  Interfaces between different modules of the AmiTCP/IP
internetworking system.


   There isalso a standard ARexx interface for logging, statistics and
configuration in AmiTCP/IP.



2.1     AmiTCP/IP Processes


AmiTCP/IP uses one protocol process.  The protocol process starts
listening specified SANA-II device drivers for incoming network frames



                                      15


16    Section 2.3                  AmiTCP/IP                   System Manual



and sends timeout requests periodicallyto the timer device.  Output to
the network is usually done in the API callers context concurrently with
the input processing.
   There isone other task called NETTRACE taking care of error reporting
and the ARexx port of the AmiTCP/IP. Thecommands for this port are
described later in the section 2.5.1.



2.2     Application Interface


Application Interface is implemented asa standard Amiga shared library.
Each task that opens the library (usingthe OpenLibrary() call) is given
an unique data area (called a library base), which AmiTCP/IP uses it to
store task specific information (see section 3.1.2 for more on this
subject).  Once the library is opened, applications cancall the standard
socket functions such as socket(), connect(), bind(), listen(), accept(),
recv() and send().



2.3     SANA-II Interface


AmiTCP/IP can use (hopefully) any SANA-II [SANA-II 1992 ] device.
However, there may be problems with packet types and addressing.
   Many protocols may use the same hardware if each protocol uses unique
packet type number.  For instance, in the Ethernet theIP protocol have
packet type 2048, the Xerox NS protocoluses the packet type 1536.  The
device driver directs packets to different protocols depending of their
type.  IP packet type varies in different hardware, forinstance ARCNET

uses packet type 240 for IP1.
   SANA-II devices are required to follow the hardware type numbers
assigned in the [Reynolds 1990 ].  There is only one hardware typewhich
for instance all Ethernet drivers shoulduse.   The SANA-II interface
module uses the hardware type number todetermine packet types for each
protocol.
   The hardware level addressing complicates the situation further.  It is
not possible to provide a general addressing scheme in hardware level.
AmiTCP/IP can use a driver only if thereis some mapping from IP
addresses to hardware addresses.
   SometimesSANA-II network driver uses an IP compatible addressing

scheme, for instance SLIP or PPP drivers2 use an IP address asthe
hardware address.  Other solution is to use Address Resolution Protocol
(ARP). With ARP AmiTCP/IP can map any IPaddress to the corresponding
hardware address.
   For installing appropriate SANA-II device driver the manual of the
device driver should be consulted.  Note that if the device driver is not
installed into the devs:networks directory, a full path must be specified
when the driver is first referred to after the startup.
________________________________
   1There is an extension to ARCNET IP that is incompatible with old one.

It uses packet type 212 for IP.
   2At the hardware level these protocols do not use addresses at all.


System Manual                   AmiTCP/IP                   Section 2.5    17



   A networkdevice driver can be attached to the AmiTCP/IP with ifconfig
command.  This can be done manually or by the network startup script.



2.3.1   Interface ioctls

The AmiTCP/IP provides an upward compatible ioctl interface to configure
the network interfaces.  Refer to the autodoc entry protocols/if for
standard BSD ioctl interface (see appendix D.1.3, page 190).  The
extension for this interface is meant toconfigure hardware dependent
parameters in an uniform way.
   The ARP interface have been modified to be slightly more generic.  The
length of the hardware address is now passed in the arp_ha address field.
A new ioctl accesses the contents of thewhole ARP mapping cache.  (In
the BSD the static ARP table is accessedvia the /dev/kmem.)



2.4     Configuration Files


The initial state of AmiTCP/IP is set bythe configuration files.  The
syntax differs from one configuration file to another.  For each file
format there is usual a corresponding ARexx command with the same syntax.
For instance, configuration options, which are set in the file
AmiTCP:db/AmiTCP.config, may be set withthe SET command by an ARexx
script.  The entries of the AmiTCP:db/netdb file can beadded manually
with the ADD command.



2.5     ARexx Interface


In Amiga environment Exec message portsare standard way to communicate
between applications.  Because of the ease of programming and the
efficiency the ARexx programming language has become the standard in the
Amiga and structure it uses for messagesis also standard.  AmiTCP/IP
provides ARexx port named AMITCP which can be used to both configure and
gather information from networking.  This is much moreelegant compared
to the BSD Unix way to read directly from the kernel memory.
   The AMITCP port can be used to set and query various variables and
statistic tables.  Brief example of the usage of the port follows:


/*c:rexx
 *
 * An example to query some informationform AmiTCP/IP
 */


address AMITCP
options results /* get results back */


'Q' TASKNAME
say "Name of amitcp task is" result
'SET' TASKNAME "INET"
'QUERY' ICMP CHKSUM IP CHKSUM TCP CONNECT UDP CHKSUM TASKNAME
/* Query count of ICMP, IP and UDP checksums and TCP connects */


18    Section 2.5                  AmiTCP/IP                   System Manual



parse value result with icps_checksum ips_badsum tcps_connects udps_badsum task*
 *name
/* Parse values from result. (Names of the variables are from
 * the stat-structures
 */


say "New name is" taskname


say icps_checksum "bad ICMP checksums"
say ips_badsum "bad IP header checksums"
say tcps_connects "TCP connections established (including accepts)"
say udps_badsum "bad UDP checksums"

   This example will produce output similar to following:

Name of amitcp task is AmiTCP
New name is INET
0 bad ICMP checksums
0 bad IP header checksums
2531 TCP connections established (including accepts)
0 bad UDP checksums



2.5.1   Commands

This section summarizes the commands recognized by the ARexx port of the
AmiTCP/IP. The command lines may containcomments, which are started by
the semicolon.

ADD hentryi This command adds entries to thenetwork database.  Templates
    for the entries are:

    WITH hfile namei [PREFIX=hentry typei]  Include the file hfile namei.
        Entry type for the file may be specified with an optional prefix,
        which may be any of the entry types listed in this list.   The
        file will be searched first from the AmiTCP:db directory, so that
        the actual path may be omitted, if the file resides inthat
        directory.
        For exmaple,
        WITH hosts PREFIX=HOST
        includes the file hosts, which contains only host entries.   The
        host keyword must not be present at the file itself.
        The WITH command is useful for including database files
        downloaded from Unix machines.

    H=HOST haddressi hnamei [aliases]  Add a host entry to the network
        database.  Either H or HOST can be used as the keyword. The
        haddressi is the internet address of the host, the hnamei is the
        official name and [aliases] is an optional list of alias names
        for the host.
        Example:
        H 128.214.6.100 nic.funet.fi nic

    N=NET hnamei haddressi [aliases]  Add a net entry to the network
        database.  Arguments are as above for the HOST.
        Example:


System Manual                   AmiTCP/IP                   Section 2.5    19



        N loopback-net 127 software-loopback-net

    S=SERVICE hnamei hporti/hprotocoli [aliases]  Add a service entry to the
        network database.  The hporti is the port number for the hprotocoli
        for which the server for the service will listen for the service
        requests.  [aliases] is as above.
        Example:

        S daytime 13/tcp

    P=PROTOCOL hnamei hprotocol numberi [aliases]   Add a protocol entry to
        the network database.
        Example:

        P tcp 6

    NS=NAMESERVER haddressi  Add a name server entry to the network
        database.  The haddressi is the address of the name server in the
        internet dot-notation.  The name servers are searched in the
        order specified in the database.
        Example:

        NS 130.233.224.1 ; santra.hut.fi

        Note that the symbolic name is after the ';' character,which
        marks the start of an end of line comment.

    DO=DOMAIN hdomain namei  Add a domain name entry to the network
        database.  The hdomain namei is the part following the first '.'
        in the official host name.  The domain entries specify the
        domains from which a host name is searched.  The search is done
        in the order of the entries added to the network database.
        Example:

        DOMAIN cs.hut.fi


QUERY hvariable namei [: :]:Get the value of the variable.  Many variables
    have a two-level hierarchical structure (especially for variables
    related to the statistics) in which both the name of the table and
    the name of the variable itself must be supplied.

    Values for many variables can be queried with one command by putting
    names of the variables in a row.


RESET Reread the network database file AmiTCP:db/netdb.


SET hvariable namei hvariable valuei [::]:  Set the value of a variable.
    Name of the variable is given as with QUERY and the value is given
    after the name.

    Multiple variables can be set with one command by supplying
    name-variable pairs.

    Note that some variables are read-only and others writeable only
    during configuration.



2.5.2   Variables

Here is a complete list of all configuration and network statistic
variables.


20    Section 2.5                  AmiTCP/IP                   System Manual



WITH Include a file with multiple settings.  (This pseudo variable is a
    extension to the SET command.)

ICMP Variables related to Internet Message Control Protocol.  Alias:  IC


    ERROR  Number ofcalls to icmp_error().  Alias:  E

    SHORTOLD  No error because old IP wastoo short.  Alias:  S

    ICMPOLD  No error because oldwas ICMP. Alias:  I

    CODE  ICMP code out of range.  Alias:  CO

    TOOSHORT  Packet too short.  Alias: T

    CHKSUM  Checksum error.  Alias:  CH

    LENGTH  Data length larger than packet.  Alias:  L

    RESPONSES  Number of responses.  Alias:  R


ICMPHIST ICMP packet send and reception history.  See page 24 for details
    on the output format.  Alias:  ICH

IP Variables related to Internet Protocol.


    TOTAL  Total number of packets.  Alias:  T

    CHKSUM  Checksum error.  Alias:  CH

    TOOSHORT  Packet too short.  Alias: TOOSH

    TOOSMALL  Not enough data.  Alias:  TOOSM

    HEADER  IP header length less than data size.  Alias:  H

    LENGTH  IP header length larger than packet.  Alias:  LE

    FRAGMENTS  Packet fragments received.  Alias:  FS

    FDROP  Fragmentsdropped (duplicates, out of space).  Alias:  FD

    FTIMEOUT  Fragments timed out.  Alias:  FT

    FORWARD  Packets forwarded.  Alias: FO

    FWDCANT  Packets received forunreachable destination.  Alias:  FW

    REDIRECTSENT  Packets forwarded on same net.  Alias:  RED

    NOPROTO  Unknown or unsupported protocol.  Alias:  N

    DELIVER  Packets consumed here.  Alias:  D

    LOCALOUT  Total IP packets generatedhere.  Alias:  LO

    ODROPPED  Lost packets due to nobufs,etc.  Alias:  OD

    REASSEMBLED  Total packets reassembled ok.  Alias:  REA

    FED Output packets fragmented ok.  Alias:  FE

    OFRAGMENTS  Output fragments created.  Alias:  OF

    FCANT  Don't fragment flag was set, etc.  Alias:  FC


TCP Variables related to Transmission Control Protocol.  Alias:  T


    CATTEM  Connections initiated. Alias:  CA

    ACCEPTS  Connections accepted.  Alias:  A


System Manual                   AmiTCP/IP                   Section 2.5    21



    CONNECT  Connections established.  Alias:  CO

    DROPS  Connections  dropped.  Alias:  DR

    CDROPS  Embryonic connections dropped.  Alias:  CD

    CLOSED  Connections closed (incl.  drops).  Alias:  CL

    SEGSTIMED  Segments where we tried to get rtt.  Alias:  SE

    RTTUPDATE  Times we succeed rtt.  Alias:  RTT

    DELACK  Delayed acknowledgments sent.  Alias:  DE

    TIMEODROP  Connection dropped in rxmt timeout.  Alias:  T

    REXMTT  Retransmit timeouts. Alias:  RE

    PERSIST  Persist timeouts.  Alias:  P

    KATIMEO  Keepalive timeouts.  Alias: KAT

    KAPROBE  Keepalive probes sent.  Alias:  KAP

    KADROPS  Connections dropped in keepalive.  Alias:  KAD

    STOTAL  Total packets sent.  Alias:  ST

    SPACK  Data packets sent.  Alias:  SP

    SBYTE  Data bytes sent.  Alias:  SB

    SREPACK  Data packets retransmitted.  Alias:  SREP

    SREBYTE  Data bytes retransmitted.  Alias:  SREB

    SACKS  Ack-onlypackets sent.  Alias:  SA

    SWPROBE  Window probes sent. Alias:  SWP

    SURGENT  Packets sent with URGonly.  Alias:  SU

    SWUPDATE  Window update-only packetssent.  Alias:  SWU

    SCTRL  Control (SYN_FIN_RST) packets sent.  Alias:  SC

    RTOTAL  Total packets received.  Alias:  RTO

    RPACK  Packets received in sequence.  Alias:  RPA

    RBYTE  Bytes received in sequence.  Alias:  RB

    RCHKSUM  Packets received withchecksum errors.  Alias:  RC

    ROFFSET  Packets received withbad offset.  Alias:  ROF

    RPSHORT  Packets received tooshort.  Alias:  RPS

    RDUPPACK  Duplicate-only packets received.  Alias:  RDUPP

    RDUPBYTE  Duplicate-only bytes received.  Alias:  RDUPB

    RPDUPDATA  Packets with some duplicate data. Alias:  RPDUPD

    RPDUPBYTE  Dup.  bytes in part-dup.  packets.  Alias:  RPDUPB

    ROOPACK  Out-of-order packetsreceived.  Alias:  ROOP

    ROOBYTE  Out-of-order bytes received.  Alias:  ROOB

    RPLATE  Packets with data after window.  Alias:  RPL

    RBLATE  Bytes receivedafter window.  Alias:  RBL

    RAFTER  Packets received after close.  Alias:  RAF

    RWPROBE  Received window probepackets.  Alias:  RWP


22    Section 2.5                  AmiTCP/IP                   System Manual



    RDUPACK  Received duplicate acknowledgments.  Alias:  RDUPA

    RACKTOOM  Received acknowledgments for unsent data.  Alias:  RACKT

    RACKPACK  Received acknowledgment packets.  Alias:  RACKP

    RACKBYTE  Bytes acknowledged by received acknowledgments.  Alias:
        RACKB

    RWUPDATE  Received window update packets.  Alias:  RWU


UDP Variables related to User Datagram Protocol.  Alias:  U


    ITOTAL  Total input packets.  Alias:  I

    HEADSHORT  Packet shorter than header.  Alias:  H

    CHKSUM  Checksum error.  Alias:  C

    LENGTH  Data length larger than packet.  Alias:  L

    NOPORT  No socket on port.  Alias:  N

    BCNOPORT  No socket on port, arrivedas broadcast.  Alias:  B

    FULLSOC  Not delivered, inputsocket full.  Alias:  F

    MISPCB  Input packets missing pcb cache.  Alias:  M

    OTOTAL  Total output packets.  Alias:  O


CONNECTIONS  Returns a list ofall TCP and UDP connections, including
    server (listening) sockets.  See page 24 for the output format
    description.

MBUF_STAT Memory buffer statistics.  Alias:  MBS


    MBUFS  Total number of allocated memory buffers.  Alias:  M

    CLUSTERS  Total number of allocated memory buffer clusters.  Alias:
        CL

    CLFREE  Number of memory buffer clusters free.  Alias:  CLF

    MDROPS  Times failed tofind space.  Alias:  MD

    NWAITED  Times waited for space.  Alias:  NW

    NDRAINED  Times drained protocols forspace.  Alias:  ND

    TOTALMEMORYUSED  Total amount of memory used for the mbufs.  Alias:
        TMU


MBUF_TYPE_STATS Returns type specific statistics of mbuf allocations.  The
    last number is the total number of mbufs allocated.  Alias:  MBTS

MBUF_CONF Memory buffer configuration.  Alias:  MBC


    INITIAL  Number of mbuf chunksto allocate initially.  Alias:  I

    CHUNK  Number ofmbufs to allocate at a time.  Alias:  CH

    CLCHUNK  Number of clusters toallocate at a time.  Alias:  CL

    MAXMEM  Maximum memoryto use (in kilobytes).  Alias:  MM

    CLUSTERSIZE  Size of an mbuf cluster.  Alias:  CS


System Manual                   AmiTCP/IP                   Section 2.5    23



LOG Logging system configuration.


    COUNT  Number oflog messages to use.

    LEN Maximum length of a log message.


TASKNAME Name of AmiTCP/IP task.


NTHBASE Current AmiTCP/IP has nth bsdsocket.library base currently in
    memory.  Alias:  NTH


DEBUGSANA  Boolean to switch the SANA-II device interface debugging on and

    off3.  Alias:  DBSANA


DEBUGICMP  Boolean to switch the ICMP debugging on and off.  Alias:
    DBICMP


DEBUGIP Boolean telling whether IP should log debugging information.
    Alias:  DBIP


GATEWAY Boolean to switch gateway functionality on and off.  Alias:  GTW


IPSENDREDIRECTS  Boolean telling whether IP should send ICMP redirect
    messages.  Alias:  REDIR


USENAMESERVER  How to use name server.  Possible values are:


    NO Do not use name server at all.  Local database will be used
        instead.

    FIRST  Query thename servers first and if that fails, use local
        database.

    SECOND  First look up the local database, then, if that fails, query
        the name servers.


    Alias:  USENS


USELOOPBACK  If true use the local loop device for local traffic.  Alias:
    ULO


TCP_SENDSPACE  Default size of the sending socket buffer (TCP). Alias:
    TCPSND


TCP_RECVSPACE  Default size of the receiving socket buffer (TCP). Alias:
    TCPRCV


CONSOLENAME  Filename for thelog console.  Alias:  CON


LOGFILENAME  Filename for thelog file.  Alias:  LOGF


________________________________
   3See page 24 for description about boolean variable.


24    Section 2.5                  AmiTCP/IP                   System Manual



Boolean variables

The variables documented as boolean accept their values in various

formats.  Boolean false may be given asNO4 , FALSE, OFF or 0.  YES, TRUE,
ON and 1 are considered as boolean true.
   The firstalternatives are used on output.



CONNECTIONS output format

CONNECTIONS query returns its result ina format which has
space-separated fields, connection afterconnection (not sorted).  Format
is as follows:

     _____________________________________________________________________
     !_Field_length_!___Value_type____!Description_______________________!_
     !_______1_______!char_`t'_or_`u'_!t_for_TCP_connection,_u_for_UDP_!__
     !_______4_______!__4-char_hex____!Receive_queue_length_____________!_
     !_______4_______!__4-char_hex____!Send_queue_length________________!_
     !_______8_______!__8-char_hex____!Local_address_____________________!_
     !_______4_______!__4-char_hex____!Local_port_number________________!_
     !_______8_______!__8-char_hex____!Foreign_address___________________!_
     !_______4_______!__4-char_hex____!Foreign_port_number______________!_
     !_______1_______!__1-char_hex____!State_of_connection______________!_


   The hexadecimal values are zero padded from left to their full length.
Last item presents the state of the TCPfinite state machine.  Possible
values for it are:

              ____________________________________________________
              !_Value_!State_of_TCP_FSM________________________!__
              !___0___!Closed___________________________________!_
              !___1___!Listening_for_connection________________!__
              !___2___!Active,_has_sent_SYN____________________!__
              !___3___!Has_send_and_received_SYN______________!___
              !___4___!Established______________________________!_
              !___5___!Received_FIN,_waiting_forclose_________!___
              !___6___!Has_been_closed,_sent_FIN______________!___
              !___7___!Closed_exchanged_FIN;_awaiting_FIN_ACK_!___
              !___8___!Had_FIN_and_close;_awaiting_FIN_ACK_____!__
              !___9___!Has_been_closed,_FIN_is_acknowledged___!___
              !___A___!Is_in_2*msl_quiet_wait_after_close______!__



ICMPHIST output format

ICMPHIST query returns the ICMP historytable entries on one line
separated by spaces.  Outhistory is returned first beginning from the
entry 0.  Both tables contains 19 entries for differentICMP messages.
Note that all message types are not in use.   Message types are as
follows:________________________

   4Upper case keywords are used here for clarity only.  Lower case (or

mixed case) keywords are accepted as well.


System Manual                   AmiTCP/IP                   Section 2.5    25



                        ________________________________
                        !__0_e!cho_reply_______________!_
                        !__1_n!ot_used_________________!_
                        !__2_n!ot_used_________________!_
                        !__3_D!estination_unreachable_!_
                        !__4_P!acket_lost,_slow_down__!_
                        !__5_S!horter_route____________!_
                        !__6_n!ot_used_________________!_
                        !__7_n!ot_used_________________!_
                        !__8_E!cho_service_____________!_
                        !__9_n!ot_used_________________!_
                        !_10_!not_used_________________!_
                        !_11_!Time_exceeded____________!_
                        !_12_!IP_header_bad____________!_
                        !_13_!Timestamp_request________!_
                        !_14_!Timestamp_reply__________!_
                        !_15_!Information_request_____!_
                        !_16_!Information_reply________!_
                        !_17_!Address_mask_request____!_
                        !_18_!Address_mask_reply______!_


26    Section 2.5                  AmiTCP/IP                   System Manual





Appendix A



Autodocs  for  Network Applications



and  Utilities



The AutoDoc file netutil.doc contains on-line manual pages for the
network utilities and applications.



Table  of  Contents


        arp : : : : : : : :: : : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : : : : 112
        ifconfig : : : : : : : : : : : : : : : : : : : : :: : : : : : : : : : :*
 * : : : : : : : : 114
        inetd : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : :: : : : : : 117
        letnet  : : : : : : : : : :: : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : : : 119
        offline : : : : : : :: : : : : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : : : 120
        online  : : : : : : : : : :: : : : : : : : : : : : : : : : : : : : : : *
 *: : : : : : : : : 121
        ping : : : : : : : : : : : : : : : : : : : : : :: : : : : : : : : : : :*
 * : : : : : : : : : 122
        route : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :*
 * : : :: : : : : : 126



                                      111


112    Section A.1                 AmiTCP/IP                  System Manual



A.1     Network Utilities



A.1.1   arp


  NAME
        Arp- address resolution display and control


  SYNOPSIS
        arp hostname
        arp-a netname
        arp-d hostname
        arp-s hostname address [temp] [pub]
        arp-f filename


  DESCRIPTION
        Arpdisplays and modifies the Internet to hardware address
        translation tables used by the Address Resolution Protocol.
        Thehardware address is a hexadecimal string with each octet
        separated by a colon, for instance 0:12:ff:a. The length of
        theaddress must be same as the address of the specified
        interface.


  OPTIONS
         none  If no options arespecified (first form above), arp
              displays the current ARP entry for hostname.   The
              hostname must either appear in the hostname database
              (SEE hosts), or be a DARPA Internet address expressed in
              Internet standard "dot notation".


        -a    Display all current ARP entries by reading the address
              mapping table of the specified interface.


        -d   If an ARP entry exists for the host called hostname, delete
              it. This requires super-user privileges.


        -s    Create an ARP entry for the host called hostname with the
              hardware station address address. The hardware station address
              is given as six hexadecimal bytes separated by colons.  If an
              ARP entry already exists for hostname,the existing entry is
              updated with the new information.  The entry is permanent
              unless the word temp is given in the command. If the word pub
              is specified, the entry is published, which means that this
              system will act as an ARP server responding to requests for
              hostname even though the host address is not its own.


        -f    Read file filename and set multiple entries in the ARP tables.
              Entries in the file should be of the form:


                   hostname address [temp] [pub]


              Argument meanings are the same as for the -s option.


  AUTHOR
        Arpwas developed by the University of California, Berkeley, for the
        BSDUnix system.


System Manual                  AmiTCP/IP                 Section A.1    113



  SEE ALSO
        ifconfig, netif.protocols/arp, "net/if_arp.h"


114    Section A.1                 AmiTCP/IP                  System Manual



A.1.2   ifconfig


  NAME
        ifconfig - configure network interface parameters


  SYNOPSIS
        ifconfig interface address_family [address [dest_address]] [params]
        ifconfig interface [address_family]


  DESCRIPTION
        ifconfig is used to assign an address to a network interface and/or
        configure network interface parameters.  ifconfig must be used at
        boot time to define the network address of each interface present on
        a machine.   It can also be used at other times to redefine an
        interface's address or other operating parameters.


  PARAMETERS
        interface     A string of the unit name. The device name (e.g.
                       'a2065.device') concatenated with a slash ('/') and the
                       unit number ('11'), for example 'a2065.device/11' is a
                       legal unit name.


        address_family
                      Name of protocol on which naming scheme is based.  An
                       interface can receive transmissions in differing
                       protocols, each of which may require separate naming
                       schemes.   Therefore,it is necessary to specify the
                       address_family, which may affect interpretation of the
                       remaining parameters on the command line.  The only
                       addressfamily currently supported is inet (DARPA-
                       Internet  family).


        address       Either a host name present in the host name database,
                       (SEE hosts), or a DARPA Internet address
                       expressed in Internet standard "dot notation".  The
                       host number can be omitted on 10-Mbyte/second Ethernet
                       interfaces (which use the hardware physical address),
                       and oninterfaces other than the first.


        dest_address Address of destination system.  Consists of either a
                       host name present in the host name database, hosts(4),
                       or a DARPA Internet address expressed in Internet
                       standard "dot notation".


  SWITCHES
        Thefollowing operating parameters can be specified:


         up           Mark an interface "up". Enables interface after an
                       "ifconfig down."   Occurs automatically when setting the
                       addresson an interface.  Setting this flag has no
                       effectif the hardware is "down".


         down         Mark an interface "down".  When an interface is
                       marked"down", the system will not attempt to
                       transmit messages through that interface. If
                       possible, the interface will be reset to disable


System Manual                  AmiTCP/IP                 Section A.1    115



                       reception as well.  This action does not
                       automatically disable routes using the interface.


        arp           Enable the use of Address Resolution Protocol in
                       mappingbetween network level addresses and link-level
                       addresses  (default).


        -arp           Disable the use of Address Resolution Protocol.


         metric n     Set the routing metric of the interface to n,
                       default0.   The routing metric is used by the routing
                       protocol (see gated(1m)).  Higher metrics have the
                       effectof making a route less favorable; metrics are
                       countedas additional hops to the destination network
                       or host.


         debug         Enable driver-dependent debugging code. This usually
                       turns on extra console error logging.


        -debug         Disable driver-dependent debugging code.


         netmask mask (Inet only) Specify how much of the address to reserve
                       for subdividing networks into sub-networks.  mask
                       includes the network part of the local address, and the
                       subnetpart which is taken from the host field of the
                       address.   mask can be specified as a single hexadecimal
                       numberwith a leading 0x, with a dot-notation Internet
                       address, or with a pseudo- network name listed in the
                       networktable networks(4).  mask contains 1's for each
                       bit position in the 32-bit address that are to be used
                       for thenetwork and subnet parts, and 0's for the host
                       part.  mask should contain at least the standard
                       networkportion, and the subnet field should be
                       contiguous with the network portion.


        broadcast     (Inet only) Specify the address that represents
                       broadcasts to the network.  The default broadcast
                       addressis the address with a host part of all 1's.


        The command:


             ifconfig interface/unit


        with no optional command arguments supplied displays the current
        configuration for interface.  If address_family is specified,
        ifconfig reports only the details specific to that address family.


  DIAGNOSTICS


        Messages indicating that the specified interface does not exist, the
        requested address is unknown, or the user is not privileged and
        tried to alter an interface's configuration.


  EXAMPLES


116    Section A.1                 AmiTCP/IP                  System Manual



        ifconfig lo/0 127.0.0.1


                This command marks internal loopback device "UP", and
                attach an inet address 127.0.0.1 to it.


        ifconfig cslip.device/0 inet 193.102.4.144 193.102.4.129


                This command starts the CSLIP driver, attach an
                address 193.102.4.144 (our internet address) and a
                destination address 193.102.4.129 (the internet
                address of the host you are connecting) to it.


        ifconfig devs:network/a2065.device/0 inet 193.124.100.64 +
        netmask 255.255.255.192 -arp


                This command loads an ethernet driver for the
                Commodore A2065 Ethernet adapter unit 0, marks it
                "up", disables ARP protocol for it, attaches an inet
                address 193.124.100.65 to it and sets its netmask to
                255.255.255.192.  A bitwise logical and of netmask and
                address for the interface forms a subnet address, in
                this case 193.124.100.64.  All packets aimed to hosts
                with same subnet address (that is hosts 193.124.100.64
                - 193.124.100.127) are routed to this interface.


  SEE ALSO
        netstat, hosts, arp, "net/if.h", "net/sana2tags.h"


System Manual                  AmiTCP/IP                 Section A.1    117



A.1.3   inetd


  NAME
         inetd - internet ``super-server''


  TEMPLATE
        inetd DEBUG/S CONFIGFILE


  DESCRIPTION


        Inetd should be run when the AmiTCP/IP protocol stack is started.
        Inetd listens for connections on certain internet sockets.  When a
        connection is found on one of its sockets, it decides what service the
        socket corresponds to, and invokes a program to service the request.
        After the program is finished, it continues to listen on the socket
        (except in some cases which will be described below).  Essentially,
        inetd allows running one daemon to invoke several others, reducing
        load on the system.


  PARAMETERS
        DEBUG       Turns on debugging.


        CONFIGFILE Specifies the configuration file name.


  CONFIGURATION


        Upon execution, inetd reads its configuration information from a
        configuration file which, by default, is AmiTCP:db/inetd.conf. There
        must be an entry for each field of the configuration file, with
        entries for each field separated by a tab or a space.  Comments are
        denoted by a ``#'' at the beginning of a line or ``;'' anywhere in the
        line. There must be an entry for each field. The fields of the
        configuration file are as follows:


              service name
              socket type
              protocol
              wait/nowait
              user
              server program
              server program name
              server program arguments


        Theservice-name entry is the name of a valid service in the
        netdatabase.   For ``internal'' services (discussed below), the service
        name must be the official name of the service.


        Thesocket-type should be one of ``stream'', ``dgram'', ``raw'',
        ``rdm'', or ``seqpacket'', depending on whether the socket is a
        stream, datagram, raw, reliably delivered message, or sequenced packet
        socket. Current system supports only stream, datagram and raw
        protocols.


        Theprotocol must be a valid protocol as given in netdatabase.
        Examples might be ``tcp'' or ``udp''.


118    Section A.1                 AmiTCP/IP                  System Manual



        Thewait/nowait entry is useful for datagram sockets only (other
        sockets should have a ``nowait'' entry in this space).  If a datagram
        server connects to its peer, freeing the socket so inetd can received
        further messages on the socket, it is said to be a ``multi-threaded''
        server, and should use the ``nowait'' entry.  For datagram servers
        which process all incoming datagrams on a socket and eventually time
        out, the server is said to be ``single-threaded'' and should use a
        ``wait'' entry.  Comsat and talkd are both examples of the latter type
        ofdatagram server.


        Theuser entry should contain the user name of the user as whom the
        server should run. This field is for Unix and future compability
        only.


        Theserver-program entry should contain the pathname of the program
        which is to be executed by inetd when a request is found on its
        socket.   If theserver program is resident, the path name should be
        suppressed. If inetd provides this service internally, this entry
        should be ``internal''.


        Theserver-program-name is CLI command name for the server process. It
        isshown in the printout of ``status'' command. (Task name of the
        server process is the service and the peer address, e.g. ``echo
        [192.233.15.19]''.) This and argument entry are optional.


        Theserver program arguments should be just as arguments normally are.


        Inetd provides several ``trivial'' services internally by use of
        routines within itself.  These services are ``echo'', ``discard'',
        ``chargen'' (character generator), ``daytime'' (human readable time),
        and``time'' (machine readable time, in the form of the number of
        seconds since mid night, January 1, 1900).  All of these services are
        TCPand UDP based.  For details of these services, consult the
        appropriate RFC from the Network Information Center.


        Inetd rereads its configuration file when it receives the CTRL-F
        signal.   Services may be added, deleted or modified when the
        configuration file is reread.


  HISTORY
        Theinetd command appeared in 4.3BSD system.


  SEE ALSO


System Manual                  AmiTCP/IP                 Section A.1    119



A.1.4   letnet

  NAME
        Letnet - a simple TCP connection tool


  SYNOPSIS
        letnet  HOSTNAME/A,PORT/A


  DESCRIPTION
        Letnet connects to the specified TCP port at the specified host. The
        data read from standard input is sent to the host and data received
        from the connection is written to the standard output. Letnet
        terminates upon shutdown of the socket or receiving SIGBREAKF_CTRL_C
        signal.


  ARGUMENTS
         HOSTNAME/A
                If there is no name service available, hostname maybe given
                in the Internet dot notation.


         PORT/A
                The port identifier is searched from the standard services
                (SEE ALSO netdb/services) database. A nonstandard
                service port may be specified in the numeric form,numbers
                between 1---65535 are acceptable.


  AUTHOR
        Pekka Pessi, the AmiTCP/IP Group, Helsinki University of Technology


  SEE ALSO
        netdb/services, netdb/hosts


120    Section A.1                 AmiTCP/IP                  System Manual



A.1.5   offline

  NAME
        Offline - put a SANA-II device offline


  TEMPLATE
        Offline DEV=DEVICE devicename[/unit] [UNIT unit]


  DESCRIPTION
        Offline sends the S2_OFFLINE command to the given SANA-II device
        driver and unit. This command is normally used to disconnect SANA-II
        device driver from the network adapter hardware. Device driver does
        notaccept any more read or write requests.


  EXAMPLES
        This command puts the SLIP offline, which frees then the serial port
        toyour use.


        OFFLINE  slip.device/1


  SEE ALSO
        Online,  sana2.device/S2_OFFLINE


System Manual                  AmiTCP/IP                 Section A.1    121



A.1.6   online

  NAME
        Online - put a SANA-II device online


  TEMPLATE
        Online DEV=DEVICE devicename[/unit] [UNIT unit]


  DESCRIPTION
        Online sends the S2_ONLINE command to the given SANA-II device driver
        andunit. The device driver restarts the network adapter hardware and
        accepts read and write request again.


  EXAMPLES


        This command puts the Commodore Ethernet driver online.


        Online  a2065.device/0


  SEE ALSO
        Offline, sana2.device/S2_ONLINE


122    Section A.1                 AmiTCP/IP                  System Manual



A.1.7   ping


   NAME
        ping - send ICMP ECHO_REQUEST packets to network hosts


   SYNOPSIS
        ping [-dfnqrvR] [-c count] [-i wait] [-l preload] [-p pattern]
             [-s packetsize]


   DESCRIPTION
        Ping uses the ICMP protocol's mandatory ECHO_REQUEST datagram to
        elicit an ICMP ECHO_RESPONSE from a host or gateway.  ECHO_REQUEST
        datagrams (``pings'') have an IP and ICMP header, followed by a
        ``struct timeval'' and then an arbitrary number of ``pad'' bytes
        used to fill out the packet.  The options are as follows: Other
        options  are:


        -c count
                Stop after sending (and receiving) count ECHO_RESPONSE
                packets.


        -d      Set the SO_DEBUG option on the socketbeing used.


        -f      Flood ping.  Outputs packets as fast as they come back or
                one hundred times per second, whichever is more.  For every
                ECHO_REQUEST sent a period ``.'' is printed, whilefor ever
                ECHO_REPLY received a backspace is printed.  This provides a
                rapid display of how many packets are being dropped.   Only
                the super-user may use this option.  This can be very hard
                on a network and should be used with caution.


        -i wait
                Wait wait seconds between sending each packet. Thedefault
                is to wait for one second between each packet.  This option
                is incompatible with the -f option.


        -l preload
                If preload is specified, ping sends that many packets as
                fast as possible before falling into its normal mode of
                behavior.


        -n      Numeric output only.  No attempt will be made to lookup
                symbolic names for host addresses.


        -p pattern
                You may specify up to 16 ``pad'' bytes to fill outthe
                packet you send.  This is useful for diagnosing
                data-dependent problems in a network.  For example, ``-p
                ff'' will cause the sent packet to be filled with all ones.


        -q      Quiet output.  Nothing is displayed except the summary lines
                at startup time and when finished.


        -R      Record route.  Includes the RECORD_ROUTE option inthe
                ECHO_REQUEST packet and displays the route buffer on
                returned packets.  Note that the IP header is only large


System Manual                  AmiTCP/IP                 Section A.1    123



                enough for nine such routes.  Many hosts ignore or discard
                this option.


        -r      Bypass the normal routing tables andsend directly to a host
                on an attached network.  If the host is not on a
                directly-attached network, an error is returned.  This
                option can be used to ping a local host through aninterface
                that has no route through it.


        -s packetsize
                Specifies the number of data bytes to be sent.  The default
                is 56, which translates into 64 ICMP data bytes when
                combined with the 8 bytes of ICMP header data.


        -v      Verbose output.  ICMP packets other than ECHO_RESPONSE that
                are received are listed.


        When using ping for fault isolation, it should first be run on the
        local host, to verify that the local network interface is up and
        running.   Then,hosts and gateways further and further away should
        be``pinged''.   Round-trip times and packet loss statistics are
        computed.   If duplicate packets are received, they are not included
        inthe packet loss calculation, although the round trip time of
        these packets is used in calculating the minimum/average/maximum
        round-trip time numbers.  When the specified number of packets have
        been sent (and received) or if the program is terminated with a
        SIGINT, a brief summary is displayed.


        This program is intended for use in network testing, measurement and
        management.   Because of the load it can impose on the network, it is
        unwise to use ping during normal operations or from automated
        scripts.


   ICMP PACKET DETAILS
        AnIP header without options is 20 bytes.  An ICMP ECHO_REQUEST
        packet contains an additional 8 bytes worth of ICMP header followed
        byan arbitrary amount of data.  When a packetsize is given, this
        indicated the size of this extra piece of data (the default is 56).
        Thus the amount of data received inside of an IP packet of type ICMP
        ECHO_REPLY will always be 8 bytes more than the requested data space
        (the ICMP header).


        Ifthe data space is at least eight bytes large, ping uses the first
        eight bytes of this space to include a timestamp which it uses in
        thecomputation of round trip times.  If less than eight bytes of
        padare specified, no round trip times are given.


   DUPLICATE AND DAMAGED PACKETS
        Ping will report duplicate and damaged packets.  Duplicate packets
        should never occur, and seem to be caused by inappropriate
        link-level retransmissions.  Duplicates may occur in many situations
        andare rarely (if ever) a good sign, although the presence of low
        levels of duplicates may not always be cause for alarm.


        Damaged packets are obviously serious cause for alarm and often


124    Section A.1                 AmiTCP/IP                  System Manual



        indicate broken hardware somewhere in the ping packet's path (in the
        network or in the hosts).


   TRYING DIFFERENT DATA PATTERNS
        The(inter)network layer should never treat packets differently
        depending on the data contained in the data portion.  Unfortunately,
        data-dependent problems have been known to sneak into networks and
        remain undetected for long periods of time.  In many cases the
        particular pattern that will have problems is something that doesn't
        have sufficient ``transitions'', such as all ones or all zeros, or a
        pattern right at the edge, such as almost all zeros.  It isn't
        necessarily enough to specify a data pattern of all zeros (for
        example) on the command line because the pattern that is of interest
        isat the data link level, and the relationship between what you
        type and what the controllers transmit can be complicated.


        This means that if you have a data-dependent problem you will
        probably have to do a lot of testing to find it.  If you are lucky,
        youmay manage to find a file that either can't be sent across your
        network or that takes much longer to transfer than other similar
        length files.   You can then examine this file for repeated patterns
        that you can test using the -p option of ping.


   TTL DETAILS
        TheTTL value of an IP packet represents the maximum number of IP
        routers that the packet can go through before being thrown away.  In
        current practice you can expect each router in the Internet to
        decrement the TTL field by exactly one.


        TheTCP/IP specification states that the TTL field for TCP packets
        should be set to 60, but many systems use smaller values (4.3 BSD
        uses 30, 4.2 used 15). The AmiTCP/IP uses normally TTL value 30.


        Themaximum possible value of this field is 255, and most systems
        setthe TTL field of ICMP ECHO_REQUEST packets to 255.  This is why
        youwill find you can ``ping'' some hosts, but not reach them with
        telnet or ftp.


        Innormal operation ping prints the ttl value from the packet it re-
        ceives.   When aremote system receives a ping packet, it can do one
        ofthree things with the TTL field in its response:


           Not change it; this is what Berkeley Unix systems did before the
            4.3BSD-Tahoe release.  In this case the TTL value in the
            received packet will be 255minus the number of routers in the
            round-trip path.


           Set it to 255; this is what AmiTCP/IP and current Berkeley Unix
            systems do.  In this case the TTL value in the received packet
            will be 255 minus the number of routers in the path from the
            remote system to the pinging host.


           Set it to some othervalue.   Some machines use the same value
            for ICMP packets that theyuse for TCP packets, for example
            either 30 or 60.  Others may use completely wild values.


System Manual                  AmiTCP/IP                 Section A.1    125



   BUGS
        Many Hosts and Gateways ignore the RECORD_ROUTE option.


        Themaximum IP header length is too small for options like
        RECORD_ROUTE to be completely useful.  There's not much that that
        canbe done about this, however.


        Flood pinging is not recommended in general, and flood pinging the
        broadcast address should only be done under very controlled
        conditions.


   SEE ALSO
        netstat,   ifconfig


   AUTHOR
        Theping command originally appeared in 4.3BSD.


126    Section A.1                 AmiTCP/IP                  System Manual



A.1.8   route


   NAME
         route - manually manipulate the routing tables


   SYNOPSIS
         route [-n] [-q] [-v] command [modifiers] destination gateway


   DESCRIPTION
         Route isa program used to manually manipulate the network routing
         tables.


         Options supported by route:


         -n      Prevent attempts to print host and networknames
                 symbolically when reporting actions.


         -v      (verbose) Print additional details.


         -q      Suppress all output.


         Commandsaccepted by route:


         add         Add a route.
         delete      Delete a specific route.


         The destination is the destination host or network, gateway is the
         next-hopgateway to which packets should be addressed. Routes to a
         particular host are distinguished from those to a network by
         interpreting the Internet address associated with destination. The
         optionalmodifiers -net and -host force the destination to be
         interpreted as a network or a host, respectively.  Otherwise, if the
         destination has a ``local address part'' of INADDR_ANY, or if the
         destination is the symbolic name of a network, then the route is
         assumed to be to a network; otherwise, it is presumed to be a route
         to a host.


         For example, 128.32 is interpreted as -host 128.0.0.32; 128.32.130
         is interpreted as -host 128.32.0.130; -net 128.32 is interpreted as
         128.32.0.0; and -net 128.32.130 is interpreted as 128.32.130.0.


         To add adefault route, give the destination as 'default'.


         If the route is via an interface rather than via a gateway, the
         -interface modifier should be specified; the gateway given is the
         address of this host on the common network, indicating the interface
         to be used for transmission.


         The optional -netmask qualifier is used to specify the netmask of
         the interface. One specifies an additional ensuing address parameter
         (to be interpreted as a network mask).  The implicit network mask
         generatedcan be overridden by making sure this option follows the
         destination  parameter.


         All symbolic names specified for a destination or gateway are looked
         up firstas a host name using gethostbyname(). If this lookup fails,


System Manual                  AmiTCP/IP                 Section A.1    127



         getnetbyname() is then used to interpret the name as that of a
         network.


   DIAGNOSTICS
         add [host_ network ] %s: gateway %s flags %x
                 The specified route is being added to the tables. The values
                 printed are from the routing table entry supplied in the
                 IoctlSocket() call. If the gateway address used was not the
                 primary address of the gateway (the first one returned by
                 gethostbyname()), the gateway address is printed numerically
                 as well as symbolically.


         delete [host _ network ] %s: gateway %s flags %x
                 As above, but when deleting an entry.


         Network is unreachable
                 An attempt to add a route failed because the gateway listed
                 was not on a directly-connected network.  The next-hop
                 gateway must be given.


         not in table
                 A delete operation was attempted for an entry which wasn't
                 present in the tables.


         routing table overflow
                 An add operation was attempted, but the system was low on
                 resources and was unable to allocate memory to create the
                 new entry.


   SEE ALSO
         ifconfig, protocols/routing


   HISTORY
         The routecommand appeared in 4.2BSD.





Glossary



API Application Program Interface.  Standard function calls, messages and
    devices used in application level programs.


Arcnet Yet another network type, transfer rate 5Mbits/sec.


ARexx ARexx is a specific implementation of the Rexx language forthe
    Amiga.  Rexx itself is a script language with superb power/simplicity
    ratio, originally developed for some IBM mainframe systems.


ARP Address Resolution Protocol.  A communication protocol used tomap
    protocol address to network address dynamically.  For example, ARP is
    used to map DARPA Internet addresses into Ethernet addresses.


AutoDoc Document generated automagically from comments included in
    program source code.  Mainly used to describe shared library
    functions in AmigaOS. See [RKM Inc & ADoc 1992 ].


BSD Berkeley Software Distribution.  Family of UNIX versions for the DEC
    (VAX) and PDP-11 developed by Bill Joy and others at Berzerkeley
    starting around 1980, incorporating paged virtual memory, TCP/IP
    networking enhancements, and many other features.  The BSD versions
    (4.1, 4.2, and 4.3) and the commercial versions derived from them
    (SunOS, ULTRIX, and Mt.  Xinu) held the technical lead in the UNIX
    world until AT&T's successful standardization efforts after about
    1986, and are still widely popular.


BSDSS BSD Single Server is operating system server in Mach operating
    system where all UNIX services are in single binary.


(D)ARPA Internet  The collection of networks using internet protocols.
    (D)ARPA Internet originated from a research project sponsored by the
    (Defense) Advanced Research Project Agency.


Daemon 'A deified being', program that lives forever on system, or
    reincarnates every time it is needed.  Performs its requested task
    promptly and goes back to sleep.


Data link layer  Protocol layer providing data transfer between machines
    in same physical network.


DIS First stage in ISO's standardization.  (Discussion)



                                      205


206    Section D.1                 AmiTCP/IP                  System Manual



Ethernet 10Mbit/sec physical network interface.  Developed by Xerox in
    Palo Alto late 70s.  In 1982 published with Digital and Intel as
    ESPEC1.  ESPEC2 was approved as basic specification for LANs which
    employed the carrier sense multiple access with collision detection
    by IEEE 802.3 committee.  Heavily derived version was later published
    by ISO as DIS 8802/3.  Original has only version for 50  coaxial
    cable, 10BASE5 ``Thick Ether'', but nowadays has also for thinner
    coaxial cable, 10BASE2 ``Thin Ether'', twisted pair, 10BASET and
    fibre, 10BASEF. There are also broadband, 10BROAD36, and slower,
    1Mbit/s 1BASE5, versions.


EXEC AmigaOS EXECutive.  Provides the basic kernel functions, such as
    task scheduling, memory management, concurrency control, message
    ports, public library lists etc.


Frame Data unit transferred between data link layer protocol entities.


ICMP Internet Message Control Protocol.  A host-to-host communication
    protocol used in the DARPA Internet for reporting errors and
    controlling the operation of IP.


IEEE the Institute of Electrical and Electronics Engineers


Inetd the Internet super server.  A server that listens to the network
    and launches other server processes when needed.


IO request  An Amiga standard message format to discuss with devices.  IO
    requests are sent by Exec function BeginIO() to the device driver.
    Completed IO requests are sent back to the reply port specified in IO
    request.


IP Internet Protocol.  The network-layer communication protocol used in
    the DARPA Internet.  IP is responsible for host-to-host addressing
    and routing, packet forwarding, and packet fragmentation and
    reassembly.


ISO International Organization for Standardization


Jargon A formal technical vocabulary of various subjects.  Also hackish
    slang or mumbo jumbo is referred as jargon [Raymond 1992 ].


Library base  In AmigaOS shared library is accessed via a library base
    pointer.  On the negative side (relative to the base pointer) there
    is jump table to the library functions and on the positive side --
    library data the functions can use.


Log It is usually useful to record information.  If something hasgone
    wrong, one may found information to remove cause of failure.  A log
    is usually a file, where information is written.


Mbuf Memory BUFfer.  Data storage unit inside BSD networking
    implementation.


Message Data unit transferred between applications using network
    services.


System Manual                  AmiTCP/IP                 Section D.1    207



MTU Maximum Transfer Unit.  The amount of data that underlying network
    can transfer in one block.

NET/2 Latest (by now) BSD Unix release.

Network File System  A filesystem share protocol which enables other
    computers use disks on other host over network.  Usually uses UDP
    protocol for transfering files, but also TCP-based version exists.
    Developed by Sun Microsystems Inc., and developed to ``Industrial
    Standard'' in *IX environment.  Described in detail ``Networking on
    the Sun Workstation''

Octet A unit of eigth bits.  Used in communication to overcome problem
    that byte is not allways eigth bits (althoug this is nowadays very
    rare situation.)

Packet Data unit transferred between network layer protocol entities.

panic() Function executed after lethal failure in Unix kernel.

PPP Point-to-Point Protocol which allows multiple protocols to be
    transferred on the same line.  It is also more flexible than SLIP.

Protocol stack  A network protocol stack is a layerof software that
    network applications use to address particular processes on remote
    machines.  The AmiTCP/IP is such a protocol stack using TCP/IP
    protocols.

RARP Reverse Address Resolution Protocol maps network addresses to
    protocol addresses dynamically.

RFC Request For Comments.  Freely available standards for networking.
    They are mostly available online from nic.ddn.mil with FTP or Kermit.

RKM Rom Kernel reference Manuals are the most authoritative AmigaOS
    references, see [RKM Libraries 1992 ] for example.

SANA-II A standard for an Amiga software interface between networking
    hardware and network protocol stacks (or for software tools such as
    network monitors).

SLIP Serial Line Internet Protocol.  Data encapsulation protocol used to
    transmit IP packets over point-to-point serial lines.

Socket An abstraction for endpoint of communication.

TLA Three Letter Acronym, a mnemonic and mystic abbreviation which is
    coined to confuse acolytes.

TCP Transmission Control Protocol.  A connection-oriented transport
    protocol used in the DARPA Internet.  TCP provides for the reliable
    transfer of data, as well as the out-of-band indication of urgent
    data.

TCP/IP The whole protocol stack, which implements at least the Internet
    protocols required is often expressed as the two most commonly used,
    TCP/IP


208    Section D.1                 AmiTCP/IP                  System Manual



UDP User Datagram Protocol.  A simple unreliable datagram protocolused
    in the DARPA Internet.  UDP provides only peer-to-peer addressing and
    optional data checksum.

Wire type  is the physical layer protocol type.  Different wire types are
    for instance Arcnet, Ethernet, IEEE 802.3, PPP and SLIP.





Bibliography



[Comer 1988]               Comer, D. E., Internetworking With TCP/IP Vol I:
                           Principles, Protocols and Architecture,
                           Prentice--HallInternational, 382 p.


[Comer and Stevens 1991]   Comer, D. E. and Stevens, D. L., Internetworking
                           With TCP/IP VolII: Design, Implementation, and
                           Internals, Prentice--Hall International, 524 p.


[Finlayson et al 1984]     Finlayson, R.,Mann, T., Mogul, J. and Theimer,
                           M., ``A ReverseAddress Resolution Protocol,''
                           RFC 903, 4 p.


[Holloway 1991]            Holloway, T., ``Object Oriented Amiga EXEC,''
                           BYTE, vol. 16,issue 1, pp. 329--334, January
                           1991.


[Jacobson 1990]            Jacobson, V., ``Compressing TCP/IP Headers for
                           Low-speed Serial Links,'' RFC 1144, 43 p.


[Leffler et al 1989]       Leffler, S. J.,McKusick, M. K., Karels, M. J.
                           and Quarterman,J. S., The Design and
                           Implementationof the 4.3BSD UNIX Operating
                           System, Addison--Wesley 471 p.


[Leffler et al 1991a]      Leffler, S. J.,Fabry, R. S., Joy, W. N.,
                           Lapsley, P., Miller, S., Torek, C., ``An
                           Advanced 4.3BSDInterprocess Communication
                           Tutorial'' UNIXProgrammer's Supplementary
                           Documents (PS1), net/2 Berkeley Software
                           Distribution, Computer Systems Research Group,
                           Univ. of California, Berkeley, 53 p.


[Leffler et al 1991b]      Leffler, S. J.,Joy, W. N., Fabry, R. S. and
                           Karels, M. J.,``Networking Implementation
                           Notes, 4.3BSD Edition,'' UNIX System Manager's
                           Manual (SMM), net/2 Berkeley Software
                           Distribution, Computer Systems Research Group,
                           Computer Science Division, Univ. of California,
                           Berkeley, 26 p.


[Plummer 1982]             Plummer, D. C.,``An Ethernet Address Resolution
                           Protocol,'' RFC826, 10 p.



                                      209


210    Section D.1                 AmiTCP/IP                  System Manual



[Postel 1980]              Postel, J., ``User Datagram Protocol,'' RFC 768,
                           3 p.

[Postel 1981a]             Postel, J. ed.,``Internet Protocol,'' RFC 791,
                           45 p.

[Postel 1981b]             Postel, J., ``Internet Control Message
                           Protocol,'' RFC792, 21 p.

[Postel 1981c]             Postel, J. ed.,``Transmission Control
                           Protocol,'' RFC793, 85 p.

[Raymond 1992]             Raymond, Eric ed., ``The Jargon File 2.9.9'',
                           the on-line hacker Jargon File, version 2.9.9,
                           01 APR 1992.

[Reynolds 1990]            Reynolds, JoyceK., ``Assigned Numbers'', RFC
                           1060, 86 p.

[RKM Libs & Devs 1989]     Commodore--Amiga Inc., Amiga ROM Kernel
                           Reference Manual:   Librariesand Devices,
                           Addison Wesley,956 p.

[RKM Libraries 1992]       Commodore--Amiga Inc., Amiga ROM Kernel
                           Reference Manual:   Libraries, 3rd ed., Addison
                           Wesley, 967 p.

[RKM Inc & ADoc 1992]      Commodore--Amiga Inc., Amiga ROM Kernel
                           Reference Manual:   Includes& AutoDocs, 3rd ed.,
                           Addison Wesley,471 p.

[SANA-II 1992]             Amiga Networking Group, ``SANA-II Network Device
                           Driver Specification - Rev 1.0 23-Apr-92,''
                           published at Fred Fish-collection disk#673.

[SANA-II 1992 add]         Amiga Networking Group, ``Addenda to SANA-II
                           Network DeviceDriver Specification,'' published
                           at SANA-II Developer Support Package, May 21,
                           1992.

[Stevens 1990]             Stevens, W., R., UNIX network programming,
                           Prentice Hall,772 p.

[Winsock 1992]             Hall, M., Towfiq, M., Arnold, G., Trendwell, D.,
                           Sanders, H., ``Windows Sockets An Open Interface
                           for Network Programming under Microsoft Windows
                           Version 1.0 Rev.A'' 11 June, 1992, 124 p.


   The RFC documents are stored online on nic.ddn.mil, from where they can
be downloaded with anonymous FTP. The file /rfc/rfc-index.txt contains
index to all published RFCs.
   The BSD documents are carried by many FTP sites, for example
nic.funet.fi.
