------------------------------------------------------------------------------
Linux WAN Router Utilities Package
------------------------------------------------------------------------------
Version 2.2.1 
Mar 28, 2001
Author: Nenad Corbic <ncorbic@sangoma.com>
Copyright (c) 1995-2001 Sangoma Technologies Inc.
------------------------------------------------------------------------------

INTRODUCTION

Wide Area Networks (WANs) are used to interconnect Local Area Networks (LANs)
and/or stand-alone hosts over vast distances with data transfer rates
significantly higher than those achievable with commonly used dial-up
connections.

Usually an external device called `WAN router' sitting on your local network
or connected to your machine's serial port provides physical connection to
WAN.  Although router's job may be as simple as taking your local network
traffic, converting it to WAN format and piping it through the WAN link, these
devices are notoriously expensive, with prices as much as 2 - 5 times higher
then the price of a typical PC box.

Alternatively, considering robustness and multitasking capabilities of Linux,
an internal router can be built (most routers use some sort of stripped down
Unix-like operating system anyway). With a number of relatively inexpensive WAN
interface cards available on the market, a perfectly usable router can be
built for less than half a price of an external router.  Yet a Linux box
acting as a router can still be used for other purposes, such as fire-walling,
running FTP, WWW or DNS server, etc.

This kernel module introduces the notion of a WAN Link Driver (WLD) to Linux
operating system and provides generic hardware-independent services for such
drivers.  Why can existing Linux network device interface not be used for
this purpose?  Well, it can.  However, there are a few key differences between
a typical network interface (e.g. Ethernet) and a WAN link.

Many WAN protocols, such as X.25 and frame relay, allow for multiple logical
connections (known as `virtual circuits' in X.25 terminology) over a single
physical link.  Each such virtual circuit may (and almost always does) lead
to a different geographical location and, therefore, different network.  As a
result, it is the virtual circuit, not the physical link, that represents a
route and, therefore, a network interface in Linux terms.

