Compare commits

..

2 Commits

Author SHA1 Message Date
Roy Marples
6ce7001a1a Fix dist for svn 2008-12-07 07:51:40 +00:00
Roy Marples
0e0d0ab1ef Tag openrc-0.4.0 2008-12-07 07:49:55 +00:00
292 changed files with 10809 additions and 7951 deletions

16
.gitignore vendored
View File

@@ -1,16 +0,0 @@
*.bz2
*.diff
*.patch
*.orig
*.rej
core
.gdb_history
.gdbinit
.depend
*.a
*.o
*.So
lib*.so

View File

@@ -1,49 +0,0 @@
The following is a list of files and features that are going to be removed in
the source tree. Every entry should contain what exactly is going away, why it
is happening, and who is going to be doing the work. When the feature is
removed, it should also be removed from this file.
---------------------------
What: oldnet ADSL rp-pppoe mode
When: undecided
Why: Replaced by the oldnet PPP module
Who: Robin H. Johnson <robbat2@gentoo.org>
---------------------------
What: oldnet /etc/conf.d/wireless
When: undecided
Why: All configuration moved to /etc/conf.d/net
Who: Robin H. Johnson <robbat2@gentoo.org>
---------------------------
What: Service pause action
When: Removed already, compatbility warning in place.
Why: ...
Who:
---------------------------
What: Service --startas, --chuid , --oknodo
When: undecided
Why: Obsolete or replaced by other options.
--startas => use --name or --exec
--chuid => use --user
--oknodo => ignore return code instead
Who:
---------------------------

View File

@@ -1,17 +1,12 @@
# OpenRC Makefile # OpenRC Makefile
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
include Makefile.inc NAME= openrc
VERSION= 0.4.0
SUBDIR= conf.d etc init.d local.d man scripts sh src sysctl.d PKG= ${NAME}-${VERSION}
# Build pkgconfig or not
MKPKGCONFIG?= yes
ifeq (${MKPKGCONFIG},yes)
SUBDIR+= pkgconfig
endif
SUBDIR= conf.d doc etc init.d man net sh src
# We need to ensure that runlevels is done last # We need to ensure that runlevels is done last
SUBDIR+= runlevels SUBDIR+= runlevels
@@ -22,13 +17,7 @@ include ${MK}/sys.mk
include ${MK}/os.mk include ${MK}/os.mk
include ${MK}/subdir.mk include ${MK}/subdir.mk
include ${MK}/dist.mk include ${MK}/dist.mk
include ${MK}/git.mk
_installafter: _installafter:
ifeq (${MKPREFIX},yes) ${INSTALL} -d ${DESTDIR}/${PREFIX}/${RC_LIB}/init.d
${INSTALL} -d ${DESTDIR}/${LIBEXECDIR}/init.d ${INSTALL} -d ${DESTDIR}/${PREFIX}/${RC_LIB}/tmp
else ifneq (${OS},Linux)
${INSTALL} -d ${DESTDIR}/${LIBEXECDIR}/init.d
endif
${INSTALL} -d ${DESTDIR}/${LIBEXECDIR}/tmp
${ECHO} "${VERSION}${GITVER}" > ${DESTDIR}/${LIBEXECDIR}/version

View File

@@ -1,3 +0,0 @@
NAME= openrc
VERSION= 0.12.2
PKG= ${NAME}-${VERSION}

29
README
View File

@@ -4,21 +4,15 @@ OpenRC README
Installation Installation
------------ ------------
make install make install
Yup, that simple. Works with GNU make. Yup, that simple. Works with GNU make and BSD make.
You may wish to tweak the installation with the below arguments You may wish to tweak the installation with the below arguments
PROGLDFLAGS=-static PROGLDFLAGS=-static
LIBNAME=lib64 LIBNAME=lib64
DESTDIR=/tmp/openrc-image DESTDIR=/tmp/openrc-image
MKNET=no
MKPAM=pam MKPAM=pam
MKPREFIX=yes
MKPKGCONFIG=no
MKSELINUX=yes
MKSTATICLIBS=no
MKTERMCAP=ncurses MKTERMCAP=ncurses
MKTERMCAP=termcap MKTERMCAP=termcap
MKTOOLS=yes
PKG_PREFIX=/usr/pkg PKG_PREFIX=/usr/pkg
LOCAL_PREFIX=/usr/local LOCAL_PREFIX=/usr/local
PREFIX=/usr/local PREFIX=/usr/local
@@ -27,8 +21,6 @@ We don't support building a static OpenRC with PAM.
You may need to use PROGLDFLAGS=-Wl,-Bstatic on glibc instead of just -static. You may need to use PROGLDFLAGS=-Wl,-Bstatic on glibc instead of just -static.
If you debug memory under valgrind, add -DDEBUG_MEMORY to your CPPFLAGS If you debug memory under valgrind, add -DDEBUG_MEMORY to your CPPFLAGS
so that all malloc memory should be freed at exit. so that all malloc memory should be freed at exit.
If you are building OpenRC for a Gentoo Prefix installation, add
MKPREFIX=yes.
You can also brand OpenRC if you so wish like so You can also brand OpenRC if you so wish like so
BRANDING=\"Gentoo/$(uname -s)\" BRANDING=\"Gentoo/$(uname -s)\"
@@ -47,7 +39,7 @@ If any of the following files exist then we do not overwrite them
rc and rc.shutdown are the hooks from the BSD init into OpenRC. rc and rc.shutdown are the hooks from the BSD init into OpenRC.
devd.conf is modified from FreeBSD to call /etc/rc.devd which is a generic devd.conf is modified from FreeBSD to call /etc/rc.devd which is a generic
hook into OpenRC. hook into OpenRC.
inittab is the same, but for SysVInit as used by most Linux distributions. inittab is the same, but for SysVInit as used by most Linux distrubtions.
This can be found in the support folder. This can be found in the support folder.
Obviously, if you're installing this onto a system that does not use OpenRC Obviously, if you're installing this onto a system that does not use OpenRC
by default then you may wish to backup the above listed files, remove them by default then you may wish to backup the above listed files, remove them
@@ -57,24 +49,21 @@ init.d.misc is not installed by default as the scripts will need
tweaking on a per distro basis. They are also non essential to the operation tweaking on a per distro basis. They are also non essential to the operation
of the system. of the system.
As of OpenRC-0.12, the net.* scripts, originally from Gentoo Linux, have
been removed. If you need these scripts, look for a package called
netifrc, which is maintained by them.
Reporting Bugs Reporting Bugs
-------------- -------------
Since Gentoo Linux is hosting OpenRC development, Bugs should go to If you installed OpenRC from your chosen distribution, you should report
the Gentoo Bugzilla: bugs directly to them. For example, if you use Gentoo and emerged OpenRC
http://bugs.gentoo.org/ then you should reports bugs to http://bugs.gentoo.org.
They should be filed under the "Gentoo Hosted Projects" product and
the "openrc" component. Otherwise, you can report them directly to me at http://bugs.marples.name
History - by Roy Marples History - by Roy Marples
------------------------ ------------------------
I became a Gentoo/Linux developer in 2004 and wrote the modular network I became a Gentoo/Linux developer in 2004 and wrote the modular network
scripts for the Gentoo baselayout package. baselayout is a collection of scripts for the Gentoo baselayout package. baselayout is a collection of
bash scripts to bring up your computer and its services. bash scripts to bring up your computer and it's services.
Then towards the end of 2005 I found myself as the primary maintainer Then towards the end of 2005 I found myself as the primary maintainer
for baselayout. for baselayout.

View File

@@ -1,28 +0,0 @@
Using Busybox as your Default Shell
-----------------------------------
If you have/bin/sh linked to busybox, you need to be aware of several
incompatibilities between busybox's applets and the standalone
counterparts. Since it is possible to configure busybox to not include
these applets or to prefer the standalone counterparts, OpenRC does not
attempt to support the busybox applets.
All of these apply to busybox 1.20.2, which is the current version of
busybox as of this writing.
1. The start-stop-daemon applet is not compatible with start-stop-daemon
in OpenRC. Please make sure CONFIG_START_STOP_DAEMON is not set to y in
the configuration file you use to build busybox.
2. The -O option for the mount applet does not support the [no]_netdev
options from util-linux for handling network file systems.
3. The umount applet does not support the -O option from util-linux.
4. The swapon applet does not support the -e option from util-linux.
5. the setfont applet does not support the -u option from kbd.
There is work to get most of these supported by busybox, so this file
will be updated as things change.

View File

@@ -1,36 +0,0 @@
OpenRC Network Ideals
---------------------
The new style networking for OpenRC is very simplistic - provide a basic means
of configuring static interface address and routes whilst allowing the
possibility to run any command at any point.
In a nutshell, init.d/network is a wrapper around ifconfig(8) and
init.d/staticroute is wrapper around route(8).
In the Perfect World (TM) ifconfig should be able to configure everything
about the interface easily * . The BSD family almost get this right and Linux
epically fails.
* Only static configuration, including link setup.
For dynamic, static, IPv4LL, arping and per ssid IPv4 setup dhcpcd-5.x
provides your needs.
It fails because there are many tools to do the same job and often have
vastly different syntax where they could be similar. In other words, there
is no coherence.
OpenRC-0.4.x and older (inc Gentoo baselayout-1) had a collection of scripts
for each tool and allowed a script per interface. Over the years, this design
has proven very hard to maintain as each user has their own idea of how
things should work. Also, there were (and still are) race conditions.
So where do we go from here?
Well, it's possible to use the new network scripts using the tools
currently available. It's just harder as you have to know them and their
documentation can be lacking at times.
The correct end goal is a BSD style ifconfig tool.
I've started work on it, but the project has stalled somewhat.
It's display only right now and the source is not yet publicly available.
If you have the skills and share the vision then contact me privately and
we'll take it from there.

85
STYLE
View File

