
Note:   This text file has not been reviewed yet.
        Being french speaking, I know my english is not perfect,
        but my GF will review it for the final release :)

        Dominique

        Here we go...


1 - THE ROUTING MAP (VISLINK.MAP)

        The routing map contains the necessary information for systems
        to "know" each other, mainly which route must a packet should
        take in order to get to the destination system (for private
        messages, pages, etc) and to which systems must a public message
        be broadcasted to (i.e. by channels).

        Systems can be linked in many ways - either by using:
        a linear (chain) system:

                A <-> B <-> C <-> D

        a star system:
                              C
                              
                        A <-> D <-> B
                              
                              E

        or both:

                              C
                              
                        A <-> D <-> B
                              
                              E <-> F

        Each systems connected to MORE than one acts as a "router" for
        those systems.

        The only thing you must keep in mind when configuring the system
        is to AVOID REDUNDANCY.  The compiler will generate internal
        warning about it.  A redundant system would be like:

                        A --- B
                          \ /
                           C

        If you think the link should be tolerant to redundancy, let me
        know.

        The base version allow your system to be linked to only one
        system, this has to do with PHYSICAL link only, this mean if the
        system you're connected to is linked to 50 systems, you will
        also!  In the "both" setup above, only system D requires a 4
        link and system E a 2 link.

        The routing map should be administred by one system, so that
        everyone gets the right -- and same -- information.

        I plan to include an auto-download routing map from the system
        administrator, or to include built-in intelligent routing for
        next release.


1.1     ROUTING MAP CONFIGURATION

        If you won't be in any way a link administrator, you do not need
        to read this chapter, however it could help you understand how the
        link works.

        Here is an example of a simple, 2 systems routing map:

        system BBS1
                channel GENERAL
                channel ADULT
                link BBS2

        system BBS2
                channel GENERAL
                channel ADULT
                link BBS1

        This tells 2 main things to the software:
                1- there is 2 systems, BBS1 and BBS2
                2- there is 2 channels, GENERAL and ADULT

        Now, let's see what a more complex system would look like.  This
        would be the routing map of the "both" system descrived above,
        assuming there is 2 channels: ADULT and GENERAL and:

        system A wants GENERAL and ADULT
        system B wants GENERAL and ADULT
        systems C, D, E and F only wants GENERAL

        system BBS_A
                channel GENERAL
                channel ADULT
                link BBS_D

        system BBS_B
                channel GENERAL
                channel ADULT
                link BBS_D

        system BBS_C
                channel GENERAL
                link BBS_D

        system BBS_D
                channel ADULT
                channel GENERAL
                link BBS_A
                link BBS_B
                link BBS_C
                link BBS_E

        system BBS_E
                channel GENERAL
                link BBS_D
                link BBS_F

        system BBS_F
                channel GENERAL
                link BBS_E

        BBS_D has to define channel ADULT even if he do not want it on his
        own system, this is because he acts as a router for systems A and B
        that wants this channel.  The software will only broadcast public
        messages to systems where the channel is wanted, this to prevent
        useless traffic on the links.  Remember that the links are
        bidirectional, that is why you must specify a link from BBS_A to
        BBS_D and a link from BBS_D to BBS_A, if you only specify one, the
        compiler will generate a warning and one of the system will not
        be able to find a route to the other.


1.2     COMPILING THE ROUTING MAP

        The compiler, VISRMC.EXE will generate a VISLINK.BIN file from
        the VISLINK.MAP file.  It can be used in 2 ways:

        VISRMC

        will compile the map for the system specified in the .MSG (.mcv)
        file or:

        VISRMC sysid

        will compile the map according to sysid (you should not need to use
        this feature unless you're making tests or configuring other's
        system).


2       CHANNELS

        VISLINK overlay your standard entertainment teleconference.  You
        must create the channels you specified (or asked your link
        admin to do so) in the routing map, if not, you will simply not
        be linked to those channels.  You may of course specify a
        key to get in the channel and therefore use the link.  You could
        use your MAIN channel, (specifying channel MAIN in VISLINK.MAP).

        Private messages are not channel based, i.e. a user in channel
        GENERAL could whisper to a user on another system in channel ADULT.

        Remember that you must link to a system that actually has this
        channel defined in the VISLINK.MAP, independantly of this system
        actually uses it or not, so it know at least he must route packets
        of this channels for you.


