CONCEPT imp LAST UPDATED Deepthought, 10-Nov-92 Pepel, 18-Nov-93 DESRIPTION This document describes IMP, the intermud message protocol, also known as Intermud-1. Imp messages are exchanged between muds using UDP (unreliable datagram protocol) packets. Each mud provides a connection endpoint which is given by the ip host address and the UDP port number. Muds may then send messages to this port by using the efun send_imp(). The applied function receive_imp will be called by the driver in the master object if a imp message arrives at the mud's UDP port. Imp message packets have the following format: password@objectname@functionname[[@argument]...] is the connection password to verify incoming imp packets. It is encoded using crypt(E) and compared to the stored password. Each mud participating in the imp network has a secret password which is encoded by the admin and distributed to remote muds with which the mud should have direct connection. Encryted passwords may also propagated to other muds over already secure channels. is a logical name which is not to be confused with mudlib object filenames. It is used by receive_msg in the master object to route the message to another object by associating the logical object name with a real mudlib file name. A good idea would be to reserve a special directory for imp objects, e.g. /secure/net/. is the function which is called by the master object in the object described by . are additional arguments which are handed to the function . The exact definition of functions and arguments are left to the imp applications. AUTHOR originally Deepthought NOTE The above is only particularly correct nowadays. Recently a package name "inetd" was published, that is based on the IMP mechanism in the driver (send_imp() and receive_imp()), but it uses a different message format. That package seems to enjoy much publicity and is installed in a number of muds. For details look into the inetd description. An other method of inter mud connection is the Mudlink package, which uses a normal user connection that is connected to a special user object, and an auxiliary process that does the connection to other muds. SEE ALSO send_imp(E), receive_imp(M), intermud(C)