@@ -1,85 +0,0 @@
This is the openrc style manual. It governs the coding style of all code
in this repository. Follow it. Contact openrc@gentoo.org for any questions
or fixes you might notice.
##########
# C CODE #
##########
The BSD Kernel Normal Form (KNF) style is used:
http://en.wikipedia.org/wiki/Indent_style#BSD_KNF_style
Basically, it's like K&R/LKML, but wrapped lines that are indented use 4 spaces.
Highlights:
- no trailing whitespace
- indented code use tabs (not line wrapped)
- cuddle the braces (except for functions)
- space after native statements and before paren (for/if/while/...)
- no space between function and paren
- pointer asterisk cuddles the variable, not the type
void foo(int c)
{
int ret = 0;
if (c > 1000)
return;
while (c--) {
bar(c);
ret++;
}
return ret;
}
##################
# COMMIT MESSAGES #
##################
The following is an example of a correctly formatted git commit message
for this repository. Most of this information came from this blog post
[1], so I would like to thank the author.
### cut here ###
Capitalized, short (50 chars or less) summary
More detailed explanatory text, if necessary. Wrap it to about 72
characters or so. In some contexts, the first line is treated as the
subject of an email and the rest of the text as the body. The blank
line separating the summary from the body is critical (unless you omit
the body entirely); tools like rebase can get confused if you run the
two together.
Write your commit message in the imperative: "Fix bug" and not "Fixed
bug." This convention matches up with commit messages generated by
commands like git merge and git revert.
Further paragraphs come after blank lines.
- Bullet points are okay, too
- Typically a hyphen or asterisk is used for the bullet, preceded by a
single space, with blank lines in between, but conventions vary here
- Use a hanging indent
Reported-by: User Name <email>
X-[Distro]-Bug: BugID
X-[Distro]-Bug-URL: URL for the bug (on the distribution's web site typically)
### cut here ###
If you did not write the code and the patch does not include authorship
information in a format git can use, please use the --author option of the
git commit command to make the authorship correct.
The Reported-by tag is required if the person who reported the bug is
different from the author and committer.
The X-[Distro]-Bug/Bug-URL tags are required if this commit is related
to a bug reported to us by a specific distribution of linux or a
*BSD. Also, [Distro] should be replaced with the name of the
distribution, e.g. X-Gentoo-Bug.
[1] http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html

20
TODO
View File

@@ -1,21 +1,3 @@
- ensure all forks block, restore and unblock signals. needs review - ensure all forks block, restore and unblock signals. needs review
- add support somehow for optional translations - add support somehow for optional translations
- oldnet[bridging]: Review setting of bridge configuration on dynamic interface add
- Document rc-depend binary.
- _ifindex is not a reliable means of calculating metrics:
_ifindex is used for calculating metrics for new devices but has a major
problem: Since it's only the nth entry in /proc/net/dev
And devices may be removed from that file, and reordered, you won't always
get the same result.
If you do:
- add eth0 - _ifindex (eth0=0)
- add vlan1 - _ifindex (eth0=0,vlan1=1)
- add vlan2 - _ifindex (eth0=0,vlan1=1,vlan2=2)
- rem vlan1 - _ifindex (eth0=0,vlan2=1)
- add vlan3 - _ifindex (eth0=0,vlan2=1,vlan3=2)
Now your routing table has entries for both vlan2 and vlan3 with a metric of 2.

2
conf.d/.gitignore vendored
View File

@@ -1,2 +0,0 @@
network
staticroute

View File

@@ -1,28 +1,7 @@
include ../mk/net.mk
DIR= ${CONFDIR} DIR= ${CONFDIR}
CONF= bootmisc fsck hostname localmount netmount urandom tmpfiles \ CONF= bootmisc fsck hostname local localmount net urandom
${CONF-${OS}}
ifeq (${MKNET},yes)
CONF+= network staticroute
TARGETS+= network staticroute
CLEANFILES+= network staticroute
endif
MK= ../mk MK= ../mk
include ${MK}/os.mk include ${MK}/os.mk
include Makefile.${OS}
CONF-FreeBSD= ipfw moused powerd rarpd savecore syscons
CONF-Linux= consolefont dmesg hwclock keymaps killprocs modules
CONF-NetBSD= moused rarpd savecore
include ${MK}/scripts.mk include ${MK}/scripts.mk
network: network.in network${SFX}
cat $^ > $@
staticroute: staticroute${SFX}
cp $@${SFX} $@

1
conf.d/Makefile.FreeBSD Normal file
View File

@@ -0,0 +1 @@
CONF+= ipfw moused powerd rarpd savecore syscons

1
conf.d/Makefile.Linux Normal file
View File

@@ -0,0 +1 @@
CONF+= consolefont dmesg hwclock keymaps modules

1
conf.d/Makefile.NetBSD Normal file
View File

@@ -0,0 +1 @@
CONF+= moused rarpd savecore

View File

@@ -1,10 +1,10 @@
# Set CLOCK to "UTC" if your system clock is set to UTC (also known as # Set CLOCK to "UTC" if your system clock is set to UTC (also known as
# Greenwich Mean Time). If your clock is set to the local time, then # Greenwich Mean Time). If your clock is set to the local time, then
# set CLOCK to "local". Note that if you dual boot with Windows, then # set CLOCK to "local". Note that if you dual boot with Windows, then
# you should set it to "local". # you should set it to "local".
clock="UTC" clock="UTC"
# If you want to set the Hardware Clock to the current System Time # If you want to set the Hardware Clock to the current System Time
# during shutdown, then say "YES" here. # during shutdown, then say "YES" here.
# You normally don't need to do this if you run a ntp daemon. # You normally don't need to do this if you run a ntp daemon.
clock_systohc="NO" clock_systohc="NO"

View File

@@ -1,10 +1,6 @@
# List of /tmp directories we should clean up # List of /tmp directories we should clean up
clean_tmp_dirs="/tmp" wipe_tmp_dirs="/tmp"
# Should we wipe the tmp paths completely or just selectively remove known # Should we wipe the tmp paths completely or just selectively remove known
# locks / files / etc... ? # locks / files / etc... ?
wipe_tmp="YES" wipe_tmp="YES"
# Write the initial dmesg log into /var/log/dmesg after boot
# This may be useful if you need the kernel boot log afterwards
log_dmesg="YES"

View File

@@ -1,10 +1,9 @@
# The consolefont service is not activated by default. If you need to
# use it, you should run "rc-update add consolefont boot" as root.
#
# consolefont specifies the default font that you'd like Linux to use on the # consolefont specifies the default font that you'd like Linux to use on the
# console. You can find a good selection of fonts in /usr/share/consolefonts; # console. You can find a good selection of fonts in /usr/share/consolefonts;
# you shouldn't specify the trailing ".psf.gz", just the font name below. # you shouldn't specify the trailing ".psf.gz", just the font name below.
# To use the default console font, comment out the CONSOLEFONT setting below. # To use the default console font, comment out the CONSOLEFONT setting below.
# This setting is used by the /etc/init.d/consolefont script (NOTE: if you do
# not want to use it, run "rc-update del consolefont" as root).
consolefont="default8x16" consolefont="default8x16"
# consoletranslation is the charset map file to use. Leave commented to use # consoletranslation is the charset map file to use. Leave commented to use

View File

@@ -1,3 +1,3 @@
# Sets the level at which logging of messages is done to the # Sets the level at which logging of messages is done to the
# console. See dmesg(1) for more info. # console. See dmesg(8) for more info.
dmesg_level="1" dmesg_level="1"

View File

@@ -13,18 +13,6 @@
#fsck_passno=">1" #fsck_passno=">1"
#fsck_passno="<2" #fsck_passno="<2"
# If passno is not enough granularity, you can also specify mountpoints to
# check. This should NOT be used for the default non-multiplexed fsck, or your
# system might not be checked. Additionally, it is mutually exclusive with
# the fsck_passno setting.
#fsck_mnt=""
#fsck_mnt="/home"
# Most modern fs's don't require a full fsck on boot, but for those that do
# it may be advisable to skip this when running on battery.
# WARNING: Do not turn this off if you have any JFS partitions.
fsck_on_battery="YES"
# fsck_shutdown causes fsck to trigger during shutdown as well as startup. # fsck_shutdown causes fsck to trigger during shutdown as well as startup.
# The end result of this is that if any periodic non-root filesystem checks are # The end result of this is that if any periodic non-root filesystem checks are
# scheduled, under normal circumstances the actual check will happen during # scheduled, under normal circumstances the actual check will happen during

View File

@@ -1,19 +1,13 @@
# Set CLOCK to "UTC" if your Hardware Clock is set to UTC (also known as # Set CLOCK to "UTC" if your system clock is set to UTC (also known as
# Greenwich Mean Time). If that clock is set to the local time, then # Greenwich Mean Time). If your clock is set to the local time, then
# set CLOCK to "local". Note that if you dual boot with Windows, then # set CLOCK to "local". Note that if you dual boot with Windows, then
# you should set it to "local". # you should set it to "local".
clock="UTC" clock="UTC"
# If you want the hwclock script to set the system time (software clock) # If you want to set the Hardware Clock to the current System Time
# to match the current hardware clock during bootup, leave this # during shutdown, then say "YES" here.
# commented out. # You normally don't need to do this if you run a ntp daemon.
# However, you can set this to "NO" ifyou are running a modern kernel clock_systohc="NO"
# with CONFIG_RTC_HCTOSYS set to y and your hardware clock set to UTC.
#clock_hctosys="YES"
# If you do not want to set the hardware clock to the current system
# time (software clock) during shutdown, set this to no.
#clock_systohc="YES"
# If you wish to pass any other arguments to hwclock during bootup, # If you wish to pass any other arguments to hwclock during bootup,
# you may do so here. Alpha users may wish to use --arc or --srm here. # you may do so here. Alpha users may wish to use --arc or --srm here.

View File

@@ -1,18 +1,16 @@
# Use keymap to specify the default console keymap. There is a complete tree # Use KEYMAP to specify the default console keymap. There is a complete tree
# of keymaps in /usr/share/keymaps to choose from. # of keymaps in /usr/share/keymaps to choose from.
keymap="us" keymap="us"
# Should we first load the 'windowkeys' console keymap? Most x86 users will # Should we first load the 'windowkeys' console keymap? Most x86 users will
# say "yes" here. Note that non-x86 users should leave it as "no". # say "yes" here. Note that non-x86 users should leave it as "no".
# Loading this keymap will enable VT switching (like ALT+Left/Right)
# using the special windows keys on the linux console.
windowkeys="NO" windowkeys="NO"
# The maps to load for extended keyboards. Most users will leave this as is. # The maps to load for extended keyboards. Most users will leave this as is.
extended_keymaps="" extended_keymaps=""
#extended_keymaps="backspace keypad euro2" #extended_keymaps="backspace keypad euro2"
# Tell dumpkeys(1) to interpret character action codes to be # Tell dumpkeys(1) to interpret character action codes to be
# from the specified character set. # from the specified character set.
# This only matters if you set unicode="yes" in /etc/rc.conf. # This only matters if you set unicode="yes" in /etc/rc.conf.
# For a list of valid sets, run `dumpkeys --help` # For a list of valid sets, run `dumpkeys --help`

View File

@@ -1,3 +0,0 @@
# If you wish to pass any options to killall5 during shutdown,
# you should do so here.
killall5_opts=""

18
conf.d/local Normal file
View File

@@ -0,0 +1,18 @@
# Here is where you can put anything you need to start
# that there is not an init script for.
local_start() {
# This is a good place to load any misc programs
# on startup (use &>/dev/null to hide output)
# We should always return 0
return 0
}
local_stop() {
# This is a good place to unload any misc.
# programs you started above.
# We should always return 0
return 0
}

View File

@@ -1,10 +1,8 @@
# You can define a list modules for a specific kernel version, # You can define a list modules for a specific kernel version,
# a released kernel version, a main kernel version or just a list. # a released kernel version, a main kernel version or just a list.
# The most specific versioned variable will take precedence.
#modules_2_6_23_gentoo_r5="ieee1394 ohci1394" #modules_2_6_23_gentoo_r5="ieee1394 ohci1394"
#modules_2_6_23="tun ieee1394" #modules_2_6_23="tun ieee1394"
#modules_2_6="tun" #modules_2_6="tun"
#modules_2="ipv6"
#modules="ohci1394" #modules="ohci1394"
# You can give modules a different name when they load - the new name # You can give modules a different name when they load - the new name
@@ -12,12 +10,10 @@
#modules="dummy:dummy1" #modules="dummy:dummy1"
# Give the modules some arguments if needed, per version if necessary. # Give the modules some arguments if needed, per version if necessary.
# Again, the most specific versioned variable will take precedence.
#module_ieee1394_args="debug" #module_ieee1394_args="debug"
#module_ieee1394_args_2_6_23_gentoo_r5="debug2" #module_ieee1394_args_2_6_23_gentoo_r5="ieee1394 ohci1394"
#module_ieee1394_args_2_6_23="debug3" #module_ieee1394_args_2_6_23="tun ieee1394"
#module_ieee1394_args_2_6="debug4" #module_ieee1394_args_2_6="tun"
#module_ieee1394_args_2="debug5"
# You should consult your kernel documentation and configuration # You should consult your kernel documentation and configuration
# for a list of modules and their options. # for a list of modules and their options.

View File

@@ -11,6 +11,6 @@
# You can also multiplex the init script for each device like so # You can also multiplex the init script for each device like so
# ln -s moused /etc/init.d/moused.ums0 # ln -s moused /etc/init.d/moused.ums0
# This enables you to have a config file per mouse (forces moused_device # This enables you to have a config file per mouse (forces moused_device
# to ums0 in this case) and control each mouse. # to ums0 in this case) and control each mouse.
# devd can also start and stop these mice, which laptop users will find handy. # devd can also start and stop these mice, which laptop users will find handy.

4
conf.d/net Normal file
View File

@@ -0,0 +1,4 @@
# This blank configuration will automatically use DHCP for any net.*
# scripts in /etc/init.d. To create a more complete configuration,
# please review /usr/share/doc/openrc/net.example and save your configuration
# in /etc/conf.d/net (this file :]!).

View File

@@ -1,40 +0,0 @@
# You will need to set the dependencies in the netmount script to match
# the network configuration tools you are using. This should be done in
# this file by following the examples below, and not by changing the
# service script itself.
#
# Each of these examples is meant to be used separately. So, for
# example, do not set rc_need to something like "net.eth0 dhcpcd".
#
# If you are using newnet and configuring your interfaces with static
# addresses with the network script, you should use this setting.
#
#rc_need="network"
#
# If you are using oldnet, you must list the specific net.* services you
# need.
#
# This example assumes all of your netmounts can be reached on
# eth0.
#
#rc_need="net.eth0"
#
# This example assumes some of your netmounts are on eth1 and some
# are on eth2.
#
#rc_need="net.eth1 net.eth2"
#
# If you are using a dynamic network management tool like
# networkmanager, dhcpcd in standalone mode, wicd, badvpn-ncd, etc, to
# manage the network interfaces with the routes to your netmounts, you
# should list that tool.
#
#rc_need="networkmanager"
#rc_need="dhcpcd"
#rc_need="wicd"
#
# The default setting is designed to be backward compatible with our
# current setup, but you are highly discouraged from using this. In
# other words, please change it to be more suited to your system.
#
rc_need="net"

View File

@@ -1,4 +0,0 @@
# You can assign a default route
#defaultroute="192.168.0.1"
#defaultroute6="2001:a:b:c"

View File

@@ -1,43 +0,0 @@
# You can assign a default route
#defaultroute="gw 192.168.0.1"
#defaultroute6="gw 2001:a:b:c"
# ifconfig under Linux is not that powerful and doesn't easily handle
# multiple addresses
# On the other hand, ip (iproute2) is quite powerful and is also supported
#ip_eth0="192.168.0.10/24; 192.168.10.10/24"
# You can also use ip to add the default route.
#defaultiproute="via 192.168.0.1"
#defaultiproute6="via 2001:a:b:c"
# ip doesn't handle MTU like ifconfig, but we can do it like so
#ifup_eth0="ip link set \$int mtu 1500"
# Create a bonded interface
#interfaces="bond0"
#ifup_bond0="modprobe bonding; ifconfig \$int up; ifenslave \$int bge0"
#ifconfig_bond0="192.168.0.10 netmask 255.255.255.0"
#ifdown_bond0="rmmod bonding"
# Create tap interface and a bridge interface.
# We add the tap to the bridge.
# An external program, like dhcpcd, will configure the IP on the bridge
#interfaces="tun0 br0"
#ifup_tun0="tunctl -t \$int"
#ifdown_tun0="tunctl -d \$int"
#ifup_br0="brctl addbr \$int; brctl add \$int eth1; brtctl add \$int eth2"
#ifdown_br0="ifconfig \$int down; btctl delbr \$int"
# Create VLAN
#interfaces="eth0_2 eth0_3 eth0_4"
#ifup_eth0="vconfig add \$int 2; vconfig add \$int 3; vconfig add \$int 4"
#ifconfig_eth0_2="192.168.2.10 netmask 255.255.255.0"
#ifconfig_eth0_3="192.168.3.10 netmask 255.255.255.0"
#ifconfig_eth0_4="192.168.4.10 netmask 255.255.255.0"
#ifdown_eth0="vconfig rem \$int.2; vconfig rem \$int.3; vconfig rem \$int.4"
# Normally you would use wpa_supplicant to configure wireless, but you can
# use iwconfig also
#ifup_wlan0="iwconfig \$int key s:secretkey enc open essid foobar"

View File

@@ -1,28 +0,0 @@
# Assign static IP addresses and run custom scripts per interface.
# Seperate commands with ;
# Prefix with ! to run a shell script.
# Use \$int to represent the interface
#ifconfig_eth0="192.168.0.10 netmask 255.255.255.0"
# You also have ifup_eth0 and ifdown_eth0 to run other commands when
# eth0 is started and stopped.
# You should note that we don't stop the network at system shutdown by default.
# If you really need this, then set keep_network=NO
# Lastly, the interfaces variable pulls in virtual interfaces that cannot
# be automatically detected.
#interfaces="br0 bond0 vlan0"
# You can also use files instead of variables here if you like:
# /etc/ifconfig.eth0 is equivalent to ifconfig_eth0
# /etc/ip.eth0 is equivalent to ifconfig_eth0
# /etc/ifup.eth0 is equivalent to ifup_eth0
# /etc/ifdown.eth0 is equivalent to ifdown_eth0
# Any files found will automatically be put into the interfaces variable.
# You don't need to escape variables in files, so use $int instead of \$int.
# If you require DHCP, you should install dhcpcd and it to the boot or
# default runlevel.
# NIS users can set the domain name here
#domainname="foobar"

View File

@@ -1,6 +0,0 @@
# Separate multiple routes using ; or new lines.
# /etc/route.conf(5) takes precedence over this configuration.
# Example static routes. See route(8) for syntax.
#staticroute="net 192.168.0.0 -netmask 255.255.255.0 10.73.1.1
#net 192.168.1.0 -netmask 255.255.255.0 10.73.1.1"

View File

@@ -1,8 +0,0 @@
# Separate multiple routes using ; or new lines.
# Example static routes. See route(8) for syntax.
#staticroute="net 192.168.0.0 netmask 255.255.255.0 gw 10.73.1.1
#net 192.168.1.0 netmask 255.255.255.0 gw 10.73.1.1"
# Example static routes using iproute2. See ip(8) for syntax.
#staticiproute="192.168.0.0/24 via 10.73.1.1; 192.168.1.0/24 via 10.73.1.1"

View File

@@ -1,3 +0,0 @@
# Extra options for tmpfiles.sh
#tmpfiles_opts="--verbose"
tmpfiles_opts=""

View File

@@ -2,4 +2,4 @@
# (say for crypt swap), so you will need to customize this # (say for crypt swap), so you will need to customize this
# behavior. If you have /var on a separate partition, then # behavior. If you have /var on a separate partition, then
# make sure this path lives on your root device somewhere. # make sure this path lives on your root device somewhere.
urandom_seed="/var/lib/misc/random-seed" urandom_seed="/var/run/random-seed"

7
doc/Makefile Normal file
View File

@@ -0,0 +1,7 @@
DIR= ${DOCDIR}/openrc
INC= net.example
MK= ../mk
include ${MK}/os.mk
include Makefile.${OS}
include ${MK}/scripts.mk

5
doc/Makefile.FreeBSD Normal file
View File

@@ -0,0 +1,5 @@
SRCS+= net.example.in
.SUFFIXES: .BSD.in
.BSD.in:
${CP} $< $@

5
doc/Makefile.Linux Normal file
View File

@@ -0,0 +1,5 @@
SRCS+= net.example.in
.SUFFIXES: .Linux.in
.Linux.in:
${CP} $< $@

5
doc/Makefile.NetBSD Normal file
View File

@@ -0,0 +1,5 @@
SRCS+= net.example.in
.SUFFIXES: .BSD.in
.BSD.in:
${CP} $< $@

434
doc/net.example.BSD.in Normal file
View File

@@ -0,0 +1,434 @@
##############################################################################
# QUICK-START
#
# The quickest start is if you want to use DHCP.
# In that case, everything should work out of the box, no configuration
# necessary, though the startup script will warn you that you haven't
# specified anything.
# WARNING :- some examples have a mixture of IPv4 (ie 192.168.0.1) and IPv6
# (ie 4321:0:1:2:3:4:567:89ab) internet addresses. They only work if you have
# the relevant kernel option enabled. So if you don't have an IPv6 enabled
# kernel then remove the IPv6 address from your config.
# If you want to use a static address or use DHCP explicitly, jump
# down to the section labelled INTERFACE HANDLERS.
#
# If you want to do anything more fancy, you should take the time to
# read through the rest of this file.
##############################################################################
# MODULES
#
# We now support modular networking scripts which means we can easily
# add support for new interface types and modules while keeping
# compatability with existing ones.
#
# Modules load by default if the package they need is installed. If
# you specify a module here that doesn't have it's package installed
# then you get an error stating which package you need to install.
# Ideally, you only use the modules setting when you have two or more
# packages installed that supply the same service.
#
# In other words, you probably should DO NOTHING HERE...
##############################################################################
# INTERFACE HANDLERS
# For a static configuration, use something like this
#config_eth0="192.168.0.2/24"
# If you need more than one address, you can use something like this
# NOTE: ifconfig creates an aliased device for each extra IPv4 address
# (eth0:1, eth0:2, etc)
# iproute2 does not do this as there is no need to
#config_eth0="192.168.0.2/24 192.168.0.3/24 192.168.0.4/24"
# Or you can use sequence expressions
#config_eth0="192.168.0.{2..4}/24" FIXME - may not work with baselayout2
# which does the same as above. Be careful though as if you use this and
# fallbacks, you have to ensure that both end up with the same number of
# values otherwise your fallback won't work correctly.
# You can also use IPv6 addresses
# (you should always specify a prefix length with IPv6 here)
#config_eth0="192.168.0.2/24 4321:0:1:2:3:4:567:89ab/64 4321:0:1:2:3:4:567:89ac/64"
# If you wish to keep existing addresses + routing and the interface is up,
# you can specify a noop (no operation). If the interface is down or there
# are no addresses assigned, then we move onto the next step (default dhcp)
# This is useful when configuring your interface with a kernel command line
# or similar
#config_eth0="noop 192.168.0.2/24"
# If you don't want ANY address (only useful when calling for advanced stuff)
#config_eth0="null"
# Here's how to do routing if you need it
# We add an IPv4 default route, IPv4 subnet route and an IPv6 unicast route
#routes_eth0="default via 192.168.0.1
#10.0.0.0/8 via 192.168.0.1
#::/0"
# If a specified module fails (like dhcp - see below), you can specify a
# fallback like so
#fallback_eth0="192.168.0.2 netmask 255.255.255.0"
#fallback_route_eth0="default via 192.168.0.1"
# NOTE: fallback entry must match the entry location in config_eth0
# As such you can only have one fallback route.
# Some users may need to alter the MTU - here's how
#mtu_eth0="1500"
# Most drivers that report carrier status function correctly, but some do not
# One of these faulty drivers is for the Intel e1000 network card, but only
# at boot time. To get around this you may alter the carrier_timeout value for
# the interface. -1 is disable, 0 is infinite and any other number of seconds
# is how long we wait for carrier. The current default is 3 seconds
#carrier_timeout_eth0=-1
# You may wish to disable the interface being brought down when stopping.
# This is only of use for WakeOnLan.
#ifdown_eth0="NO"
##############################################################################
# OPTIONAL MODULES
#-----------------------------------------------------------------------------
# WIRELESS (802.11 support)
# Wireless can be provided by BSDs ifconfig (iwconfig) or wpa_supplicant
# wpa_supplicant is preferred, use the modules directive to prefer iwconfig.
#modules="iwconfig"
# ifconfig (iwconig) support is a one shot script - wpa_supplicant is daemon
# that scans, assoicates and re-configures if assocation is lost.
# We call it iwconfig to seperate the wireless setup from ifconfig.
####################################
# HINTS
#
# Most users will just need to set the following options
# key_SSID1="s:yourkeyhere enc open" # s: means a text key
# key_SSID2="aaaa-bbbb-cccc-dd" # no s: means a hex key
# preferred_aps="SSID1 SSID2"
#
# Clear? Good. Now configure your wireless network below
####################################
# SETTINGS
# Hard code an SSID to an interface - leave this unset if you wish the driver
# to scan for available Access Points
# I would only set this as a last resort really - use the preferred_aps
# setting at the bottom of this file
#essid_eth0='foo'
# Some drivers/hardware don't scan all that well. We have no control over this
# but we can say how many scans we want to do to try and get a better sweep of
# the area. The default is 1.
#scans_eth0="1"
#Channel can be set (1-14), but defaults to 3 if not set.
#
# The below is taken verbatim from the BSD wavelan documentation found at
# http://www.netbsd.org/Documentation/network/wavelan.html
# There are 14 channels possible; We are told that channels 1-11 are legal for
# North America, channels 1-13 for most of Europe, channels 10-13 for France,
# and only channel 14 for Japan. If in doubt, please refer to the documentation
# that came with your card or access point. Make sure that the channel you
# select is the same channel your access point (or the other card in an ad-hoc
# network) is on. The default for cards sold in North America and most of Europe
# is 3; the default for cards sold in France is 11, and the default for cards
# sold in Japan is 14.
#channel_eth0="3"
# Setup any other config commands. This is basically the ifconfig argument
# without the ifconfig $iface.
#ifconfig_eth0=""
# You can do the same per SSID too.
#ifconfig_SSID=""
# Seconds to wait until associated. The default is to wait 10 seconds.
# 0 means wait indefinitely. WARNING: this can cause an infinite delay when
# booting.
#associate_timeout_eth0="5"
# Define a WEP key per SSID or MAC address (of the AP, not your card)
# The encryption type (open or restricted) must match the
# encryption type on the Access Point.
# To set a hex key, prefix with 0x
#key_SSID="0x12341234123412341234123456"
# or you can use strings. Passphrase IS NOT supported
#key_SSID="foobar"
#key_SSID="foobar"
# WEP key for the AP with MAC address 001122334455
#mac_key_001122334455="foobar"
# You can also override the interface settings found in /etc/conf.d/net
# per SSID - which is very handy if you use different networks a lot
#config_SSID="dhcp"
#routes_SSID=
#fallback_SSID=
# Setting name/domain server causes /etc/resolv.conf to be overwritten
# Note that if DHCP is used, and you want this to take precedence then
# please put -R in your dhcpcd options
#dns_servers_SSID="192.168.0.1 192.168.0.2"
#dns_domain_SSID="some.domain"
#dns_search_SSID="search.this.domain search.that.domain"
# Please check the man page for resolv.conf for more information
# as domain and search (searchdomains) are mutually exclusive and
# searchdomains takes precedence
# You can also set any of the /etc/conf.d/net variables per MAC address
# incase you use Access Points with the same SSID but need different
# networking configs. Below is an example - of course you use the same
# method with other variables
#config_001122334455="dhcp"
#dns_servers_001122334455="192.168.0.1 192.168.0.2"
# Map a MAC address to an SSID
# This is used when the Access Point is not broadcasting it's SSID
# WARNING: This will override the SSID being broadcast due to some
# Access Points sending an SSID even when they have been configured
# not to!
# Change 001122334455 to the MAC address and SSID to the SSID
# it should map to
#mac_essid_001122334455="SSID"
# This lists the preferred SSIDs to connect to in order
# SSID's can contain any characters here as they must match the broadcast
# SSID exactly.
# Surround each SSID with the " character and seperate them with a space
# If the first SSID isn't found then it moves onto the next
# If this isn't defined then it connects to the first one found
#preferred_aps="SSID1 SSID2"
# You can also define a preferred_aps list per interface
#preferred_aps_eth0="SSID3 SSID4"
# You can also say whether we only connect to preferred APs or not
# Values are "any", "preferredonly", "forcepreferred", "forcepreferredonly"
# and "forceany"
# "any" means it will connect to visible APs in the preferred list and then
# any other available AP
# "preferredonly" means it will only connect to visible APs in the preferred
# list
# "forcepreferred" means it will forceably connect to APs in order if it does
# not find them in a scan
# "forcepreferredonly" means it forceably connects to the APs in order and
# does not bother to scan
# "forceany" does the same as forcepreferred + connects to any other
# available AP
# Default is "any"
#associate_order="any"
#associate_order_eth0="any"
# You can define blacklisted Access Points in the same way
#blacklist_aps="SSID1 SSID2"
#blacklist_aps_eth0="SSID3 SSID4"
# If you have more than one wireless card, you can say if you want
# to allow each card to associate with the same Access Point or not
# Values are "yes" and "no"
# Default is "yes"
#unique_ap="yes"
#unique_ap_eth0="yes"
# IMPORTANT: preferred_only, blacklisted_aps and unique_ap only work when
# essid_eth0 is not set and your card is capable of scanning
# NOTE: preferred_aps list ignores blacklisted_aps - so if you have
# the same SSID in both, well, you're a bit silly :p
##################################################
# wpa_supplicant
# emerge net-wireless/wpa-supplicant
# Wireless options are held in /etc/wpa_supplicant/wpa_supplicant.conf
# Console the wpa_supplicant.conf.example that is installed in
# /usr/share/doc/wpa_supplicant
# By default we don't wait for wpa_suppliant to associate and authenticate.
# If you would like to, so can specify how long in seconds
#associate_timeout_eth0=60
# A value of 0 means wait forever.
# You can also override any settings found here per SSID - which is very
# handy if you use different networks a lot. See below for using the SSID
# in our variables
#config_SSID="dhcp"
# See the System module below for setting dns/nis/ntp per SSID
# You can also override any settings found here per MAC address of the AP
# in case you use Access Points with the same SSID but need different
# networking configs. Below is an example - of course you use the same
# method with other variables
#mac_config_001122334455="dhcp"
#mac_dns_servers_001122334455="192.168.0.1 192.168.0.2"
# When an interface has been associated with an Access Point, a global
# variable called SSID is set to the Access Point's SSID for use in the
# pre/post user functions below (although it's not available in preup as you
# won't have associated then)
# If you're using anything else to configure wireless on your interface AND
# you have installed wpa_supplicant, you need to disable wpa_supplicant
#modules="!iwconfig !wpa_supplicant"
#or
#modules="!wireless"
##############################################################################
# WIRELESS SSID IN VARIABLES
##############################################################################
# Remember to change SSID to your SSID.
# Say that your SSID is My NET - the line
# #key_SSID="s:passkey"
# becomes
# #key_My_NET="s:passkey"
# Notice that the space has changed to an underscore - do the same with all
# characters not in a-z A-Z (English alphabet) 0-9. This only applies to
# variables and not values.
#
# Any SSID's in values like essid_eth0="My NET" may need to be escaped
# This means placing the character \ before the character
# \" need to be escaped for example
# So if your SSID is
# My "\ NET
# it becomes
# My \"\\ NET
# for example
# #essid_eth0="My\"\\NET"
#
# So using the above we can use
# #dns_domain_My____NET="My\"\\NET"
# which is an invalid dns domain, but shows the how to use the variable
# structure
#########################################################
#-----------------------------------------------------------------------------
# DHCP
# DHCP can be provided by dhclient.
#
# dhcpcd: emerge net-misc/dhcpcd
# dhclient: emerge net-misc/dhcp
# Regardless of which DHCP client you prefer, you configure them the
# same way using one of following depending on which interface modules
# you're using.
#config_eth0="dhcp"
# For passing custom options to dhcpcd use something like the following. This
# example reduces the timeout for retrieving an address from 60 seconds (the
# default) to 10 seconds.
#dhcpcd_eth0="-t 10"
# GENERIC DHCP OPTIONS
# Set generic DHCP options like so
#dhcp_eth0="release nodns nontp nonis nogateway nosendhost"
# This tells the dhcp client to release it's lease when it stops, not to
# overwrite dns, ntp and nis settings, not to set a default route and not to
# send the current hostname to the dhcp server and when it starts.
# You can use any combination of the above options - the default is not to
# use any of them.
#-----------------------------------------------------------------------------
# System
# For configuring system specifics such as domain, dns, ntp and nis servers
# It's rare that you would need todo this, but you can anyway.
# This is most benefit to wireless users who don't use DHCP so they can change
# their configs based on SSID.
# If you omit the _eth0 suffix, then it applies to all interfaces unless
# overridden by the interface suffix.
#dns_domain_eth0="your.domain"
#dns_servers_eth0="192.168.0.2 192.168.0.3"
#dns_search_eth0="this.domain that.domain"
#dns_options_eth0="timeout:1 rotate"
#dns_sortlist_eth0="130.155.160.0/255.255.240.0 130.155.0.0"
# See the man page for resolv.conf for details about the options and sortlist
# directives
#ntp_servers_eth0="192.168.0.2 192.168.0.3"
#nis_domain_eth0="domain"
#nis_servers_eth0="192.168.0.2 192.168.0.3"
# NOTE: Setting any of these will stamp on the files in question. So if you
# don't specify dns_servers but you do specify dns_domain then no nameservers
# will be listed in /etc/resolv.conf even if there were any there to start
# with.
# If this is an issue for you then maybe you should look into a resolv.conf
# manager like resolvconf-gentoo to manage this file for you. All packages
# that baselayout supports use resolvconf-gentoo if installed.
#-----------------------------------------------------------------------------
# Cable in/out detection
# Sometimes the cable is in, others it's out. Obviously you don't want to
# restart net.eth0 every time when you plug it in either.
# BSD has the Device State Change Daemon - or devd for short
# To enable this, simple add devd to the boot runlevel
#rc-update add devd boot
#rc
##############################################################################
# ADVANCED CONFIGURATION
#
# Four functions can be defined which will be called surrounding the
# start/stop operations. The functions are called with the interface
# name first so that one function can control multiple adapters. An extra two
# functions can be defined when an interface fails to start or stop.
#
# The return values for the preup and predown functions should be 0
# (success) to indicate that configuration or deconfiguration of the
# interface can continue. If preup returns a non-zero value, then
# interface configuration will be aborted. If predown returns a
# non-zero value, then the interface will not be allowed to continue
# deconfiguration.
#
# The return values for the postup, postdown, failup and faildown functions are
# ignored since there's nothing to do if they indicate failure.
#
# ${IFACE} is set to the interface being brought up/down
# ${IFVAR} is ${IFACE} converted to variable name bash allows
#preup() {
# # Remember to return 0 on success
# return 0
#}
#predown() {
# # The default in the script is to test for NFS root and disallow
# # downing interfaces in that case. Note that if you specify a
# # predown() function you will override that logic. Here it is, in
# # case you still want it...
# if is_net_fs /; then
# eerror "root filesystem is network mounted -- can't stop ${IFACE}"
# return 1
# fi
#
# # Remember to return 0 on success
# return 0
#}
#postup() {
# # This function could be used, for example, to register with a
# # dynamic DNS service. Another possibility would be to
# # send/receive mail once the interface is brought up.
#}
#postdown() {
# # Return 0 always
# return 0
#}
#failup() {
# # This function is mostly here for completeness... I haven't
# # thought of anything nifty to do with it yet ;-)
#}
#faildown() {
# # This function is mostly here for completeness... I haven't
# # thought of anything nifty to do with it yet ;-)
#}

1049
doc/net.example.Linux.in Normal file

File diff suppressed because it is too large Load Diff

3
etc/.gitignore vendored
View File

@@ -1,3 +0,0 @@
rc.conf
rc
rc.shutdown

View File

@@ -1,28 +1,9 @@
DIR= ${SYSCONFDIR} DIR= ${SYSCONFDIR}
SRCS= rc.conf.in rc.in rc.shutdown.in CONF= rc.conf
BIN= ${BIN-${OS}}
CONF= rc.conf ${BIN-${OS}}
CLEANFILES+= rc.conf CLEANFILES+= rc.conf
MK= ../mk MK= ../mk
include ${MK}/os.mk include ${MK}/os.mk
include Makefile.${OS}
SED_EXTRA-FreeBSD= -e 's:@TERM@:cons25:g'
BIN-FreeBSD= rc rc.shutdown rc.devd
CONF-FreeBSD= devd.conf
SED_EXTRA-Linux= -e 's:@TERM@:wsvt25:g'
BIN-Linux=
CONF-Linux=
SED_EXTRA-NetBSD= -e 's:@TERM@:wsvt25:g'
BIN-NetBSD= rc rc.shutdown
CONF-NetBSD=
SED_EXTRA= ${SED_EXTRA-${OS}}
include ${MK}/scripts.mk include ${MK}/scripts.mk
rc.conf: rc.conf.in rc.conf.${OS}
${SED} ${SED_REPLACE} ${SED_EXTRA} $^ > $@

4
etc/Makefile.FreeBSD Normal file
View File

@@ -0,0 +1,4 @@
SED_EXTRA= -e 's:@TERM@:cons25:g'
SRCS+= rc.conf.in rc.in rc.shutdown.in
CONF+= devd.conf
BIN+= rc rc.shutdown rc.devd

6
etc/Makefile.Linux Normal file
View File

@@ -0,0 +1,6 @@
SED_EXTRA= -e 's:@TERM@:wsvt25:g'
SRCS+= rc.in rc.shutdown.in
rc.conf:
cp rc.conf.in rc.conf
cat rc.conf.Linux >> rc.conf

3
etc/Makefile.NetBSD Normal file
View File

@@ -0,0 +1,3 @@
SED_EXTRA= -e 's:@TERM@:wsvt25:g'
SRCS+= rc.conf.in rc.in rc.shutdown.in
BIN+= rc rc.shutdown

View File

@@ -1,13 +0,0 @@
##############################################################################
# DragonFly BSD SPECIFIC OPTIONS
# This is the subsystem type. Valid options on DragonFly BSD:
# "" - nothing special
# "jail" - DragonFly BSD jails
# "prefix" - Prefix
# If this is commented out, automatic detection will be used.
#
# This should be set to the value representing the environment this file is
# PRESENTLY in, not the virtualization the environment is capable of.
#rc_sys=""

View File

@@ -1,13 +0,0 @@
##############################################################################
# FreeBSD SPECIFIC OPTIONS
# This is the subsystem type. Valid options on FreeBSD:
# "" - nothing special
# "jail" - FreeBSD jails
# "prefix" - Prefix
# If this is commented out, automatic detection will be used.
#
# This should be set to the value representing the environment this file is
# PRESENTLY in, not the virtualization the environment is capable of.
#rc_sys=""

View File

@@ -1,78 +1,8 @@
############################################################################## ##############################################################################
# LINUX SPECIFIC OPTIONS # LINUX SPECIFIC OPTIONS
# This is the subsystem type. Valid options on Linux:
# "" - nothing special
# "lxc" - Linux Containers
# "openvz" - Linux OpenVZ
# "prefix" - Prefix
# "uml" - Usermode Linux
# "vserver" - Linux vserver
# "xen0" - Xen0 Domain
# "xenU" - XenU Domain
# If this is commented out, automatic detection will be used.
#
# This should be set to the value representing the environment this file is
# PRESENTLY in, not the virtualization the environment is capable of.
#rc_sys=""
# This is the number of tty's used in most of the rc-scripts (like # This is the number of tty's used in most of the rc-scripts (like
# consolefont, numlock, etc ...) # consolefont, numlock, etc ...)
rc_tty_number=12 rc_tty_number=12
##############################################################################
# CGROUPS RESOURCE MANAGEMENT
# If you have cgroups turned on in your kernel, this switch controls
# whether or not a group for each controller is mounted under
# /sys/fs/cgroup.
# None of the other options in this section work if this is set to "NO".
#rc_controller_cgroups="YES"
# The following settings allow you to set up values for the cgroup
# controllers for your services.
# They can be set in this file;, however, if you do this, the settings
# will apply to all of your services.
# If you want different settings for each service, place the settings in
# /etc/conf.d/foo for service foo.
# The format is to specify the names of the settings followed by their
# values. Each variable can hold multiple settings.
# For example, you would use this to set the cpu.shares setting in the
# cpu controller to 512 for your service.
# rc_cgroup_cpu="
# cpu.shares 512
# "
#
#For more information about the adjustments that can be made with
#cgroups, see Documentation/cgroups/* in the linux kernel source tree.
# Set the blkio controller settings for this service.
#rc_cgroup_blkio=""
# Set the cpu controller settings for this service.
#rc_cgroup_cpu=""
# Add this service to the cpuacct controller (any value means yes).
#rc_cgroup_cpuacct=""
# Set the cpuset controller settings for this service.
#rc_cgroup_cpuset=""
# Set the devices controller settings for this service.
#rc_cgroup_devices=""
# Set the memory controller settings for this service.
#rc_cgroup_memory=""
# Set the net_prio controller settings for this service.
#rc_cgroup_net_prio=""
# Set this to YES if yu want all of the processes in a service's cgroup
# killed when the service is stopped or restarted.
# This should not be set globally because it kills all of the service's
# child processes, and most of the time this is undesirable. Please set
# it in /etc/conf.d/<service>.
# To perform this cleanup manually for a stopped service, you can
# execute cgroup_cleanup with /etc/init.d/<service> cgroup_cleanup or
# rc-service <service> cgroup_cleanup.
# rc_cgroup_cleanup="NO"

View File

@@ -1,14 +0,0 @@
##############################################################################
# NetBSD SPECIFIC OPTIONS
# This is the subsystem type. Valid options on NetBSD:
# "" - nothing special
# "prefix" - Prefix
# "xen0" - Xen0 Domain
# "xenU" - XenU Domain
# If this is commented out, automatic detection will be used.
#
# This should be set to the value representing the environment this file is
# PRESENTLY in, not the virtualization the environment is capable of.
#rc_sys=""

View File

@@ -2,32 +2,25 @@
# Set to "YES" if you want the rc system to try and start services # Set to "YES" if you want the rc system to try and start services
# in parallel for a slight speed improvement. When running in parallel we # in parallel for a slight speed improvement. When running in parallel we
# prefix the service output with its name as the output will get # prefix the service output with it's name as the output will get
# jumbled up. # jumbled up.
# WARNING: whilst we have improved parallel, it can still potentially lock # WARNING: whilst we have improved parallel, it can still potentially lock
# the boot process. Don't file bugs about this unless you can supply # the boot process. Don't file bugs about this unless you can supply
# patches that fix it without breaking other things! # patches that fix it without breaking other things!
#rc_parallel="NO" rc_parallel="NO"
# Set rc_interactive to "YES" and you'll be able to press the I key during # Set rc_interactive to "YES" and you'll be able to press the I key during
# boot so you can choose to start specific services. Set to "NO" to disable # boot so you can choose to start specific services. Set to "NO" to disable
# this feature. This feature is automatically disabled if rc_parallel is # this feature.
# set to YES. rc_interactive="YES"
#rc_interactive="YES"
# If we need to drop to a shell, you can specify it here. # Do we allow any started service in the runlevel to satisfy the depedency
# If not specified we use $SHELL, otherwise the one specified in /etc/passwd,
# otherwise /bin/sh
# Linux users could specify /sbin/sulogin
#rc_shell=/bin/sh
# Do we allow any started service in the runlevel to satisfy the dependency
# or do we want all of them regardless of state? For example, if net.eth0 # or do we want all of them regardless of state? For example, if net.eth0
# and net.eth1 are in the default runlevel then with rc_depend_strict="NO" # and net.eth1 are in the default runlevel then with rc_depend_strict="NO"
# both will be started, but services that depend on 'net' will work if either # both will be started, but services that depend on 'net' will work if either
# one comes up. With rc_depend_strict="YES" we would require them both to # one comes up. With rc_depend_strict="YES" we would require them both to
# come up. # come up.
#rc_depend_strict="YES" rc_depend_strict="YES"
# rc_hotplug is a list of services that we allow to be hotplugged. # rc_hotplug is a list of services that we allow to be hotplugged.
# By default we do not allow hotplugging. # By default we do not allow hotplugging.
@@ -45,15 +38,11 @@
# /var/log/rc.log # /var/log/rc.log
# NOTE: Linux systems require the devfs service to be started before # NOTE: Linux systems require the devfs service to be started before
# logging can take place and as such cannot log the sysinit runlevel. # logging can take place and as such cannot log the sysinit runlevel.
#rc_logger="YES" rc_logger="NO"
# Through rc_log_path you can specify a custom log file.
# The default value is: /var/log/rc.log
#rc_log_path="/var/log/rc.log"
# By default we filter the environment for our running scripts. To allow other # By default we filter the environment for our running scripts. To allow other
# variables through, add them here. Use a * to allow all variables through. # variables through, add them here. Use a * to allow all variables through.
#rc_env_allow="VAR1 VAR2" # rc_env_allow="VAR1 VAR2"
# By default we assume that all daemons will start correctly. # By default we assume that all daemons will start correctly.
# However, some do not - a classic example is that they fork and return 0 AND # However, some do not - a classic example is that they fork and return 0 AND
@@ -61,53 +50,29 @@
# child crashes. You can set the number of milliseconds start-stop-daemon # child crashes. You can set the number of milliseconds start-stop-daemon
# waits to check that the daemon is still running after starting here. # waits to check that the daemon is still running after starting here.
# The default is 0 - no checking. # The default is 0 - no checking.
#rc_start_wait=100 # rc_start_wait=100
# rc_nostop is a list of services which will not stop when changing runlevels.
# This still allows the service itself to be stopped when called directly.
#rc_nostop=""
# rc will attempt to start crashed services by default.
# However, it will not stop them by default as that could bring down other
# critical services.
#rc_crashed_stop=NO
#rc_crashed_start=YES
############################################################################## ##############################################################################
# MISC CONFIGURATION VARIABLES # MISC CONFIGURATION VARIABLES
# There variables are shared between many init scripts # There variables are shared between many init scripts
# Set unicode to YES to turn on unicode support for keyboards and screens. # Set unicode to YES to turn on unicode support for keyboards and screens.
#unicode="NO" unicode="NO"
# This is how long fuser should wait for a remote server to respond. The # Network fstypes. Below is the default.
# default is 60 seconds, but it can be adjusted here. net_fs_list="afs cifs coda davfs fuse gfs ncpfs nfs nfs4 ocfs2 shfs smbfs"
#rc_fuser_timeout=60
# Below is the default list of network fstypes.
#
# afs cifs coda davfs fuse fuse.sshfs gfs glusterfs lustre ncpfs
# nfs nfs4 ocfs2 shfs smbfs
#
# If you would like to add to this list, you can do so by adding your
# own fstypes to the following variable.
#extra_net_fs_list=""
############################################################################## ##############################################################################
# SERVICE CONFIGURATION VARIABLES # SERVICE CONFIGURATION VARIABLES
# These variables are documented here, but should be configured in # These variables are documented here, but should be configured in
# /etc/conf.d/foo for service foo and NOT enabled here unless you # /etc/conf.d/foo for service foo and NOT enabled here unless you
# really want them to work on a global basis. # really want them to work on a global basis.
# If your service has characters in its name which are not legal in
# shell variable names and you configure the variables for it in this
# file, those characters should be replaced with underscores in the
# variable names as shown below.
# Some daemons are started and stopped via start-stop-daemon. # Some daemons are started and stopped via start-stop-daemon.
# We can set some things on a per service basis, like the nicelevel. # We can set some things on a per service basis, like the nicelevel.
#SSD_NICELEVEL="-19" #export SSD_NICELEVEL="-19"
# Pass ulimit parameters # Pass ulimit parameters
#rc_ulimit="-u 30" #rc_ulimit="-u 30"
# It's possible to define extra dependencies for services like so # It's possible to define extra dependencies for services like so
@@ -124,14 +89,6 @@
#rc_foo_need="openvpn" #rc_foo_need="openvpn"
#rc_foo_after="clock" #rc_foo_after="clock"
# Below is an example for service foo-bar. Note that the '-' is illegal
# in a shell variable name, so we convert it to an underscore.
# example for service foo-bar.
#rc_foo_bar_config="/etc/foo-bar"
#rc_foo_bar_need="openvpn"
#rc_foo_bar_after="clock"
# You can also remove dependencies. # You can also remove dependencies.
# This is mainly used for saying which servies do NOT provide net. # This is mainly used for saying which servies do NOT provide net.
#rc_net_tap0_provide="!net" #rc_net_tap0_provide="!net"

View File

@@ -1,11 +1,10 @@
#!/bin/sh #!/bin/sh
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
# Inform RC that we are in the background and hotplugged # Inform RC that we are in the background and hotplugged
IN_BACKGROUND=yes export IN_BACKGROUND=yes
IN_HOTPLUG=yes export IN_HOTPLUG=yes
export IN_BACKGROUND IN_HOTPLUG
getmedia() { getmedia() {
ifconfig "$1" | while read line; do ifconfig "$1" | while read line; do

View File

@@ -1,12 +1,12 @@
#!@SHELL@ #!@SHELL@
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
# If $TERM is not set then assume default of @TERM@ # If $TERM is not set then assume default of @TERM@
# This gives us a nice colour boot :) # This gives us a nice colour boot :)
[ -z "$TERM" -o "$TERM" = "dumb" ] && TERM="@TERM@" && export TERM [ -z "$TERM" -o "$TERM" = "dumb" ] && export TERM="@TERM@"
# Handle interrupts # Handle interrupts
trap : SIGINT trap : SIGINT
trap "echo 'Boot interrupted'; exit 1" SIGQUIT trap "echo 'Boot interrupted'; exit 1" SIGQUIT

View File

@@ -1,17 +1,17 @@
#!@SHELL@ #!@SHELL@
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
# Handle interrupts # Handle interrupts
trap : SIGINT SIGQUIT trap : SIGINT SIGQUIT
# Try and use stuff in /lib over anywhere else so we can shutdown # Try and use stuff in /lib over anywhere else so we can shutdown
# local mounts correctly. # local mounts correctly.
LD_LIBRARY_PATH="/lib${LD_LIBRARY_PATH:+:}${LDLIBRARY_PATH}" ; export LD_LIBRARY_PATH export LD_LIBRARY_PATH="/lib${LD_LIBRARY_PATH:+:}${LDLIBRARY_PATH}"
# If $TERM is not set then assume default of @TERM@ # If $TERM is not set then assume default of @TERM@
# This gives us a nice colour boot :) # This gives us a nice colour boot :)
[ -z "$TERM" -o "$TERM" = "dumb" ] && TERM="@TERM@" && export TERM [ -z "$TERM" -o "$TERM" = "dumb" ] && export TERM="@TERM@"
action=${1:-shutdown} action=${1:-shutdown}
exec /sbin/rc "${action}" exec /sbin/rc "${action}"

View File

@@ -1,11 +0,0 @@
avahi-dnsconfd
avahid
dhcpcd
dbus
hald
named
ntpd
openvpn
polkitd
sshd
wpa_supplicant

View File

@@ -1,11 +1,10 @@
DIR= ${INITDIR} DIR= ${INITDIR}
SRCS= avahi-dnsconfd.in avahid.in dhcpcd.in dbus.in \ SRCS= avahi-dnsconfd.in avahid.in dbus.in hald.in named.in ntpd.in \
hald.in named.in ntpd.in \ openvpn.in polkitd.in sshd.in
openvpn.in polkitd.in sshd.in wpa_supplicant.in
MK= ../mk MK= ../mk
SED_EXTRA+= -e 's:@VARBASE@:/var:g' SED_EXTRA+= -e 's:@VARBASE@:/var:g'
include ${MK}/os.mk
include ${MK}/scripts.mk include ${MK}/scripts.mk
include Makefile.${OS}

View File

@@ -0,0 +1 @@
PREFIX?= /usr/local

View File

@@ -0,0 +1 @@
PREFIX=/usr

View File

@@ -0,0 +1 @@
PREFIX?= /usr/pkg

View File

@@ -1,9 +1,9 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
command=@PKG_PREFIX@/sbin/avahi-dnsconfd command=@PKG_PREFIX@/sbin/avahi-dnsconfd
command_args="$avahi_dnsconfd_args -D" command_args="${avahi_dnsconfd_args} -D"
pidfile=@VARBASE@/run/avahi-dnsconfd.pid pidfile=@VARBASE@/run/avahi-dnsconfd.pid
name="Avahi DNS Configuration Daemon" name="Avahi DNS Configuration Daemon"

View File

@@ -1,9 +1,9 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
command=@PKG_PREFIX@/sbin/avahi-daemon command=@PKG_PREFIX@/sbin/avahi-daemon
command_args="$avahid_args -D" command_args="${avahid_args} -D"
pidfile=@VARBASE@/run/avahi-daemon/pid pidfile=@VARBASE@/run/avahi-daemon/pid
name="Avahi Service Advertisement Daemon" name="Avahi Service Advertisement Daemon"

View File

@@ -1,6 +1,6 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
command=@PKG_PREFIX@/bin/dbus-daemon command=@PKG_PREFIX@/bin/dbus-daemon
pidfile=@VARBASE@/run/dbus/pid pidfile=@VARBASE@/run/dbus/pid

View File

@@ -1,27 +0,0 @@
#!@SBINDIR@/runscript
# Copyright (c) 2009 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license.
command=/sbin/dhcpcd
pidfile=/var/run/dhcpcd.pid
command_args=-q
name="DHCP Client Daemon"
depend()
{
provide net
need localmount
use logger
after bootmisc modules
before dns
}
stop_pre()
{
# When shutting down, kill dhcpcd but preserve network
# We do this as /var/run/dhcpcd could be cleaned out when we
# return to multiuser.
if yesno $RC_GOINGDOWN; then
: ${stopsig:=SIGKILL}
fi
}

View File

@@ -1,16 +1,16 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
command=@PKG_PREFIX@/sbin/dnsmasq command=@PKG_PREFIX@/sbin/dnsmasq
command_args=$dnsmasq_args command_args=${dnsmasq_args}
pidfile=@VARBASE@/run/dnsmasq.pid pidfile=@VARBASE@/run/dnsmasq.pid
required_files=/etc/dnsmasq.conf required_files=/etc/dnsmasq.conf
extra_started_commands="reload" extra_started_commands="reload"
depend() depend()
{ {
provide dns provide dns
need localmount net need localmount net
after bootmisc after bootmisc
@@ -18,7 +18,7 @@ depend()
reload() reload()
{ {
ebegin "Reloading $RC_SVCNAME" ebegin "Reloading ${RC_SVCNAME}"
start-stop-daemon --signal SIGHUP --pidfile "$pidfile" start-stop-daemon --signal SIGHUP --pidfile "${pidfile}"
eend $? eend $?
} }

View File

@@ -1,10 +1,10 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
command=@PKG_PREFIX@/sbin/hald command=@PKG_PREFIX@/sbin/hald
pidfile=@VARBASE@/run/hald/hald.pid pidfile=@VARBASE@/run/hald/hald.pid
command_args=$hald_args command_args="${hald_args}"
name="Hardware Abstraction Layer Daemon" name="Hardware Abstraction Layer Daemon"
depend() depend()

View File

@@ -1,16 +1,16 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
command=/usr/sbin/named command=/usr/sbin/named
command_args=$named_args command_args=${named_args}
pidfile=@VARBASE@/run/named.pid pidfile=@VARBASE@/run/named.pid
name="Domain Name server" name="Domain Name server"
extra_started_commands="reload" extra_started_commands="reload"
namedb=/etc/namedb namedb=/etc/namedb
uid=named uid=named
case "$RC_UNAME" in case "${RC_UNAME}" in
FreeBSD) FreeBSD)
uid=bind uid=bind
pidfile=@VARBASE@/run/named/pid pidfile=@VARBASE@/run/named/pid
@@ -19,7 +19,7 @@ case "$RC_UNAME" in
uid=bind uid=bind
;; ;;
esac esac
: ${named_uid:=${uid}} named_uid=${named_uid:-${uid}}
depend() depend()
{ {
@@ -30,71 +30,68 @@ depend()
start_pre() start_pre()
{ {
if [ -n "$named_chroot" ]; then if [ -n "${named_chroot}" ]; then
# Create (or update) the chroot directory structure # Create (or update) the chroot directory structure
if [ -r /etc/mtree/BIND.chroot.dist ]; then if [ -r /etc/mtree/BIND.chroot.dist ]; then
mtree -deU -f /etc/mtree/BIND.chroot.dist -p "$named_chroot" mtree -deU -f /etc/mtree/BIND.chroot.dist -p "${named_chroot}"
else else
ewarn "/etc/mtree/BIND.chroot.dist missing," ewarn "/etc/mtree/BIND.chroot.dist missing,"
ewarn "chroot directory structure not updated" ewarn "chroot directory structure not updated"
fi fi
if [ ! -d "$named_chroot"/. ]; then if [ ! -d "${named_chroot}"/. ]; then
eerror "chroot directory $named_chroot missing" eerror "chroot directory ${named_chroot} missing"
exit 1 exit 1
fi fi
# Create /etc/namedb symlink # Create /etc/namedb symlink
if [ ! -L "$namedb" ]; then if [ ! -L "${namedb}" ]; then
if [ -d "$namedb" ]; then if [ -d "${namedb}" ]; then
ewarn "named chroot: $namedb is a directory!" ewarn "named chroot: ${namedb} is a directory!"
elif [ -e "$namedb" ]; then elif [ -e "${namedb}" ]; then
ewarn "named chroot: $namedb exists!" ewarn "named chroot: ${namedb} exists!"
else else
ln -s "$named_chroot$namedb" "$namedb" ln -s "${named_chroot}${namedb}" "${namedb}"
fi fi
else else
# Make sure it points to the right place. # Make sure it points to the right place.
ln -shf "$named_chroot$namedb" "$namedb" ln -shf "${named_chroot}${namedb}" "${namedb}"
fi fi
case "$RC_UNAME" in case "${RC_UNAME}" in
*BSD|DragonFly) *BSD|DragonFly)
# Mount a devfs in the chroot directory if needed # Mount a devfs in the chroot directory if needed
umount "$named_chroot"/dev 2>/dev/null umount "${named_chroot}"/dev 2>/dev/null
mount -t devfs dev "$named_chroot"/dev mount -t devfs dev "${named_chroot}"/dev
devfs -m "$named_chroot"/dev \ devfs -m "${named_chroot}"/dev ruleset devfsrules_hide_all
ruleset devfsrules_hide_all devfs -m "${named_chroot}"/dev rule apply path null unhide
devfs -m "$named_chroot"/dev \ devfs -m "${named_chroot}"/dev rule apply path random unhide
rule apply path null unhide
devfs -m "$named_chroot"/dev \
rule apply path random unhide
;; ;;
esac esac
# Copy local timezone information if it is not up to date. # Copy local timezone information if it is not up to date.
if [ -r /etc/localtime ]; then if [ -r /etc/localtime ]; then
cmp -s /etc/localtime "$named_chroot/etc/localtime" || cmp -s /etc/localtime "${named_chroot}/etc/localtime" ||
cp -p /etc/localtime "$named_chroot/etc/localtime" cp -p /etc/localtime "${named_chroot}/etc/localtime"
fi fi
command_args="$command_args -t $named_chroot" command_args="${command_args} -t ${named_chroot}"
ln -fs "$named_chroot$pidfile" "$pidfile" ln -fs "${named_chroot}${pidfile}" "${pidfile}"
fi fi
if [ ! -s "$named_chroot$namedb/rndc.conf" ]; then if [ ! -s "${named_chroot}${namedb}/rndc.conf" ]; then
local confgen="${command%/named}/rndc-confgen -a -b256 -u $named_uid \ local confgen="${command%/named}/rndc-confgen -a -b256 -u ${named_uid} \
-c $named_chrootdir/etc/namedb/rndc.key" -c ${named_chrootdir}/etc/namedb/rndc.key"
if [ -s "$named_chroot$namedb/rndc.key" ]; then if [ -s "${named_chroot}${namedb}/rndc.key" ]; then
local getuser="stat -f%Su" local getuser="stat -f%Su"
[ "$RC_UNAME" = Linux ] && getuser="stat -c%U" [ "${RC_UNAME}" = "Linux" ] && getuser="stat -c%U"
case $(${getuser} "$named_chroot$namedb"/rndc.key) in case $(${getuser} "${named_chroot}${namedb}"/rndc.key) in
root|"$named_uid");; root|"${named_uid}");;
*) $confgen;; *) ${confgen};;
esac esac
else else
$confgen ${confgen}
fi fi
fi fi
} }
@@ -106,7 +103,7 @@ reload()
stop_post() stop_post()
{ {
if [ -n "$named_chroot" -a -c "$named_chroot"/dev/null ]; then if [ -n "${named_chroot}" -a -c "${named_chroot}"/dev/null ]; then
umount "$named_chroot"/dev 2>/dev/null || true umount "${named_chroot}"/dev 2>/dev/null || true
fi fi
} }