1.3     MEMORY REQUIREMENTS

        The software should not take more than 40 or so kilobytes.  However
        it will require more memory as the routing map grows, this should
        be an average of 20 bytes per systems and 20 bytes per number of
        channels specified in the routing map (i.e. 3 systems having
        channel GENERAL counts as 1, not 3).  CS support will add 16k to
        the memory requirements.


3       SYSTEM LOGONS

        Altough the routing map includes information as to which system
        is linked to which, it is not used for the physical connection
        from your system to other(s).  This is for security purpose, the
        routing map is kind of public material and logging on require
        passwords/accounts.

        VISLINK uses an autosensor routine to avoid complexity of scripting
        based on different systems, languages options, prompts, etc.

        The autosensor will shortly delay (about 2 seconds) your logon
        autosensing routine - this is because most of the connections
        with VISLINK will be internet (telnet) connections.  You
        certainly already had problems telneting to a system in ANSI
        that will not correctly detects it, this is because Internet is
        based on packet and we cannot precisely determine the time a
        packet will take to get somewhere, so the ANSI autosensing just
        time-out.  This delay should help ANSI users to logon your system
        as well.


3.1     MANUAL CONNECT

        You can manually connect to a system.  You will need:

        - to have the SYSKEY on your system
        - to have the number/ip adress/domain name of the system;
        - to have an account on the remote system that has
          the REMKEY key (the sysop of this system must allow you to
          link your system, of course)

        then, get in teleconference, make sure you're on a link channel
        type:

        lnk connect (channel/channels) (number/ip/domain) (user) (password)

        Note that lnk would be replaced by anything else you could have
        specified in the .msg file.

        channel/channels can include one or more channels, for example 10
        would specify channel 10, 10-15 would specify any free channel in
        this range.

        number/ip/domain is the number or IP adress or domain name of the
        system you want to connect to, depending if you are using a telnet
        or phone connection.

        user is your user account on the remote system.

        password is your password for this account.

        For example:

        lnk connect 50 vistel.com bbs 123456

        would attempt to connect to vistel.com, using channel 50, user "bbs"
        and password "123456"


3.2     AUTOLOGON

        You can specify one or multiple systems to autologon whenever
        the system is up (I plan adding link time and/or date).  You
        simply specify those systems in the file VISLINK.SYS.  Simply
        type in on a free line:

        SYSID channel/channels number/ip/domain user password

        the only difference is that you will specify SYSID, to ensure the
        software will not try to link on multiple channels if you specify
        a channel range.  SYSID is the remote system ID, not yours.  For
        example, the same system in an autologon file would look:

        VISTEL 50 vistel.com bbs 123456

        It is suggested that only 1 system has the autologon configured,
        as it would be useless for both systems to try to connect to
        each other, and this would duplicate the need of a user account.
        You can of course configure more than one system in the autologon
        file, if you are hubbing other for example (require additional
        link licenses).


3.3     ACCOUNT

        The user account/password is only used for verification purpose,
        it does not require the user to ever logon, nor it does matter if
        this user is already logged (not LINKED).  There is so far no
        verification of this user being suspended, so if you no longer
        wants a system to logon, make sure you remove REMKEY from his
        account.  Of course, any master-key user could be used for this but
        you should not do it, unless you have an infinite amount of trustness
        from the other sysop.


4       SYSOP/MODERATOR FUNCTIONS

        The LNK CONNECT as explained in manual connect requires the SYSKEY.

        A SYSKEY owner is always also considered as a moderator.

        Moderators can uses the commands:

        lnk squelch user                        to squelch a local user
        lnk squelch sys:user                    to squelch a remote user
        lnk unsquelch user                      to unsquelch a local user
        lnk unsquelch sys:user                  to unsquelch a remote user


5       USER COMMANDS

        A linked user is always known as SYSID:User, where SYSID is the
        system ID this USER is logged on.


