1The isdn diversion services are a supporting module working together with
   2the isdn4linux and the HiSax module for passive cards. 
   3Active cards, TAs and cards using a own or other driver than the HiSax 
   4module need to be adapted to the HL<->LL interface described in a separate 
   5document. The diversion services may be used with all cards supported by 
   6the HiSax driver.
   7The diversion kernel interface and controlling tool divertctrl were written
   8by Werner Cornelius ( or under the
   9GNU General Public License.
  11    This program is free software; you can redistribute it and/or modify
  12    it under the terms of the GNU General Public License as published by
  13    the Free Software Foundation; either version 2 of the License, or
  14    (at your option) any later version.
  16    This program is distributed in the hope that it will be useful,
  17    but WITHOUT ANY WARRANTY; without even the implied warranty of
  19    GNU General Public License for more details.
  21    You should have received a copy of the GNU General Public License
  22    along with this program; if not, write to the Free Software
  23    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  25Table of contents
  281. Features of the i4l diversion services 
  29   (Or what can the i4l diversion services do for me)
  312. Required hard- and software
  333. Compiling, installing and loading/unloading the module  
  34   Tracing calling and diversion information 
  364. Tracing calling and diversion information
  385. Format of the divert device ASCII output
  411. Features of the i4l diversion services 
  42   (Or what can the i4l diversion services do for me)
  44   The i4l diversion services offers call forwarding and logging normally 
  45   only supported by isdn phones. Incoming calls may be diverted 
  46   unconditionally (CFU), when not reachable (CFNR) or on busy condition 
  47   (CFB). 
  48   The diversions may be invoked statically in the providers exchange
  49   as normally done by isdn phones. In this case all incoming calls
  50   with a special (or all) service identifiers are forwarded if the 
  51   forwarding reason is met. Activated static services may also be 
  52   interrogated (queried).
  53   The i4l diversion services additionally offers a dynamic version of
  54   call forwarding which is not preprogrammed inside the providers exchange
  55   but dynamically activated by i4l.
  56   In this case all incoming calls are checked by rules that may be
  57   compared to the mechanism of ipfwadm or ipchains. If a given rule matches
  58   the checking process is finished and the rule matching will be applied
  59   to the call.
  60   The rules include primary and secondary service identifiers, called 
  61   number and subaddress, callers number and subaddress and whether the rule
  62   matches to all filtered calls or only those when all B-channel resources
  63   are exhausted.
  64   Actions that may be invoked by a rule are ignore, proceed, reject, 
  65   direct divert or delayed divert of a call.
  66   All incoming calls matching a rule except the ignore rule a reported and
  67   logged as ASCII via the proc filesystem (/proc/net/isdn/divert). If proceed
  68   is selected the call will be held in a proceeding state (without ringing)
  69   for a certain amount of time to let an external program or client decide
  70   how to handle the call. 
  732. Required hard- and software
  75   For using the i4l diversion services the isdn line must be of a EURO/DSS1
  76   type. Additionally the i4l services only work together with the HiSax 
  77   driver for passive isdn cards. All HiSax supported cards may be used for
  78   the diversion purposes.
  79   The static diversion services require the provider having static services
  80   CFU, CFNR, CFB activated on an MSN-line. The static services may not be 
  81   used on a point-to-point connection. Further the static services are only
  82   available in some countries (for example germany). Countries requiring the 
  83   keypad protocol for activating static diversions (like the netherlands) are
  84   not supported but may use the tty devices for this purpose.
  85   The dynamic diversion services may be used in all countries if the provider
  86   enables the feature CF (call forwarding). This should work on both MSN- and
  87   point-to-point lines.
  88   To add and delete rules the additional divertctrl program is needed. This
  89   program is part of the isdn4kutils package.   
  913. Compiling, installing and loading/unloading the module  
  92   Tracing calling and diversion information 
  95   To compile the i4l code with diversion support you need to say yes to the 
  96   DSS1 diversion services when selecting the i4l options in the kernel 
  97   config (menuconfig or config).
  98   After having properly activated a make modules and make modules_install all
  99   required modules will be correctly installed in the needed modules dirs.
 100   As the diversion services are currently not included in the scripts of most
 101   standard distributions you will have to add a "insmod dss1_divert" after
 102   having loaded the global isdn module.
 103   The module can be loaded without any command line parameters.
 104   If the module is actually loaded and active may be checked with a 
 105   "cat /proc/modules" or "ls /proc/net/isdn/divert". The divert file is 
 106   dynamically created by the diversion module and removed when the module is
 107   unloaded.
 1104. Tracing calling and diversion information
 112   You also may put a "cat /proc/net/isdn/divert" in the background with the
 113   output redirected to a file. Then all actions of the module are logged.
 114   The divert file in the proc system may be opened more than once, so in 
 115   conjunction with inetd and a small remote client on other machines inside
 116   your network incoming calls and reactions by the module may be shown on 
 117   every listening machine. 
 118   If a call is reported as proceeding an external program or client may 
 119   specify during a certain amount of time (normally 4 to 10 seconds) what
 120   to do with that call.      
 121   To unload the module all open files to the device in the proc system must
 122   be closed. Otherwise the module (and isdn.o) may not be unloaded. 
 1245. Format of the divert device ASCII output
 126   To be done later