summaryrefslogtreecommitdiffstats
path: root/etc/rc.d/ntpd
diff options
context:
space:
mode:
Diffstat (limited to 'etc/rc.d/ntpd')
-rwxr-xr-xetc/rc.d/ntpd35
1 files changed, 34 insertions, 1 deletions
diff --git a/etc/rc.d/ntpd b/etc/rc.d/ntpd
index b09c4d1..ae54ebb 100755
--- a/etc/rc.d/ntpd
+++ b/etc/rc.d/ntpd
@@ -1,10 +1,12 @@
#!/bin/sh
#
-# $NetBSD: ntpd,v 1.2 2000/05/13 08:45:07 lukem Exp $
+# $NetBSD: ntpd,v 1.8 2002/06/17 06:47:59 lukem Exp $
#
# PROVIDE: ntpd
# REQUIRE: DAEMON
+# BEFORE: LOGIN
+# KEYWORD: chrootdir
. /etc/rc.subr
@@ -12,7 +14,38 @@ name="ntpd"
rcvar=$name
command="/usr/sbin/${name}"
pidfile="/var/run/${name}.pid"
+start_precmd="ntpd_precmd"
required_files="/etc/ntp.conf"
+ntpd_precmd()
+{
+ if [ -z "$ntpd_chrootdir" ]; then
+ return 0;
+ fi
+
+ # If running in a chroot cage, ensure that the appropriate files
+ # exist inside the cage, as well as helper symlinks into the cage
+ # from outside.
+ #
+ # As this is called after the is_running and required_dir checks
+ # are made in run_rc_command(), we can safely assume ${ntpd_chrootdir}
+ # exists and ntpd isn't running at this point (unless forcestart
+ # is used).
+ #
+ # Before enabling ntpd_chrootdir, ensure that:
+ # - The kernel has "pseudo-device clockctl" compiled in
+ # - /dev/clockctl is present
+ #
+ if [ ! -c "${ntpd_chrootdir}/dev/clockctl" ]; then
+ rm -f "${ntpd_chrootdir}/dev/clockctl"
+ ( cd /dev ; /bin/pax -rw -pe clockctl "${ntpd_chrootdir}/dev" )
+ fi
+ ln -fs "${ntpd_chrootdir}/var/db/ntp.drift" /var/db/ntp.drift
+
+ # Change run_rc_commands()'s internal copy of $ntpd_flags
+ #
+ rc_flags="-u ntpd:ntpd -i ${ntpd_chrootdir} $rc_flags"
+}
+
load_rc_config $name
run_rc_command "$1"
OpenPOWER on IntegriCloud