
          ISPA Version 3.0.3, a Packet-Driver for ISDN-API 1.1.

                 Herbert Hanewinkel, February 1995



    ISPA is Shareware.

    ISPA, as it is provided, is a demo version.
    To make use of the full functionality of ISPA you have to register ISPA.
    The basic registration fee for a single user version of ISPA is DM 30,-
    for private users and DM 50,- for commercial and institutional users.
    Please read the file "ispa.reg" for details.

    As long as you have NOT registered ISPA you may test ISPA using a ? in
    place of the registration code. In this case ISPA will stop forwarding
    data after 10 min.


    Disclaimer

    The program and this documentation is
    Copyright (C) 1993-1995 by Herbert Hanewinkel,
    All Rights Reserved.

    It is provided as shareware with the following limitations:

         This program is copyrighted and it is not in the public
         domain. It may not be distributed for profit or included
         in any CD-ROM or diskette software collection without
         permission. This applies in particular to commercial PD
         libraries. The program is not to be resold or distributed
         for sale with other programs which are for sale.
         There is no warranty or claim of fitness or reliability.
         The program is distributed AS IS, and as such the author
         shall NOT be held liable for any loss of data, down  time,
         loss of revenue or any other direct or indirect damage or
         claims caused by this program.

         If you are a distributor of ISDN products and would like
         to sell registered versions of this software with printed
         hardcopy manuals, please contact me. You may not bundle or
         otherwise distribute this software with any other software
         without my express written permission (i.e., on the same
         diskettes as part of a commercial package, compressed
         along with other software, etc.).


    Overview

    ISPA is an ethernet-type (class=1) packet-driver for IP-Routing or
    remote Ethernet bridging over ISDN. ISPA communicates with the ISDN
    card using the ISDN API 1.1 specification (a standard defined by
    German ISDN card manufacturers and the German Telekom). Because of
    this, ISPA is completely hardware independent and has successfully
    been tested with many active or passive ISDN cards.

    ISPA supports a large set of protocols for communication with other
    vendors ISDN routers or servers. Among these protocols are:
    LAPB, Frame-Relay, PPP, SLIP, Cisco-HDLC.
    ISPA can communicate at least with the following commercial systems:
    Ascend Routers, Biodata ISDN Router, Cisco Routers, INS/CLS Banzai
    ISDN Router, netISDN ISDN Router, RzK SLIP Bridge, SGI Indy ISDN 1.0,
    Spyder Routers, SunLink ISDN 1.0.

    ISPA was initialy developed for use with PCROUTE as a cheap Ethernet-ISDN
    Router. However, it is more and more used to connect a standalone
    system to the Internet using ISDN. ISPA has been succesfully tested
    with a wide range of commercial, shareware and public domain TCP/IP
    packages e.g. Ftp PCTCP, Sun PC-NFS, Novells LanWorkPlace and PDTEHER,
    WATTCP based IP programs, NCSA & CU -Telnet/ftp, UMN gopher & popmail,
    Trumpet WINSOCK.

    ISPA was written for use with ISDN BRI PC cards. I myself have
    used ISPA only with Teles.S0, one of the cheapest ISDN cards in
    Germany, and tested ISPA successfully with NCP cards. But I got
    responses from users of ISPA that it will work at least with the
    following other ISDN cards:
    AVM A1 & B1, Diehl SCOM & SoTec, miro, NCP p16 & a, NICCY 1000 PC,
    mbp Solis. (Check the *.comment files if you are looking for
    details on a specific environment).

    The current version of ISPA supports two independent active connections
    at a time. Alternativly a connection can use both B-channels for
    loadsharing. ISPA can be loaded more than once, if more than two
    simultanous connections to different sites are desired.
    Loadsharing can be configured as static or dynamic (bandwith on
    demand). Dynamic loadsharing can be used concurrently with a second
    independent connection.


    Installation

    To load ISPA run ispa.exe with the following arguments:
    (Parameters in [] are optional)

        ispa Reg.-Code PacketInterrupt [ConfigFile]

        "Reg.-code" is your personal registration code you will receive
        after registrating ISPA. As long as you have NOT registered ISPA
        you may test ISPA using a ? in place of the registration code. In
        this case ISPA will stop forwarding data after 10 min.

        "PacketInterrupt" defines the software interrupt for the Packet
        Driver application. The value has to be in the range from 0x60
        to 0x80.

        "ConfigFile" specifies the name of the ISPA initialization file.
	If the name is not given, it defaults to "ISPA.INI".


    ISDN number format and related features of ISPA

        PBX's sometimes require a special key-code for dialing out. If this
        prefix is not displayed on incoming calls, Dialback and CLI will
        normally fail. To solve this problem ISPA supports an outgoing
        call prefix, which is not checked on incoming calls. The prefix
        can be specified in front of each ISDN number separated by a comma.

        Digits, which should not be used in an outgoing call, but have to 
	present for CLI can be marked by a decimal point from the common
	part of the number.

        Examples:
        089.345678 will dial 345678 and will match incoming calls
        from 089345678.
        0,30.123456 will dial 0123456 and will match incoming calls
        from 30123456.
	00,123456789 will dial 00123456789 and will match incoming calls
	from 123456789.

        Subaddresses (available only in Euro ISDN, E-DSS1) can be appended
        to a number by separating them with a /. Only digits are supported
        in a subaddress.

        The total length of number + subaddress is limited to 26 characters.

        A SPV connection (available only in German ISDN, 1TR6) is set up
        by appending an "s" to the end of the ISDN-number. An incoming SPV 
        request is accepted only if the "s" is specified. 

        The CAPI standard doesn't define a standard setup for PVC's.
        Teles, Berlin supports PVC's (Digitale Festverbindungen D64s) using
        a pseudo ISDNnumber "tap" and selecting one of the B-channels.
        ISPA supports this feature of the Teles CAPI implementation and
        allows the selection of a PVC with the specification "1tap" or "2tap",
        depending on the desired channel, for the ISDNnumber.


    The configuration file

	The configuration file consists of the following formal parts:

	[global options]
	[translation entry for incoming calls from numbers not specified]
	[translation entries for incoming and outgoing calls]

	The first section is optional, but there has to be at least one
	of the two types of translation entries.

	The global options control ISPA's overall behaviour. Global
	options can be specified on one or more lines.

	The second and third part consist of translation entries to map
	IP-addresses to ISDN-numbers and to select peer specific parameters
	for these entries.

        The translation entries in the configuration file have two
	functionalities:

        - they act as a translation table for IP routing on outgoing calls
	  by mapping the IP-address of the peer to an ISDNnumber.

        - they are used for calling line identification (CLI) on incoming
	  calls.

        Incoming connections will be accepted only from ISDN-numbers
        specifed in the configuration file. To disable CLI and allow
	incoming calls from any number, the first translation entry has to
	contain a '*' in the common part of ISDNnumber field. For incoming
	calls from ISDNnumbers not otherwise specified, the parameters of
	this entry will be used.

        The translation entries in the file have to be in the following format:

        ip-address ISDNnumber [ISDNnumber2] [options] [# comment]

        "ip-address" defines the IP-address of the peer.
        "ISDNnumber" defines the ISDN-number of the peer.
        "ISDNnumber2" defines a second ISDN-number, when used with loadsharing.
        "options" define the protocol, timeout, ... for this link.

        If the same IP-address appears more than once in the configuration
        file, ISPA will try all corresponding ISDN numbers until a connection
        can be established.

        Attention: If the first entry in the configuration file selects an
        ethernet bridging protocol, the use of the configuration file as a
        translation table for outgoing calls is disabled. All outgoing calls
        will be set up to the first entry. Further entries will be used only
	for CLI of incoming calls.
	ISPA can operate only in routing or bridging mode. You can not
	mix entries with routing and bridging protocols in the configuration
	file.

	ISPA supports IP-address based routing (as it is implemented in
	pcroute) as well as interface based routing of IP packets.

	For IP-applications not supporting IP-address based routing or in
	case of simple point-to-point configurations, a single translation
	entry for outgoing calls may be specified with an IP-address of
	0.0.0.0. In this case no further translation entries for outgoing
	calls are allowed and all IP packets (unicast and broadcast) sent
	from the application are forwarded to the ISDN peer.

	For translation entries having a non zero IP-address only unicast
	IP packets routed via this IP-gateway are forwarded to the 
	corresponding ISDN peer. In this case the IP-address has to match
	the (or one of the) IP-gateway address(es) in your
	IP-configuration of your application software.

        Up to 63 translation entries can be specified in the configuration
        file. Loadsharing entries to two different ISDN numbers allocate
	two entries.
        

    ISPA global options:

    -c n
        selects the ISDN controller (card), n specifies the controller number.
        default: 0

    -i vector
        specifies the software interrupt for communication with the ISDN-API
        software.
        default: 0xf1

    -o
        if ISPA's automatic selection of the video-RAM fails, this option
        can be used to force screen output to the monochrome video-RAM at
        B000:0.

    -e EAZ|index
        German ISDN (1TR6) allows to specify 1 digit subaddress(EAZ).
        This option defines the EAZ used by ISPA to listen for incoming
        calls. EAZ's range from 1 to 9. EAZ 0 means accept all EAZ's.

        For EuroISDN BRI's with MSN (multiple subscriber numbers) this
        option defines an index into a table of local addresses defined
        during installiation of your ISDN-API 1.1 software.
        default: 2

    -k sleep
	specifies the setup time in seconds. ISPA will wait "sleep"
	seconds for a connection to come up. If the connection does not
	reach the active state during this time, ISPA resets the channel.
	default: 5 seconds

    -z days[e]
        forces an automatic restart of the PC after "days"-days, as soon
        as the system becomes idle. "days" should be in the range from 1
        to 2761.
        Appending an "e" to the number of days enables automatic restart
        of the PC if ISPA receives an error from the ISDN API 1.1 software.
        Specifying "0e" enables only reboot on errors.
        default: disabled

    -q
        suppresses any message output on the screen.

    -r lop-ip,my-ip[,interval]
        remote logging on a unix host with a syslogd. Using ISPA with
        IP-router software this option can be used to log all connection
        related messages on a unix host with a berkeley syslogd.
        "log-ip" defines the IP address of the unix host. "my-ip"
        defines the source IP address of syslog messages sent by ISPA (a
        packet driver can not automatically retrieve this information from
        the router).
        If "interval" is specified and a connection is up, a syslog message
        will be sent every "interval"-seconds. "interval" should be a
        multiple of 8, otherwise it is internally rounded up to the next
        multiple of 8.
        Syslog-messages are sent with the characteristics "local0.info".

    -w
        Display activity, state and charge information in the upper right
        corner of the screen.

        /0_\0_A_nnn
        ||||||||  |
        ||||||||  accumulated charge units
        |||||||State of channel 2
        ||||||State of channel 1
        |||||incoming data rate on channel 2 in kB/sec, averaged over 8 seconds
        ||||incoming data rate on channel 1 in kB/sec, averaged over 8 seconds
        |||incoming data, rotates for every received packet
        ||outgoing datarate on channel 2 in kBytes/sec, averaged over 8 seconds
        |outgoing datarate on channel 1 in kBytes/sec, averaged over 8 seconds
        outgoing data, rotates for every transmitted packet

        Status: _ = free, D = D-channel up, C = B-channel requested,
                B = B-channel up, A = connection set up,
        (additional information for PPP:
                L = lcp configuration requested,
                I = lcp up, pap/ipcp configuration requested,
                P = PPP connection up.)

    -u
        Limits ISPA to one active connection at a time. This will reduce
        ISPA's memory requirement by 20kB. Selecting loadsharing (-m)
        overrides this option.

    -j low[,high]
        defines an ethernet type range for ethernet bridging. Ethernet
        packets with type values outside the selected range are discarded.
        This filter applies to all bridging protocols.
        "low" defines the lower boundary. default: 0
        "high" defines the upper boundary. default: 0xffff


    ISPA supported protocols:
    (only one protocol can used for one peer)

    -f dlci[i]
        Frame-relay protocol. "dlci" specifies the data link connection
        identifier. Appending an "i" to the dlci switches encapsulation
        from "early" style to IETF format as described in RFC 1294 (but
	without fragmentation support, a data size of 1500 is assumed). 

    -p
        Point-to-Point protocol using default ppp-parameters.
        Of the possible upper layer protocols, only IP is supported at this
        time.
        From the PPP configuration options PPP PAP is supported in both
        directions. With the -n option a id/password combination can
        be specified for each remote site. With the -g option a local
        id/password can be defined for each peer.
        ISPA accepts the following PPP options from the remote site:
        - LCP MRU requests with values greater or equal to 1500.
        - IPCP IP-ADDRESS requests. The received ip-address can be retrieved
          from an IP application program via RARP.
  
        Additional options for use with PPP. These options have to be 
	specified after the protocol selection option.

        -n id,password
           Id/password combination for the remote PPP site. The
           authentication string is send only, if the remote site requests
           Password authentication during PPP option negotiation.

        -g id,password
           Defines a local id/password combination. Incoming PPP connections
           are accepted only if the remote site sends this id,password
           combination.
     
    -h type
        other HDLC based protocols
        type = 0, IP-Data, no header
        type = 1, IP-Data, X.75 unnumbered information frame (UI) header
        type = 2, Cisco style HDLC header
        type = 3, Ethernet bridging
        type = 4, remote test loop, incoming data is echoed.

    -l type
        LAPB (X.75) based protocols (caller=DCE, window=7, mod 8)
        type = 0, IP-Data, no header, 
        type = 1, multi-X.75 (called LAPB encapsulation an ACC routers or
                  multi-LAPB encapsulation on Cisco routers)
        type = 2, SLIP
        type = 3, Ethernet bridging
        type = 4, remote test loop, incoming data is echoed.
	type = 5, SLIP (same as 2)
        type = 6, Ethernet bridging using SLIP encapsulation (SLX)

    -s baudrate
        SLIP protocol with V.110 bitrate adjustment. "baudrate" defines
        the desired transfer rate.
        baudrate = 9,  9600 baud,  async, 8 bit, no parity, 1 stop bit
        baudrate = 19, 19200 baud, async, 8 bit, no parity, 1 stop bit
        baudrate = 38, 38400 baud, async, 8 bit, no parity, 1 stop bit

        Additional options for use with SLIP protocol (X.75 or V.110 based).
	The option has to be specified after the protocol selection option.

        -n string1,string2,...
	   A sequence of strings to send for SLIP login. To adapt to
	   the different kinds of login sequences used by SLIP servers,
	   ISPA uses a wait/send sequence for highest flexibility.
	   ISPA sends a string after having not received data from the
	   peer for more than 2 seconds. Each string will be
	   automatically terminated by a RETURN. This way an empty string
	   field will send a single RETURN. Special characters can be
	   included in the string by escaping with \ and specifing the
	   ascii code of the character (e.g. \32 will insert a space).
	   The ascii code may be terminated by a . if required.
	   Additionally \, will insert a comma, otherwise used for
	   separating strings, a \. will insert a literal . after an 
	   ascii code and \\ will insert a single \.
	   ISPA shows all characters received and will switch to SLIP
	   mode after sending the last string.
	   The total length of the string sequence is limited to 44
	   characters.

    -y baudrate
        SLX (Ethernet bridging using SLIP encapsulation) protocol with
        V.110 bitrate adjustment. "baudrate" defines the desired transfer
        rate.
        baudrate = 9,  9600 baud,  async, 8 bit, no parity, 1 stop bit
        baudrate = 19, 19200 baud, async, 8 bit, no parity, 1 stop bit
        baudrate = 38, 38400 baud, async, 8 bit, no parity, 1 stop bit

    default: -h0

    Other translation entry options:

    The following options can be specified for each ISDN-number entry in
    the configuration file:

    -t max-idle[,min-idle]
        an idle connection will be disconnected after "max-idle"-seconds.
        Setting "max-idle" to zero disables shutdown of idle connections.
        Specifing a "min-idle" value lower than "max-idle", an outgoing
        (charged) connection will be hold at least "min-idle" seconds, it
        will be closed down shortly before the next charge unit is execeeded
        or max-idle expires. The time of one charge unit is calculated from
        the first two units received.
        default: max-idle: 300 seconds, min-idle: disabled

    -m high[,low]
        static or dynamic loadsharing over both s0-channels.
        "high" = 0, static loadsharing, the caller will always try to
        activate both channels.
        "high" <> 0, dynamic loadsharing, if the load is higher than
        6000 Bytes/sec for "high"-seconds, the system will activate the
        second channel. After "down"-seconds of a load lower than 6000
        Bytes/sec the second channel will be closed down. If "down" is not
        specified, the "max-idle" Timeout will be used (see option -t).
        A -m option has to be specified on both ends of a link. However,
        only the caller of the first channel will activate the second
        channel.
        The values for "high" and "low" should be multiples of 8, otherwise
        they will be rounded up to next multiple of 8.

        To set up loadsharing to different target ISDN numbers, a second
        ISDN number can be specified in a translation entry.

    -d flags

	Specifies ISPA's mode of operation and various flags:
	The "flags" parameter is interpreted as a 16 Bit value with
	the following meaning:

	Bit 0-2: Operation mode:
          mode = 0, outgoing calls are disabled.
          mode = 1, incoming and outgoing calls are allowed.
          mode = 2, an outgoing call is dropped after sending the connect
                  request and the system waits for a call back.
          mode = 3, incoming calls are rejected but trigger an outgoing call
                  to the received ISDN-number.
          mode = 4, incoming calls are disabled.
	Bit 3-7: unused
	Bit 8:   Don't reset disconnect timer on received packets.
	Bit 9:   Don't reset disconnect timer on sending broadcast packets.
	Bit 10:  Send broadcast packets over this link.
	Bit 11:  Operate as an IP-address provider for PPP. (If this is a
		 PPP link and the IP-address of this entry isn't zero, tell
		 the peer which IP-address he has to use.)

        default: 1, incoming and outgoing calls enabled

    -a service
        (specific to German ISDN, however the API software should map the
        values to corresponding EuroISDN codes)
        additional service indicator and service indicator selection.
        The high byte of the argument "service" redefines the service
        indicator the low-byte defines the additional service indicator.
        Some ISDN equipment (e.g. Elink TA) use the additinal service
        indicator field to selcted a predefined mode/protocol of operation.
        However there is no standard for this field.
        ISPA sets "service" to 0x700 with the following exceptions:

        service = 0x7c5: -s 9,  -y 9
        service = 0x7c7: -s 19, -y 19
        service = 0x740: -s 38, -y 38

        The option allows to override the default value with your own
        value. (To override the protocol specific default, the value has
        to be positioned after the protocol option on the line.)

        To use the ISDN service "X.21 Services" in German national 1TR6
	ISDN use a "service" value of "0x30c".


    --------------
    Deinstallation

    ISPA can be unloaded using ISPACF.EXE or TERMIN.EXE from the
    Clarkson/Crynwr Packet Driver collection. 

    -----------
    Controlling

    The utility program ISPACF.EXE allows you to:

    - manually set up a connection
    - manually terminate all connections
    - to check the parameter table
    - to display/set the IP-address for PPP IP-address negotiation
    - to read out the connection statistics
    - to reset the connection statistics
    - to unload ISPA from memory

    --------------
    Other features

    1. Dynamic IP address assignment
       ISPA supports dynamic IP address assignment via RARP and the PPP IPCP
       IP-ADDRESS negotiation:

       - (Make sure that your peer supports the PPP IPCP IP-ADDRESS option.)
       - Configure your IP software for use with RARP.
       - Use ispacf -d <pkt-int> [<ip-address>] to manually set up a connection.
       - (Check the received IP address with ispacf -i <pkt-int>.)
       - Start your IP software.

    2. Ascend Routers use the PPP IPCP IP-ADDRESS negotiation for
       remote system identification. They don't support asking for an
       IP-address using PPP IPCP IP-ADDRESS negotiation. For Ascend
       Routers ISPA has to provide the correct IP-address to the peer.
       To accomplish this you can set the IP-address to the desired value
       using ispacf -i <pkt-int> <ip-address>

    3. ISPA can operate as an IP address provider for PPP connections.
       This feature can be enabled on a peer basis using a flag of the
       -d option.

    -------------------------------
    Restrictions in current version

    1. Option parsing is far away from being perfect. It is possible to
       specify conflicting options. Don't specify more than one protocol
       option per line (translation entry).

    2. The current version does NOT support more than one active SLIP or
       SLX connection at a time. For this reason you can NOT use loadsharing
       with SLIP or SLX. Also you can NOT have one active SLIP/SLX
       connection and another connection (using another protocol) at the
       same time. Unpredictable results will occur. I recommend to use
       SLIP/SLX only with the -u option.

    ------------------------
    Ethernet characteristics

    ISPA works as an ethernet type Packet Driver. The ethernet address of
    ISPA is defined as: 00-00-0xFB-0xAA-00-<pkt-int>. (Thanks to RzK,
    Asbach, Germany for using numbers from their official 00-00-0xFB range.)
    "pkt-int" is replaced by the software interrupt number in the range
    0x60 to 0x80 used for accessing ISPA.

    With PKTADDR.EXE from the Clarkson/Crynwr Packet Driver collection the
    ethernet address can be changed to any other desired value.

    Changing the ethernet address may be required when connecting two
    ISPA's with direct applications using an ethernet bridging protocol.
    It is not neccessary when using ISPA with PCBRIDGE.

    --------
    Examples

    1. configuration for a dial-in server with calling line identification
       and disabled outgoing calls. Idle connection will be closed after 60
       seconds.

	ispa ? 0x60

	ispa.ini:
	-u   # only only one active channel
	-e4  # local EAZ 4
	1.2.3.4 0815712345 -d0 -t60 # only incoming, timeout 60 sec

    2. same as 1, but with remote logging in the syslog file of 141.61.1.32
       and without CLI. The protocol for other incoming calls is PPP.
       The syslog messages will appear as coming from 141.61.2.3.

	ispa ? 0x60

	ispa.ini:

	-r141.61.1.32,141.61.2.3    # remote logging on 141.61.1.32
	-e4                         # local EAZ 4
	1.2.3.5 * -p -t30           # no CLI, protocol PPP, timeout 30sec
	1.2.3.4 0815712345 -d0 -t60 # only incoming, timeout 60sec

    3. ISPA in point-to-point configuration with dynamic Loadsharing. The
       second link will be established after 10 seconds of a load higher
       than 6000 Bytes/sec and will be closed after 20 seconds of a load
       lower than 6000 Bytes/sec. 

	ispa ? 0x60

	ispa.ini:

	-e4 
	-w
	0.0.0.0 0815712345 -h2 -m10,20 -t90

    4. set up of ISPA with configuration file. For incoming call from unkown
       numbers the -h2 protocol will be used. If, for outgoing packets, no
       matching entry is found in the configuration file, the first entry of
       the configuration file will be used.

       ispa ? 0x60 ip2isdn

       ip2isdn(ISPA configuration file):
	-e4 -w 
	2.0.0.6 * -h2 -t60
	2.0.0.1 089.89512300 -f100i -t200,30 
	2.0.0.2 089.89512301 -h2 -t20,5 -m8,30
	2.0.0.3 0033,815711111 -d0 -h0 -t40
	2.0.0.5 0,4518789123 -p -t60,10

    An example of a wattcp.cfg for the third mapping entry of the
    configuration file:
        my_ip=2.0.0.4   
        netmask=255.255.255.0              # netmask
        nameserver=141.61.1.32             # nameserver
        nameserver=141.61.1.23             # alt nameserver
        gateway=2.0.0.2                    # gateway 
        domainslist="biochem.mpg.de"

    -------
    Support

    The latest version of ISPA is available on ftp.biochem.mpg.de.

    Please mail comments, questions, problems to heha@biochem.mpg.de.
    I can not guarantee any level of technical support, or for any
    length of time. In general, I will give priority to registered users.

    --------
    Warranty

    There is absolutely NO  WARRANTY, expressed or implied with
    this software.  If you choose to use this software, you
    assume all risk.

    -----------------------
    Appendix A: Error codes

    The error codes from ISPA are the same as defined in the ISDN-API 1.1
    specification:

    2001    incorrect controller
    2002    incorrect PLCI
    2003    incorrect NCCI
    2004    incorrect type

    3101    B-channel incorrectly coded
    3102    Info-mask incorrectly coded
    3103    Serviced EAZ-mask incorrectly coded
    3104    Serviced SI mask incorrectly coded
    3105    B-channel protocol, level 2 incorrect
    3106    DLPD incorrect
    3107    B-channel protocol, level 3 incorrect
    3108    NCPD incorrect
    3109    NCPI incorrect
    310A    Flags incorrectly coded

    3201    Controller error
    3202    Conflict between registrations, check SI mask and EAZ
    3203    Function not supported
    3204    PLCI not active
    3205    NCCI not active
    3206    B-channel protocol, level 2 not supported
    3207    Changeover of B-channel protocol, level 2 in this state not
            possible
    3208    B-channel protocol, level 3 not supported
    3209    Changeover of B-channel protocol, level 3 in this state not
            possible
    320A    Unsupported parameters in DLPD
    320B    Unsupported parameters in NCPD
    320C    Unsupported parameters in NCPI
    320D    data length not supported

    3301    Error on setup of D-channel, level 1
    3302    Error on setup of D-channel, level 2
    3303    Error on setup of B-channel, level 1
    3304    Error on setup of B-channel, level 2
    3305    Abort D-channel, level 1
    3306    Abort D-channel, level 2
    3307    Abort D-channel, level 3
    3308    Abort B-channel, level 1
    3309    Abort B-channel, level 2
    330A    Abort B-channel, level 3
    330B    B-channel connection, level 2 reestablished
    330C    B-channel connection, level 3 reestablished

    34xx    Abort by network, low order 8 Bit contain the cause value
            according 1TR6, the MSB is used to signal an error, but is not
            set by all ISDN-API 1.1 implementations.

    Cause-table according to 1TR6 (don't know what you will get with EuroISDN)

    00  normale Ausloesung (0 = lokal, 3400 = durch die Gegenstelle)
        normal termination (0 = local, 3400 = from the network)

    83  Dienst ist nicht verfuegbar oder nicht beantragt
        Service not available

    8A  kein B-Kanal auf lokaler Anschlussleitung verfuegbar
        all B-channels are busy on the local line

    91  angefordertes Dienstmerkmal wurde abgelehnt, weil eigener
        oder ferner Anschluss keine Berechtigung besitzt
        ??

    a0  abgehende Rufe wegen eingerichteter Sperre nicht moeglich
        outgoing calls blocked

    a2  Verbindung nicht moeglich wegen negativen GBG-Vergleich
        Closed-user-group refused connection

    a3  angegebene GBG (geschlossene Benutzergruppe) unbekannt
        specified closed-user-group unknown

    a5  Kommunikationsbeziehung als SPV nicht freigegeben
        SPV not enabled for this number

    b5  Verbindung nicht aufbaubar wegen falscher Zieladresse,
        Dienste oder Dienstmerkmale
        ??

    b8  Rufnummer des gerufenen Teilnehmers hat sich geaendert
        number of called station has changed

    b9  ferne DEE nicht betriebsbereit
        remote station not ready

    ba  Ruf wurde von keiner Datenstation beantwortet
        no station responding

    bb  gerufene Datenstation besetzt
        called station busy

    bb  Gerufener Teilnehmer hat Sperre gegen ankommende Rufe oder
        angeforderter Dienst vom gerufenen Teilnehmer nicht beantragt
        ??

    be  Ruf wurde von gerufener Datenstation abgewiesen
        Call was rejected by called station

    da  Verbindung von ferner Datenstation ausgeloest oder abgelehnt
        Connection was terminated or rejected by called station

    f0  Im aktuellen Verbindundsstand keine Dienstmerkmalanforderung moeglich
        ??

    f1  Ausloesung wegen Fehler bei der gerufenen Station
        Disconneted due to an error at the remote station