5.1     WHISPERS

        Whispers can be sent by using /sysid:user message


5.2     REMOTE PAGE

        A user can send a page to a user on another system, if this feature
        has been enabled in the .msg file using:

                /rp sysid:user message


5.3     USER LISTS

        A user can list all users on all systems by using the "LNK #" command.
        He/she can also requests users on a specific system by using
        "LNK # SYSID" - # can be replaced by USERS.

        These commands are global (if activated in CNF):

        /users          list all users on all systems
        /users sys      list all users on system "sys"
        /scan           list all linked users on all systems
        /scan channel   list all linked users in channel "channel"


6       TEXT VARIABLE

        A text variable LNKSTATUS is available to see how many systems
        are linked and how many users are linked.  You could use this
        text variable in your "who's online" L6 text block.

        A text variable LNKUSERS is available to generate a LNK # command
        from a text block.  You could for example insert this text
        variable in the footer of your teleconference SCAN command.

        Another variable, LNKALONE can be used to correct the "There is
        currently no one else here with you" problem.  When a user join
        a link channel, and he is the only one on YOUR system to be in,
        he would get this message.  Just replace GALETL level 6 BYSELF text
        block with this text variable and VISLINK will automatically
        send the original message (specified in VISLINK L6-BYSELFTV) when
        a user is really alone and will simply replace it with "" when
        the user is in a link channel.

        You can change the name of theese text variables in the MSG file.


7       INTERNET/LAGGING

        VISLINK should be quite tolerant to lagging, altough our firsts
        tests on beta-1 showed that it could be more, the delay has
        been increased.  Here is what happens:

        There are "HELLO" packets broadcasted every 30 seconds, this
        allow other system to "see" who's on the map and therefore not
        trying to send packet to not-linked systems (causing useless
        traffic).  It's also used to know the number of users and linked
        users on that system, for the LNKSTATUS text variable.  If there
        is lagging, and a system is over 60 seconds without receiving
        "HELLO" from another, it will consider it disconnected.  General
        messages (public) will still be broadcasted -- as the physical
        link is not broken, public messages are "broadcasted" to every
        "routes", not systems, requiring the specific channel -- but
        packets like whispers and pages will NOT be sent since the
        systems thinks this one is disconnected.


8       PROBLEMS


8.1     GALETL NOT FOUND PROBLEM

        For some odd reason, there are a few systems who gets this message.
        Altough the .mdf file does specify GALETL must be loaded first,
        it is getting ignored in some case - will investigate on this.

        However, if ever that happens, you can easily fix the problem:

        Use an ASCII text editor to edit the file MJRBBS.CFG

        Look for 2 lines, named DLL=GALETL and DLL=VISLINK.  GALETL MUST
        come first, so move the DLL=VISLINK line under DLL=GALETL.

        Another cause to this problem would be your NHOOKS GALETL option
        set too small.  Just increase it.


8.2     SYSTEM NOT CONNECTING

        When you issue a LNK CONNECT command or when the system auto-login
        a remote site and cannot connect for a reason, it will write down
        a reason on either or both systems.  You should first try to look
        in your own audit trail - if you get a "unknown" or "time-out"
        reason, then the other site should have a more "clear" reason.

        Here are the things you should double-check:

        The channel or channel range is valid.

        The IP adress/domain/phone is valid (you could telnet into that
        site to ensure it is).

        Your account on the host (called) site is valid AND does own
        the REMKEY specified by the sysop.  This account has a SINGLE
        word, account like "The Sphynx" will NOT work (VISLINK will
        try to use account "the" with password "sphynx").

        You have the right password for this account.

        Make sure you can establish a telnet connection to your hub -
        if not, you should first try to correct that problem.


8.3     DEBUG ERRORS IN AUDIT TRAIL

        Debug errors should not happen - unless something goes wrong.
        They WILL happen however if you are using a non-error free
        environment to link to the other system, like RS-232.  However,
        if you get any of these in an error free environment you should
        contact me with the most information you could have about it.

        There is an option to turn off notification in audit trail of
        such errors, in this cases, those packets will simply be ignored.