View File

@@ -1,14 +1,13 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
: ${ntpd_config:=/etc/ntp.conf} ntpd_config=${ntpd_config:-/etc/ntp.conf}
: ${ntpd_drift:=/var/db/ntpd.drift} ntpd_drift=${ntpd_drift:-/var/db/ntpd.drift}
command=/usr/sbin/ntpd command=/usr/sbin/ntpd
required_files=$ntpd_config
pidfile=/var/run/ntpd.pid pidfile=/var/run/ntpd.pid
command_args="$ntpd_args -c $ntpd_config -f $ntpd_drift -p $pidfile" command_args="${ntpd_args} -c ${ntpd_config} -f ${ntpd_drift} -p ${pidfile}"
name="Network Time Protocol Daemon" name="Network Time Protocol Daemon"
depend() depend()
@@ -20,18 +19,22 @@ depend()
start_pre() start_pre()
{ {
if [ -n "$ntpd_chroot" ]; then if [ ! -r "${ntpd_config}" ]; then
case "$RC_UNAME" in eerror "${ntpd_config} is not readable"
return 1
fi
if [ -n "${ntpd_chroot}" ]; then
case "${RC_UNAME}" in
*BSD|DragonFly) *BSD|DragonFly)
if [ ! -c "$ntpd_chroot/dev/clockctl" ]; then if [ ! -c "${ntpd_chroot}/dev/clockctl" ]; then
rm -f "$ntpd_chroot/dev/clockctl" rm -f "${ntpd_chroot}/dev/clockctl"
(cd /dev; /bin/pax -rw -pe clockctl \ (cd /dev; /bin/pax -rw -pe clockctl "${ntpd_chroot}/dev")
"$ntpd_chroot/dev")
fi fi
;; ;;
esac esac
ln -fs "$ntpd_chroot$ntpd_drift" "$ntpd_drift" ln -fs "${ntpd_chroot}${ntpd_drift}" "${ntpd_drift}"
command_args="$command_args -u ntpd:ntpd -i $ntpd_chroot" command_args="${command_args} -u ntpd:ntpd -i ${ntpd_chroot}"
fi fi
} }

