
                             NIPC Network Realms



Nipc.library is designed to work well in both a single physical network and in
internets.  In a situation where there is only one physical networks with a
small number of machines, NIPC will work without setting up a Realm.  However,
when there are many machines on a single network, or when there are many
different physical networks, it is desirable to logically divide the entire
network into Realms. An Realm is a logical grouping of hosts that may exists
on a single network or separate physical networks.  Because of this, Realms
are independent of network topology.  A Realm name can always be optionally
provided before a host name, by preceding the hostname with the Realm name and
and a colon character.  For instance, "siberia:scratchy" references the
Amiga named 'scratchy' in the Realm "siberia".  If a reference is made to a
host without a Realm name, the Realm that the referencer is in is defaulted
to.  If you reference "scratchy", and are in the Realm "siberia" yourself,
NIPC will assume you mean "siberia:scratchy".  However, if you're in a
different Realm -- say "Software Engineering", -- and wish to reference
machine "scratchy", you must specify "siberia:scratchy" -- as providing only
"scratchy" will resolve to "Software Engineering:scratchy", which at best
will fail, and at worst will resolve a different machine (another one named
"scratchy") than you intended.

Each Realm must have one host that is acting as a "Realm Server".  This host
is responsible for propagating all Realm queries to all of the physical
networks within a realm.  Because each host in a realm is configured to know
what Realm it is in and its Realm Server's network address is, a Realm Server
does not need to be physically connected to each network in the realm.

Network queries are initiated by calling the nipc.library function
NIPCInquiryA().  This function allows applications to send many different
types of queries.  These range from just determining the names of all machines
in a realm, to doing complex queries that can find all machines with exported
filesystems, 68040's, and eight megabytes of ram.  For more information, please
read the autodoc for NIPCInquiryA().

If a query sent by a host is for that hosts local network, the query packet is
broadcasted to every machine on that network.  Each machine on that network
will respond to the packet if necessary.

If a query is for a specific Realm, the query is sent to the querying host's
Realm Server.  The Realm Server then consults its Realm database to see if it
knows anything about the Realm specified in the query.  If the Server
determines that the Realm is one of those that it controls, it sends broadcasts
to all of the physical networks that are in the specified realm.  Otherwise,
if the Realm specified in the query is controlled by another Realm Server,
the query packet is forwarded to that machine for further processing.

An NIPC Realm is configured by starting the NIPC configuration editor.  On the
Realms panel, there are two listview gadgets.  The one on the left is for
setting up realms that the Realm Server is in control of.  The listview on the
right is for telling the Realm Server about other Realm Servers.  Each physical
network in a Realm must have a separate entry in the lefthand listview gadget.























