- Establish connections with other FTN nodes.
(this implies slave mode)
stands for "Internet - Fidonet Copy In / Copy Out", this
is a FidoNet(r) compatible transport agent. Currently it supports FTS-0001,
YooHoo/2U2 and EMSI handshake protocols, Xmodem (untested), Telink (untested),
Modem7 (untested), SEAlink w/overdrive and crash recovery, Bark file and
update requests, WaZOO protocols: DietIFNA, plain Zmodem (aka ZedZip, EMSI
flag "ZMO"), ZedZap and Hydra, WaZOO file and update requests
(nodelist flag should be XA). Password protected requests are not implemented.
There are plans to implement Janus protocol in the future.
There is also a special protocol optimized to use over TCP/IP connection,
contributed by Stanislav Voronyi <firstname.lastname@example.org>, it is
identified by EMSI proto code TCP (not registered).
Outbound directory structure is BinkleyTerm compatible, with domains and point
subdirectories (full 5d). There are separate "listed" and
"protected" inbound directories for the incoming sessions with the
nodes present in the nodelist(s) and with nodes that have a password assigned
respectively. Files received during an outbound session are always put into
the "protected" directory. (Only "protected" directory is
looked up by ifunpack by default).
"Magic" file request processors are executable files placed in the
"magic" directory. If request is made for a file with matching name,
the executable from the "magic" directory is run, and its stdout
sent to the requester. Full requester's address, in the form "John Smith
of 1:234/56.7" is passed to the executable in the command line. See
"misc/FILES" for an example of a magic request processor. Non-
executable files in the "magic" directory are
"references". If a request is made for a file with matching name,
the file is read line by line, and request re-made for the name found in each
line. Up to 5 levels of recursion are allowed.
To run ifcico
in master mode, you must make dialout devices read/writable
-B and do the same for the directory where your uucp locks
are created (usually /var/lock/).
To make ifcico
work in answer mode, you need an FTN-able getty. Linux
, and Gert Doering's mgetty
package) and later versions have fidonet support
built-in. Getty must distinguish incoming FidoNet type calls, and start
with one parameter:
(in the latter case the received EMSI packet should be passed without trailing
If you are using getty_ps,
don't forget to create the file
/etc/default/uugetty with the contents similar to the following (case
When called without parameters, ifcico
runs in slave mode and determines
the type of inbound session itself. This mode may be used when ifcico
runs as an internet or ISDN daemon.
To make ifcico
scan for pending outbound mail and do appropriate calls,
start it with "-r1" flag. To force polling of particular nodes,
specify these nodes in the command line (addresses should be in domain
notation, e.g. "ifcico f23.n5020 f155.n5020"). The latter implies
master mode (-r1). Note that "hold" packets and files, as well as
file requests, do not cause the node to be polled.
Inbound directory is created automatically if it does not exist, along with the
"tmp" subdir. The latter is used while receiving files. After being
successfully received, the files are moved up to the "inbound"
directory. "protinbound" and "listinbound" directories
accept files received during password protected sessions and session with the
nodes present in the nodelist(s) respectively.
can use text format nodelists in original (MS/DOS) form with
<CR><LF>'s as well as in UNIX form, with <LF>'s only. When
you get a fresh nodelist, or change the "nodelist" statements in the
config file, you must rebuild index with ifindex
For outgoing calls, status files are created for nodes, with the extention
".sts". These are ascii files containg three decimal numbers in a
time retries code
is the last call attempt time (attempts failing with "retry
time not reached" do not count). It is unsigned long representing the
number of seconds since the epoch.
is the number of consequitve call attempts made that returned
"call failed" or "could not establish session". This field
is zeroed when call succeeds.
is the return code of the last attempt.
program compiles a new version of the nodelist from the old
nodelist and nodediff.
Display a short help message.
Set the debug verbosity Verbosity
may be a number
from 0 to 32 to set 'on' bits from 1 to number, or a string of letters where
'a' = bit 1, 'b' = bit 2, etc. up to bit 26.
Use the alternate configuration file File.
1 - master, 0 - slave. default is 0 (slave mode) if no
is provided; else the default is 1 (master mode).
Tell an internet address Inetaddr
to make a
connection by TCP/IP. A specific port can be given ( -a Inetaddr:Port
). The default is the one given by fido
0 - TCP, 1 - Telnet-Vmodem. Tells the mode to use for TCP/IP
connections, the default is TCP mode (-t0)
For modem conections, this overrides the phone number given in the nodelist
For modem connections, this overrides the tty value give in the config file
This is the FTN addres of the node to call. The addres must be in
the format "[pNN.]fNN.nNN[.zNN[.domain]]".
Those values are typically
given by an FTN-able getty ( mgetty
determine the type of FTN protocol to use. They imply slave mode.
returns maximum return code for all calls made. Codes are as
||Dialout port unavailable
||Dial failed (no "CONNECT" or TCP connection failed)
||Could not reset the modem (no "OK")
||Retry time not reached
||Fatal error in nodelist lookup
||Call prohibited by config options
||Phone number unavailable
||No matching ports defined
||Session failures (not defined yet)
||Could not establish session
- Runtime configuration file.
- Determines the default port number for fido, the
port used by ifcico for tcp connections.
- A list of nodes in an FTN network. ifcico uses it
by compiling it with ifindex
- compiles a nodelist so ifcico can use it.
- show statistics of calls, etc.
ifmail(8), ifindex(8), ifinfo(8), ifstat(8), ifpack(8), ifunpack(8), iftoss(8),
Some ideas taken from Fidogate/RFmail package, written by Teemu Torma and hacked
by Martin Junius.
Some tcp code taken from JE version, written by Tsuneo Tanaka
Hydra protocol support by Christof Meerwald <email@example.com>
1993, 1994 Eugene Crosser
This is free software. You can do what you wish with it as long as this
copyright notice is preserved.
Manpage by Pablo Saratxaga <firstname.lastname@example.org>