View File

@@ -1,32 +1,31 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
vpn=${RC_SVCNAME#*.} vpn=${RC_SVCNAME#*.}
name="OpenVPN" name="OpenVPN"
[ "$vpn" != openvpn ] && name="$name ($vpn)" [ "${vpn}" != "openvpn" ] && name="${name} (${vpn})"
command=@PKG_PREFIX@/sbin/openvpn command=@PKG_PREFIX@/sbin/openvpn
pidfile=@VARBASE@/run/"$RC_SVCNAME".pid pidfile=@VARBASE@/run/"${RC_SVCNAME}".pid
: ${openvpn_dir:=@PKG_PREFIX@/etc/openvpn} openvpn_dir=${openvpn_dir:-@PKG_PREFIX@/etc/openvpn}
: ${openvpn_config:=$openvpn_dir/$vpn.conf} openvpn_config=${openvpn_config:-${openvpn_dir}/${vpn}.conf}
command_args="$openvpn_args --daemon --config $openvpn_config" command_args="${openvpn_args} --daemon --config ${openvpn_config} --writepid ${pidfile}"
command_args="$command_args --writepid $pidfile" required_dirs="${openvpn_dir}"
required_dirs=$openvpn_dir required_files="${openvpn_config}"
required_files=$openvpn_config
# If we're an openvpn client, then supply a nice default config # If we're an openvpn client, then supply a nice default config
# You can find sample up/down scripts in the OpenRC support/openvpn dir # You can find sample up/down scripts in the OpenRC support/openvpn dir
if yesno $openvpn_client; then if yesno "${openvpn_client}"; then
: ${openvpn_up:=${openvpn_dir}/up.sh} openvpn_up=${openvpn_up:-${openvpn_dir}/up.sh}
: ${openvpn_down:=${openvpn_dir}/down.sh} openvpn_down=${openvpn_down:-${openvpn_dir}/down.sh}
command_args="$command_args --nobind --up-delay --up-restart --down-pre" command_args="${command_args} --nobind --up-delay --up-restart --down-pre"
command_args="$command_args --up $openvpn_up" command_args="${command_args} --up ${openvpn_up}"
command_args="$command_args --down $openvpn_down" command_args="${command_args} --down ${openvpn_down}"
required_files="$required_files $openvpn_up $openvpn_down" required_files="${required_files} ${openvpn_up} ${openvpn_down}"
in_background_fake="start stop" in_background_fake="start stop"
start_inactive=YES start_inactive="YES"
fi fi
depend() depend()
@@ -39,7 +38,7 @@ depend()
start_pre() start_pre()
{ {
# Linux has good dynamic tun/tap creation # Linux has good dynamic tun/tap creation
if [ "$RC_UNAME" = Linux ]; then if [ "${RC_UNAME}" = "Linux" ]; then
if [ ! -e /dev/net/tun ]; then if [ ! -e /dev/net/tun ]; then
if ! modprobe tun; then if ! modprobe tun; then
eerror "TUN/TAP support is not available in this kernel" eerror "TUN/TAP support is not available in this kernel"
@@ -59,9 +58,10 @@ start_pre()
sysctl -a | grep -q '\.tap\.' || kldload if_tap sysctl -a | grep -q '\.tap\.' || kldload if_tap
fi fi
fi fi
# If the config file does not specify the cd option, we do # If the config file does not specify the cd option, we do
if ! grep -q "^[ \t]*cd[ \t].*" "$openvpn_config"; then # But if we specify it, we override the config option which we do not want
command_args="$command_args --cd $openvpn_dir" if ! grep -q "^[ \t]*cd[ \t].*" "${openvpn_config}"; then
command_args="${command_args} --cd ${openvpn_dir}"
fi fi
} }

View File

@@ -1,10 +1,10 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
command=@PKG_PREFIX@/sbin/polkitd command=@PKG_PREFIX@/sbin/polkitd
pidfile=@VARBASE@/run/polkitd/polkitd.pid pidfile=@VARBASE@/run/polkitd/polkitd.pid
command_args="$polkitd_args" command_args="${polkitd_args}"
name="PolicyKit Daemon" name="PolicyKit Daemon"
depend() depend()

View File

@@ -1,9 +1,9 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
command=/usr/sbin/sshd command=/usr/sbin/sshd
command_args=$sshd_args command_args=${sshd_args}
pidfile=@VARBASE@/run/sshd.pid pidfile=@VARBASE@/run/sshd.pid
required_files=/etc/ssh/sshd_config required_files=/etc/ssh/sshd_config
@@ -31,5 +31,5 @@ start_pre()
eend $? || return 1 eend $? || return 1
fi fi
$command -t ${command} -t
} }

View File

@@ -1,70 +0,0 @@
#!@SBINDIR@/runscript
# Copyright (c) 2009 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license.
command=/usr/sbin/wpa_supplicant
: ${wpa_supplicant_conf:=/etc/wpa_supplicant.conf}
wpa_supplicant_if=${wpa_supplicant_if:+-i}$wpa_supplicant_if
command_args="$wpa_supplicant_args -B -c$wpa_supplicant_conf $wpa_supplicant_if"
name="WPA Supplicant Daemon"
depend()
{
need localmount
use logger
after bootmisc modules
before dns dhcpcd net
keyword -shutdown
}
find_wireless()
{
local iface=
case "$RC_UNAME" in
Linux)
for iface in /sys/class/net/*; do
if [ -e "$iface"/wireless -o \
-e "$iface"/phy80211 ]
then
echo "${iface##*/}"
return 0
fi
done
;;
*)
for iface in /dev/net/* $(ifconfig -l 2>/dev/null); do
if ifconfig "${iface##*/}" 2>/dev/null | \
grep -q "[ ]*ssid "
then
echo "${iface##*/}"
return 0
fi
done
;;
esac
return 1
}
append_wireless()
{
local iface= i=
iface=$(find_wireless)
if [ -n "$iface" ]; then
for i in $iface; do
command_args="$command_args -i$i"
done
else
eerror "Could not find a wireless interface"
fi
}
start_pre()
{
case " $command_args" in
*" -i"*) ;;
*) append_wireless;;
esac
}

44
init.d/.gitignore vendored
View File

@@ -1,44 +0,0 @@
bootmisc
fsck
hostname
local
localmount
moused
net.lo
net.lo0
netmount
network
root
savecache
swap
swapfiles
sysctl
urandom
devfs
dmesg
hwclock
consolefont
keymaps
killprocs
modules
mount-ro
mtab
numlock
procfs
staticroute
sysfs
devdb
hostid
newsyslog
pf
rarpd
rc-enabled
rpcbind
savecore
swap-blk
swclock
syslogd
termencoding
ttys
wscons
tmpfiles.setup

View File

@@ -1,39 +1,16 @@
include ../mk/net.mk
DIR= ${INITDIR} DIR= ${INITDIR}
SRCS= bootmisc.in fsck.in hostname.in local.in localmount.in loopback.in \ SRCS= bootmisc.in fsck.in hostname.in local.in localmount.in \
netmount.in root.in savecache.in swap.in swapfiles.in \ netmount.in root.in savecache.in swap.in sysctl.in urandom.in
tmpfiles.setup.in swclock.in sysctl.in urandom.in ${SRCS-${OS}}
BIN= ${OBJS} BIN= ${OBJS}
# Are we installing our network scripts? INSTALLAFTER= _installafter
ifeq (${MKNET},yes) CLEANFILES+= net.lo
SRCS+= network.in staticroute.in TARGETS+= net.lo
endif
MK= ../mk MK= ../mk
include ${MK}/os.mk include ${MK}/os.mk
include Makefile.${OS}
# Generic BSD scripts
SRCS-FreeBSD= hostid.in moused.in newsyslog.in pf.in rarpd.in rc-enabled.in \
rpcbind.in savecore.in syslogd.in
# These are FreeBSD specific
SRCS-FreeBSD+= adjkerntz.in devd.in dumpon.in encswap.in ipfw.in \
mixer.in nscd.in powerd.in syscons.in
SRCS-Linux= devfs.in dmesg.in hwclock.in consolefont.in keymaps.in \
killprocs.in modules.in mount-ro.in mtab.in numlock.in \
procfs.in sysfs.in termencoding.in tmpfiles.dev.in
# Generic BSD scripts
SRCS-NetBSD= hostid.in moused.in newsyslog.in pf.in rarpd.in rc-enabled.in \
rpcbind.in savecore.in syslogd.in
# These are NetBSD specific
SRCS-NetBSD+= devdb.in swap-blk.in ttys.in wscons.in
%.in: %${SFX}
sed ${SED_REPLACE} ${SED_EXTRA} $< > $@
include ${MK}/scripts.mk include ${MK}/scripts.mk
_installafter_: realinstall _installafter: realinstall
${INSTALL} -m ${BINMODE} net.lo ${DESTDIR}/${INITDIR}/${NET_LO}

13
init.d/Makefile.FreeBSD Normal file
View File

@@ -0,0 +1,13 @@
NET_LO= net.lo0
# Generic BSD scripts
SRCS+= hostid.in moused.in newsyslog.in pf.in rarpd.in rc-enabled.in \
rpcbind.in savecore.in syslogd.in
# These are FreeBSD specific
SRCS+= adjkerntz.in devd.in dumpon.in ipfw.in mixer.in nscd.in \
powerd.in syscons.in
.SUFFIXES: .BSD.in
.BSD.in:
sed ${SED_REPLACE} ${SED_EXTRA} $< > $@

9
init.d/Makefile.Linux Normal file
View File

