A hoster is a task that starts slave pvmd processes on command from the master pvmd. Normally, the master pvmd uses the rsh program or the rexec() function (depending on whether a password is used) to start the pvmd process on a new slave host. Over the socket created by rsh, the master and slave have a short dialog to bootstrap the pvmd-pvmd message drivers, which allows the slave to be brought up the rest of the way via normal PVM messages. The hoster allows one to alter this mechanism for adding new hosts to the virtual machine. This might be useful for dealing with systems where additional security is needed or where the new host, say an MPP, does not support standard rsh/rexec interfaces.
If a hoster task is registered (using pvm_reg_hoster()) with the master pvmd when a host-add is requested (a DM_ADD message is received), the master pvmd sends a SM_STHOST message to the hoster and waits for a SM_STHOSTACK message in reply to complete the operation.
The bootstrap protocol between the master pvmd and slave is designed so that the hoster need understand as little as possible about the protocol. The hoster is sent a list of hosts and commands to run. It runs the commands and returns output from them to the master pvmd, which does the parsing. The remainder of the startup is always done by the master pvmd. The message formats are:
Host file startup options pw (password) and ms (manual startup) were combined into a single option, so= (startup option). The new forms are so=pw and so=ms. The value of so can be set to any string, and is null by default. This allows information specific to a custom hoster to be passed from the host file to the hoster without being processed by the pvmd. The default ``hoster'' (built into the pvmd) understands only pw and ms. A replacement hoster might accept those, or expect completely different options.