CINDI Version 2.0, a NDIS-2 Driver for Common-ISDN-API
2.0
Herbert Hanewinkel, Nov 1995
CINDI is Shareware
CINDI, as it is provided, is a demo version. To make use of the full
capabilities of CINDI you have to register CINDI. The registration fee
for a single user license of CINDI is DM 92. Please read the file "CINDI.REG"
for details.
As long as you have NOT registered CINDI you may test CINDI using a
? in place of the registration code. In this case CINDI will stop forwarding
data after 20 min.
Disclaimer
The program and this documentation is Copyright (C) 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 without my express written permission.
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.
Manufacturers and distributors of ISDN products may distribute unregistered
versions of this software a long with their ISDN products under the condition,
that the customers are informed, that they have to register the software.
If you want to sell registered versions of this software with printed hard
copy 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
CINDI is a (realmode) NDIS-2 Driver for IP-Routing or remote Ethernet
bridging over ISDN. CINDI communicates with the ISDN card using the Common
ISDN API 2.0 specification (a standard defined by German ISDN card manufacturers
and the German Telekom). Because of this, CINDI is completely hardware
independent and has successfully been tested with many active or passive
ISDN cards.
CINDI was developed for Internet access over ISDN from WfW 3.11 and
MSTCP-32. CINDI has successfully been tested with Win95. CINDI is also
known to work with other NDIS based TCP/IP packages for DOS and Windows,
e.g. ChameleonNFS.
CINDI can be used with standard DOS CAPI 2.0 software or VxD implemenations
of the CAPI 2.0 software. Using a VxD CAPI implementation, CINDI is available
only under Windows but it frees a lot of DOS memory otherwise used by the
CAPI software.
CINDI 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.
Some protocols conserve the protocol type over point-to-point lines
(multi-LAPB, Frame-Relay, Cisco-HDLC). These protocols are able to handle
multiprotocol routing. For PPP only IP support is implemented at the network
configuration layer.
CINDI can communicate at least with the following commercial systems:
Ascend Routers, AVM MPR 3.0, Biodata ISDN Router, Cisco Routers, Conet
S2M Router, INS/CLS Banzai ISDN Router, netCS ISDN Router, RzK SLIP Bridge,
SGI Indy ISDN 1.0, Spyder Routers, SunLink ISDN 1.0, SunLink ISDN 1.0.2.
CINDI was written for use with ISDN BRI PC cards. CINDI was developed
and implemented on a NCP /P8 card from NCP engineering GmbH, Nuernberg..
The current version of CINDI supports two independent active connections
at a time. Alternativly a connection can use both B- channels for loadsharing.
CINDI can be loaded more than once, if more than two simultaneous connections
to different sites are desired. Loadsharing can be configured as static
or dynamic (bandwidth on demand). Dynamic loadsharing can be used concurrently
with a second independent connection.
Loadsharing over two channels is implemented using simple round robin
scheduling, because IP doesn't require the original packet sequence. This
is completely hardware independent and supported by many router systems.
It works the same way as Cisco implements loadsharing over to X.21 interfaces
and I have tested CINDI with a Cisco Router and two Philips TA's. With
this kind of loadsharing it is possible to get a performance of up to 13kBytes/s.
Availability
The latest version of CINDI is available on http://www.biochem.mpg.de/~heha/
or via ftp from:
ftp.biochem.mpg.de
in directory /pc/isdn.
Installation
To use CINDI you have to set up a configuration file with your ISDN
configuration as described below. The default name for this file is CINDI.INI.
To load the NDIS-2 Driver into memory install CINDI.DOS in your NDIS
environment and run CINDI.EXE after binding the NDIS modules (after executing
"netbind" or "net start"). You have to start CINDI.EXE
after starting your CAPI 1.1 software. For use with VxD CAPI implemenations
you can start CINDI.EXE via WINSTART.BAT. WINSTART.BAT has to be in one
of your PATH directories and is automatically executed at Windows startup.
CINDI.EXE accepts the following arguments: (Parameters in [ ] are optional,
if not given a default is used)
CINDI RegCode [ConfigFile]
"RegCode" is your personal registration code you will
receive
after registration of CINDI. As long as you have NOT registered
CINDI you may test CINDI using a ? in place of the registration
code. In this case CINDI will stop forwarding data after 20 min.
"ConfigFile" specifies the name of the CINDI configuration
file.
If the name is not given, it defaults to "CINDI.INI".
The configuration file is a readable text file. Read the section
"Setting up an CINDI configuration file" below for creating
up
an CINDI configuration file.
Installation in a NDIS-1 environment
CINDI is an NDIS-2 MAC driver. Multiple protocol modules can
bind to CINDI. To include CINDI in your NDIS configuration:
- Unpack the CINDI software into a directory, e.g.: C:\CINDI
- In the CINDI directory create a CINDI.INI file with the
desired ISDN configuration.
- Set-up an entry for CINDI in the NDIS PROTOCOL.INI file
[CINDI]
Drivername=CINDI.DOS
- The protocol module you want to bind to CINDI should reference
the CINDI MAC driver with a "BINDINGS" entry of the form:
BINDINGS=CINDI
- Load CINDI by starting CINDI.EXE with your arguments in
AUTOEXEC.BAT after running netbind or in case of a VxD CAPI
start CINDI.EXE in WINSTART.BAT. Check also that the device
PROTMAN.DOS is loaded in CONFIG.SYS.
C:\CINDI\CINDI ? C:\CINDI\CINDI.INI
Registered users replace the ? by the received registration
code.
- Reboot your system.
Installation in WfW 3.11 and Windows 4 (Win95) (NDIS-2/3
environment)
- Unpack the CINDI software into a directory, e.g.: C:\CINDI
- In the CINDI directory create a CINDI.INI file with the
desired ISDN configuration.
- Use Netsetup to install CINDI.
- Select "Add adapter"
- Select "OEM provided adapter" in directory C:\CINDI
- Add the TCP Protocol and remove all other protocols from the
adapter.
- Configure the TCP/IP parameters.
- Add a line to start CINDI.EXE in "AUTOEXEC.BAT" after "NET
START", so that the entry looks like:
C:\WINDOWS\NET START
C:\CINDI\CINDI ? C:\CINDI\CINDI.INI
or start CINDI.EXE via WINSTART.BAT:
C:\CINDI\CINDI ? C:\CINDI\CINDI.INI
Registered users replace the ? by the received registration
code.
- (WfW only) After rebooting start a DOS-shell inside Windows
and run "IPCONFIG". It should display your TCP/IP parameters.
- Test your set-up with a ping in the DOS-shell. The ISDN2MON
monitor should display the dialed number and a connection
should come up.
Attention:
The NETBIOS based WfW 3.11 peer-to-peer network can operate on
different transport protocols (NETBEUI, DECnet, TCP/IP). After
installing MS-TCP32, WfW and Win95 send broadcast messages also
over TCP/IP to look-up other nodes. If you don't disable
broadcast's in CINDI, this will trigger an ISDN connection every
time a broadcast packet is sent. You can disable broadcasts in
CINDI by either specifying a dedicated ip-address (not 0.0.0.0)
for the ISDN peer or enabling the k-option for this link. Using
the k-option, broadcasts will not keep the line up and will not
trigger a new connection, but the peer-to-peer network
capabilities are available over ISDN after opening a connection.
Setting up a CINDI configuration file
Structure of 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 CINDI's overall behaviour. Global
options can be specified on one or more lines. Examples for
global option:
-e895123456 # local number for outgoing calls
-u # only one active channel
-w # active display on DOS screen
See the "Global options" section below for a complete reference.
Attention:
To enable outgoing calls a local (calling) number has to be
defined with the -e option.
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 ISDN number.
They don't operate as a routing table.
- they are used for calling line identification (CLI) on
incoming calls.
Incoming connections will be accepted only from ISDN numbers
specified 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 ISDN number field. For
incoming calls from ISDN numbers 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, time-out, ... for this link.
If the same IP-address appears more than once in the
configuration file, CINDI will try all corresponding ISDN
numbers until a connection an 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.
CINDI can operate only in routing or bridging mode. You can not
mix entries with routing and bridging protocols in the
configuration file.
CINDI supports IP-address based routing (as it is implemented in
MS-TCP32) 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 64 translation entries can be specified in the
configuration file. Loadsharing entries to two different ISDN
numbers allocate two entries.
Global options:
- ip-address
-
defines a static local IP-address for use with PPP
negotiation. You can not combine the IP-address with other
global options on the same line.
- -a
-
disables the auto-dialler. If not selected CINDI will dial-on-
demand.
default: auto-dialler enabled
- -c n[,56]
-
selects the ISDN controller (card), n specifies the controller
number in the range 1..N.. Specify 56 for 56kBit ISDN lines.
default: 1, 64kBit
- -i vector
-
specifies the software interrupt for communication with the
Common-ISDN-API-2.0 software.
default: 0xf1
- -o
-
if CINDI'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 OutgoingNumber[,ListenNumber]
-
the "OutgoingNumber" is used as the calling number for
outgoing calls. The number may be screened by the network.
the "ListenNumber" specifies the number CINDI will listen on
incoming calls. If this number isn't defined CINDI will listen
for any call.
- -k setup[,sleep[,callbackwait]]
-
specifies the set-up time in seconds. CINDI will wait "setup"
seconds for a connection to come up. If the connection does
not reach the active state during this time, CINDI resets the
channel. The "sleep" parameter allows you to modify the delay
between a disconnect and the next dial request. The
"callbacklwait" parameter allows you to specify the delay
before CINDI will call-back.
defaults: 10,5,2 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 CINDI receives an error from
the Common ISDN API 2.0 software. Specifying "0e" enables only
reboot on errors.
default: disabled
- -q
-
suppresses any message output on the screen.
- -v
-
CINDI tries to allocate buffers for the CAPI in upper memory
(UMB). This option disables this feature and CINDI will use
conventional memory at the top of the DOS memory for the CAPI
buffers. Don't use this option, if you are running Windows.
- -r log-ip,my-ip
-
remote logging on a UNIX host with a syslogd. Using CINDI 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 CINDI (a NDIS driver can not automatically retrieve this
information).
Syslog-messages are sent with the characteristics
"local0.info".
- -l interval[c]
-
if "interval" is non zero and a connection is up, a statistic
message will be displayed every "interval"-seconds.
"interval" should be a multiple of 8, otherwise it is
internally rounded up to the next multiple of 8.
Appending a "c" to interval will force immediate log (on the
screen or syslog host) of every charge message received from
the CAPI software.
- -w
-
Display activity, state and charge information in the upper
right corner of the screen. The display has the following
layout:
/0_\0_APnnn
The symobls mark from left to right:
- going data, the symbol rotates for every transmitted
packet
- outgoing data rate on channel 1 in kBytes/sec, averaged over
8 seconds
- outgoing data rate on channel 2 in kBytes/sec, averaged over
8 seconds
- incoming data, rotates for every received packet
- incoming data rate on channel 1 in kB/sec, averaged over 8
seconds
- incoming data rate on channel 2 in kB/sec, averaged over 8
seconds
- Status of channel 1
- Status of channel 2
- accumulated charge units for open connections
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 up,
- I = PAP configuration up, IPCP configuration started,
- P = PPP connection up
- -u
-
Limits CINDI to one active connection at a time. This will
reduce CINDI'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
Translation entry format
IP-Address
IP addresses should be specified in standard dot format. e.g.:
141.61.1.23
ISDN number and related features of CINDI
PBX's sometimes require a special key-code for dialling out. If
this prefix is not displayed on incoming calls, Dial back and
CLI will normally fail. To solve this problem CINDI 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 be 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 EuroISDN, 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 set-up for PVC's.
Teles, Berlin supports PVC's (Digitale Festverbindungen D64s)
using a pseudo ISDN number "tap" and selecting one of the B-
channels. CINDI 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 ISDN number.
Translation entry options:
CINDI supported protocols:
(only one protocol can be 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 an id/password combination
can be specified for each remote site. With the -g option a
local id/password can be defined for each peer.
CINDI accepts the following PPP options from the remote site:
- LCP MRU requests with values greater or equal to 1500.
- LCP protocol field compression
- LCP address and control field compression.
- 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
-
Userid/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 userd/password combination. Incoming PPP
connections are accepted only if the remote site sends this
userid/password combination.
- -i
-
Operate as an IP-address provider for PPP. (If the IP-
address of this entry isn't zero, tell the peer which IP-
address it has to use.)
- -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
- -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 on ACC-
Routers or multi-LAPB encapsulation on Cisco
routers)
- type = 2[,login] Asynchronous PPP (with Byte-Stuffing)
- type = 3 Ethernet bridging
- type = 5[,login] SLIP
- type = 6[,login] Ethernet bridging using SLIP encapsulation
(SLX)
For the "login" parameter see below (-y Option).
- -b baudrate[,login]
-
asynchronous point-to-point-protocol (PPP) with V.110 bit-
stuffing. "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
For the "login" parameter see below (-y Option).
- -s baudrate[,login]
-
SLIP protocol with V.110 bit-stuffing. "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
For the "login" parameter see below (-y Option).
-y baudrate[,login]
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
login = expect1/send1,expect2/send2,...
A sequence of strings to send for asyncPPP or SLIP/SLX login.
To adapt to the different kinds of login sequences used by
asyncPPP/SLIP servers, CINDI uses an expect/send sequence.
Each "send" 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 strings by
escaping with "\" and specifying the ASCII code of the
character (e.g. \32 will insert a space). If required, the
ascii code may be terminated by a ".". Additionally "\," will
insert a comma and "\/" will insert a slash, otherwise used
for separating strings. A "\." will insert a literal "." after
an ASCII code and "\\" will insert a single "\". CINDI 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 64 characters.
default protocol: -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[s]]
-
an idle connection will be disconnected after "max-idle"-
seconds. Setting "max-idle" to zero disables shutdown of idle
connections. Specifying 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 exceeded or max-idle expires. The time of
one charge unit is calculated from the first two units
received. max-idle may be used to specify the length of the
first charge-unit.
To use adaptive timeout without advice-of-charge an "s" can be
appended to the min-idle value. In this case advice-of-charge
messages are simulated by CINDI. The max-idle value specifies
the length of a charge unit.
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" Time-out will be used
(see option -t).
A -m option has to be specified at 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 for each translation
entry.
- -d mode
-
Specifies the mode of operation
- 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.
default: 1, incoming and outgoing calls enabled
- -r
-
Don't reset disconnect timer on received packets.
Some peers send packets on regular basis (e.g Cisco's
keepalive packets, RIP routing information packets) These
packets will normally keep a line up. The option allows a link
to time out even if packets are received.
- -k
-
Don't reset disconnect timer on sending broadcast packets.
Don't open a connection by broadcast packets.
Enable this option if your IP software should announce routing
information when the link is up. Setting this option will
allow the link to timeout even if broadcast packets are sent.
- -u
-
Declares a link as a broadcast link. Broadcast packets are
sent over this link.
Additional features
- Dynamic IP address assignment:
CINDI supports dynamic IP address assignment by a remote system
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 CINDICTL -d [ip-address] to manually set up a
connection.
- (Check the received IP address with CINDICTL -i )
- Start your IP software.
- 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(as described
above). For Ascend Routers CINDI has to provide the correct IP-
address to the peer. To accomplish this you can set the local
IP-address as a global option in the configuration file. You
can modify the ip-address to any desired value using CINDICTL-i
- CINDI 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.
Controlling and Monitoring
If you have started CINDI with a CtrlInterrupt, the Windows
utility program ISDN2MON.EXE allows you to:
- monitor the status of the ISDN connections and display the IP-
address received via PPP IP-address negotiation:
- manually set up a connection. If the connection is configured
for PPP with authentication, the program prompts for PPP
username and password.
- manually terminate all connections.
- to check the configuration.
ISDN2MON.EXE tries to locate CINDI automatically searching for a
signature.
The DOS utility program CINDICTL.EXE allows you to:
Ethernet characteristics
CINDI works as an ethernet type NDIS-2 Driver. The ethernet
address of CINDI is defined as: 00-00-0xFB-0xAA-00-01. (Thanks
to RzK, Asbach, Germany for using numbers from their official 00-
00-0xFB range.)
The ethernet address of CINDI is settable by software via the
NIDS interface. This way the ethernet address can be changed to
any other desired value.
Changing the ethernet address may be required when connecting
two CINDI's with direct applications using an ethernet bridging
protocol.
Examples
- a simple point-to-point configuration to connect a
standalone PC to an IP provider. Local IP address
141.61.224.5. The IP Provider has a nameserver with address
141.61.1.32. The connections uses PPP protocol and the PC has
to identify itself using the id "guest" and password "gast".
Because the IP address in the CINDI configuration file is
specified as 0.0.0.0 ALL packets will be send to the peer
0815712345. This way NO gateway IP address is required in the
IP configuration.
CINDI ?
CINDI.INI:
-e12345678 # local number
-u # only only one active channel
-w # activity display
0.0.0.0 089987654 -p -nguest,gast -t60 # timeout 60 sec
- CINDI set up in a multipoint configuration as a dial-in server
with no outgoing connections. All connections are logged with
the remote logging feature in the syslog file of host
141.61.1.32. The syslog messages will appear as coming from
141.61.224.1. The protocol for incoming calls from unknown
numbers is PPP with identification "guest" and password
"gast". The net 141.61 is connected to the Internet via
141.61.1.1. The CINDI and MS-TCP32 configuration will allow
the PC of example 1. to dial in as an unknown ISDN peer and
connect to the Internet.
CINDI can handle two active connections, but only one unknown
peer at a time.
CINDI ?
CINDI.INI:
-e12345678 # local number
-r141.61.1.32,141.61.224.1 # remote logging on 141.61.1.32
#
141.61.224.5 * -p -gguest, gast -t30 # no CLI, protocol PPP
141.61.224.2 0815712345 -d0 -t60 # incoming from 0815712345
141.61.224.3 08912345 -h1 -d0 -t60 # incoming from 08912345
141.61.224.4 08923456 -l1 -d0 -t60 # incoming from 08923456
and the corresponding MS-TCP32 configuration:
Interface 1 (Ethernet): 141.61.1.200 255.255.255.0
Interface 2 (ISDN) : 141.61.224.1 255.255.255.0
Routes: Net: 0.0.0.0 Gateway: 141.61.1.1
- CINDI 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.
CINDI ?
CINDI.INI:
-e12345678 # local number
-w
0.0.0.0 0815712345 -h2 -m10,20 -t90
- CINDI in multipoint configuration. For incoming calls from
unknown numbers the -h1 protocol will be used.
CINDI ? ip2isdn
IP2ISDN (CINDI configuration file):
-e12345678 # local number
-w # global options
2.0.0.6 * -h1 -t60 # other incoming calls
2.0.0.1 089.89512300 -f100i -t200,30 # ietf frame-relay
2.0.0.2 089.89512301 -h2 -t20,5 -m8,30 # cisco-hdlc, dynnamic loadsharing
2.0.0.3 0033,815711111 -d0 -t40 # hdlc, only incoming
2.0.0.5 0,4518789123 -p -t60,10 # PPP, no PAP
- a point-to-point configuration to connect a standalone PC
to an IP provider using async PPP protocol with transparent
login. For login CINDI expects "ogin:", the id "guest" is
sent, than CINDI expects "word:" and sends "mypass", CINDI
expects "erver>" and sends "ppp". After this CINDI
automatically switches to PPP protocol.
CINDI ?
CINDI.INI:
-e12345678 # local number
-u # only one active channel
-w # activity display
0.0.0.0 089987654 -l2,ogin:/guest,word:/mypass,erver>/ppp -t60
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).
Support
The latest version of CINDI is available on
http://www.biochem.mpg.de/~heha/
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 CINDI are the same as defined in the Common-
ISDN-API-2.0 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 re-established
330C B-channel connection, level 3 re-established
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:
00 Normal termination (0 = local, 3400 = from the network)
Normale Ausloesung (0 = lokal, 3400 = durch die Gegenstelle)
81 Invalid call reference value
Ungueltiger call reference Wert
83 Bearer service not implemented
Dienst ist nicht verfuegbar oder nicht beantragt
87 Unknown caller identity
88 Caller identity already suspended
8A No B-channel available
Kein B-Kanal auf lokaler Anschlussleitung verfuegbar
8F Disconnect
Verbindung wurde getrennt
90 Facility code unknown in this network
Leistungsmerkmal nicht implementiert
91 Requested service rejected
Angefordertes Dienstmerkmal wurde abgelehnt, weil eigener
oder ferner Anschluss keine Berechtigung besitzt
A0 Outgoing calls barred
Abgehende Rufe wegen eingerichteter Sperre nicht moeglich
A1 User access busy
Gegenstelle besetzt
A2 Closed-user-group refused connection
Verbindung nicht moeglich wegen negativen GBG-Vergleich
A3 Nonexistent closed-user-group
Angegebene GBG (geschlossene Benutzergruppe) unbekannt
A5 SPV not enabled for this number
Kommunikationsbeziehung als SPV nicht freigegeben
A9 Temporarily not available
Voruebergehende Stoerung
B5 Destination not obtainable
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 No user responding
Ruf wurde von keiner Datenstation beantwortet
BB Called station busy
Gerufene Datenstation besetzt
BD Incoming calls barred
Gerufener Teilnehmer hat Sperre gegen ankommende Rufe oder
angeforderter Dienst vom gerufenen Teilnehmer nicht beantragt
BE Call was rejected by called station
Ruf wurde von gerufener Datenstation abgewiesen
D9 Network congestion
Engpass im Netz, kein B-Kanal verfuegbar
DA Connection was terminated or rejected by called station
Verbindung von ferner Datenstation ausgeloest oder abgelehnt
E0 Call id incomplete
Anwahlelemente fehlen
F0 Local procedure error
Im aktuellen Verbindundsstand keine Dienstmerkmalanforderung
moeglich
F1 Disconneted due to an error at the remote station
Ausloesung wegen Fehler bei der gerufenen Station
F2 Remote user suspended call
Die Gegenstelle hat die Verbindung abgebrochen
FF Local reject of user-to-user info
D-Kanal Userinfo nicht unterstuetzt
Umgesetzt in HTML von:
Markus Dahlweid
<dahlweid@informatik.uni-bremen.de>