@@ -0,0 +1,9 @@
NET_LO= net.lo
SRCS+= devfs.in dmesg.in hwclock.in consolefont.in keymaps.in killprocs.in \
modules.in mount-ro.in mtab.in numlock.in procfs.in sysfs.in \
termencoding.in
.SUFFIXES: .Linux.in
.Linux.in:
sed ${SED_REPLACE} ${SED_EXTRA} $< > $@

12
init.d/Makefile.NetBSD Normal file
View File

@@ -0,0 +1,12 @@
NET_LO= net.lo0
# Generic BSD scripts
SRCS+= hostid.in moused.in newsyslog.in pf.in rarpd.in rc-enabled.in \
rpcbind.in savecore.in syslogd.in
# These are NetBSD specific
SRCS+= devdb.in swap-blk.in ttys.in wscons.in
.SUFFIXES: .BSD.in
.BSD.in:
sed ${SED_REPLACE} ${SED_EXTRA} $< > $@

View File

@@ -1,14 +1,14 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
extra_commands="save" extra_commands="save"
description="Sets the local clock to UTC or Local Time." description="Sets the local clock to UTC or Local Time."
description_save="Saves the current time in the BIOS." description_save="Saves the current time in the BIOS."
: ${clock:=${CLOCK:-UTC}} clock=${clock:-${CLOCK:-UTC}}
if [ "$clock" = "UTC" ]; then if [ "${clock}" = "UTC" ]; then
utc="UTC" utc="UTC"
else else
utc="Local Time" utc="Local Time"
@@ -18,17 +18,17 @@ depend()
{ {
provide clock provide clock
# BSD adjkerntz needs to be able to write to /etc # BSD adjkerntz needs to be able to write to /etc
if [ "$clock" = "UTC" -a -e /etc/wall_cmos_clock ] || if [ "${clock}" = "UTC" -a -e /etc/wall_cmos_clock ] ||
[ "$clock" != "UTC" -a ! -e /etc/wall_cmos_clock ]; then [ "${clock}" != "UTC" -a ! -e /etc/wall_cmos_clock ]; then
need root need root
fi fi
keyword -jail -prefix keyword nojail noprefix
} }
start() start()
{ {
ebegin "Starting the System Clock Adjuster [${utc}]" ebegin "Starting the System Clock Adjuster [${utc}]"
if [ "$clock" != "UTC" ]; then if [ "${clock}" != "UTC" ]; then
echo >/etc/wall_cmos_clock echo >/etc/wall_cmos_clock
start-stop-daemon --start --exec /sbin/adjkerntz -- -i start-stop-daemon --start --exec /sbin/adjkerntz -- -i
else else
@@ -48,8 +48,8 @@ save()
stop() stop()
{ {
# Don't tweak the hardware clock on LiveCD halt. # Don't tweak the hardware clock on LiveCD halt.
if yesno "${clock_systohc:-$CLOCK_SYSTOHC}"; then if yesno "${clock_systohc:-${CLOCK_SYSTOHC}}"; then
[ -z "$CDBOOT" ] && save [ -z "${CDBOOT}" ] && save
fi fi
ebegin "Stopping the System Clock Adjuster" ebegin "Stopping the System Clock Adjuster"

View File

@@ -1,216 +1,152 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
depend() depend()
{ {
use hostname
need localmount need localmount
before logger before logger
after clock sysctl after clock sysctl
keyword -prefix -timeout keyword noprefix
} }
: ${wipe_tmp:=${WIPE_TMP:-yes}} dir_writeable()
: ${log_dmesg:=${LOG_DMESG:-yes}} {
mkdir "$1"/.test.$$ 2>/dev/null && rmdir "$1"/.test.$$
}
cleanup_tmp_dir() cleanup_tmp_dir()
{ {
local dir="$1" local dir="$1"
if ! [ -d "$dir" ]; then if ! [ -d "${dir}" ]; then
mkdir -p "$dir" || return $? mkdir -p "${dir}" || return $?
fi fi
checkpath -W "$dir" || return 1 dir_writeable "${dir}" || return 1
chmod a+rwt "$dir" 2> /dev/null chmod +t "${dir}"
cd "$dir" || return 1 cd "${dir}"
if yesno $wipe_tmp; then if yesno ${wipe_tmp:-${WIPE_TMP:-yes}}; then
ebegin "Wiping $dir directory" ebegin "Wiping ${dir} directory"
local startopts="-x . -depth"
[ "${RC_UNAME}" = "Linux" ] && startopts=". -xdev -depth"
# Faster than raw find # Faster than find
if ! rm -rf -- [!ajlq\.]* 2>/dev/null ; then rm -rf -- [b-ikm-pr-zA-Z0-9\.]*
# Blah, too many files
find . -maxdepth 1 -name '[!ajlq\.]*' -exec rm -rf -- {} +
fi
# pam_mktemp creates a .private directory within which find ${startopts} ! -name . \
# each user gets a private directory with immutable ! -path "./lost+found" \
# bit set; remove the immutable bit before trying to ! -path "./lost+found/*" \
# remove it. ! -path "./quota.user" \
[ -d /tmp/.private ] && chattr -R -a /tmp/.private 2> /dev/null ! -path "./quota.user/*" \
! -path "./aquota.user" \
# Prune the paths that are left ! -path "./aquota.user/*" \
find . -maxdepth 1 \ ! -path "./quota.group" \
! -name . \ ! -path "./quota.group/*" \
! -name lost+found \ ! -path "./aquota.group" \
! -name quota.user \ ! -path "./aquota.group/*" \
! -name aquota.user \ ! -path "./journal" \
! -name quota.group \ ! -path "./journal/*" \
! -name aquota.group \ ! -path "./.private" \
! -name journal \ ! -path "./.private/*" \
-exec rm -rf -- {} + -exec rm -rf {} \;
eend 0 eend 0
else else
ebegin "Cleaning $dir directory" ebegin "Cleaning ${dir} directory"
rm -rf -- .X*-lock esrv* kio* \ rm -rf -- "${dir}"/.X*-lock "${dir}"/esrv* "${dir}"/kio* \
jpsock.* .fam* .esd* \ "${dir}"/jpsock.* "${dir}"/.fam* "${dir}"/.esd* \
orbit-* ssh-* ksocket-* \ "${dir}"/orbit-* "${dir}"/ssh-* "${dir}"/ksocket-* \
.*-unix "${dir}"/.*-unix
eend 0 eend 0
fi fi
} }
cleanup_var_run_dir()
{
ebegin "Cleaning /var/run"
for x in $(find /var/run ! -type d ! -name utmp \
! -name random-seed ! -name dev.db \
! -name ld-elf.so.hints ! -name ld.so.hints);
do
# Clean stale sockets
if [ -S "$x" ]; then
if type fuser >/dev/null 2>&1; then
fuser "$x" >/dev/null 2>&1 || rm -- "$x"
else
rm -- "$x"
fi
fi
[ ! -f "$x" ] && continue
# Do not remove pidfiles of already running daemons
case "$x" in
*.pid)
start-stop-daemon --test --quiet \
--stop --pidfile "$x" && continue
;;
esac
rm -f -- "$x"
done
eend 0
}
mkutmp()
{
: >"$1"
# Not all systems have the utmp group
chgrp utmp "$1" 2>/dev/null
chmod 0664 "$1"
}
migrate_to_run()
{
src="$1"
dst="$2"
if [ -L $src -a "$(readlink -f $src)" != $dst ]; then
ewarn "$src does not point to $dst."
ewarn "Setting $src to point to $dst."
rm $src
elif [ ! -L $src -a -d $src ]; then
ebegin "Migrating $src to $dst"
cp -a $src/* $dst/
rm -rf $src
eend $?
fi
# If $src doesn't exist at all, just run this
if [ ! -e $src ]; then
ln -s $dst $src
fi
}
clean_run()
{
local dir
dir=$(mktemp -d)
mount --bind / $dir
rm -rf $dir/run/*
umount $dir
rm -rf $dir
}
start() start()
{ {
# Remove any added console dirs local logw=false
rm -rf "$RC_LIBEXECDIR"/console/*
local logw=false runw=false extra=
# Ensure that our basic dirs exist # Ensure that our basic dirs exist
if [ "$RC_UNAME" = Linux ]; then for x in /var/log /var/run /tmp; do
# Satisfy Linux FHS if ! [ -d "${x}" ]; then
extra=/var/lib/misc if ! mkdir -p "${x}"; then
if [ ! -d /run ]; then eend 1 "failed to create needed directory ${x}"
extra="/var/run $extra"
fi
else
extra=/var/run
fi
for x in /var/log /tmp $extra; do
if ! [ -d $x ]; then
if ! mkdir -p $x; then
eend 1 "failed to create needed directory $x"
return 1 return 1
fi fi
fi fi
done done
if [ "$RC_UNAME" = Linux -a -d /run ]; then if dir_writeable /var/run; then
migrate_to_run /var/lock /run/lock
migrate_to_run /var/run /run
clean_run
fi
if checkpath -W /var/run; then
ebegin "Creating user login records" ebegin "Creating user login records"
local xtra= cp /dev/null /var/run/utmp
[ "$RC_UNAME" = NetBSD ] && xtra=x chgrp utmp /var/run/utmp
for x in "" $xtra; do chmod 0664 /var/run/utmp
mkutmp /var/run/utmp$x if dir_writeable /var/log; then
done logw=true
[ -e /var/log/wtmp ] || mkutmp /var/log/wtmp [ -e /var/log/wtmp ] || cp /dev/null /var/log/wtmp
chgrp utmp /var/log/wtmp
chmod 0664 /var/log/wtmp
fi
eend 0 eend 0
mountinfo -q -f tmpfs /var/run || cleanup_var_run_dir ebegin "Cleaning /var/run"
for x in $(find /var/run ! -type d ! -name utmp \
! -name random-seed ! -name dev.db \
! -name ld-elf.so.hints ! -name ld.so.hints);
do
# Clean stale sockets
if [ -S "${x}" ]; then
if type fuser >/dev/null 2>&1; then
fuser "${x}" 2>/dev/null || rm "${x}"
else
rm "${x}"
fi
fi
[ ! -f "${x}" ] && continue
# Do not remove pidfiles of already running daemons
case "${x}" in
*.pid)
start-stop-daemon --test --quiet \
--stop --pidfile "${x}" && continue
;;
esac
rm -f -- "${x}"
done
eend 0
fi fi
# Clean up /tmp directories # Clean up /tmp directories
local tmp= local tmp=
for tmp in ${clean_tmp_dirs:-${wipe_tmp_dirs-/tmp}}; do for tmp in ${wipe_tmp_dirs-/tmp}; do
mountinfo -q -f tmpfs "$tmp" || cleanup_tmp_dir "$tmp" cleanup_tmp_dir "${tmp}"
done done
if checkpath -W /tmp; then if dir_writeable /tmp; then
# Make sure our X11 stuff have the correct permissions # Make sure our X11 stuff have the correct permissions
# Omit the chown as bootmisc is run before network is up # Omit the chown as bootmisc is run before network is up
# and users may be using lame LDAP auth #139411 # and users may be using lame LDAP auth #139411
rm -rf /tmp/.ICE-unix /tmp/.X11-unix rm -rf /tmp/.ICE-unix /tmp/.X11-unix
mkdir -p /tmp/.ICE-unix /tmp/.X11-unix mkdir -p /tmp/.ICE-unix /tmp/.X11-unix
chmod 1777 /tmp/.ICE-unix /tmp/.X11-unix chmod 1777 /tmp/.ICE-unix /tmp/.X11-unix
if [ -x /sbin/restorecon ]; then [ -x /sbin/restorecon ] && restorecon /tmp/.ICE-unix /tmp/.X11-unix
restorecon /tmp/.ICE-unix /tmp/.X11-unix fi
fi
fi if ${logw} || dir_writeable /var/log; then
# Create an 'after-boot' dmesg log
if yesno $log_dmesg; then if [ "${RC_SYS}" != "VSERVER" -a "${RC_SYS}" != "OPENVZ" ]; then
if $logw || checkpath -W /var/log; then dmesg > /var/log/dmesg
# Create an 'after-boot' dmesg log chmod 640 /var/log/dmesg
if [ "$RC_SYS" != VSERVER -a "$RC_SYS" != OPENVZ -a "$RC_SYS" != LXC ]; then
dmesg > /var/log/dmesg
chmod 640 /var/log/dmesg
fi
fi fi
fi fi
rm -f /etc/nologin
return 0 return 0
} }
stop() stop()
{ {
# Write a halt record if we're shutting down # Write a halt record if we're shutting down
if [ "$RC_RUNLEVEL" = shutdown ]; then case "${RC_RUNLEVEL}" in
[ "$RC_UNAME" = Linux ] && halt -w reboot|shutdown) [ "${RC_UNAME}" = "Linux" ] && halt -w;;
if [ "$RC_SYS" = OPENVZ ]; then esac
yesno $RC_REBOOT && printf "" >/reboot
fi
fi
return 0 return 0
} }
# vim: ft=sh

View File

@@ -1,30 +1,33 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
description="Sets a font for the consoles." description="Sets a font for the consoles."
depend() depend()
{ {
need localmount termencoding need localmount termencoding
after hotplug bootmisc after hotplug
keyword -openvz -prefix -uml -vserver -xenu -lxc keyword noopenvz noprefix nouml novserver noxenu
} }
start() start()
{ {
# Forget about any font until we are successful
rm -rf "${RC_LIBDIR}"/console
ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
consolefont=${consolefont:-${CONSOLEFONT}} consolefont=${consolefont:-${CONSOLEFONT}}
unicodemap=${unicodemap:-${UNICODEMAP}} unicodemap=${unicodemap:-${UNICODEMAP}}
consoletranslation=${consoletranslation:-${CONSOLETRANSLATION}} consoletranslation=${consoletranslation:-${CONSOLETRANSLATION}}
if [ -z "$consolefont" ]; then if [ -z "${consolefont}" ]; then
ebegin "Using the default console font" ebegin "Using the default console font"
eend 0 eend 0
return 0 return 0
fi fi
if [ "$ttyn" = 0 ]; then if [ "${ttyn}" = 0 ]; then
ebegin "Skipping font setup (rc_tty_number == 0)" ebegin "Skipping font setup (rc_tty_number == 0)"
eend 0 eend 0
return 0 return 0
@@ -33,31 +36,39 @@ start()
local x= param= sf_param= retval=0 ttydev=/dev/tty local x= param= sf_param= retval=0 ttydev=/dev/tty
# Get additional parameters # Get additional parameters
if [ -n "$consoletranslation" ]; then if [ -n "${consoletranslation}" ]; then
param="$param -m $consoletranslation" param="${param} -m ${consoletranslation}"
fi fi
if [ -n "${unicodemap}" ]; then if [ -n "${unicodemap}" ]; then
param="$param -u $unicodemap" param="${param} -u ${unicodemap}"
fi fi
# Set the console font # Set the console font
ebegin "Setting console font [$consolefont]" ebegin "Setting console font [${consolefont}]"
[ -d /dev/vc ] && ttydev=/dev/vc/ [ -d /dev/vc ] && ttydev=/dev/vc/
x=1 x=1
while [ $x -le $ttyn ]; do while [ ${x} -le ${ttyn} ]; do
if ! setfont $consolefont $param -C $ttydev$x >/dev/null; then setfont ${consolefont} ${param} -C ${ttydev}${x} >/dev/null
retval=1 retval=$((${retval} + $?))
break x=$((${x} + 1))
fi
: $(( x += 1 ))
done done
eend $retval eend ${retval}
# Store the last font so we can use it ASAP on boot
if [ ${retval} -eq 0 -a -w "${RC_LIBDIR}" ]; then
mkdir -p "${RC_LIBDIR}"/console
for font in /usr/share/consolefonts/"${consolefont}".*; do
:
done
cp "${font}" "${RC_LIBDIR}"/console
echo "${font##*/}" > "${RC_LIBDIR}"/console/font
if yesno ${unicode:-${UNICODE}}; then
echo "" > "${RC_LIBDIR}"/console/unicode
else
rm -f "${RC_LIBDIR}"/console/unicode
fi
# Store the font so we can use it ASAP on boot
if [ $retval -eq 0 ] && checkpath -W "$RC_LIBEXECDIR"; then
mkdir -p "$RC_LIBEXECDIR"/console
setfont -O "$RC_LIBEXECDIR"/console/font
fi fi
return $retval return ${retval}
} }

View File

@@ -1,16 +1,16 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
command=/sbin/devd command=/sbin/devd
command_args=$devd_args command_args=${devd_args}
name="Device State Change Daemon" name="Device State Change Daemon"
depend() { depend() {
need localmount need localmount
after bootmisc after bootmisc
before net.lo0 before net.lo0
keyword -jail -prefix keyword nojail noprefix
} }
start_pre() { start_pre() {

View File

@@ -1,6 +1,6 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2008 Roy Marples <roy@marples.name> # Copyright 2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
description="Creates the dev database" description="Creates the dev database"
@@ -11,7 +11,7 @@ depend()
start() start()
{ {
ebegin "Building the dev database" ebegin "Bulding the dev database"
if [ /var/run/dev.db -nt /dev ]; then if [ /var/run/dev.db -nt /dev ]; then
: :
else else

View File

@@ -1,35 +1,33 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
description="Mount system critical filesystems in /dev." description="Mount system critical filesystems in /dev."
depend() { depend() {
use dev-mount use dev
before dev keyword noprefix
keyword -prefix -vserver -lxc
} }
start() { start() {
# Mount required stuff as user may not have then in /etc/fstab # Mount required stuff as user may not have then in /etc/fstab
for x in \ for x in \
"mqueue /dev/mqueue 1777 ,nodev mqueue" \
"devpts /dev/pts 0755 ,gid=5,mode=0620 devpts" \ "devpts /dev/pts 0755 ,gid=5,mode=0620 devpts" \
"tmpfs /dev/shm 1777 ,nodev shm" \ "tmpfs /dev/shm 1777 ,nodev shm" \
; do ; do
set -- $x set -- ${x}
grep -Eq "[[:space:]]+$1$" /proc/filesystems || continue grep -Eq "[[:space:]]+$1$" /proc/filesystems || continue
mountinfo -q $2 && continue mountinfo -q "$2" && continue
if [ ! -d $2 ]; then if [ ! -d "$2" ]; then
mkdir -m $3 -p $2 >/dev/null 2>&1 || \ mkdir -m "$3" -p "$2" >/dev/null 2>&1 || \
ewarn "Could not create $2!" ewarn "Could not create $2!"
fi fi
if [ -d $2 ]; then if [ -d "$2" ]; then
ebegin "Mounting $2" ebegin "Mounting $2"
if ! fstabinfo --mount $2; then if ! fstabinfo --mount "$2"; then
mount -n -t $1 -o noexec,nosuid$4 $5 $2 mount -n -t "$1" -o noexec,nosuid"$4" "$5" "$2"
fi fi
eend $? eend $?
fi fi

View File

@@ -1,18 +1,17 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
description="Set the dmesg level for a cleaner boot" description="Set the dmesg level for a cleaner boot"
depend() depend()
{ {
before dev modules before dev modules
keyword -lxc -prefix -vserver
} }
start() start()
{ {
if [ -n "$dmesg_level" ]; then if [ -n "${dmesg_level}" ]; then
dmesg -n$dmesg_level dmesg -n"${dmesg_level}"
fi fi
} }

View File

@@ -1,25 +1,25 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
description="Configures a specific kernel dump device." description="Configures a specific kernel dump device."
depend() { depend() {
need swap need swap
keyword -jail -prefix keyword nojail noprefix
} }
start() { start() {
# Setup any user requested dump device # Setup any user requested dump device
if [ -n "$dump_device" ]; then if [ -n "${dump_device}" ]; then
ebegin "Activating kernel core dump device ($dump_device)" ebegin "Activating kernel core dump device (${dump_device})"
dumpon ${dump_device} dumpon ${dump_device}
eend $? eend $?
fi fi
} }
stop() { stop() {
ebegin "Deactivating kernel core dump device" ebegin "Deactiving kernel core dump device"
dumpon off dumpon off
eend $? eend $?
} }

View File

@@ -1,43 +0,0 @@
#!@SBINDIR@/runscript
# Copyright 1992-2012 FreeBSD Project
# Released under the 2-clause BSD license
depend() {
before swap
}
start() {
while read device mountpoint type options rest ; do
case ":${device}:${type}:${options}" in
:#*)
;;
*.bde:swap:sw)
passphrase=$(dd if=/dev/random count=1 2>/dev/null | md5 -q)
device="${device%.bde}"
gbde init "${device}" -P "${passphrase}" || return 1
gbde attach "${device}" -p "${passphrase}" || return 1
;;
*.eli:swap:sw)
device="${device%.eli}"
geli onetime ${geli_swap_flags} "${device}" || return 1
;;
esac
done < /etc/fstab
}
stop() {
while read device mountpoint type options rest ; do
case ":${device}:${type}:${options}" in
:#*)
;;
*.bde:swap:sw)
device="${device%.bde}"
gbde detach "${device}"
;;
*.eli:swap:sw)
# Nothing here, because geli swap devices should be
# created with the auto-detach-on-last-close option.
;;
esac
done < /etc/fstab
}

View File

@@ -1,6 +1,6 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
description="Check and repair filesystems according to /etc/fstab" description="Check and repair filesystems according to /etc/fstab"
_IFS=" _IFS="
@@ -9,7 +9,7 @@ _IFS="
depend() depend()
{ {
use dev clock modules use dev clock modules
keyword -jail -openvz -prefix -timeout -vserver -lxc keyword nojail noopenvz noprefix notimeout novserver
} }
_abort() { _abort() {
@@ -19,17 +19,12 @@ _abort() {
# We should only reboot when first booting # We should only reboot when first booting
_reboot() { _reboot() {
if [ "$RC_RUNLEVEL" = "$RC_BOOTLEVEL" ]; then if [ "${RC_RUNLEVEL}" = "${RC_BOOTLEVEL}" ]; then
reboot "$@" reboot "$@"
_abort || return 1 _abort || return 1
fi fi
} }
_forcefsck()
{
[ -e /forcefsck ] || get_bootparam forcefsck
}
start() start()
{ {
local fsck_opts= p= check_extra= local fsck_opts= p= check_extra=
@@ -38,74 +33,55 @@ start()
ewarn "Skipping fsck due to /fastboot" ewarn "Skipping fsck due to /fastboot"
return 0 return 0
fi fi
if _forcefsck; then if [ -e /forcefsck ] || get_bootparam forcefsck; then
fsck_opts="$fsck_opts -f" fsck_opts="${fsck_opts} -f"
check_extra="(check forced)" check_extra="(check forced)"
elif ! yesno ${fsck_on_battery:-YES} && ! on_ac_power; then
ewarn "Skipping fsck due to not being on AC power"
return 0
fi fi
if [ -n "$fsck_passno" ]; then if [ -n "${fsck_passno}" ]; then
check_extra="[passno $fsck_passno] $check_extra" check_extra="[passno ${fsck_passno}] ${check_extra}"
if [ -n "$fsck_mnt" ]; then
eerror "Only 1 of fsck_passno and fsck_mnt must be set!"
return 1
fi
fi fi
ebegin "Checking local filesystems $check_extra" ebegin "Checking local filesystems ${check_extra}"
# Append passno mounts for p in ${fsck_passno}; do
for p in $fsck_passno; do local IFS="${_IFS}"
local IFS="$_IFS" case "${p}" in
case "$p" in [0-9]*) p="=${p}";;
[0-9]*) p="=$p";;
esac esac
set -- "$@" $(fstabinfo --passno "$p") set -- "$@" $(fstabinfo --passno "${p}")
unset IFS
done
# Append custom mounts
for m in $fsck_mnt ; do
local IFS="$_IFS"
set -- "$@" "$m"
unset IFS unset IFS
done done
if [ "$RC_UNAME" = Linux ]; then if [ "${RC_UNAME}" = "Linux" ]; then
local skiptypes fsck_opts="${fsck_opts} -C0 -T"
skiptypes=$(printf 'no%s,' ${net_fs_list} ${extra_net_fs_list}) if [ -z "${fsck_passno}" ]; then
[ "${skiptypes}" = "no," ] && skiptypes="" fsck_args=${fsck_args--A -p}
fsck_opts="$fsck_opts -C0 -T -t ${skiptypes}noopts=_netdev"
if [ -z "$fsck_passno" -a -z "$fsck_mnt" ]; then
fsck_args=${fsck_args:--A -p}
if echo 2>/dev/null >/.test.$$; then if echo 2>/dev/null >/.test.$$; then
rm -f /.test.$$ rm -f /.test.$$
fsck_opts="$fsck_opts -R" fsck_opts="${fsck_opts} -R"
fi fi
fi fi
fi fi
trap : INT QUIT trap : INT QUIT
fsck ${fsck_args:--p} $fsck_opts "$@" fsck ${fsck_args--p} ${fsck_opts} "$@"
case $? in case $? in
0) eend 0; return 0;; 0) eend 0; return 0;;
1) ewend 1 "Filesystems repaired"; return 0;; 1) ewend 1 "Filesystems repaired"; return 0;;
2|3) if [ "$RC_UNAME" = Linux ]; then 2|3) if [ "${RC_UNAME}" = "Linux" ]; then
ewend 1 "Filesystems repaired, but reboot needed" ewend 1 "Filesystems repaired, but reboot needed"
_reboot -f _reboot -f
else else
ewend 1 "Filesystems still have errors;" \ ewend 1 "Filesystems still have errors; manual fsck required"
"manual fsck required"
_abort
fi;; fi;;
4) if [ "$RC_UNAME" = Linux ]; then 4) if [ "${RC_UNAME}" = "Linux" ]; then
ewend 1 "Fileystem errors left uncorrected, aborting" ewend 1 "Fileystem errors left uncorrected"
_abort return 0
else else
ewend 1 "Filesystems repaired, but reboot needed" ewend 1 "Filesystems repaired, but reboot needed"
_reboot _reboot
fi;; fi;;
8) ewend 1 "Operational error"; return 0;; 8) ewend 1 "Operational error"; return 0;;
12) ewend 1 "fsck interrupted";; 12) ewend 1 "fsck interupted";;
*) eend 2 "Filesystems couldn't be fixed";; *) eend 2 "Filesystems couldn't be fixed";;
esac esac
_abort || return 1 _abort || return 1
@@ -116,8 +92,7 @@ stop()
# Fake function so we always shutdown correctly. # Fake function so we always shutdown correctly.
_abort() { return 0; } _abort() { return 0; }
_reboot() { return 0; } _reboot() { return 0; }
_forcefsck() { return 1; }
yesno $fsck_shutdown && start yesno "${fsck_shutdown}" && start
return 0 return 0
} }

