This file contains a very short introduction to the IPX implementation
on Linux.  Feel free to forward comments (especially suggested additions)
to greg@caldera.com.

Thanks
Greg Page
Caldera, Inc.

The following are important definitions in understanding the descriptions
in this README file.

IPX Interface - This is the item to which IPX sockets are bound.
An IPX interface corresponds to an IPX Network Number which corresponds 
to a physical device and frame type.  A sample IPX Interface would be:
Network Number: 0x00ABCDEF
Device: Eth0 
Frame Type: 802.2.
The particular interface is selected during binding by using the
Network Number (see sample code).

Primary Interface - The interface that is selected by default when
binding a socket.  This is selected when binding by using
an IPX Network Number of 0 (see sample code).

Internal Network - This is a special kind of IPX interface that does
not have a physical device or frame type.  It is used to provide
a route-independent address for service providers.   Internal Networks
are optional; however, when one is present it is also the
Primary Interface.

This tar file contains the following IPX utilities:

ipx_interface.c
This program is used to create an IPX interface.  

For example:
ipx_interface add -p eth0 802.2 2A
creates a new interface on Device "eth0", Frame Type 802.2 with Network 
Number 2A.  If the 2A had been left off it would have created the
interface with network 0 which indicates it should passively determine
the network number by sensing IPX traffic.

ipx_interface del eth0 802.2 
deletes the interface created above.

ipx_internal_net.c
This program is used to create an IPX Internal Network.  
For example:
ipx_internal_net add 2A 1 
creates an internal network interface with network number 2A and node 
number of 000000000001.
ipx_internal_net del
deletes the internal network.  Note: there can only be one internal network
interface on a particular host.

ipx_route.c
This program creates an IPX route.

For example:
ipx_route add 2A 4B ABABABABABAB 
creates a route to network 2A via node 4B:ABABABABABAB.
ipx_route del 2A
deletes the route created above.

ipx_configure.c
This program is used to read/write two configuration parameters:
	AUTO INTERFACE CREATE - IPX should/shouldn't automatically create
		an IPX interface when it discovers one that has not been
		registered via ipx_interface above.
	AUTO PRIMARY SELECT - IPX should/shouldn't automatically select
		a primary interface when it one an interface exists and
		none are designated as the primary.  Manual designation
		is performed via ipx_interface.

By default, these are both turned off.

For example:
ipx_configure --auto_primary=on --auto_interface=on 
turns on both of these parameters.
				
The following are sample IPX programs:

ipxrcv.c and ipxsend.c 
ipxsend will send a single packet to an instance of ipxrcv running on the 
same machine.  It uses getsockname(2) to determine the address to which to 
send the packet.  
rip.c
rip passively monitors the rip traffic on the attached IPX network.

There are three files in /proc/net that relate to IPX.
ipx_interface contains the list of IPX interfaces.
ipx_route contains the list of IPX routes.
ipx contains the list of IPX sockets in use.
