Part of the agreed specification for the route-engine (see Appendix B) is that it has a restart function, which forces it to reload its files. This has to be able to be invoked by an administrator over the network. This causes a problem with a multi-process server, because if it is called in a child process dealing with an administrative connection, then the route-engine associated with that process updates itself, but the master process, from which all others are spawned remains unchanged.
The solution to this problem was to implement an element of an iterative server in the program. A UDP socket was created on the administrative port. When a datagram arrives on this socket, rather than forking as with other connections, the server calls the restart function, and the route-engine updates itself. Whilst this is being done, connections to the server are queued, but as the engine should not be restarted very often, this is unlikely to be a problem.