View File

@@ -1,15 +1,15 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
extra_commands="reset" extra_commands="reset"
: ${hostid_file:=/etc/hostid} hostid_file=${hostid_file:-/etc/hostid}
depend() depend()
{ {
use root need root
before devd net before devd net
keyword -jail -prefix keyword nojail noprefix
} }
_set() _set()
@@ -20,14 +20,14 @@ _set()
id=$(echo "$1" | md5) id=$(echo "$1" | md5)
id="0x${id%????????????????????????}" id="0x${id%????????????????????????}"
fi fi
ebegin "Setting Host ID: $id" ebegin "Setting Host ID: ${id}"
sysctl -w kern.hostid="$id" >/dev/null sysctl -w kern.hostid="${id}" >/dev/null
eend $? || return 1 eend $? || return 1
if sysctl -n kern.hostuuid >/dev/null 2>&1; then if sysctl -n kern.hostuuid >/dev/null 2>&1; then
[ -n "$1" ] && id=$1 [ -n "$1" ] && id=$1
ebegin "Setting Host UUID: $id" ebegin "Setting Host UUID: ${id}"
sysctl kern.hostuuid="$id" >/dev/null sysctl kern.hostuuid="${id}" >/dev/null
eend $? || return 1 eend $? || return 1
fi fi
@@ -38,37 +38,37 @@ _set()
# otherwise we generate a random UUID. # otherwise we generate a random UUID.
reset() reset()
{ {
local uuid= x="[0-9a-f]" y="$x$x$x$x" local uuid= x="[0-9a-f]" y="${x}${x}${x}${x}"
if type kenv >/dev/null 2>&1; then if type kenv >/dev/null 2>&1; then
uuid=$(kenv smbios.system.uuid 2>/dev/null) uuid=$(kenv smbios.system.uuid 2>/dev/null)
fi fi
case "$uuid" in case "${uuid}" in
$y$y-$y-$y-$y-$y$y$y);; ${y}${y}-${y}-${y}-${y}-${y}${y}${y});;
*) uuid=;; *) uuid=;;
esac esac
if [ -n "$uuid" ]; then if [ -n "${uuid}" ]; then
rm -f "$hostid_file" rm -f "${hostid_file}"
else else
uuid=$(uuidgen) uuid=$(uuidgen)
if [ -z "$uuid" ]; then if [ -z "${uuid}" ]; then
eerror "Unable to generate a UUID" eerror "Unable to generate a UUID"
return 1 return 1
fi fi
if ! echo "$uuid" >"$hostid_file"; then if ! echo "${uuid}" > "${hostid_file}"; then
eerror "Failed to store UUID in \`$hostid_file'" eerror "Failed to store UUID in \`${hostid_file}'"
return 1 return 1
fi fi
fi fi
_set "$uuid" _set "${uuid}"
} }
start() start()
{ {
if [ -r "$hostid_file" ]; then if [ -r "${hostid_file}" ]; then
_set $(cat "$hostid_file") _set $(cat "${hostid_file}")
else else
reset reset
fi fi

View File

@@ -1,19 +1,17 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
description="Sets the hostname of the machine." description="Sets the hostname of the machine."
depend() { depend() {
keyword -prefix -lxc keyword noprefix
} }
start() start()
{ {
# HOSTNAME variable used to be defined in caps in conf.d/hostname. hostname=${hostname-${HOSTNAME-localhost}}
# It is also a magic variable in bash. ebegin "Setting hostname to ${hostname}"
hostname=${hostname-${HOSTNAME-localhost}} # checkbashisms: false positive hostname "${hostname}"
ebegin "Setting hostname to $hostname"
hostname "$hostname"
eend $? "Failed to set the hostname" eend $? "Failed to set the hostname"
} }

View File

@@ -1,18 +1,19 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
extra_commands="save show" extra_commands="save show"
description="Sets the local clock to UTC or Local Time." description="Sets the local clock to UTC or Local Time."
description_save="Saves the current time in the BIOS." description_save="Saves the current time in the BIOS."
description_show="Displays the current time in the BIOS." description_show="Displays the current time in the BIOS."
: ${clock_adjfile:=${CLOCK_ADJFILE}} clock_adjfile=${clock_adjfile:-${CLOCK_ADJFILE}}
: ${clock_args:=${CLOCK_OPTS}} clock_args=${clock_args:-${CLOCK_OPTS}}
: ${clock_systohc:=${CLOCK_SYSTOHC}} clock_systohc=${clock_systohc:-${CLOCK_SYSTOHC}}
: ${clock:=${CLOCK:-UTC}}
if [ "$clock" = "UTC" ]; then clock=${clock:-${CLOCK:-UTC}}
if [ "${clock}" = "UTC" ]; then
utc="UTC" utc="UTC"
utc_cmd="--utc" utc_cmd="--utc"
else else
@@ -23,12 +24,12 @@ fi
depend() depend()
{ {
provide clock provide clock
if yesno $clock_adjfile; then if yesno ${clock_adjfile}; then
use root use root
else else
before * before *
fi fi
keyword -openvz -prefix -uml -vserver -xenu -lxc keyword noopenvz noprefix nouml novserver noxenu
} }
setupopts() setupopts()
@@ -46,7 +47,7 @@ setupopts()
;; ;;
esac esac
case "$utc" in case "${utc}" in
UTC|Local" "Time);; UTC|Local" "Time);;
*) unset utc_cmd;; *) unset utc_cmd;;
esac esac
@@ -57,7 +58,7 @@ _hwclock()
{ {
local err="$(hwclock "$@" 2>&1 >/dev/null)" local err="$(hwclock "$@" 2>&1 >/dev/null)"
[ -z "$err" ] && return 0 [ -z "${err}" ] && return 0
echo "${err}" >&2 echo "${err}" >&2
return 1 return 1
} }
@@ -67,42 +68,38 @@ start()
local retval=0 errstr="" local retval=0 errstr=""
setupopts setupopts
if [ -z "$utc_cmd" ]; then if [ -z "${utc_cmd}" ]; then
ewarn "Not setting clock for $utc system" ewarn "Not setting clock for ${utc} system"
return 0 return 0
fi fi
ebegin "Setting system clock using the hardware clock [$utc]" ebegin "Setting system clock using the hardware clock [${utc}]"
if [ -e /proc/modules ]; then if [ -e /proc/modules ]; then
local rtc= local rtc=
for rtc in /dev/rtc /dev/rtc[0-9]*; do for rtc in /dev/rtc /dev/rtc[0-9]*; do
[ -e "$rtc" ] && break [ -e "${rtc}" ] && break
done done
if [ ! -e "${rtc}" ]; then if [ ! -e "${rtc}" ]; then
modprobe -q rtc-cmos || modprobe -q rtc || modprobe -q genrtc modprobe -q rtc-cmos || modprobe -q rtc || modprobe -q genrtc
fi fi
fi fi
if [ -e /etc/adjtime ] && yesno $clock_adjfile; then if [ -e /etc/adjtime ] && yesno ${clock_adjfile}; then
_hwclock --adjust $utc_cmd _hwclock --adjust ${utc_cmd}
: $(( retval += $? )) retval=$((${retval} + $?))
fi fi
# If setting UTC, don't bother to run hwclock when first booting # If setting UTC, don't bother to run hwclock when first booting
# as that's the default # as that's the default
if [ "$PREVLEVEL" != N -o \ if [ "${PREVLEVEL}" != "N" -o \
"$utc_cmd" != --utc -o \ "${utc_cmd}" != "--utc" -o \
-n "$clock_args" ]; -n "${clock_args}" ];
then then
if yesno ${clock_hctosys:-YES}; then _hwclock --hctosys ${utc_cmd} ${clock_args}
_hwclock --hctosys $utc_cmd $clock_args retval=$((${retval} + $?))
else
_hwclock --systz $utc_cmd $clock_args
fi
: $(( retval += $? ))
fi fi
eend $retval "Failed to set the system clock" eend ${retval} "Failed to set the system clock"
return 0 return 0
} }
@@ -110,37 +107,37 @@ start()
stop() stop()
{ {
# Don't tweak the hardware clock on LiveCD halt. # Don't tweak the hardware clock on LiveCD halt.
[ -n "$CDBOOT" ] && return 0 [ -n "${CDBOOT}" ] && return 0
yesno ${clock_systohc:-YES} || return 0 yesno ${clock_systohc} || return 0
local retval=0 errstr="" local retval=0 errstr=""
setupopts setupopts
[ -z "$utc_cmd" ] && return 0 [ -z "${utc_cmd}" ] && return 0
ebegin "Setting hardware clock using the system clock" "[$utc]" ebegin "Setting hardware clock using the system clock" "[${utc}]"
if ! yesno $clock_adjfile; then if ! yesno "${clock_adjfile}"; then
# Some implementations don't handle adjustments # Some implementations don't handle adjustments
if LC_ALL=C hwclock --help 2>&1 | grep -q "\-\-noadjfile"; then if LC_ALL=C hwclock --help | grep -q "\-\-noadjfile"; then
utc_cmd="$utc_cmd --noadjfile" utc_cmd="${utc_cmd} --noadjfile"
fi fi
fi fi
_hwclock --systohc $utc_cmd $clock_args _hwclock --systohc ${utc_cmd} ${clock_args}
retval=$? retval=$?
eend $retval "Failed to sync clocks" eend ${retval} "Failed to sync clocks"
} }
save() save()
{ {
clock_systohc=yes clock_systohc="yes"
stop stop
} }
show() show()
{ {
setupopts setupopts
hwclock --show "$utc_cmd" $clock_args hwclock --show "${utc_cmd}" ${clock_args}
} }

View File

