#!/bin/sh # PROVIDE: spiped # REQUIRE: LOGIN # KEYWORD: shutdown # # Add the following lines to /etc/rc.conf.local or /etc/rc.conf # to enable this service: # # spiped_enable: Set to YES to enable spiped. # spiped_uid: User for spiped process (default "spiped"). # spiped_gid: Group for spiped process (default "spiped"). # spiped_pipes: List of names of pipes to create. # spiped_pipe_X_mode: "encrypt"/"client" or "decrypt"/"server". # spiped_pipe_X_source: Source address of pipe X. # spiped_pipe_X_target: Target address of pipe X. # spiped_pipe_X_key: Key file for pipe X. # spiped_pipe_X_flags: Optional flags for pipe X. See spiped(1) for details. . /etc/rc.subr name="spiped" rcvar=spiped_enable load_rc_config $name : ${spiped_enable="NO"} : ${spiped_uid="spiped"} : ${spiped_gid="spiped"} command=%%PREFIX%%/bin/${name} start_cmd="${name}_start" stop_cmd="${name}_stop" spiped_start() { local P PIDFILE MODE SOURCE TARGET KEY MODEFLAG for P in ${spiped_pipes}; do PIDFILE=/var/run/spiped_${P}.pid eval MODE=\$spiped_pipe_${P}_mode eval SOURCE=\$spiped_pipe_${P}_source eval TARGET=\$spiped_pipe_${P}_target eval KEY=\$spiped_pipe_${P}_key eval FLAGS=\$spiped_pipe_${P}_flags case "$MODE" in encrypt | client) MODEFLAG="-e" ;; decrypt | server) MODEFLAG="-d" ;; *) echo Invalid value for spiped_pipe_${P}_mode: $MODE continue esac ${command} -D $MODEFLAG -s $SOURCE -t $TARGET -k $KEY \ -u ${spiped_uid}:${spiped_gid} -p $PIDFILE $FLAGS done } spiped_stop() { local P PIDFILE for P in ${spiped_pipes}; do PIDFILE=/var/run/spiped_${P}.pid if [ -f $PIDFILE ] ; then rc_pid=$(check_pidfile $PIDFILE $command) fi if [ -z "$rc_pid" ]; then [ -n "$rc_fast" ] && return 0 _run_rc_notrunning return 1 fi echo "Stopping ${name}." kill $sig_stop $rc_pid wait_for_pids $rc_pid rm $PIDFILE done } run_rc_command "$1"