Remote control
==============
The library has remote controlling capabilities, so external, unrelated
processes can enable and disable failure points.
It has a very simple request/reply protocol that can be performed over
different transports. At the moment, the only transport available is named
pipes.
Remote control must be enabled by the controlled process using *fiu_rc_fifo()*
(for named pipes). A set of utilities are provided to enable remote control
without having to alter the application's source code, which can be useful for
performing fault injection in libraries, see *fiu-run* and *fiu-ctrl* for more
information.
Remote control protocol
-----------------------
It is a line based request/reply protocol. Lines end with a newline character
(no carriage return). A request is composed of a command and 0 or more
parameters, separated with a single space. The following commands are
supported at the moment:
- ``enable <name> <failnum> <failinfo> [flags]``
- ``enable_random <name> <failnum> <failinfo> <probability> [flags]``
- ``disable <name>``
Where:
- *name* is the name of the point of failure (which, at the moment, cannot
have spaces inside).
- *failnum* the same as the *failnum* parameter of *fiu_enable()* (see the
manpage for more details).
- failinfo the same as the *failinfo* parameter of *fiu_enable()* (see the
manpage for more details).
- *flags* can be either absent or ``one``, which has the same meaning as
passing ``FIU_ONETIME`` in the *flags* parameter to *fiu_enable()*.
The reply is always a number: 0 on success, < 0 on errors.