@@ -1,6 +1,6 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
# This is based on /etc/rc.firewall and /etc/rc.firewall6 from FreeBSD # This is based on /etc/rc.firewall and /etc/rc.firewall6 from FreeBSD
@@ -8,12 +8,12 @@ ipfw_ip_in=${ipfw_ip_in-any}
ipfw_ports_in=${ipfw_ports_in-auth ssh} ipfw_ports_in=${ipfw_ports_in-auth ssh}
ipfw_ports_nolog=${ipfw_ports_nolog-135-139,445 1026,1027 1433,1434} ipfw_ports_nolog=${ipfw_ports_nolog-135-139,445 1026,1027 1433,1434}
extra_commands="panic showstatus" opts="panic showstatus"
depend() { depend() {
before net before net
provide firewall provide firewall
keyword -jail keyword nojail
} }
ipfw() { ipfw() {
@@ -40,11 +40,11 @@ init() {
ipfw add deny all from any to 127.0.0.0/8 ipfw add deny all from any to 127.0.0.0/8
ipfw add deny ip from 127.0.0.0/8 to any ipfw add deny ip from 127.0.0.0/8 to any
if have_ip6; then if have_ip6; then
ipfw add pass ip6 from any to any via lo0 ipfw add pass ip6 from any to any via lo0
ipfw add deny ip6 from any to ::1 ipfw add deny ip6 from any to ::1
ipfw add deny ip6 from ::1 to any ipfw add deny ip6 from ::1 to any
ipfw add pass ip6 from :: to ff02::/16 proto ipv6-icmp ipfw add pass ip6 from :: to ff02::/16 proto ipv6-icmp
ipfw add pass ip6 from fe80::/10 to fe80::/10 proto ipv6-icmp ipfw add pass ip6 from fe80::/10 to fe80::/10 proto ipv6-icmp
ipfw add pass ip6 from fe80::/10 to ff02::/16 proto ipv6-icmp ipfw add pass ip6 from fe80::/10 to ff02::/16 proto ipv6-icmp
@@ -59,7 +59,7 @@ start() {
return 1 return 1
fi fi
# Use a stateful firewall # Use a statefull firewall
ipfw add check-state ipfw add check-state
ipfw add pass tcp from me to any established ipfw add pass tcp from me to any established
@@ -78,7 +78,7 @@ start() {
ipfw add pass udp from 0.0.0.0 68 to 255.255.255.255 67 out ipfw add pass udp from 0.0.0.0 68 to 255.255.255.255 67 out
ipfw add pass udp from any 67 to me 68 in ipfw add pass udp from any 67 to me 68 in
ipfw add pass udp from any 67 to 255.255.255.255 68 in ipfw add pass udp from any 67 to 255.255.255.255 68 in
# Some servers will ping the IP while trying to decide if it's # Some servers will ping the IP while trying to decide if it's
# still in use. # still in use.
ipfw add pass icmp from any to any icmptype 8 ipfw add pass icmp from any to any icmptype 8
@@ -88,51 +88,51 @@ start() {
if have_ip6; then if have_ip6; then
# Allow ICMPv6 destination unreach # Allow ICMPv6 destination unreach
ipfw add pass ip6 from any to any icmp6types 1 proto ipv6-icmp ipfw add pass ip6 from any to any icmp6types 1 proto ipv6-icmp
# Allow NS/NA/toobig (don't filter it out) # Allow NS/NA/toobig (don't filter it out)
ipfw add pass ip6 from any to any icmp6types 2,135,136 proto ipv6-icmp ipfw add pass ip6 from any to any icmp6types 2,135,136 proto ipv6-icmp
fi fi
# Add permits for this workstations published services below # Add permits for this workstations published services below
# Only IPs and nets in firewall_allowservices is allowed in. # Only IPs and nets in firewall_allowservices is allowed in.
for i in $ipfw_ip_in; do for i in ${ipfw_ip_in}; do
for p in $ipfw_ports_in; do for p in ${ipfw_ports_in}; do
ipfw add pass tcp from $i to me $p ipfw add pass tcp from ${i} to me ${p}
done done
done done
# Allow all connections from trusted IPs. # Allow all connections from trusted IPs.
# Playing with the content of firewall_trusted could seriously # Playing with the content of firewall_trusted could seriously
# degrade the level of protection provided by the firewall. # degrade the level of protection provided by the firewall.
for i in $ipfw_ip_trust; do for i in ${ipfw_ip_trust}; do
ipfw add pass ip from $i to me ipfw add pass ip from ${i} to me
done done
ipfw add 65000 count ip from any to any ipfw add 65000 count ip from any to any
# Drop packets to ports where we don't want logging # Drop packets to ports where we don't want logging
for p in $ipfw_ports_nolog; do for p in ${ipfw_ports_nolog}; do
ipfw add deny { tcp or udp } from any to any $p in ipfw add deny { tcp or udp } from any to any ${p} in
done done
# Broadcasts and muticasts # Broadcasts and muticasts
ipfw add deny ip from any to 255.255.255.255 ipfw add deny ip from any to 255.255.255.255
ipfw add deny ip from any to 224.0.0.0/24 ipfw add deny ip from any to 224.0.0.0/24
# Noise from routers # Noise from routers
ipfw add deny udp from any to any 520 in ipfw add deny udp from any to any 520 in
# Noise from webbrowsing. # Noise from webbrowsing.
# The stateful filter is a bit aggressive, and will cause some # The statefull filter is a bit agressive, and will cause some
# connection teardowns to be logged. # connection teardowns to be logged.
ipfw add deny tcp from any 80,443 to any 1024-65535 in ipfw add deny tcp from any 80,443 to any 1024-65535 in
# Deny and (if wanted) log the rest unconditionally. # Deny and (if wanted) log the rest unconditionally.
if yesno ${ipfw_log_deny:-no}; then if yesno ${ipfw_log_deny:-no}; then
log=log log="log"
sysctl net.inet.ip.fw.verbose=1 >/dev/null sysctl net.inet.ip.fw.verbose=1 >/dev/null
fi fi
ipfw add deny $log ip from any to any ipfw add deny ${log} ip from any to any
eend 0 eend 0
} }

View File

@@ -1,27 +1,26 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
description="Applies a keymap for the consoles." description="Applies a keymap for the consoles."
ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
unicode=${unicode:-${UNICODE}}
keymap=${keymap:-${KEYMAP}}
extended_keymaps=${extended_keymaps:-${EXTENDED_KEYMAPS}}
windowkeys=${windowkeys:-${SET_WINDOWSKEYS}}
fix_euro=${fix_euro:-${FIX_EURO}}
dumpkeys_charset=${dumpkeys_charset:-${DUMPKEYS_CHARSET}}
depend() depend()
{ {
need localmount termencoding need localmount termencoding
after bootmisc keyword noopenvz noprefix nouml novserver noxenu
keyword -openvz -prefix -uml -vserver -xenu -lxc
} }
start() start()
{ {
ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} if [ -z "${keymap}" ]; then
: ${unicode:=$UNICODE}
: ${keymap:=$KEYMAP}
: ${extended_keymaps:=$EXTENDED_KEYMAPS}
: ${windowkeys:=$SET_WINDOWSKEYS}
: ${fix_euro:=$FIX_EURO}
: ${dumpkeys_charset:=${DUMPKEYS_CHARSET}}
if [ -z "$keymap" ]; then
eerror "You need to setup keymap in /etc/conf.d/keymaps first" eerror "You need to setup keymap in /etc/conf.d/keymaps first"
return 1 return 1
fi fi
@@ -34,37 +33,35 @@ start()
echo 1 > /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes echo 1 > /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes
fi fi
local wkeys= kmode="-a" msg="ASCII" ebegin "Loading key mappings [${keymap}]"
if yesno $unicode; then local loadkeys_uni= wkeys= kmode="-a" msg="ASCII"
if yesno ${unicode}; then
loadkeys_uni="--unicode"
kmode="-u" kmode="-u"
msg="UTF-8" msg="UTF-8"
fi fi
yesno $windowkeys && wkeys="windowkeys" yesno ${windowkeys} && wkeys="windowkeys"
loadkeys -q ${loadkeys_uni} ${wkeys} ${keymap} ${extended_keymaps}
# Set terminal encoding to either ASCII or UNICODE.
# See utf-8(7) for more information.
ebegin "Setting keyboard mode [$msg]"
n=1
while [ $n -le $ttyn ]; do
kbd_mode $kmode -C $ttydev$n
: $(( n += 1 ))
done
eend 0
ebegin "Loading key mappings [$keymap]"
loadkeys -q $wkeys $keymap $extended_keymaps
eend $? "Error loading key mappings" || return $? eend $? "Error loading key mappings" || return $?
if yesno $fix_euro; then if yesno ${fix_euro}; then
ebegin "Fixing font for euro symbol" ebegin "Fixing font for euro symbol"
# Fix some fonts displaying the Euro, #173528. # Fix some fonts displaying the Euro, #173528.
echo "altgr keycode 18 = U+20AC" | loadkeys -q - echo "altgr keycode 18 = U+20AC" | loadkeys -q
eend $? eend $?
fi fi
# Save the keymapping for use immediately at boot # Set terminal encoding to either ASCII or UNICODE.
if checkpath -W "$RC_LIBEXECDIR"; then # See utf-8(7) for more information.
mkdir -p "$RC_LIBEXECDIR"/console ebegin "Setting keyboard mode [${msg}]"
dumpkeys >"$RC_LIBEXECDIR"/console/keymap if yesno ${unicode}; then
dumpkeys ${dumpkeys_charset:+-c} \
${dumpkeys_charset} | loadkeys --unicode
fi fi
n=1
while [ ${n} -le "${ttyn}" ]; do
kbd_mode "${kmode}" -C "${ttydev}${n}"
n=$((${n} + 1))
done
eend 0
} }

View File

@@ -1,22 +1,22 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
description="Kill all processes so we can unmount disks cleanly." description="Kill all processes so we can unmount disks cleanly."
depend() depend()
{ {
keyword -prefix keyword noprefix
} }
start() start()
{ {
ebegin "Terminating remaining processes" ebegin "Terminating remaining processes"
killall5 -15 ${killall5_opts} killall5 -15
sleep 1 sleep 1
eend 0 eend 0
ebegin "Killing remaining processes" ebegin "Killing remaining processes"
killall5 -9 ${killall5_opts} killall5 -9
sleep 1 sleep 1
eend 0 eend 0
} }

View File

@@ -1,51 +1,43 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
description="Executes user programs in @SYSCONFDIR@/local.d" description="Executes user commands in /etc/conf.d/local"
depend() depend()
{ {
after * after *
keyword -timeout keyword notimeout
} }
start() start()
{ {
einfo "Starting local" ebegin "Starting local"
local file
for file in @SYSCONFDIR@/local.d/*.start ; do
[ -x "$file" ] && "$file"
done
if type local_start >/dev/null 2>&1; then if type local_start >/dev/null 2>&1; then
ewarn "@SYSCONFDIR@/conf.d/local should be removed."
ewarn "Please move the code from the local_start function"
ewarn "to scripts with an .start extension"
ewarn "in @SYSCONFDIR@/local.d"
local_start local_start
fi fi
eend 0 # Support old configs
if [ -e @SYSCONFDIR@/conf.d/local.start ]; then
. @SYSCONFDIR@/conf.d/local.start
fi
eend $? "Failed to start local"
} }
stop() stop()
{ {
einfo "Stopping local" ebegin "Stopping local"
local file
for file in @SYSCONFDIR@/local.d/*.stop; do
[ -x "$file" ] && "$file"
done
if type local_start >/dev/null 2>&1; then if type local_start >/dev/null 2>&1; then
ewarn "@SYSCONFDIR@/conf.d/local should be removed."
ewarn "Please move the code from the local_stop function"
ewarn "to scripts with an .stop extension"
ewarn "in @SYSCONFDIR@/local.d"
local_stop local_stop
fi fi
eend 0 # Support old configs
if [ -e @SYSCONFDIR@/conf.d/local.stop ]; then
. @SYSCONFDIR@/conf.d/local.stop
fi
eend $? "Failed to stop local"
} }

View File

@@ -1,6 +1,6 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
description="Mounts disks and swap according to /etc/fstab." description="Mounts disks and swap according to /etc/fstab."
@@ -8,26 +8,19 @@ depend()
{ {
need fsck need fsck
use lvm modules mtab use lvm modules mtab
after lvm modules keyword nojail noopenvz noprefix novserver
keyword -jail -prefix -vserver -lxc
} }
start() start()
{ {
# Mount local filesystems in /etc/fstab. # Mount local filesystems in /etc/fstab.
local types="noproc" x= no_netdev= local types="noproc" x=
for x in $net_fs_list $extra_net_fs_list; do for x in ${net_fs_list}; do
types="${types},no${x}" types="${types},${x}"
done done
if [ "$RC_UNAME" = Linux ]; then
no_netdev="-O no_netdev"
if mountinfo -q /usr; then
touch "$RC_SVCDIR"/usr_premounted
fi
fi
ebegin "Mounting local filesystems" ebegin "Mounting local filesystems"
mount -at "$types" $no_netdev mount -at "${types}"
eend $? "Some local filesystem failed to mount" eend $? "Some local filesystem failed to mount"
# Always return 0 - some local mounts may not be critical for boot # Always return 0 - some local mounts may not be critical for boot
@@ -36,37 +29,41 @@ start()
stop() stop()
{ {
yesno $RC_GOINGDOWN || return 0
# We never unmount / or /dev or $RC_SVCDIR # We never unmount / or /dev or $RC_SVCDIR
local x= no_umounts_r="/|/dev|/dev/.*|${RC_SVCDIR}"
# Bug 381783
local rc_svcdir=$(printf '%s\n' "$RC_SVCDIR" | sed 's:/lib\(32\|64\)\?/:/lib(32|64)?/:g')
local x= no_umounts_r="/|/dev|/dev/.*|${rc_svcdir}"
no_umounts_r="${no_umounts_r}|/bin|/sbin|/lib(32|64)?|/libexec"
# RC_NO_UMOUNTS is an env var that can be set by plugins # RC_NO_UMOUNTS is an env var that can be set by plugins
local IFS="$IFS:" OIFS=${IFS} SIFS=${IFS-y}
for x in $no_umounts $RC_NO_UMOUNTS; do IFS=$IFS:
no_umounts_r="$no_umounts_r|$x" for x in ${no_umounts} ${RC_NO_UMOUNTS}; do
no_umounts_r="${no_umounts_r}|${x}"
done done
if [ "${SIFS}" = "y" ]; then
if [ "$RC_UNAME" = Linux ]; then IFS=$OIFS
no_umounts_r="$no_umounts_r|/proc|/proc/.*|/run|/sys|/sys/.*" else
if [ -e "$rc_svcdir"/usr_premounted ]; then unset IFS
no_umounts_r="$no_umounts_r|/usr"
fi
fi fi
no_umounts_r="^($no_umounts_r)$"
if [ "${RC_UNAME}" = "Linux" ]; then
no_umounts_r="${no_umounts_r}|/proc|/proc/.*|/sys|/sys/.*"
fi
no_umounts_r="^(${no_umounts_r})$"
# Flush all pending disk writes now # Flush all pending disk writes now
sync; sync sync; sync
. "$RC_LIBEXECDIR"/sh/rc-mount.sh # Try to unmount all tmpfs filesystems not in use, else a deadlock may
# occure, bug #13599.
# As $RC_SVCDIR may also be tmpfs we cd to it to lock it
cd "${RC_SVCDIR}"
umount -a -t tmpfs 2>/dev/null
# Umount loop devices . "${RC_LIBDIR}"/sh/rc-mount.sh
einfo "Unmounting loop devices"
# Umount loopback devices
einfo "Unmounting loopback devices"
eindent eindent
do_unmount "umount -d" --skip-point-regex "$no_umounts_r" \ do_unmount "umount -d" --skip-point-regex "${no_umounts_r}" \
--node-regex "^/dev/loop" --node-regex "^/dev/loop"
eoutdent eoutdent
@@ -75,12 +72,12 @@ stop()
einfo "Unmounting filesystems" einfo "Unmounting filesystems"
eindent eindent
local fs= local fs=
for x in $net_fs_list $extra_net_fs_list; do for x in ${net_fs_list}; do
fs="$fs${fs:+|}$x" fs="${fs}${fs:+|}${x}"
done done
[ -n "$fs" ] && fs="^($fs)$" [ -n "${fs}" ] && fs="^(${fs})$"
do_unmount umount --skip-point-regex "$no_umounts_r" \ do_unmount "umount" --skip-point-regex "${no_umounts_r}" \
"${fs:+--skip-fstype-regex}" $fs --nonetdev ${fs:+--skip-fstype-regex} ${fs} --nonetdev
eoutdent eoutdent
return 0 return 0

View File

@@ -1,35 +0,0 @@
#!@SBINDIR@/runscript
# Copyright (c) 2013 William Hubbs <w.d.hubbs@gmail.com>
# Released under the 2-clause BSD license.
description="Configures the loopback interface."
depend()
{
return 0
}
start()
{
if [ "$RC_UNAME" = Linux ]; then
ebegin "Bringing up network interface lo"
if type ip > /dev/null 2>&1; then
ip addr add 127.0.0.1/8 dev lo brd + scope host
ip route add 127.0.0.0/8 dev lo scope host
ip link set lo up
else
ifconfig lo 127.0.0.1 netmask 255.0.0.0
route add -net 127.0.0.0 netmask 255.0.0.0 gw 127.0.0.1
fi
else
ebegin "Bringing up network interface lo0"
ifconfig lo0 127.0.0.1 netmask 255.0.0.0
route -q add -inet 127.0.0.0 -netmask 255.0.0.0 127.0.0.1
fi
eend $?
}
stop()
{
return 0
}

View File

@@ -1,13 +1,13 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
extra_commands="restore" extra_commands="restore"
depend() depend()
{ {
need localmount need localmount
keyword -jail -prefix keyword nojail noprefix
} }
restore() restore()
@@ -17,11 +17,11 @@ restore()
eindent eindent
for mixer in /dev/mixer*; do for mixer in /dev/mixer*; do
if [ -r "/var/db/${mixer#/dev/}-state" ]; then if [ -r "/var/db/${mixer#/dev/}-state" ]; then
vebegin "$mixer" vebegin "${mixer}"
mixer -f "$mixer" \ mixer -f "${mixer}" \
$(cat "/var/db/${mixer#/dev/}-state") >/dev/null $(cat "/var/db/${mixer#/dev/}-state") >/dev/null
veend $? veend $?
: $(( retval += $? )) : $((retval += $?))
fi fi
done done
} }
@@ -37,11 +37,11 @@ stop()
ebegin "Saving mixer settings" ebegin "Saving mixer settings"
eindent eindent
for mixer in /dev/mixer*; do for mixer in /dev/mixer*; do
vebegin "$mixer" vebegin "${mixer}"
mixer -f "$mixer" -s >/var/db/"${mixer#/dev/}"-state mixer -f "${mixer}" -s >/var/db/"${mixer#/dev/}"-state
veend $? veend $?
: $(( retval += $? )) : $((retval += $?))
done done
eoutdent eoutdent
eend $retval eend ${retval}
} }

View File

@@ -1,13 +1,13 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
description="Loads a user defined list of kernel modules." description="Loads a user defined list of kernel modules."
depend() depend()
{ {
use isapnp use isapnp
keyword -openvz -prefix -vserver -lxc keyword noopenvz noprefix novserver
} }
start() start()
@@ -16,48 +16,48 @@ start()
# support compiled in ... # support compiled in ...
[ ! -f /proc/modules ] && return 0 [ ! -f /proc/modules ] && return 0
local KV x y kv_variant_list local KV=$(uname -r)
KV=$(uname -r) local KV_MAJOR=${KV%%.*}
# full $KV local x=${KV#*.}
kv_variant_list="${KV}" local KV_MINOR=${x%%.*}
# remove any KV_EXTRA options to just get the full version x=${KV#*.*.}
x=${KV%%-*} local KV_MICRO=${x%%-*}
# now slowly strip them
while [ -n "$x" ] && [ "$x" != "$y" ]; do
kv_variant_list="${kv_variant_list} $x"
y=$x
x=${x%.*}
done
local list= x= xx= y= args= mpargs= cnt=0 a= local list= x= xx= y= args= mpargs= cnt=0 a=
for x in $kv_variant_list ; do for x in "${KV}" \
eval list=\$modules_$(shell_var "$x") ${KV_MAJOR}.${KV_MINOR}.${KV_MICRO} \
[ -n "$list" ] && break ${KV_MAJOR}.${KV_MINOR} \
; do
eval list=\$modules_$(shell_var "${x}")
[ -n "${list}" ] && break
done done
[ -z "$list" ] && list=$modules [ -z "${list}" ] && list=${modules}
for x in $list; do for x in ${list}; do
a=${x#*:} a=${x#*:}
if [ "$a" = "$x" ]; then if [ "${a}" = "${x}" ]; then
unset mpargs unset mpargs
ebegin "Loading module $x" ebegin "Loading module ${x}"
else else
x=${x%%:*} x=${x%%:*}
mpargs="-o $a" mpargs="-o ${a}"
ebegin "Loading module $x as $a" ebegin "Loading module ${x} as ${a}"
fi fi
aa=$(shell_var "$a") aa=$(shell_var "${a}")
xx=$(shell_var "$x") xx=$(shell_var "${x}")
for y in $kv_variant_list ; do for y in "${KV}" \
eval args=\$module_${aa}_args_$(shell_var "$y") ${KV_MAJOR}.${KV_MINOR}.${KV_MICRO} \
${KV_MAJOR}.${KV_MINOR} \
; do
eval args=\$module_${aa}_args_$(shell_var "${y}")
[ -n "${args}" ] && break [ -n "${args}" ] && break
eval args=\$module_${xx}_args_$(shell_var "$y") eval args=\$module_${xx}_args_$(shell_var "${y}")
[ -n "${args}" ] && break [ -n "${args}" ] && break
done done
[ -z "$args" ] && eval args=\$module_${aa}_args [ -z "${args}" ] && eval args=\$module_${aa}_args
[ -z "$args" ] && eval args=\$module_${xx}_args [ -z "${args}" ] && eval args=\$module_${xx}_args
eval modprobe -q "$mpargs" "$x" "$args" eval modprobe -q "${mpargs}" "${x}" "${args}"
eend $? "Failed to load $x" && : $(( cnt += 1 )) eend $? "Failed to load ${x}" && cnt=$((${cnt} + 1))
done done
einfo "Autoloaded $cnt module(s)" einfo "Autoloaded ${cnt} module(s)"
} }

View File

@@ -1,49 +1,45 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
description="Re-mount filesytems read-only for a clean reboot." description="Re-mount filesytems read-only for a clean reboot."
depend() depend()
{ {
need killprocs savecache need killprocs savecache
keyword -openvz -prefix -vserver -lxc keyword noprefix noopenvz novserver
} }
start() start()
{ {
local ret=0
# Flush all pending disk writes now # Flush all pending disk writes now
sync; sync sync; sync
ebegin "Remounting remaining filesystems read-only" ebegin "Remounting remaining filesystems read-only"
# We need the do_unmount function # We need the do_unmount function
. "$RC_LIBEXECDIR"/sh/rc-mount.sh . "${RC_LIBDIR}"/sh/rc-mount.sh
eindent eindent
local m="/dev|/dev/.*|/proc|/proc.*|/sys|/sys/.*|${RC_SVCDIR}" x= fs=
# Bug 381783
local rc_svcdir=$(echo $RC_SVCDIR | sed 's:/lib\(32\|64\)\?/:/lib(32|64)?/:g')
local m="/dev|/dev/.*|/proc|/proc.*|/sys|/sys/.*|/run|${rc_svcdir}" x= fs=
m="$m|/bin|/sbin|/lib(32|64)?|/libexec"
# RC_NO_UMOUNTS is an env var that can be set by plugins # RC_NO_UMOUNTS is an env var that can be set by plugins
local IFS="$IFS:" local OIFS=$IFS SIFS=${IFS-y} IFS=$IFS
for x in $no_umounts $RC_NO_UMOUNTS; do IFS=$IFS:
m="$m|$x" for x in ${no_umounts} ${RC_NO_UMOUNTS}; do
m="${m}|${x}"
done done
m="^($m)$" if [ "${SIFS}" = y ]; then
IFS=$OIFS
else
unset IFS
fi
m="^(${m})$"
fs= fs=
for x in $net_fs_list $extra_net_fs_list; do for x in ${net_fs_list}; do
fs="$fs${fs:+|}$x" fs="${fs}${fs:+|}${x}"
done done
[ -n "$fs" ] && fs="^($fs)$" [ -n "${fs}" ] && fs="^(${fs})$"
do_unmount "umount -r" \ do_unmount "umount -r" \
--skip-point-regex "$m" \ --skip-point-regex "${m}" \
"${fs:+--skip-fstype-regex}" $fs --nonetdev ${fs:+--skip-fstype-regex} ${fs} --nonetdev
ret=$?
eoutdent eoutdent
eend $?
eend $ret
} }

View File

@@ -1,62 +1,62 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
mouse=${RC_SVCNAME##*.} mouse=${RC_SVCNAME##*.}
if [ -n "$mouse" -a "$mouse" != "moused" ]; then if [ -n "${name}" -a "${mouse}" != "moused" ]; then
moused_device=/dev/"$mouse" moused_device=/dev/"${mouse}"
pidfile=/var/run/moused-"$mouse".pid pidfile=/var/run/moused-"${mouse}".pid
else else
pidfile=/var/run/moused.pid pidfile=/var/run/moused.pid
fi fi
name="Console Mouse Daemon" name="Console Mouse Daemon"
[ -n "$moused_device" ] && name="$name ($moused_device)" [ -n "${moused_device}" ] && name="${name} (${moused_device})"
depend() depend()
{ {
need localmount need localmount
after bootmisc after bootmisc
keyword -jail -prefix keyword nojail noprefix
} }
start() start()
{ {
ebegin "Starting $name" ebegin "Starting ${name}"
if [ -z "$moused_device" ]; then if [ -z "${moused_device}" ]; then
local dev= local dev=
for dev in /dev/psm[0-9]* /dev/ums[0-9]*; do for dev in /dev/psm[0-9]* /dev/ums[0-9]*; do
[ -c "$dev" ] || continue [ -c "${dev}" ] || continue
[ -e /var/run/moused-"${dev##*/}".pid ] && continue [ -e /var/run/moused-"${dev##*/}".pid ] && continue
moused_device=$dev moused_device=${dev}
eindent eindent
einfo "Using mouse on $moused_device" einfo "Using mouse on ${moused_device}"
eoutdent eoutdent
break break
done done
fi fi
if [ -z "$moused_device" ]; then if [ -z "${moused_device}" ]; then
eend 1 "No mouse device found" eend 1 "No mouse device found"
return 1 return 1
fi fi
local args= local args=
eval args=\$moused_args_${moused_device##*/} eval args=\$moused_args_${moused_device##*/}
[ -z "$args" ] && args=$moused_args [ -z "${args}" ] && args=${moused_args}
start-stop-daemon --start --exec /usr/sbin/moused \ start-stop-daemon --start --exec /usr/sbin/moused \
--pidfile "$pidfile" \ --pidfile "${pidfile}" \
-- $args -p "$moused_device" -I "$pidfile" -- ${args} -p "${moused_device}" -I "${pidfile}"
local retval=$? local retval=$?
if [ $retval = 0 ]; then if [ ${retval} = 0 ]; then
local ttyv= local ttyv=
for ttyv in /dev/ttyv*; do for ttyv in /dev/ttyv*; do
vidcontrol < "$ttyv" -m on vidcontrol < "${ttyv}" -m on
: $(( retval += $? )) : $((retval+= $?))
done done
fi fi
eend $retval "Failed to start moused" eend ${retval} "Failed to start moused"
} }

View File

@@ -1,23 +1,17 @@
#!@SBINDIR@/runscript #!@PREFIX@/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
description="Update /etc/mtab to match what the kernel knows about" description="Update /etc/mtab to match what the kernel knows about"
depend() depend()
{ {
need root need root
keyword -prefix keyword noprefix
} }
start() start()
{ {
if [ -L /etc/mtab ]
then
einfo "Skipping mtab update (mtab is a symbolic link)"
return 0
fi
ebegin "Updating /etc/mtab" ebegin "Updating /etc/mtab"
if ! echo 2>/dev/null >/etc/mtab; then if ! echo 2>/dev/null >/etc/mtab; then
ewend 1 "/etc/mtab is not updateable" ewend 1 "/etc/mtab is not updateable"
@@ -28,7 +22,7 @@ start()
# makes / readonly and dismounts all tmpfs even if in use which is # makes / readonly and dismounts all tmpfs even if in use which is
# not good. Luckily, umount uses /etc/mtab instead of /proc/mounts # not good. Luckily, umount uses /etc/mtab instead of /proc/mounts
# which allows this hack to work. # which allows this hack to work.
grep -v "^[! ]* / tmpfs " /proc/mounts > /etc/mtab grep -v "^[^ ]* / tmpfs " /proc/mounts > /etc/mtab
# Remove stale backups # Remove stale backups
rm -f /etc/mtab~ /etc/mtab~~ rm -f /etc/mtab~ /etc/mtab~~

715
init.d/net.lo.in Normal file
View File

@@ -0,0 +1,715 @@
#!@PREFIX@/sbin/runscript
# Copyright 2007-2008 Roy Marples <roy@marples.name>
# All rights reserved. Released under the 2-clause BSD license.
MODULESDIR="${RC_LIBDIR}/net"
MODULESLIST="${RC_SVCDIR}/nettree"
_config_vars="config routes"
[ -z "${IN_BACKGROUND}" ] && IN_BACKGROUND="NO"
description="Configures network interfaces."
# Handy var so we don't have to embed new lines everywhere for array splitting
__IFS="
"
depend()
{
local IFACE=${RC_SVCNAME#*.}
local IFVAR=$(shell_var "${IFACE}")
need localmount
after bootmisc
provide net
keyword nojail noprefix novserver
case "${IFACE}" in
lo|lo0);;
*) after net.lo net.lo0;;
esac
if [ "$(command -v "depend_${IFVAR}")" = "depend_${IFVAR}" ]; then
depend_${IFVAR}
fi
local dep= prov=
for dep in need use before after provide keyword; do
eval prov=\$rc_${dep}_${IFVAR}
if [ -n "${prov}" ]; then
${dep} ${prov}
fi
done
}
# Support bash arrays - sigh
_get_array()
{
local _a=
if [ -n "${BASH}" ]; then
case "$(declare -p "$1" 2>/dev/null)" in
"declare -a "*)
eval "set -- \"\${$1[@]}\""
for _a; do
printf "%s\n" "${_a}"
done
return 0
;;
esac
fi
eval _a=\$$1
printf "%s" "${_a}"
printf "\n"
[ -n "${_a}" ]
}
# Flatten bash arrays to simple strings
_flatten_array()
{
if [ -n "${BASH}" ]; then
case "$(declare -p "$1" 2>/dev/null)" in
"declare -a "*)
eval "set -- \"\${$1[@]}\""
for x; do
printf "'%s' " "$(printf "$x" | sed "s:':'\\\'':g")"
done
return 0
;;
esac
fi
eval _a=\$$1
printf "%s" "${_a}"
printf "\n"
[ -n "${_a}" ]
}
_wait_for_carrier()
{
local timeout= efunc=einfon
_has_carrier && return 0
eval timeout=\$carrier_timeout_${IFVAR}
timeout=${timeout:-${carrier_timeout:-5}}
# Incase users don't want this nice feature ...
[ ${timeout} -le 0 ] && return 0
yesno ${RC_PARALLEL} && efunc=einfo
${efunc} "Waiting for carrier (${timeout} seconds) "
while [ ${timeout} -gt 0 ]; do
sleep 1
if _has_carrier; then
[ "${efunc}" = "einfon" ] && echo
eend 0
return 0
fi
timeout=$((${timeout} - 1))
[ "${efunc}" = "einfon" ] && printf "."
done
[ "${efunc}" = "einfon" ] && echo
eend 1
return 1
}
_netmask2cidr()
{
# Some shells cannot handle hex arithmetic, so we massage it slightly
# Buggy shells include FreeBSD sh, dash and busybox.
# bash and NetBSD sh don't need this.
case $1 in
0x*)
local hex=${1#0x*} quad=
while [ -n "${hex}" ]; do
local lastbut2=${hex#??*}
quad=${quad}${quad:+.}0x${hex%${lastbut2}*}
hex=${lastbut2}
done
set -- ${quad}
;;
esac
local i= len=
local IFS=.
for i in $1; do
while [ ${i} != "0" ]; do
len=$((${len} + ${i} % 2))
i=$((${i} >> 1))
done
done
echo "${len}"
}
_configure_variables()
{
local var= v= t=
for var in ${_config_vars}; do
local v=
for t; do
eval v=\$${var}_${t}
if [ -n "${v}" ]; then
eval ${var}_${IFVAR}=\$${var}_${t}
continue 2
fi
done
done
}
_show_address()
{
einfo "received address $(_get_inet_address "${IFACE}")"
}
# Basically sorts our modules into order and saves the list
_gen_module_list()
{
local x= f= force=$1
if ! ${force} && [ -s "${MODULESLIST}" -a "${MODULESLIST}" -nt "${MODULESDIR}" ]; then
local update=false
for x in "${MODULESDIR}"/*.sh; do
[ -e "${x}" ] || continue
if [ "${x}" -nt "${MODULESLIST}" ]; then
update=true
break
fi
done
${update} || return 0
fi
einfo "Caching network module dependencies"
# Run in a subshell to protect the main script
(
after() {
eval ${MODULE}_after="\"\${${MODULE}_after}\${${MODULE}_after:+ }$*\""
}
before() {
local mod=${MODULE}
local MODULE=
for MODULE; do
after "${mod}"
done
}
program() {
if [ "$1" = "start" -o "$1" = "stop" ]; then
local s="$1"
shift
eval ${MODULE}_program_${s}="\"\${${MODULE}_program_${s}}\${${MODULE}_program_${s}:+ }$*\""
else
eval ${MODULE}_program="\"\${${MODULE}_program}\${${MODULE}_program:+ }$*\""
fi
}
provide() {
eval ${MODULE}_provide="\"\${${MODULE}_provide}\${${MODULE}_provide:+ }$*\""
local x
for x in $*; do
eval ${x}_providedby="\"\${${MODULE}_providedby}\${${MODULE}_providedby:+ }${MODULE}\""
done
}
for MODULE in "${MODULESDIR}"/*.sh; do
sh -n "${MODULE}" || continue
. "${MODULE}" || continue
MODULE=${MODULE#${MODULESDIR}/}
MODULE=${MODULE%.sh}
eval ${MODULE}_depend
MODULES="${MODULES} ${MODULE}"
done
VISITED=
SORTED=
visit() {
case " ${VISITED} " in
*" $1 "*) return;;
esac
VISITED="${VISITED} $1"
eval AFTER=\$${1}_after
for MODULE in ${AFTER}; do
eval PROVIDEDBY=\$${MODULE}_providedby
if [ -n "${PROVIDEDBY}" ]; then
for MODULE in ${PROVIDEDBY}; do
visit "${MODULE}"
done
else
visit "${MODULE}"
fi
done
eval PROVIDE=\$${1}_provide
for MODULE in ${PROVIDE}; do
visit "${MODULE}"
done
eval PROVIDEDBY=\$${1}_providedby
[ -z "${PROVIDEDBY}" ] && SORTED="${SORTED} $1"
}
for MODULE in ${MODULES}; do
visit "${MODULE}"
done
printf "" > "${MODULESLIST}"
i=0
for MODULE in ${SORTED}; do
eval PROGRAM=\$${MODULE}_program
eval PROGRAM_START=\$${MODULE}_program_start
eval PROGRAM_STOP=\$${MODULE}_program_stop
eval PROVIDE=\$${MODULE}_provide
echo "module_${i}='${MODULE}'" >> "${MODULESLIST}"
echo "module_${i}_program='${PROGRAM}'" >> "${MODULESLIST}"
echo "module_${i}_program_start='${PROGRAM_START}'" >> "${MODULESLIST}"
echo "module_${i}_program_stop='${PROGRAM_STOP}'" >> "${MODULESLIST}"
echo "module_${i}_provide='${PROVIDE}'" >> "${MODULESLIST}"
i=$((${i} + 1))
done
echo "module_${i}=" >> "${MODULESLIST}"
)
return 0
}
_load_modules()
{
local starting=$1 mymods=
# Ensure our list is up to date
_gen_module_list false
if ! . "${MODULESLIST}"; then
_gen_module_list true
. "${MODULESLIST}"
fi
MODULES=
if [ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ]; then
eval mymods=\$modules_${IFVAR}
[ -z "${mymods}" ] && mymods=${modules}
fi
local i=-1 x= mod= f= provides=
while true; do
i=$((${i} + 1))
eval mod=\$module_${i}
[ -z "${mod}" ] && break
[ -e "${MODULESDIR}/${mod}.sh" ] || continue
eval set -- \$module_${i}_program
if [ -n "$1" ]; then
x=
for x; do
[ -x "${x}" ] && break
done
[ -x "${x}" ] || continue
fi
if ${starting}; then
eval set -- \$module_${i}_program_start
else
eval set -- \$module_${i}_program_stop
fi
if [ -n "$1" ]; then
x=
for x; do
case "${x}" in
/*) [ -x "${x}" ] && break;;
*) type "${x}" >/dev/null 2>&1 && break;;
esac
unset x
done
[ -n "${x}" ] || continue
fi
eval provides=\$module_${i}_provide
if ${starting}; then
case " ${mymods} " in
*" !${mod} "*) continue;;
*" !${provides} "*) [ -n "${provides}" ] && continue;;
esac
fi
MODULES="${MODULES}${MODULES:+ }${mod}"
# Now load and wrap our functions
if ! . "${MODULESDIR}/${mod}.sh"; then
eend 1 "${RC_SVCNAME}: error loading module \`${mod}'"
exit 1
fi
[ -z "${provides}" ] && continue
# Wrap our provides
local f=
for f in pre_start start post_start; do
eval "${provides}_${f}() { [ "$(command -v "${mod}_${f}")" = "${mod}_${f}" ] || return 0; ${mod}_${f} \"\$@\"; }"
done
eval module_${mod}_provides="${provides}"
eval module_${provides}_providedby="${mod}"
done
# Wrap our preferred modules
for mod in ${mymods}; do
case " ${MODULES} " in
*" ${mod} "*)
eval x=\$module_${mod}_provides
[ -z "${x}" ] && continue
for f in pre_start start post_start; do
eval "${x}_${f}() { [ "$(command -v "${mod}_${f}")" = "${mod}_${f}" ] || return 0; ${mod}_${f} \"\$@\"; }"
done
eval module_${x}_providedby="${mod}"
;;
esac
done
# Finally remove any duplicated provides from our list if we're starting
# Otherwise reverse the list
local LIST="${MODULES}" p=
MODULES=
if ${starting}; then
for mod in ${LIST}; do
eval x=\$module_${mod}_provides
if [ -n "${x}" ]; then
eval p=\$module_${x}_providedby
[ "${mod}" != "${p}" ] && continue
fi
MODULES="${MODULES}${MODULES:+ }${mod}"
done
else
for mod in ${LIST}; do
MODULES="${mod}${MODULES:+ }${MODULES}"
done
fi
veinfo "Loaded modules: ${MODULES}"
}
_load_config()
{
local config="$(_get_array "config_${IFVAR}")"
local fallback="$(_get_array fallback_${IFVAR})"
config_index=0
local IFS="$__IFS"
set -- ${config}
# We should support a space separated array for cidr configs
if [ $# = 1 ]; then
unset IFS
set -- ${config}
# Of course, we may have a single address added old style.
case "$2" in
netmask|broadcast|brd|brd+)
local IFS="$__IFS"
set -- ${config}
;;
esac
fi
# Ensure that loopback has the correct address
if [ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ]; then
if [ "$1" != "null" ]; then
config_0="127.0.0.1/8"
config_index=1
fi
else
if [ -z "$1" ]; then
ewarn "No configuration specified; defaulting to DHCP"
config_0="dhcp"
config_index=1
fi
fi
# We store our config in an array like vars
# so modules can influence it
for cmd; do
eval config_${config_index}="'${cmd}'"
config_index=$((${config_index} + 1))
done
# Terminate the list
eval config_${config_index}=
config_index=0
for cmd in ${fallback}; do
eval fallback_${config_index}="'${cmd}'"
config_index=$((${config_index} + 1))
done
# Terminate the list
eval fallback_${config_index}=
# Don't set to zero, so any net modules don't have to do anything extra
config_index=-1
}
# Support functions
_run_if()
{
local cmd=$1 iface=$2 ifr=${IFACE} ifv=${IFVAR}
# Ensure that we don't stamp on real values
local IFACE= IFVAR=
shift
if [ -n "${iface}" ]; then
IFACE="${iface}"
[ "${iface}" != "${ifr}" ] && IFVAR=$(shell_var "${IFACE}")
else
IFACE=${ifr}
IFVAR=${ifv}
fi
${cmd}
}
interface_exists()
{
_run_if _exists "$@"
}
interface_up()
{
_run_if _up "$@"
}
interface_down()
{
_run_if _down "$@"
}
start()
{
local IFACE=${RC_SVCNAME#*.} oneworked=false module=
local IFVAR=$(shell_var "${IFACE}") cmd= our_metric=
local metric=0
einfo "Bringing up interface ${IFACE}"
eindent
if [ -z "${MODULES}" ]; then
local MODULES=
_load_modules true
fi
# We up the iface twice if we have a preup to ensure it's up if
# available in preup and afterwards incase the user inadvertently
# brings it down
if [ "$(command -v preup)" = "preup" ]; then
_up 2>/dev/null
ebegin "Running preup"
eindent
preup || return 1
eoutdent
fi
_up 2>/dev/null
for module in ${MODULES}; do
if [ "$(command -v "${module}_pre_start")" = "${module}_pre_start" ]; then
${module}_pre_start || exit $?
fi
done
if ! _exists; then
eerror "ERROR: interface ${IFACE} does not exist"
eerror "Ensure that you have loaded the correct kernel module for your hardware"
return 1
fi
if ! _wait_for_carrier; then
if service_started devd; then
ewarn "no carrier, but devd will start us when we have one"
mark_service_inactive "${RC_SVCNAME}"
else
eerror "no carrier"
fi
return 1
fi
local config= config_index=
_load_config
config_index=0
eval our_metric=\$metric_${IFVAR}
if [ -n "${our_metric}" ]; then
metric=${our_metric}
elif [ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ]; then
metric=$((${metric} + $(_ifindex)))
fi
while true; do
eval config=\$config_${config_index}
[ -z "${config}" ] && break
set -- ${config}
ebegin "$1"
eindent
case "$1" in
noop)
if [ -n "$(_get_inet_address)" ]; then
oneworked=true
break
fi
;;
null) :;;
[0-9]*|*:*) _add_address ${config};;
*)
if [ "$(command -v "${config}_start")" = "${config}_start" ]; then
"${config}"_start
else
eerror "nothing provides \`${config}'"
fi
;;
esac
if eend $?; then
oneworked=true
else
eval config=\$fallback_${config_index}
if [ -n "${config}" ]; then
eoutdent
ewarn "Trying fallback configuration ${config}"
eindent
eval config_${config_index}=\$config
unset fallback_${config_index}
config_index=$((${config_index} - 1))
fi
fi
eoutdent
config_index=$((${config_index} + 1))
done
if ! ${oneworked}; then
if [ "$(command -v failup)" = "failup" ]; then
ebegin "Running failup"
eindent
failup
eoutdent
fi
return 1
fi
local hidefirstroute=false first=true
local routes="$(_get_array "routes_${IFVAR}")"
if [ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ]; then
if [ "${config_0}" != "null" ]; then
routes="127.0.0.0/8 via 127.0.0.1
${routes}"
hidefirstroute=true
fi
fi
local OIFS="${IFS}" SIFS=${IFS-y}
local IFS="$__IFS"
for cmd in ${routes}; do
unset IFS
if ${first}; then
first=false
einfo "Adding routes"
fi
eindent
ebegin ${cmd}
# Work out if we're a host or a net if not told
case ${cmd} in
-net" "*|-host" "*);;
*" "netmask" "*) cmd="-net ${cmd}";;
*.*.*.*/32*) cmd="-host ${cmd}";;
*.*.*.*/*|0.0.0.0|0.0.0.0" "*) cmd="-net ${cmd}";;
default|default" "*) cmd="-net ${cmd}";;
*) cmd="-host ${cmd}";;
esac
if ${hidefirstroute}; then
_add_route ${cmd} >/dev/null 2>&1
hidefirstroute=false
else
_add_route ${cmd} >/dev/null
fi
eend $?
eoutdent
done
if [ "${SIFS}" = "y" ]; then
unset IFS
else
IFS="${OIFS}"
fi
for module in ${MODULES}; do
if [ "$(command -v "${module}_post_start")" = "${module}_post_start" ]; then
${module}_post_start || exit $?
fi
done
if [ "$(command -v postup)" = "postup" ]; then
ebegin "Running postup"
eindent
postup
eoutdent
fi
return 0
}
stop()
{
local IFACE=${RC_SVCNAME#*.} module=
local IFVAR=$(shell_var "${IFACE}") opts=
einfo "Bringing down interface ${IFACE}"
eindent
if [ -z "${MODULES}" ]; then
local MODULES=
_load_modules false
fi
if [ "$(command -v predown)" = "predown" ]; then
ebegin "Running predown"
eindent
predown || return 1
eoutdent
else
if is_net_fs /; then
eerror "root filesystem is network mounted -- can't stop ${IFACE}"
return 1
fi
fi
for module in ${MODULES}; do
if [ "$(command -v "${module}_pre_stop")" = "${module}_pre_stop" ]; then
${module}_pre_stop || exit $?
fi
done
for module in ${MODULES}; do
if [ "$(command -v "${module}_stop")" = "${module}_stop" ]; then
${module}_stop
fi
done
# Only delete addresses for non PPP interfaces
if ! [ "$(command -v is_ppp)" = "is_ppp" ] || ! is_ppp; then
_delete_addresses "${IFACE}"
fi
for module in ${MODULES}; do
if [ "$(command -v "${module}_post_stop")" = "${module}_post_stop" ]; then
${module}_post_stop
fi
done
# If not in background, and not loopback then bring the interface down
# unless overridden.
if ! yesno ${IN_BACKGROUND} && \
[ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ]; then
eval module=\$ifdown_${IFVAR}
module=${module:-${ifdown:-YES}}
yesno ${module} && _down 2>/dev/null
fi
type resolvconf >/dev/null 2>&1 && resolvconf -d "${IFACE}" 2>/dev/null
if [ "$(command -v "postdown")" = "postdown" ]; then
ebegin "Running postdown"
eindent
postdown
eoutdent
fi
return 0
}

Some files were not shown because too many files have changed in this diff Show More