From 75bb332dbd3105cda90d9d544a16ffdd9be19bbd Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Mon, 6 Dec 2010 15:13:58 +0100 Subject: add examples/var_service/README Signed-off-by: Denys Vlasenko --- examples/var_service/README | 54 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 examples/var_service/README (limited to 'examples/var_service/README') diff --git a/examples/var_service/README b/examples/var_service/README new file mode 100644 index 0000000..75d2ab8 --- /dev/null +++ b/examples/var_service/README @@ -0,0 +1,54 @@ +In many cases, network configuration makes it necessary to run several daemons: +dhcp, zeroconf, ppp, openvpn and such. They need to be controlled, +and in many cases you also want to babysit them. runsvdir is a good tool for this. +examples/var_service directory provides a few examples. It is meant to be used +this way: copy it somewhere (say, /var/service) and run something like + +env - PATH=... runsvdir /var/service & + +from one of system startup scripts. (Google "man runsvdir" and "man runsv" +for more info about these tools). + +Some existing examples: + +var_service/dhcp_if - +controls a udhcpc instance which provides dhpc-assigned IP +address on interface named "if". Copy/rename this directory as needed to run +udhcpc on other interfaces (var_service/dhcp_if/run script uses _foo suffix +or the parent directory as interface name). When IP address is obtained or lost, +var_service/dhcp_if/dhcp_handler is run. It saves new config data to +/var/run/service/fw/dhcp_if.ipconf and (re)starts /var/service/fw service. + +var_service/ifplugd_if - +watches link status of interface if. Downs and ups /var/service/dhcp_if +service accordingly. In effect, it allows you to unplug/plug-to-different-network +and have your IP properly re-negotiated at once. + +var_service/dhcp_if_pinger - +Uses var_service/dhcp_if's data (/var/service/dhcp_if/dhcp_if.out file) +to determine router IP. Pings it. If ping fails, restarts /var/service/dhcp_if +service. Basically, an example of watchdog service for networks +which are not reliable and need babysitting. + +var_service/fw - +An *one-shot* service which reconfigures network based on current known state +of ALL interfaces. Uses conf/*.ipconf (static config) and /var/run/service/fw/*.ipconf +(dynamic config from dhcp/ppp/vpn/etc) to determine what to do. +One-shot-ness of this service means that it shuts itself off after single run. + +However, any dhcp/ppp/vpn or similar service can restart it anytime +when it senses the change in network configuration. +This even works while fw service runs: if dhcp signals fw to (re)start +while fw runs, fw will not stop after its execution, but will re-execute once, +picking up dhcp's new configuration. +This is achieved very simply by having +# Make ourself one-shot +sv o . +at the very beginning of fw/run script, not at the end. +Therefore, any "sv u /var/run/service/fw" command by any other +script "undoes" o(ne-shot) command if fw still runs, thus +runsv will rerun it; or start it in a normal way if fw is not running. + +System administrators are expected to edit fw/run script, since +network configuration needs are likely to be very complex and different +for non-trivial installations. -- cgit v1.1