The port for isc-dhcp3-server has config options for enabling FreeBSD
process jails. Basically, through a series of command line arguments
that are generated by the isc-dhcpd.sh script, the chroot is
auto-generated when you start the service and dhcpd makes the syscall to
jail itself. This is actually really nifty and makes the process of
running dhcpd in a thin jail brainless.

The problem happens when I run "isc-dhcpd.sh stop": 
dhcpd not running? (check /var/jails/dhcpd/var/run/dhcpd/dhcpd.pid).

Well, I know better. dhcpd is clearly running with the pid indicated in
the pid file. After investigating /etc/rc.subr, I've determined the
cause (where $JID is the jid of the running rc script and $_jid is the
jid of the process, determined by ps output):
  if [ "$JID" -eq "$_jid" ];

Therefore, I cannot run isc-dhcpd.sh stop on the host system. However,
given that I'm using a thin jail, I can't just log in to the jail to
call the rc script. Further, the rc script was written to be called from
the host machine.

My question is how do I get around this? I'd prefer not to hack rc.subr
unless it's a community-useable patch that can be incorporated back into
the official sources. One option would be to allow rc scripts to set
some sort of "CHECK_JAILS" variable and to implement the necessary logic
to handle it in rc.subr. Is there a better solution?

Chris Cowart
Unix Systems Administrator
Residential Computing, UC Berkeley
"May all your pushes be popped"

Attachment: signature.asc
Description: Digital signature

Reply via email to