To further complicate things, virtual circuits are usually volatile in nature
(excluding so called `permanent' virtual circuits or PVCs).  With almost no
time required to set up and tear down a virtual circuit, it is highly desirable
to implement on-demand connections in order to minimize network charges.  So
unlike a typical network driver, the WAN driver must be able to handle multiple
network interfaces and cope as multiple virtual circuits come into existence
and go away dynamically.
 
Last, but not least, WAN configuration is much more complex than that of say
Ethernet and may well amount to several dozens of parameters.  Some of them
are "link-wide"  while others are virtual circuit-specific.  The same holds
true for WAN statistics which is by far more extensive and extremely useful
when troubleshooting WAN connections.  Extending the ifconfig utility to suit
these needs may be possible, but does not seem quite reasonable.  Therefore, a
WAN configuration utility and corresponding application programmer's interface
is needed for this purpose.

Most of these problems are taken care of by this module.  Its goal is to
provide a user with more-or-less standard look and feel for all WAN devices and
assist a WAN device driver writer by providing common services, such as:

 o User-level interface via /proc file system
 o Centralized configuration
 o Device management (setup, shutdown, etc.)
 o Network interface management (dynamic creation/destruction)
 o Protocol encapsulation/decapsulation

To ba able to use the Linux WAN Router you will also need a WAN Tools package
available from

	ftp.sangoma.com/pub/linux/current_wanpipe/wanpipe-X.Y.Z.tgz

where vX.Y.Z represent the wanpipe version number.

For technical questions and/or comments please e-mail to ncorbic@sangoma.com.
For general inquiries please contact Sangoma Technologies Inc. by

	Hotline:	1-800-388-2475	(USA and Canada, toll free)
	Phone:		(905) 474-1990  ext: 106
	Fax:		(905) 474-9223
	E-mail:		dm@sangoma.com	(David Mandelstam)
	WWW:		http://www.sangoma.com


INSTALLATION

Please read the WanpipeForLinux.pdf manual on how to 
install the WANPIPE tools and drivers properly. 


After installing wanpipe package: /usr/local/wanrouter/doc. 
On the ftp.sangoma.com : /linux/current_wanpipe/doc


COPYRIGHT AND LICENSING INFORMATION

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 675 Mass
Ave, Cambridge, MA 02139, USA.



ACKNOWLEDGEMENTS

This product is based on the WANPIPE(tm) Multiprotocol WAN Router developed
by Sangoma Technologies Inc. for Linux 2.0.x and 2.2.x.  Success of the WANPIPE
together with the next major release of Linux kernel in summer 1996 commanded
adequate changes to the WANPIPE code to take full advantage of new Linux
features.

Instead of continuing developing proprietary interface tied to Sangoma WAN
cards, we decided to separate all hardware-independent code into a separate
module and defined two levels of interfaces - one for user-level applications
and another for kernel-level WAN drivers.  WANPIPE is now implemented as a
WAN driver compliant with the WAN Link Driver interface.  Also a general
purpose WAN configuration utility and a set of shell scripts was developed to 
support WAN router at the user level.

Many useful ideas concerning hardware-independent interface implementation
were given by Mike McLagan <mike.mclagan@linux.org> and his implementation
of the Frame Relay router and drivers for Sangoma cards (dlci/sdla).

With the new implementation of the APIs being incorporated into the WANPIPE,
a special thank goes to Alan Cox in providing insight into BSD sockets.

Special thanks to all the WANPIPE users who performed field-testing, reported
bugs and made valuable comments and suggestions that help us to improve this
product.



NEW IN THIS RELEASE

	o Updated the WANCFG utility
		Calls the pppconfig to configure the PPPD
		for async connections.

	o Added the PPPCONFIG utility
		Used to configure the PPPD dameon for the
		WANPIPE Async PPP and standard serial port.
		The wancfg calls the pppconfig to configure
		the pppd.

	o Fixed the PCI autodetect feature.  
		The SLOT 0 was used as an autodetect option
		however, some high end PC's slot numbers start
		from 0. 

	o This release has been tested with the new backupd
	  daemon release.
	

PRODUCT COMPONENTS AND RELATED FILES

/etc: (or user defined)
	wanpipe1.conf	default router configuration file

/lib/modules/X.Y.Z/misc:
	wanrouter.o	router kernel loadable module
	af_wanpipe.o	wanpipe api socket module

/lib/modules/X.Y.Z/net:
	sdladrv.o	Sangoma SDLA support module
	wanpipe.o	Sangoma WANPIPE(tm) driver module

/proc/net/wanrouter
	Config		reads current router configuration
	Status		reads current router status
	{name}		reads WAN driver statistics

/usr/sbin:
	wanrouter	wanrouter start-up script
	wanconfig	wanrouter configuration utility
	sdladump	WANPIPE adapter memory dump utility
        fpipemon        Monitor for Frame Relay
        cpipemon        Monitor for Cisco HDLC
	ppipemon 	Monitor for PPP
	xpipemon 	Monitor for X25
	wpkbdmon        WANPIPE keyboard led monitor/debugger

/usr/local/wanrouter:
	README		this file
	COPYING		GNU General Public License
	Setup		installation script
	Filelist	distribution definition file
	wanrouter.rc	meta-configuration file 
			(used by the Setup and wanrouter script)

/usr/local/wanrouter/doc:
	wanpipeForLinux.pdf 	WAN Router User's Manual

/usr/local/wanrouter/patches:
	wanrouter-v2213.gz  	patch for Linux kernels 2.2.11 up to 2.2.13.
	wanrouter-v2214.gz	patch for Linux kernel 2.2.14. 
	wanrouter-v2215.gz	patch for Linux kernels 2.2.15 to 2.2.17.
	wanrouter-v2218.gz	patch for Linux kernels 2.2.18 and up.
	wanrouter-v240.gz	patch for Linux kernel 2.4.0.  
	wanrouter-v242.gz	patch for Linux kernel 2.4.2 and up.
	wanrouter-v2034.gz	patch for Linux kernel 2.0.34
	wanrouter-v2036.gz 	patch for Linux kernel 2.0.36 and up. 

/usr/local/wanrouter/patches/kdrivers:
	Sources of the latest WANPIPE device drivers.
	These are used to UPGRADE the linux kernel to the newest
	version if the kernel source has already been pathced with
	WANPIPE drivers.

/usr/local/wanrouter/samples:
	interface	sample interface configuration file
	wanpipe1.cpri 	CHDLC primary port
     	wanpipe2.csec 	CHDLC secondary port
     	wanpipe1.fr   	Frame Relay protocol
     	wanpipe1.ppp  	PPP protocol ) 
	wanpipe1.asy	CHDLC ASYNC protocol
	wanpipe1.x25	X25 protocol
	wanpipe1.stty	Sync TTY driver (Used by Kernel PPPD daemon)
	wanpipe1.atty	Async TTY driver (Used by Kernel PPPD daemon)
	wanrouter.rc	sample meta-configuration file

/usr/local/wanrouter/util:
	*		wan-tools utilities source code

/usr/local/wanrouter/api/x25:
	*		x25 api sample programs.
/usr/local/wanrouter/api/chdlc:
	*		chdlc api sample programs.
/usr/local/wanrouter/api/fr:
	*		fr api sample programs.
/usr/local/wanrouter/config/wancfg:
	wancfg		WANPIPE GUI configuration program.
                        Creates wanpipe#.conf files. 
/usr/local/wanrouter/config/cfgft1:
	cfgft1		GUI CSU/DSU configuration program.

/usr/include/linux:
	wanrouter.h	router API definitions
	wanpipe.h	WANPIPE API definitions
	sdladrv.h	SDLA support module API definitions
	sdlasfm.h	SDLA firmware module definitions
	if_wanpipe.h	WANPIPE Socket definitions
	if_wanpipe_common.h	WANPIPE Socket/Driver common definitions.
	sdlapci.h	WANPIPE PCI definitions
	

/usr/src/linux/net/wanrouter:
	*		wanrouter source code

/var/log:
	wanrouter	wanrouter start-up log (created by the Setup script)

/var/lock:  (or /var/lock/subsys for RedHat)
	wanrouter	wanrouter lock file (created by the Setup script)

/usr/local/wanrouter/firmware:
	fr514.sfm	Frame relay firmware for Sangoma S508/S514 card
	cdual514.sfm	Dual Port Cisco HDLC firmware for Sangoma S508/S514 card
	ppp514.sfm      PPP Firmware for Sangoma S508 and S514 cards
	x25_508.sfm	X25 Firmware for Sangoma S508 card.


REVISION HISTORY

1.0.0	December 31, 1996	Initial version

1.0.1	January 30, 1997	Status and statistics can be read via /proc
				filesystem entries.

1.0.2   April 30, 1997          Added UDP management via monitors.

1.0.3	June 3, 1997		UDP management for multiple boards using Frame
				Relay and PPP
				Enabled continuous transmission of Configure 
				Request Packet for PPP (for 508 only)
				Connection Timeout for PPP changed from 900 to 0
				Flow Control Problem fixed for Frame Relay

1.0.4	July 10, 1997		S508/FT1 monitoring capability in fpipemon and
				ppipemon utilities.
				Configurable TTL for UDP packets.
				Multicast and Broadcast IP source addresses are
				silently discarded.

1.0.5	July 28, 1997		Configurable T391,T392,N391,N392,N393 for Frame
				Relay in router.conf.
				Configurable Memory Address through router.conf 
				for Frame Relay, PPP and X.25. (commenting this
 				out enables auto-detection).
				Fixed freeing up received buffers using kfree()
 				for Frame Relay and X.25.
				Protect sdla_peek() by calling save_flags(),
				cli() and restore_flags().
				Changed number of Trace elements from 32 to 20
				Added DLCI specific data monitoring in FPIPEMON. 
2.0.0	Nov 07, 1997		Implemented protection of RACE conditions by 
				critical flags for FRAME RELAY and PPP.
				DLCI List interrupt mode implemented.
				IPX support in FRAME RELAY and PPP.
				IPX Server Support (MARS)
				More driver specific stats included in FPIPEMON
				and PIPEMON.

2.0.1	Nov 28, 1997		Bug Fixes for version 2.0.0.
				Protection of "enable_irq()" while 
				"disable_irq()" has been enabled from any other
				routine (for Frame Relay, PPP and X25).
				Added additional Stats for Fpipemon and Ppipemon
				Improved Load Sharing for multiple boards

2.0.2	Dec 09, 1997		Support for PAP and CHAP for ppp has been
				implemented.

2.0.3	Aug 15, 1998		New release supporting Cisco HDLC, CIR for Frame
				relay, Dynamic IP assignment for PPP and Inverse
				Arp support for Frame-relay.  Man Pages are 
				included for better support and a new utility
				for configuring FT1 cards.

2.0.4	Dec 09, 1998	        Dual Port support for Cisco HDLC.
				Support for HDLC (LAPB) API.
				Supports BiSync Streaming code for S502E 
				and S503 cards.
				Support for Streaming HDLC API.
				Provides a BSD socket interface for 
				creating applications using BiSync
   				streaming.        

2.0.5   Aug 04, 1999 		CHDLC initializatin bug fix.
				PPP interrupt driven driver: 
  				Fix to the PPP line hangup problem.
				New PPP firmware
				Added comments to the startup SYSTEM ERROR messages
				Xpipemon debugging application for the X25 protocol
				New USER_MANUAL.txt
				Fixed the odd boundary 4byte writes to the board.
				BiSync Streaming code has been taken out.  
				 Available as a patch.
				Streaming HDLC API has been taken out.  
				 Available as a patch.                 

2.0.6   Aug 17, 1999		Increased debugging in statup scripts
				Fixed insallation bugs from 2.0.5
				Kernel patch works for both 2.2.10 and 2.2.11 kernels.
				There is no functional difference between the two packages         

2.0.7   Aug 26, 1999		o  Merged X25API code into WANPIPE.
				o  Fixed a memory leak for X25API
				o  Updated the X25API code for 2.2.X kernels.
				o  Improved NEM handling.   

2.1.0	Oct 25, 1999		o New code for S514 PCI Card
				o New CHDLC and Frame Relay drivers
				o PPP and X25 are not supported in this release    

2.1.1	Nov 30, 1999		o PPP support for S514 PCI Cards

2.1.3   Apr 06, 2000		o Socket based x25api 
				o Socket based chdlc api
				o Socket based fr api
				o Dual Port Receive only CHDLC support.
				o Asynchronous CHDLC support (Secondary Port)
				o cfgft1 GUI csu/dsu configurator
				o wancfg GUI configuration file 
				  configurator.
				o Architectual directory changes.

beta-2.1.4 Jul 2000		o Dynamic interface configuration:
					Network interfaces reflect the state
					of protocol layer.  If the protocol becomes
					disconnected, driver will bring down
					the interface.  Once the protocol reconnects
					the interface will be brought up. 
					
					Note: This option is turned off by default.

				o Dynamic wanrouter setup using 'wanconfig':
					wanconfig utility can be used to
					shutdown,restart,start or reconfigure 
					a virtual circuit dynamically.
				     
					Frame Relay:  Each DLCI can be: 
						      created,stopped,restarted and reconfigured
						      dynamically using wanconfig.
					
						      ex: wanconfig card wanpipe1 dev wp1_fr16 up
				  
				o Wanrouter startup via command line arguments:
					wanconfig also supports wanrouter startup via command line
					arguments.  Thus, there is no need to create a wanpipe#.conf
					configuration file.  

				o Socket based x25api update/bug fixes.
					Added support for LCN numbers greater than 255.
					Option to pass up modem messages.
					Provided a PCI IRQ check, so a single S514
					card is guaranteed to have a non-sharing interrupt.

				o Fixes to the wancfg utility.
				o New FT1 debugging support via *pipemon utilities.
				o Frame Relay ARP support Enabled.

beta3-2.1.4 Jul 2000		o X25 M_BIT Problem fix.
				o Added the Multi-Port PPP
				  Updated utilites for the Multi-Port PPP.

2.1.4	Aut 2000
				o In X25API:
					Maximum packet an application can send
					to the driver has been extended to 4096 bytes.

					Fixed the x25 startup bug. Enable 
					communications only after all interfaces
					come up.  HIGH SVC/PVC is used to calculate
					the number of channels.
					Enable protocol only after all interfaces
					are enabled.

				o Added an extra state to the FT1 config, kernel module.
				o Updated the pipemon debuggers.

				o Blocked the Multi-Port PPP from running on kernels
				  2.2.16 or greater, due to syncppp kernel module
				  change. 
	  
beta1-2.1.5 	Nov 15 2000
				o Fixed the MulitPort PPP Support for kernels 2.2.16 and above.
				  2.2.X kernels only

				o Secured the driver UDP debugging calls
					- All illegal netowrk debugging calls are reported to
					  the log.
					- Defined a set of allowed commands, all other denied.
					
				o Cpipemon
					- Added set FT1 commands to the cpipemon. Thus CSU/DSU
					  configuraiton can be performed using cpipemon.
					  All systems that cannot run cfgft1 GUI utility should
					  use cpipemon to configure the on board CSU/DSU.


				o Keyboard Led Monitor/Debugger
					- A new utilty /usr/sbin/wpkbdmon uses keyboard leds
					  to convey operatinal statistic information of the 
					  Sangoma WANPIPE cards.
					NUM_LOCK    = Line State  (On=connected,    Off=disconnected)
					CAPS_LOCK   = Tx data     (On=transmitting, Off=no tx data)
					SCROLL_LOCK = Rx data     (On=receiving,    Off=no rx data
					
				o Hardware probe on module load and dynamic device allocation
					- During WANPIPE module load, all Sangoma cards are probed
					  and found information is printed in the /var/log/messages.
					- If no cards are found, the module load fails.
					- Appropriate number of devices are dynamically loaded 
					  based on the number of Sangoma cards found.

					  Note: The kernel configuraiton option 
						CONFIG_WANPIPE_CARDS has been taken out.
					
				o Fixed the Frame Relay and Chdlc network interfaces so they are
				  compatible with libpcap libraries.  Meaning, tcpdump, snort,
				  ethereal, and all other packet sniffers and debuggers work on
				  all WANPIPE netowrk interfaces.
					- Set the network interface encoding type to ARPHRD_PPP.
					  This tell the sniffers that data obtained from the
					  network interface is in pure IP format.
				  Fix for 2.2.X kernels only.
				
				o True interface encoding option for Frame Relay and CHDLC
					- The above fix sets the network interface encoding
					  type to ARPHRD_PPP, however some customers use
					  the encoding interface type to determine the
					  protocol running.  Therefore, the TURE ENCODING
					  option will set the interface type back to the
					  original value.  

					  NOTE: If this option is used with Frame Relay and CHDLC
						libpcap library support will be broken.  
						i.e. tcpdump will not work.
					Fix for 2.2.x Kernels only.
						
				o Ethernet Bridgind over Frame Relay
					- The Frame Relay bridging has been developed by 
					  Kristian Hoffmann and Mark Wells.  
					- The Linux kernel bridge is used to send ethernet 
					  data over the frame relay links.
					For 2.2.X Kernels only.

				o Added extensive 2.0.X support. Most new features of
				  2.1.5 for protocols Frame Relay, PPP and CHDLC are
				  supported under 2.0.X kernels. 

beta1-2.2.0 	Dec 30 2000
				o Updated drivers for 2.4.X kernels.
				o Updated drivers for SMP support.
				o X25API is now able to share PCI interrupts.
				o Took out a general polling routine that was used
				  only by X25API. 
				o Added appropriate locks to the dynamic reconfiguration
				  code.
				o Fixed a bug in the keyboard debug monitor.

beta2-2.2.0	Jan 8 2001
				o Patches for 2.4.0 kernel
				o Patches for 2.2.18 kernel
				o Minor updates to PPP and CHLDC drivers.
				  Note: No functional difference.

beta3-2.2.9	Jan 10 2001
				o I missed the 2.2.18 kernel patches in beta2-2.2.0
				  release.  They are included in this release.

Stable Release
2.2.0		Feb 01 2001
				o Bug fix in wancfg GUI configurator.
					The edit function didn't work properly.


bata1-2.2.1	Feb 09 2001
			o WANPIPE TTY Driver emulation. 
			  Two modes of operation Sync and Async.
				Sync: Using the PPPD daemon, kernel SyncPPP layer
				      and the Wanpipe sync TTY driver: a PPP protocol 
				      connection can be established via Sangoma adapter, over
				      a T1 leased line.
			
				      The 2.4.0 kernel PPP layer supports MULTILINK
				      protocol, that can be used to bundle any number of Sangoma
				      adapters (T1 lines) into one, under a single IP address.
				      Thus, efficiently obtaining multiple T1 throughput. 

				      NOTE: The remote side must also implement MULTILINK PPP
					    protocol.

				Async:Using the PPPD daemon, kernel AsyncPPP layer
				      and the WANPIPE async TTY driver: a PPP protocol
				      connection can be established via Sangoma adapter and
				      a modem, over a telephone line.

				      Thus, the WANPIPE async TTY driver simulates a serial
				      TTY driver that would normally be used to interface the 
				      MODEM to the linux kernel.
				
			o WANPIPE PPP Backup Utility
				This utility will monitor the state of the PPP T1 line.
				In case of failure, a dial up connection will be established
				via pppd daemon, ether via a serial tty driver (serial port), 
				or a WANPIPE async TTY driver (in case serial port is unavailable).
				
				Furthermore, while in dial up mode, the primary PPP T1 link
				will be monitored for signs of life.  

				If the PPP T1 link comes back to life, the dial up connection
				will be shutdown and T1 line re-established.
			

			o New Setup installation script.
				Option to UPGRADE device drivers if the kernel source has
				already been patched with WANPIPE.

				Option to COMPILE WANPIPE modules against the currently 
				running kernel, thus no need for manual kernel and module
				re-compilatin.
			
			o Updates and Bug Fixes to wancfg utility.

bata2-2.2.1	Feb 20 2001

			o Bug fixes to the CHDLC device drivers.
				The driver had compilation problems under kernels
				2.2.14 or lower.

			o Bug fixes to the Setup installation script.
				The device drivers compilation options didn't work
				properly.

			o Update to the wpbackupd daemon.  
				Optimized the cross-over times, between the primary
				link and the backup dialup.

beta3-2.2.1	Mar 02 2001
			o Patches for 2.4.2 kernel.

			o Bug fixes to util/ make files.
			o Bug fixes to the Setup installation script.

			o Took out the backupd support and made it into
			  as separate package.
			  
beta4-2.2.1     Mar 12 2001

		o Fix to the Frame Relay Device driver.
			IPSAC sends a packet of zero length
			header to the frame relay driver.  The
			driver tries to push its own 2 byte header
			into the packet, which causes the driver to
			crash.

		o Fix the WANPIPE re-configuration code.
			Bug was found by trying to run  the cfgft1 while the
			interface was already running.  

		o Updates to cfgft1.
			Writes a wanpipe#.cfgft1 configuration file
			once the CSU/DSU is configured. This file can
			holds the current CSU/DSU configuration.



>>>>>> END OF README <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


